浏览代码

Ordered tests by length of type name

This is done specifically to ensure that `plaintext` is run last.
msmith-techempower 10 年之前
父节点
当前提交
59bd388549
共有 1 个文件被更改,包括 15 次插入1 次删除
  1. 15 1
      toolset/benchmark/framework_test.py

+ 15 - 1
toolset/benchmark/framework_test.py

@@ -15,6 +15,7 @@ import logging
 import csv
 import shlex
 import math
+from collections import OrderedDict
 from threading import Thread
 from threading import Event
 
@@ -748,6 +749,13 @@ class FrameworkTest:
 def parse_config(config, directory, benchmarker):
   tests = []
 
+  # This sort ordering is set up specifically to return the length
+  # of the test name. There were SO many problems involved with
+  # 'plaintext' being run first (rather, just not last) that we
+  # needed to ensure that it was run last for every framework.
+  def testOrder(type_name):
+    return len(type_name)
+
   # The config object can specify multiple tests
   #   Loop over them and parse each into a FrameworkTest
   for test in config['tests']:
@@ -783,8 +791,14 @@ def parse_config(config, directory, benchmarker):
           # logging.debug("Missing arguments for test type %s for framework test %s", type_name, test_name)
           pass
 
+      # We need to sort by test_type to run
+      sortedTestKeys = sorted(runTests.keys(), key=testOrder)
+      sortedRunTests = OrderedDict()
+      for sortedTestKey in sortedTestKeys:
+        sortedRunTests[sortedTestKey] = runTests[sortedTestKey]
+
       # By passing the entire set of keys, each FrameworkTest will have a member for each key
-      tests.append(FrameworkTest(test_name, directory, benchmarker, runTests, test_keys))
+      tests.append(FrameworkTest(test_name, directory, benchmarker, sortedRunTests, test_keys))
 
   return tests
 ##############################################################