summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorglider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-22 23:05:13 +0000
committerglider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-22 23:05:13 +0000
commit54fa38644205c2974663ef9744b732528203f765 (patch)
tree99363ada726c6b8519526586eb78fa866572a0aa
parent70e7d12a9b258f40acabc482f8541c9caf2d0e4d (diff)
downloadchromium_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-xtools/valgrind/asan/chrome_tests.py (renamed from tools/asan/chrome_tests.py)0
-rwxr-xr-xtools/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-xtools/valgrind/valgrind_test.py55
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: