Index: lnt/trunk/lnt/formats/__init__.py =================================================================== --- lnt/trunk/lnt/formats/__init__.py +++ lnt/trunk/lnt/formats/__init__.py @@ -8,12 +8,13 @@ """ from __future__ import absolute_import +from typing import List, Dict from .PlistFormat import format as plist from .JSONFormat import format as json -formats = [plist, json] -formats_by_name = dict((f['name'], f) for f in formats) -format_names = list(formats_by_name.keys()) +formats = [plist, json] # type: List[Dict] +formats_by_name = dict((f['name'], f) for f in formats) # type: Dict[str, Dict] +format_names = list(formats_by_name.keys()) # type: List[str] def get_format(name): Index: lnt/trunk/lnt/server/db/testsuite.py =================================================================== --- lnt/trunk/lnt/server/db/testsuite.py +++ lnt/trunk/lnt/server/db/testsuite.py @@ -10,7 +10,7 @@ import sqlalchemy import sqlalchemy.ext.declarative import sqlalchemy.orm -from sqlalchemy import Column, Integer, ForeignKey, String, Binary +from sqlalchemy import Column, Integer, ForeignKey, String, Binary, Float from sqlalchemy.orm import relation from lnt.util import logger @@ -59,6 +59,35 @@ return '%s%r' % (self.__class__.__name__, (self.name,)) +_sample_type_to_sql = { + 'Real': Float, + 'Hash': String, + 'Status': Integer, +} + + +def is_known_sample_type(name): + return name in _sample_type_to_sql + + +def make_sample_column(name, type): + sqltype = _sample_type_to_sql.get(type) + if sqltype is None: + raise ValueError("test suite defines unknown sample type %r" % type) + options = [] + if type == 'Status': + options.append(ForeignKey(StatusKind.id)) + return Column(name, sqltype, *options) + + +def make_run_column(name): + return Column(name, String(256)) + + +def make_machine_column(name): + return Column(name, String(256)) + + class _MigrationError(Exception): def __init__(self, message): full_message = \ @@ -114,7 +143,6 @@ @staticmethod def from_json(data): - from . import testsuitedb if data.get('format_version') != '2': raise ValueError("Expected \"format_version\": \"2\" in schema") name = data['name'] @@ -150,7 +178,7 @@ display_name = metric_desc.get('display_name') unit = metric_desc.get('unit') unit_abbrev = metric_desc.get('unit_abbrev') - if not testsuitedb.is_known_sample_type(metric_type_name): + if not is_known_sample_type(metric_type_name): raise ValueError("Unknown metric type '%s'" % metric_type_name) metric_type = SampleType(metric_type_name) @@ -350,7 +378,6 @@ def _upgrade_to(connectable, tsschema, new_schema, dry_run=False): - from . import testsuitedb new = json.loads(new_schema.jsonschema) old = json.loads(tsschema.jsonschema) ts_name = new['name'] @@ -371,7 +398,7 @@ name) elif not dry_run: # Add missing columns - column = testsuitedb.make_sample_column(name, type) + column = make_sample_column(name, type) util.add_column(connectable, '%s_Sample' % ts_name, column) if len(old_metrics) != 0: @@ -398,7 +425,7 @@ old_field = old_run_fields.pop(name, None) # Add missing columns if old_field is None and not dry_run: - column = testsuitedb.make_run_column(name) + column = make_run_column(name) util.add_column(connectable, '%s_Run' % ts_name, column) if len(old_run_fields) > 0: @@ -418,7 +445,7 @@ old_field = old_machine_fields.pop(name, None) # Add missing columns if old_field is None and not dry_run: - column = testsuitedb.make_machine_column(name) + column = make_machine_column(name) util.add_column(connectable, '%s_Machine' % ts_name, column) if len(old_machine_fields) > 0: Index: lnt/trunk/lnt/server/db/testsuitedb.py =================================================================== --- lnt/trunk/lnt/server/db/testsuitedb.py +++ lnt/trunk/lnt/server/db/testsuitedb.py @@ -33,35 +33,6 @@ base_dict[key] = value -_sample_type_to_sql = { - 'Real': Float, - 'Hash': String, - 'Status': Integer, -} - - -def is_known_sample_type(name): - return name in _sample_type_to_sql - - -def make_sample_column(name, type): - sqltype = _sample_type_to_sql.get(type) - if sqltype is None: - raise ValueError("test suite defines unknown sample type %r" % type) - options = [] - if type == 'Status': - options.append(ForeignKey(testsuite.StatusKind.id)) - return Column(name, sqltype, *options) - - -def make_run_column(name): - return Column(name, String(256)) - - -def make_machine_column(name): - return Column(name, String(256)) - - class MachineInfoChanged(ValueError): pass @@ -153,7 +124,8 @@ raise ValueError("test suite defines reserved key %r" % ( iname)) - class_dict[iname] = item.column = make_machine_column(iname) + item.column = testsuite.make_machine_column(iname) + class_dict[iname] = item.column def __init__(self, name_value): self.id = None @@ -356,7 +328,8 @@ raise ValueError("test suite defines reserved key %r" % (iname,)) - class_dict[iname] = item.column = make_run_column(iname) + item.column = testsuite.make_run_column(iname) + class_dict[iname] = item.column def __init__(self, new_id, machine, order, start_time, end_time): self.id = new_id @@ -537,7 +510,8 @@ raise ValueError("test suite defines reserved key %r" % (iname,)) - item.column = make_sample_column(iname, item.type.name) + item.column = testsuite.make_sample_column(iname, + item.type.name) class_dict[iname] = item.column def __init__(self, run, test, **kwargs): Index: lnt/trunk/lnt/tests/nt.py =================================================================== --- lnt/trunk/lnt/tests/nt.py +++ lnt/trunk/lnt/tests/nt.py @@ -1,4 +1,5 @@ """LLVM test-suite compile and execution tests""" +from __future__ import absolute_import from __future__ import print_function import csv import os @@ -33,7 +34,7 @@ from lnt.server.reporting.analysis import REGRESSED, IMPROVED from lnt.util import logger from lnt.lnttool.common import submit_options -import builtintest +from . import builtintest class TestModule(object):