1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
8 from telemetry.core import util
9 from telemetry.core.platform import linux_based_platform_backend
12 class TestBackend(linux_based_platform_backend.LinuxBasedPlatformBackend):
14 # pylint: disable=W0223
17 super(TestBackend, self).__init__()
20 def SetMockFile(self, filename, output):
21 self._mock_files[filename] = output
23 def GetFileContents(self, filename):
24 return self._mock_files[filename]
26 def GetClockTicks(self):
30 class LinuxBasedPlatformBackendTest(unittest.TestCase):
32 def SetMockFileInBackend(self, backend, real_file, mock_file):
33 with open(os.path.join(util.GetUnittestDataDir(), real_file)) as f:
34 backend.SetMockFile(mock_file, f.read())
36 def testGetCpuStatsBasic(self):
37 if not linux_based_platform_backend.resource:
38 logging.warning('Test not supported')
41 backend = TestBackend()
42 self.SetMockFileInBackend(backend, 'stat', '/proc/1/stat')
43 result = backend.GetCpuStats(1)
44 self.assertEquals(result, {'CpuProcessTime': 22.0})
46 def testGetCpuTimestampBasic(self):
47 if not linux_based_platform_backend.resource:
48 logging.warning('Test not supported')
51 backend = TestBackend()
52 self.SetMockFileInBackend(backend, 'timer_list', '/proc/timer_list')
53 result = backend.GetCpuTimestamp()
54 self.assertEquals(result, {'TotalTime': 105054633.0})
56 def testGetMemoryStatsBasic(self):
57 if not linux_based_platform_backend.resource:
58 logging.warning('Test not supported')
61 backend = TestBackend()
62 self.SetMockFileInBackend(backend, 'stat', '/proc/1/stat')
63 self.SetMockFileInBackend(backend, 'status', '/proc/1/status')
64 self.SetMockFileInBackend(backend, 'smaps', '/proc/1/smaps')
65 result = backend.GetMemoryStats(1)
66 self.assertEquals(result, {'PrivateDirty': 5324800,
69 'WorkingSetSize': 84000768,
70 'WorkingSetSizePeak': 144547840})
72 def testGetMemoryStatsNoHWM(self):
73 if not linux_based_platform_backend.resource:
74 logging.warning('Test not supported')
77 backend = TestBackend()
78 self.SetMockFileInBackend(backend, 'stat', '/proc/1/stat')
79 self.SetMockFileInBackend(backend, 'status_nohwm', '/proc/1/status')
80 self.SetMockFileInBackend(backend, 'smaps', '/proc/1/smaps')
81 result = backend.GetMemoryStats(1)
82 self.assertEquals(result, {'PrivateDirty': 5324800,
85 'WorkingSetSize': 84000768,
86 'WorkingSetSizePeak': 84000768})