aboutsummaryrefslogtreecommitdiff
path: root/lnt/server
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-10-01 12:32:40 +0000
committerMartin Liska <mliska@suse.cz>2018-10-01 12:32:40 +0000
commitc8680e3743ce045d9e17b2281da7eb665f49f56f (patch)
tree6abfb1976dac5538f9cb612c7664920842a4ae7b /lnt/server
parent4bedb8a4c8ae43f4b7704b0f3714803775f0464f (diff)
Sort fields according to order defined in YAML files.
Differential Revision: https://reviews.llvm.org/D52593 git-svn-id: https://llvm.org/svn/llvm-project/lnt/trunk@343466 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lnt/server')
-rw-r--r--lnt/server/db/testsuite.py11
-rw-r--r--lnt/server/db/testsuitedb.py6
2 files changed, 11 insertions, 6 deletions
diff --git a/lnt/server/db/testsuite.py b/lnt/server/db/testsuite.py
index 47abb87..c458845 100644
--- a/lnt/server/db/testsuite.py
+++ b/lnt/server/db/testsuite.py
@@ -143,7 +143,7 @@ class TestSuite(Base):
assert(len(order_fields) > 0)
sample_fields = []
- for metric_desc in data['metrics']:
+ for index, metric_desc in enumerate(data['metrics']):
name = metric_desc['name']
bigger_is_better = metric_desc.get('bigger_is_better', False)
metric_type_name = metric_desc.get('type', 'Real')
@@ -155,7 +155,7 @@ class TestSuite(Base):
metric_type_name)
metric_type = SampleType(metric_type_name)
bigger_is_better_int = 1 if bigger_is_better else 0
- field = SampleField(name, metric_type, status_field=None,
+ field = SampleField(name, metric_type, index, status_field=None,
bigger_is_better=bigger_is_better_int,
display_name=display_name, unit=unit,
unit_abbrev=unit_abbrev)
@@ -312,7 +312,7 @@ class SampleField(FieldMixin, Base):
# This assumption can be inverted by setting this column to nonzero.
bigger_is_better = Column("bigger_is_better", Integer)
- def __init__(self, name, type, status_field=None, bigger_is_better=0,
+ def __init__(self, name, type, schema_index, status_field=None, bigger_is_better=0,
display_name=None, unit=None, unit_abbrev=None):
self.name = name
self.type = type
@@ -321,6 +321,7 @@ class SampleField(FieldMixin, Base):
self.display_name = name if display_name is None else display_name
self.unit = unit
self.unit_abbrev = unit_abbrev
+ self.schema_index = schema_index
# Column instance for fields which have been bound (non-DB
# parameter). This is provided for convenience in querying.
@@ -331,12 +332,13 @@ class SampleField(FieldMixin, Base):
self.display_name = self.name
self.unit = None
self.unit_abbrev = None
+ self.schema_index = -1
def __repr__(self):
return '%s%r' % (self.__class__.__name__, (self.name, self.type, ))
def __copy__(self):
- return SampleField(self.name, self.type, self.status_field,
+ return SampleField(self.name, self.type, self.schema_index, self.status_field,
self.bigger_is_better, self.display_name, self.unit,
self.unit_abbrev)
@@ -344,6 +346,7 @@ class SampleField(FieldMixin, Base):
self.display_name = other.display_name
self.unit = other.unit
self.unit_abbrev = other.unit_abbrev
+ self.schema_index = other.schema_index
def _upgrade_to(connectable, tsschema, new_schema, dry_run=False):
diff --git a/lnt/server/db/testsuitedb.py b/lnt/server/db/testsuitedb.py
index ced581c..95a37d8 100644
--- a/lnt/server/db/testsuitedb.py
+++ b/lnt/server/db/testsuitedb.py
@@ -86,8 +86,10 @@ class TestSuiteDB(object):
self.machine_fields = list(self.test_suite.machine_fields)
self.order_fields = list(self.test_suite.order_fields)
self.run_fields = list(self.test_suite.run_fields)
- self.sample_fields = list(self.test_suite.sample_fields)
+ self.sample_fields = list(sorted(self.test_suite.sample_fields,
+ key = lambda s: s.schema_index))
sample_field_indexes = dict()
+
for i, field in enumerate(self.sample_fields):
sample_field_indexes[field.name] = i
self.sample_field_indexes = sample_field_indexes
@@ -461,7 +463,7 @@ class TestSuiteDB(object):
class Sample(self.base, ParameterizedMixin):
__tablename__ = db_key_name + '_Sample'
- fields = self.sample_fields
+ fields = list(sorted(self.sample_fields, key = lambda x: self.sample_field_indexes[x.name]))
id = Column("ID", Integer, primary_key=True)
# We do not need an index on run_id, this is covered by the
# compound (Run(ID),Test(ID)) index we create below.