Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(446)

Unified Diff: tools/telemetry/telemetry/internal/platform/profiler/android_profiling_helper_unittest.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/internal/platform/profiler/android_profiling_helper_unittest.py
diff --git a/tools/telemetry/telemetry/internal/platform/profiler/android_profiling_helper_unittest.py b/tools/telemetry/telemetry/internal/platform/profiler/android_profiling_helper_unittest.py
deleted file mode 100644
index d178aac690f8142ca7d82304a05c2f0429b32b39..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/internal/platform/profiler/android_profiling_helper_unittest.py
+++ /dev/null
@@ -1,211 +0,0 @@
-# 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 os
-import pickle
-import re
-import shutil
-import tempfile
-import time
-import unittest
-
-from telemetry.core import util
-from telemetry import decorators
-from telemetry.internal.platform.profiler import android_profiling_helper
-from telemetry.testing import simple_mock
-from telemetry.testing import tab_test_case
-
-
-def _GetLibrariesMappedIntoProcesses(device, pids):
- libs = set()
- for pid in pids:
- maps_file = '/proc/%d/maps' % pid
- maps = device.ReadFile(maps_file, as_root=True).splitlines()
- for map_line in maps:
- lib = re.match(r'.*\s(/.*[.]so)$', map_line)
- if lib:
- libs.add(lib.group(1))
- return libs
-
-
-class TestFileMetadataMatches(unittest.TestCase):
- def setUp(self):
- self.tempdir = tempfile.mkdtemp()
- self.filename_a = os.path.join(self.tempdir, 'filea')
- self.filename_b = os.path.join(self.tempdir, 'fileb')
-
- with open(self.filename_a, 'w') as f:
- f.write('testing')
-
- def tearDown(self):
- shutil.rmtree(self.tempdir)
-
- def testDoesntMatchNonExistant(self):
- self.assertFalse(
- android_profiling_helper._FileMetadataMatches(
- self.filename_a, self.filename_b))
-
- def testDoesntMatchJustExistence(self):
- with open(self.filename_b, 'w') as f:
- f.write('blah')
-
- self.assertFalse(
- android_profiling_helper._FileMetadataMatches(
- self.filename_a, self.filename_b))
-
- def testDoesntMatchCopy(self):
- # This test can run so fast that the file system doesn't have enough
- # accuracy to differentiate between the copy and initial file times.
- # Hence we need to guarantee a delay here.
- time.sleep(3)
- shutil.copy(self.filename_a, self.filename_b)
- self.assertFalse(
- android_profiling_helper._FileMetadataMatches(
- self.filename_a, self.filename_b))
-
- def testMatchesAfterCopy2(self):
- shutil.copy2(self.filename_a, self.filename_b)
- self.assertTrue(
- android_profiling_helper._FileMetadataMatches(
- self.filename_a, self.filename_b))
-
- def testDoesntMatchAfterCopy2ThenModify(self):
- shutil.copy2(self.filename_a, self.filename_b)
-
- filea = open(self.filename_a, 'w')
- filea.write('moar testing!')
- filea.close()
-
- self.assertFalse(
- android_profiling_helper._FileMetadataMatches(
- self.filename_a, self.filename_b))
-
- def testDoesntMatchAfterCopy2ThenModifyStats(self):
- shutil.copy2(self.filename_a, self.filename_b)
- os.utime(self.filename_a, (20, 20))
- self.assertFalse(
- android_profiling_helper._FileMetadataMatches(
- self.filename_a, self.filename_b))
-
- def testMatchesAfterCopyStatWithDifferentContent(self):
- fileb = open(self.filename_b, 'w')
- fileb.write('blahing')
- fileb.close()
-
- shutil.copystat(self.filename_a, self.filename_b)
-
- self.assertTrue(
- android_profiling_helper._FileMetadataMatches(
- self.filename_a, self.filename_b))
-
-
-class TestAndroidProfilingHelper(unittest.TestCase):
-
- @decorators.Enabled('linux')
- def testGetRequiredLibrariesForPerfProfile(self):
- perf_output = os.path.join(
- util.GetUnittestDataDir(), 'sample_perf_report_output.txt')
- with open(perf_output) as f:
- perf_output = f.read()
-
- mock_popen = simple_mock.MockObject()
- mock_popen.ExpectCall('communicate').WillReturn([None, perf_output])
-
- mock_subprocess = simple_mock.MockObject()
- mock_subprocess.ExpectCall(
- 'Popen').WithArgs(simple_mock.DONT_CARE).WillReturn(mock_popen)
- mock_subprocess.SetAttribute('PIPE', simple_mock.MockObject())
-
- real_subprocess = android_profiling_helper.subprocess
- android_profiling_helper.subprocess = mock_subprocess
- try:
- libs = android_profiling_helper.GetRequiredLibrariesForPerfProfile('foo')
- self.assertEqual(libs, set([
- '/data/app-lib/com.google.android.apps.chrome-2/libchrome.2016.0.so',
- '/system/lib/libart.so',
- '/system/lib/libc.so',
- '/system/lib/libm.so']))
- finally:
- android_profiling_helper.subprocess = real_subprocess
-
- @decorators.Enabled('android')
- def testGetRequiredLibrariesForVTuneProfile(self):
- vtune_db_output = os.path.join(
- util.GetUnittestDataDir(), 'sample_vtune_db_output')
- with open(vtune_db_output, 'rb') as f:
- vtune_db_output = pickle.load(f)
-
- mock_cursor = simple_mock.MockObject()
- mock_cursor.ExpectCall(
- 'execute').WithArgs(simple_mock.DONT_CARE).WillReturn(vtune_db_output)
-
- mock_conn = simple_mock.MockObject()
- mock_conn.ExpectCall('cursor').WillReturn(mock_cursor)
- mock_conn.ExpectCall('close')
-
- mock_sqlite3 = simple_mock.MockObject()
- mock_sqlite3.ExpectCall(
- 'connect').WithArgs(simple_mock.DONT_CARE).WillReturn(mock_conn)
-
- real_sqlite3 = android_profiling_helper.sqlite3
- android_profiling_helper.sqlite3 = mock_sqlite3
- try:
- libs = android_profiling_helper.GetRequiredLibrariesForVTuneProfile('foo')
- self.assertEqual(libs, set([
- '/data/app-lib/com.google.android.apps.chrome-1/libchrome.2019.0.so',
- '/system/lib/libdvm.so',
- '/system/lib/libc.so',
- '/system/lib/libm.so']))
- finally:
- android_profiling_helper.sqlite3 = real_sqlite3
-
-
-class TestAndroidProfilingHelperTabTestCase(tab_test_case.TabTestCase):
-
- def setUp(self):
- super(TestAndroidProfilingHelperTabTestCase, self).setUp()
- # pylint: disable=protected-access
- browser_backend = self._browser._browser_backend
- self._device = browser_backend.device()
-
- @decorators.Enabled('android')
- def testCreateSymFs(self):
- # pylint: disable=protected-access
- browser_pid = self._browser._browser_backend.pid
- pids = ([browser_pid] +
- self._browser._platform_backend.GetChildPids(browser_pid))
- libs = _GetLibrariesMappedIntoProcesses(self._device, pids)
- assert libs
-
- symfs_dir = tempfile.mkdtemp()
- try:
- kallsyms = android_profiling_helper.CreateSymFs(self._device, symfs_dir,
- libs)
-
- # Check that we have kernel symbols.
- assert os.path.exists(kallsyms)
-
- is_unstripped = re.compile(r'^/data/app(-lib)?/.*\.so$')
- has_unstripped = False
-
- # Check that all requested libraries are present.
- for lib in libs:
- has_unstripped = has_unstripped or is_unstripped.match(lib)
- assert os.path.exists(os.path.join(symfs_dir, lib[1:])), \
- '%s not found in symfs' % lib
-
- # Make sure we found at least one unstripped library.
- assert has_unstripped
- finally:
- shutil.rmtree(symfs_dir)
-
- # Test fails: crbug.com/437081
- # @decorators.Enabled('android')
- @decorators.Disabled('all')
- def testGetToolchainBinaryPath(self):
- with tempfile.NamedTemporaryFile() as libc:
- self._device.PullFile('/system/lib/libc.so', libc.name)
- path = android_profiling_helper.GetToolchainBinaryPath(libc.name,
- 'objdump')
- assert path and os.path.exists(path)

Powered by Google App Engine
This is Rietveld 408576698