Reviewers: Sven Panne,

Message:
PTAL

Description:
Add test flags feature to perf runner.

BUG=

Please review this at https://codereview.chromium.org/722023006/

Base URL: https://chromium.googlesource.com/v8/v8.git@master

Affected files (+24, -1 lines):
  M tools/run_perf.py
  M tools/unittests/run_perf_test.py


Index: tools/run_perf.py
diff --git a/tools/run_perf.py b/tools/run_perf.py
index da139d7a6b871a43f71714e5785acf190755965e..3d388f6b4d899e767bdf22e7dde852c7afb98e04 100755
--- a/tools/run_perf.py
+++ b/tools/run_perf.py
@@ -15,6 +15,7 @@ The suite json format is expected to be:
   "archs": [<architecture name for which this suite is run>, ...],
   "binary": <name of binary to run, default "d8">,
   "flags": [<flag to d8>, ...],
+  "test_flags": [<flag to the test file>, ...],
   "run_count": <how often will this suite run (optional)>,
   "run_count_XXX": <how often will this suite run for arch XXX (optional)>,
   "resources": [<js file to be loaded before main>, ...]
@@ -54,6 +55,7 @@ Full example (suite with one runner):
 {
   "path": ["."],
   "flags": ["--expose-gc"],
+  "test_flags": ["5"],
   "archs": ["ia32", "x64"],
   "run_count": 5,
   "run_count_ia32": 3,
@@ -89,6 +91,8 @@ Full example (suite with several runners):
 }

Path pieces are concatenated. D8 is always run with the suite's path as cwd.
+
+The test flags are passed to the js test file after '--'.
 """

 from collections import OrderedDict
@@ -171,6 +175,7 @@ class DefaultSentinel(Node):
     self.path = []
     self.graphs = []
     self.flags = []
+    self.test_flags = []
     self.resources = []
     self.results_regexp = None
     self.stddev_regexp = None
@@ -190,12 +195,14 @@ class Graph(Node):
     assert isinstance(suite.get("path", []), list)
     assert isinstance(suite["name"], basestring)
     assert isinstance(suite.get("flags", []), list)
+    assert isinstance(suite.get("test_flags", []), list)
     assert isinstance(suite.get("resources", []), list)

     # Accumulated values.
     self.path = parent.path[:] + suite.get("path", [])
     self.graphs = parent.graphs[:] + [suite["name"]]
     self.flags = parent.flags[:] + suite.get("flags", [])
+    self.test_flags = parent.test_flags[:] + suite.get("test_flags", [])
     self.resources = parent.resources[:] + suite.get("resources", [])

     # Descrete values (with parent defaults).
@@ -282,11 +289,13 @@ class Runnable(Graph):

   def GetCommand(self, shell_dir):
     # TODO(machenbach): This requires +.exe if run on windows.
+    suffix = ["--"] + self.test_flags if self.test_flags else []
     return (
       [os.path.join(shell_dir, self.binary)] +
       self.flags +
       self.resources +
-      [self.main]
+      [self.main] +
+      suffix
     )

   def Run(self, runner):
Index: tools/unittests/run_perf_test.py
diff --git a/tools/unittests/run_perf_test.py b/tools/unittests/run_perf_test.py index 0c3d6f60777defb7cfe91000503995f2efc3c670..0f84a73aecc25a95c2dd35bc154fa8fc573f5819 100644
--- a/tools/unittests/run_perf_test.py
+++ b/tools/unittests/run_perf_test.py
@@ -179,6 +179,20 @@ class PerfTest(unittest.TestCase):
     self._VerifyErrors([])
self._VerifyMock(path.join("out", "x64.release", "d7"), "--flag", "run.js")

+  def testOneRunWithTestFlags(self):
+    test_input = dict(V8_JSON)
+    test_input["test_flags"] = ["2", "test_name"]
+    self._WriteTestInput(test_input)
+    self._MockCommand(["."], ["Richards: 1.234\nDeltaBlue: 10657567"])
+    self.assertEquals(0, self._CallMain())
+    self._VerifyResults("test", "score", [
+      {"name": "Richards", "results": ["1.234"], "stddev": ""},
+      {"name": "DeltaBlue", "results": ["10657567"], "stddev": ""},
+    ])
+    self._VerifyErrors([])
+ self._VerifyMock(path.join("out", "x64.release", "d7"), "--flag", "run.js",
+                     "--", "2", "test_name")
+
   def testTwoRuns_Units_SuiteName(self):
     test_input = dict(V8_JSON)
     test_input["run_count"] = 2


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to