diff options
author | glider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-22 23:05:13 +0000 |
---|---|---|
committer | glider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-22 23:05:13 +0000 |
commit | 54fa38644205c2974663ef9744b732528203f765 (patch) | |
tree | 99363ada726c6b8519526586eb78fa866572a0aa | |
parent | 70e7d12a9b258f40acabc482f8541c9caf2d0e4d (diff) | |
download | chromium_src-54fa38644205c2974663ef9744b732528203f765.zip chromium_src-54fa38644205c2974663ef9744b732528203f765.tar.gz chromium_src-54fa38644205c2974663ef9744b732528203f765.tar.bz2 |
Implement the EmbeddedTool class in valgrind_test.py to allow running tools that are embedded into binaries.
Merge tools/asan with tools/valgrind.
This CL depends on http://codereview.chromium.org/7926011/
Review URL: http://codereview.chromium.org/7922010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102390 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | tools/valgrind/asan/asan_test.py (renamed from tools/asan/asan_test.py) | 0 | ||||
-rwxr-xr-x | tools/valgrind/asan/chrome_tests.py (renamed from tools/asan/chrome_tests.py) | 0 | ||||
-rwxr-xr-x | tools/valgrind/asan/chrome_tests.sh (renamed from tools/asan/chrome_tests.sh) | 0 | ||||
-rw-r--r-- | tools/valgrind/gtest_exclude/base_unittests.gtest-asan.txt (renamed from tools/asan/base_unittests.gtest-asan.txt) | 2 | ||||
-rwxr-xr-x | tools/valgrind/valgrind_test.py | 55 |
5 files changed, 56 insertions, 1 deletions
diff --git a/tools/asan/asan_test.py b/tools/valgrind/asan/asan_test.py index dcdff8c..dcdff8c 100644 --- a/tools/asan/asan_test.py +++ b/tools/valgrind/asan/asan_test.py diff --git a/tools/asan/chrome_tests.py b/tools/valgrind/asan/chrome_tests.py index 8016ce8..8016ce8 100755 --- a/tools/asan/chrome_tests.py +++ b/tools/valgrind/asan/chrome_tests.py diff --git a/tools/asan/chrome_tests.sh b/tools/valgrind/asan/chrome_tests.sh index e43dc2b..e43dc2b 100755 --- a/tools/asan/chrome_tests.sh +++ b/tools/valgrind/asan/chrome_tests.sh diff --git a/tools/asan/base_unittests.gtest-asan.txt b/tools/valgrind/gtest_exclude/base_unittests.gtest-asan.txt index 1882b18..4dc8558 100644 --- a/tools/asan/base_unittests.gtest-asan.txt +++ b/tools/valgrind/gtest_exclude/base_unittests.gtest-asan.txt @@ -1,3 +1,3 @@ # This test intentionally dereferences a NULL pointer, # we don't want to handle it. -ProcessUtilTest.GetTerminationStatusCrash +#ProcessUtilTest.GetTerminationStatusCrash diff --git a/tools/valgrind/valgrind_test.py b/tools/valgrind/valgrind_test.py index 953f97f..13b6bd0 100755 --- a/tools/valgrind/valgrind_test.py +++ b/tools/valgrind/valgrind_test.py @@ -967,6 +967,59 @@ class RaceVerifier(object): def Run(self, args, module): return self.Main(args, False) +class EmbeddedTool(BaseTool): + """Abstract class for tools embedded directly into the test binary.""" + def __init__(self): + super(EmbeddedTool, self).__init__() + self._env = {} + + def ToolCommand(self): + """Basically just the args of the script.""" + return self._args + + def NeedsPipes(self): + """True iff the tool needs to chain several subprocesses.""" + raise NotImplementedError, "This method should be implemented " \ + "in the tool-specific subclass" + + def Execute(self): + """Executes the app to be tested.""" + for var in self._env: + self.PutEnvAndLog(var, self._env[var]) + proc = self.ToolCommand() + logging.info('starting execution...') + if self.NeedsPipes(): + return common.RunSubprocessChain(proc, self._timeout) + else: + return common.RunSubprocess(proc, self._timeout) + + def PutEnvAndLog(self, env_name, env_value): + """Sets the env var |env_name| to |env_value| and writes to logging.info. + """ + os.putenv(env_name, env_value) + logging.info('export %s=%s', env_name, env_value) + + +class Asan(EmbeddedTool): + def __init__(self): + super(Asan, self).__init__() + self._timeout = 1200 + + def ToolName(self): + return "asan" + + def NeedsPipes(self): + return True + + def ToolCommand(self): + procs = [self._args] + procs.append([os.path.join(self._source_dir, "third_party", "asan", + "scripts", "asan_symbolize.py")]) + procs.append(["c++filt"]) + return procs + + def Analyze(sels, unused_check_sanity): + return 0 class ToolFactory: def Create(self, tool_name): @@ -986,6 +1039,8 @@ class ToolFactory: return DrMemory(True) if tool_name == "tsan_rv": return RaceVerifier() + if tool_name == "asan": + return Asan() try: platform_name = common.PlatformNames()[0] except common.NotImplementedError: |