Chromium Code Reviews| Index: scripts/master/factory/chromium_commands.py | 
| diff --git a/scripts/master/factory/chromium_commands.py b/scripts/master/factory/chromium_commands.py | 
| index 341090926b4fb21aea455afbd2d59dc877d1a86e..5db4cd6a194243bcd7e086cb79d27cf1f2e4a988 100644 | 
| --- a/scripts/master/factory/chromium_commands.py | 
| +++ b/scripts/master/factory/chromium_commands.py | 
| @@ -1027,6 +1027,85 @@ class ChromiumCommands(commands.FactoryCommands): | 
| test_command=cmd, | 
| do_step_if=self.TestStepFilter) | 
| + def AddWebRTCTests(self, tests, factory_properties, timeout=1200): | 
| 
 
iannucci
2013/06/25 05:32:27
Breaks my heart to add more code to the master :/
 
 | 
| + """Adds a list of tests, possibly prefixed for running within a tool. | 
| + | 
| + To run a test under memcheck, prefix the test name with 'memcheck_'. | 
| + To run a test under tsan, prefix the test name with 'tsan_'. | 
| + The following prefixes are supported: | 
| + - 'memcheck_' for memcheck | 
| + - 'tsan_' for Thread Sanitizer (tsan) | 
| + - 'tsan_gcc_' for Thread Sanitizer (GCC) | 
| + - 'tsan_rv_' for Thread Sanitizer (RaceVerifier) | 
| + - 'drmemory_full_' for Dr Memory (full) | 
| + - 'drmemory_light_' for Dr Memory (light) | 
| + - 'drmemory_pattern_' for Dr Memory (pattern) | 
| + | 
| + To run a test with perf measurements; add a key 'perf_measuring_tests' | 
| + mapped to a list of test names in the factory properties. | 
| + | 
| + To run a test using the buildbot_tests.py script in WebRTC; add a key | 
| + 'custom_cmd_line_tests' mapped to a list of test names in the factory | 
| + properties. | 
| + | 
| + Args: | 
| + tests: List of test names, possibly prefixed as described above. | 
| + factory_properties: Dict of properties to be used during execution. | 
| + timeout: Max time a test may run before it is killed. | 
| + """ | 
| + | 
| + def M(test, prefix, fp, timeout): | 
| + """If the prefix matches the test name it is added and True is returned. | 
| + """ | 
| + if test.startswith(prefix): | 
| + self.AddMemoryTest(test[len(prefix):], prefix[:-1], timeout, fp) | 
| + return True | 
| + return False | 
| + | 
| + def IsPerf(test_name, factory_properties): | 
| + perf_measuring_tests = factory_properties.get('perf_measuring_tests', []) | 
| + return test_name in perf_measuring_tests | 
| + | 
| + custom_cmd_line_tests = factory_properties.get('custom_cmd_line_tests', []) | 
| + for test in tests: | 
| + if M(test, 'memcheck_', factory_properties, timeout): | 
| + continue | 
| + if M(test, 'tsan_rv_', factory_properties, timeout): | 
| + continue | 
| + if M(test, 'tsan_', factory_properties, timeout): | 
| + continue | 
| + if M(test, 'drmemory_full_', factory_properties, timeout): | 
| + continue | 
| + if M(test, 'drmemory_light_', factory_properties, timeout): | 
| + continue | 
| + if M(test, 'drmemory_pattern_', factory_properties, timeout): | 
| + continue | 
| + | 
| + if test in custom_cmd_line_tests: | 
| + # This hardcoded path is not pretty but it's better than duplicating | 
| + # the output-path-finding code that only seems to exist in runtest.py. | 
| + test_run_script = 'src/out/%s/buildbot_tests.py' % self._target | 
| + args_list = ['--test', test] | 
| + if IsPerf(test, factory_properties): | 
| + self.AddAnnotatedPerfStep(test_name=test, gtest_filter=None, | 
| + log_type='graphing', | 
| + factory_properties=factory_properties, | 
| + cmd_name=test_run_script, | 
| + cmd_options=args_list, step_name=test, | 
| + py_script=True) | 
| + else: | 
| + cmd = self.GetPythonTestCommand(test_run_script, arg_list=args_list) | 
| + self.AddTestStep(chromium_step.AnnotatedCommand, test, cmd) | 
| + else: | 
| + if IsPerf(test, factory_properties): | 
| + self.AddAnnotatedPerfStep(test_name=test, gtest_filter=None, | 
| + log_type='graphing', | 
| + factory_properties=factory_properties, | 
| + cmd_name=test) | 
| + else: | 
| + self.AddGTestTestStep(test_name=test, | 
| + factory_properties=factory_properties) | 
| + | 
| def AddWebkitTests(self, factory_properties=None): | 
| """Adds a step to the factory to run the WebKit layout tests. |