diff options
author | primiano@chromium.org <primiano@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-14 20:47:04 +0000 |
---|---|---|
committer | primiano@chromium.org <primiano@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-14 20:47:04 +0000 |
commit | cfbbaf80719efcd1974c3fb5c6df21e69ed8930a (patch) | |
tree | 747dda2e4420d574396ef9211842d83b5eb43fda /tools | |
parent | ea02cde65c55e8a172d2e64941f764e591eb4434 (diff) | |
download | chromium_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.py | 9 | ||||
-rw-r--r-- | tools/memory_inspector/memory_inspector/core/backends_unittest.py | 53 | ||||
-rw-r--r-- | tools/memory_inspector/memory_inspector/core/memory_map_unittest.py | 39 | ||||
-rw-r--r-- | tools/memory_inspector/memory_inspector/core/stacktrace_unittest.py | 21 | ||||
-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-x | tools/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-x | tools/memory_inspector/run_tests | 35 | ||||
-rwxr-xr-x | tools/memory_inspector/tests/core_test.py | 115 |
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() |