summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorprimiano@chromium.org <primiano@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-14 20:47:04 +0000
committerprimiano@chromium.org <primiano@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-14 20:47:04 +0000
commitcfbbaf80719efcd1974c3fb5c6df21e69ed8930a (patch)
tree747dda2e4420d574396ef9211842d83b5eb43fda /tools
parentea02cde65c55e8a172d2e64941f764e591eb4434 (diff)
downloadchromium_src-cfbbaf80719efcd1974c3fb5c6df21e69ed8930a.zip
chromium_src-cfbbaf80719efcd1974c3fb5c6df21e69ed8930a.tar.gz
chromium_src-cfbbaf80719efcd1974c3fb5c6df21e69ed8930a.tar.bz2
Fix directory layout for tools/memory_inspector tests.
This cl rearranges the directory layout for the memory_inspector tests. This is to ensure that: - Every unittest lives side-by-side with the module being tested. - The mocks/helper class live in the unittest package. - Nobody has to hack the sys.path ever. - Every (test and non) module uses the "import memory_inspector.submodule" pattern consistently, without creating any namespace ambiguities. BUG=340294 Review URL: https://codereview.chromium.org/167223002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251413 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools')
-rw-r--r--tools/memory_inspector/PRESUBMIT.py9
-rw-r--r--tools/memory_inspector/memory_inspector/core/backends_unittest.py53
-rw-r--r--tools/memory_inspector/memory_inspector/core/memory_map_unittest.py39
-rw-r--r--tools/memory_inspector/memory_inspector/core/stacktrace_unittest.py21
-rw-r--r--tools/memory_inspector/memory_inspector/unittest/__init__.py (renamed from tools/memory_inspector/tests/__init__.py)0
-rw-r--r--tools/memory_inspector/memory_inspector/unittest/mock_adb/__init__.py (renamed from tools/memory_inspector/tests/mock_adb/__init__.py)0
-rwxr-xr-xtools/memory_inspector/memory_inspector/unittest/mock_adb/adb (renamed from tools/memory_inspector/tests/mock_adb/adb)0
-rw-r--r--tools/memory_inspector/memory_inspector/unittest/mock_adb/mock_adb.py (renamed from tools/memory_inspector/tests/mock_adb/mock_adb.py)0
-rwxr-xr-xtools/memory_inspector/run_tests35
-rwxr-xr-xtools/memory_inspector/tests/core_test.py115
10 files changed, 152 insertions, 120 deletions
diff --git a/tools/memory_inspector/PRESUBMIT.py b/tools/memory_inspector/PRESUBMIT.py
index d3e1158..9508ae6 100644
--- a/tools/memory_inspector/PRESUBMIT.py
+++ b/tools/memory_inspector/PRESUBMIT.py
@@ -12,11 +12,10 @@ details on the presubmit API built into gcl.
def CommonChecks(input_api, output_api):
output = []
output.extend(input_api.canned_checks.RunPylint(input_api, output_api))
- output.extend(
- input_api.canned_checks.RunUnitTestsInDirectory(
- input_api, output_api,
- input_api.os_path.join(input_api.PresubmitLocalPath(), 'tests'),
- whitelist=[r'.+_test\.py$']))
+ output.extend(input_api.canned_checks.RunUnitTests(
+ input_api,
+ output_api,
+ [input_api.os_path.join(input_api.PresubmitLocalPath(), 'run_tests')]))
if input_api.is_committing:
output.extend(input_api.canned_checks.PanProjectChecks(input_api,
diff --git a/tools/memory_inspector/memory_inspector/core/backends_unittest.py b/tools/memory_inspector/memory_inspector/core/backends_unittest.py
new file mode 100644
index 0000000..f204028
--- /dev/null
+++ b/tools/memory_inspector/memory_inspector/core/backends_unittest.py
@@ -0,0 +1,53 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import unittest
+
+from memory_inspector.core import backends
+
+
+class MockDevice(backends.Device): # pylint: disable=W0223
+ def __init__(self, backend, device_id):
+ super(MockDevice, self).__init__(backend)
+ self.device_id = device_id
+
+ @property
+ def name(self):
+ return "Mock Device %s" % self.device_id
+
+ @property
+ def id(self):
+ return self.device_id
+
+
+class MockBackend(backends.Backend):
+ _SETTINGS = {'key_1': 'key descritpion 1'}
+
+ def __init__(self, backend_name):
+ super(MockBackend, self).__init__(MockBackend._SETTINGS)
+ self.backend_name = backend_name
+
+ def EnumerateDevices(self):
+ yield MockDevice(self, 'device-1')
+ yield MockDevice(self, 'device-2')
+
+ @property
+ def name(self):
+ return self.backend_name
+
+
+class BackendRegisterTest(unittest.TestCase):
+ def runTest(self):
+ mock_backend_1 = MockBackend('mock-backend-1')
+ mock_backend_2 = MockBackend('mock-backend-2')
+ self.assertEqual(mock_backend_1.settings['key_1'], 'key descritpion 1')
+ backends.Register(mock_backend_1)
+ backends.Register(mock_backend_2)
+ devices = list(backends.ListDevices())
+ self.assertEqual(len(devices), 4)
+ self.assertIsNotNone(backends.GetDevice('mock-backend-1', 'device-1'))
+ self.assertIsNotNone(backends.GetDevice('mock-backend-1', 'device-2'))
+ self.assertIsNotNone(backends.GetDevice('mock-backend-2', 'device-1'))
+ self.assertIsNotNone(backends.GetDevice('mock-backend-2', 'device-1'))
+ self.assertTrue('key_1' in mock_backend_1.settings)
diff --git a/tools/memory_inspector/memory_inspector/core/memory_map_unittest.py b/tools/memory_inspector/memory_inspector/core/memory_map_unittest.py
new file mode 100644
index 0000000..f7bc324
--- /dev/null
+++ b/tools/memory_inspector/memory_inspector/core/memory_map_unittest.py
@@ -0,0 +1,39 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import unittest
+
+from memory_inspector.core import memory_map
+
+
+class MemoryMapTest(unittest.TestCase):
+ def runTest(self):
+ mmap = memory_map.Map()
+ map_entry1 = memory_map.MapEntry(4096, 8191, 'rw--', '/foo', 0)
+ map_entry2 = memory_map.MapEntry(65536, 81919, 'rw--', '/bar', 4096)
+
+ # Test the de-offset logic.
+ self.assertEqual(map_entry1.GetRelativeOffset(4096), 0)
+ self.assertEqual(map_entry1.GetRelativeOffset(4100), 4)
+ self.assertEqual(map_entry2.GetRelativeOffset(65536), 4096)
+
+ # Test the page-resident logic.
+ map_entry2.resident_pages = [5] # 5 -> 101b.
+ self.assertTrue(map_entry2.IsPageResident(0))
+ self.assertFalse(map_entry2.IsPageResident(1))
+ self.assertTrue(map_entry2.IsPageResident(2))
+
+ # Test the lookup logic.
+ mmap.Add(map_entry1)
+ mmap.Add(map_entry2)
+ self.assertIsNone(mmap.Lookup(1024))
+ self.assertEqual(mmap.Lookup(4096), map_entry1)
+ self.assertEqual(mmap.Lookup(6000), map_entry1)
+ self.assertEqual(mmap.Lookup(8191), map_entry1)
+ self.assertIsNone(mmap.Lookup(8192))
+ self.assertIsNone(mmap.Lookup(65535))
+ self.assertEqual(mmap.Lookup(65536), map_entry2)
+ self.assertEqual(mmap.Lookup(67000), map_entry2)
+ self.assertEqual(mmap.Lookup(81919), map_entry2)
+ self.assertIsNone(mmap.Lookup(81920))
diff --git a/tools/memory_inspector/memory_inspector/core/stacktrace_unittest.py b/tools/memory_inspector/memory_inspector/core/stacktrace_unittest.py
new file mode 100644
index 0000000..c093958
--- /dev/null
+++ b/tools/memory_inspector/memory_inspector/core/stacktrace_unittest.py
@@ -0,0 +1,21 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import unittest
+
+from memory_inspector.core import stacktrace
+
+
+class StacktraceTest(unittest.TestCase):
+ def runTest(self):
+ st = stacktrace.Stacktrace()
+ frame_1 = stacktrace.Frame(20)
+ frame_2 = stacktrace.Frame(24)
+ frame_2.SetExecFileInfo('/foo/bar.so', 0)
+ self.assertEqual(frame_2.exec_file_name, 'bar.so')
+ st.Add(frame_1)
+ st.Add(frame_1)
+ st.Add(frame_2)
+ st.Add(frame_1)
+ self.assertEqual(st.depth, 4)
diff --git a/tools/memory_inspector/tests/__init__.py b/tools/memory_inspector/memory_inspector/unittest/__init__.py
index e69de29..e69de29 100644
--- a/tools/memory_inspector/tests/__init__.py
+++ b/tools/memory_inspector/memory_inspector/unittest/__init__.py
diff --git a/tools/memory_inspector/tests/mock_adb/__init__.py b/tools/memory_inspector/memory_inspector/unittest/mock_adb/__init__.py
index e69de29..e69de29 100644
--- a/tools/memory_inspector/tests/mock_adb/__init__.py
+++ b/tools/memory_inspector/memory_inspector/unittest/mock_adb/__init__.py
diff --git a/tools/memory_inspector/tests/mock_adb/adb b/tools/memory_inspector/memory_inspector/unittest/mock_adb/adb
index f871995..f871995 100755
--- a/tools/memory_inspector/tests/mock_adb/adb
+++ b/tools/memory_inspector/memory_inspector/unittest/mock_adb/adb
diff --git a/tools/memory_inspector/tests/mock_adb/mock_adb.py b/tools/memory_inspector/memory_inspector/unittest/mock_adb/mock_adb.py
index c514b0f..c514b0f 100644
--- a/tools/memory_inspector/tests/mock_adb/mock_adb.py
+++ b/tools/memory_inspector/memory_inspector/unittest/mock_adb/mock_adb.py
diff --git a/tools/memory_inspector/run_tests b/tools/memory_inspector/run_tests
new file mode 100755
index 0000000..acea524
--- /dev/null
+++ b/tools/memory_inspector/run_tests
@@ -0,0 +1,35 @@
+#!/usr/bin/python
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import logging
+import os
+import sys
+import unittest
+
+
+if __name__ == '__main__':
+ cur_dir = os.path.abspath(os.path.dirname(__file__))
+ chromium_dir = os.path.abspath(os.path.join(cur_dir, os.pardir, os.pardir))
+
+ sys.path += [
+ cur_dir,
+
+ # Include all dependencies.
+ os.path.join(chromium_dir, 'build', 'android'), # For pylib.
+ ]
+
+ logging.basicConfig(
+ level=logging.DEBUG if '-v' in sys.argv else logging.WARNING,
+ format='%(levelname)5s %(filename)15s(%(lineno)3d): %(message)s')
+
+ suite = unittest.TestSuite()
+ loader = unittest.TestLoader()
+ suite.addTests(loader.discover(start_dir=cur_dir, pattern='*_unittest.py'))
+
+ res = unittest.TextTestRunner(verbosity=2).run(suite)
+ if res.wasSuccessful():
+ sys.exit(0)
+ else:
+ sys.exit(1)
diff --git a/tools/memory_inspector/tests/core_test.py b/tools/memory_inspector/tests/core_test.py
deleted file mode 100755
index 8decea6..0000000
--- a/tools/memory_inspector/tests/core_test.py
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/python
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Unittests for the core backends modules."""
-
-import logging
-import os
-import sys
-import unittest
-
-sys.path.append(os.path.abspath(os.path.join(__file__, os.pardir, os.pardir)))
-
-from memory_inspector.core import backends
-from memory_inspector.core import memory_map
-from memory_inspector.core import stacktrace
-
-
-class MockDevice(backends.Device): # pylint: disable=W0223
- def __init__(self, backend, device_id):
- super(MockDevice, self).__init__(backend)
- self.device_id = device_id
-
- @property
- def name(self):
- return "Mock Device %s" % self.device_id
-
- @property
- def id(self):
- return self.device_id
-
-
-class MockBackend(backends.Backend):
- _SETTINGS = {'key_1': 'key descritpion 1'}
- def __init__(self, backend_name):
- super(MockBackend, self).__init__(MockBackend._SETTINGS)
- self.backend_name = backend_name
-
- def EnumerateDevices(self):
- yield MockDevice(self, 'device-1')
- yield MockDevice(self, 'device-2')
-
- @property
- def name(self):
- return self.backend_name
-
-
-class BackendRegisterTest(unittest.TestCase):
- def runTest(self):
- mock_backend_1 = MockBackend('mock-backend-1')
- mock_backend_2 = MockBackend('mock-backend-2')
- self.assertEqual(mock_backend_1.settings['key_1'], 'key descritpion 1')
- backends.Register(mock_backend_1)
- backends.Register(mock_backend_2)
- devices = list(backends.ListDevices())
- self.assertEqual(len(devices), 4)
- self.assertIsNotNone(backends.GetDevice('mock-backend-1', 'device-1'))
- self.assertIsNotNone(backends.GetDevice('mock-backend-1', 'device-2'))
- self.assertIsNotNone(backends.GetDevice('mock-backend-2', 'device-1'))
- self.assertIsNotNone(backends.GetDevice('mock-backend-2', 'device-1'))
- self.assertTrue('key_1' in mock_backend_1.settings)
-
-
-class MemoryMapTest(unittest.TestCase):
- def runTest(self):
- mmap = memory_map.Map()
- map_entry1 = memory_map.MapEntry(4096, 8191, 'rw--', '/foo', 0)
- map_entry2 = memory_map.MapEntry(65536, 81919, 'rw--', '/bar', 4096)
-
- # Test the de-offset logic.
- self.assertEqual(map_entry1.GetRelativeOffset(4096), 0)
- self.assertEqual(map_entry1.GetRelativeOffset(4100), 4)
- self.assertEqual(map_entry2.GetRelativeOffset(65536), 4096)
-
- # Test the page-resident logic.
- map_entry2.resident_pages = [5] # 5 -> 101b.
- self.assertTrue(map_entry2.IsPageResident(0))
- self.assertFalse(map_entry2.IsPageResident(1))
- self.assertTrue(map_entry2.IsPageResident(2))
-
- # Test the lookup logic.
- mmap.Add(map_entry1)
- mmap.Add(map_entry2)
- self.assertIsNone(mmap.Lookup(1024))
- self.assertEqual(mmap.Lookup(4096), map_entry1)
- self.assertEqual(mmap.Lookup(6000), map_entry1)
- self.assertEqual(mmap.Lookup(8191), map_entry1)
- self.assertIsNone(mmap.Lookup(8192))
- self.assertIsNone(mmap.Lookup(65535))
- self.assertEqual(mmap.Lookup(65536), map_entry2)
- self.assertEqual(mmap.Lookup(67000), map_entry2)
- self.assertEqual(mmap.Lookup(81919), map_entry2)
- self.assertIsNone(mmap.Lookup(81920))
-
-
-class StacktraceTest(unittest.TestCase):
- def runTest(self):
- st = stacktrace.Stacktrace()
- frame_1 = stacktrace.Frame(20)
- frame_2 = stacktrace.Frame(24)
- frame_2.SetExecFileInfo('/foo/bar.so', 0)
- self.assertEqual(frame_2.exec_file_name, 'bar.so')
- st.Add(frame_1)
- st.Add(frame_1)
- st.Add(frame_2)
- st.Add(frame_1)
- self.assertEqual(st.depth, 4)
-
-
-if __name__ == '__main__':
- logging.basicConfig(
- level=logging.DEBUG if '-v' in sys.argv else logging.ERROR,
- format='%(levelname)5s %(filename)15s(%(lineno)3d): %(message)s')
- unittest.main()