Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / core / platform / linux_based_platform_backend_unittest.py
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.
4 import logging
5 import os
6 import unittest
7
8 from telemetry.core import util
9 from telemetry.core.platform import linux_based_platform_backend
10
11
12 class TestBackend(linux_based_platform_backend.LinuxBasedPlatformBackend):
13
14   # pylint: disable=W0223
15
16   def __init__(self):
17     super(TestBackend, self).__init__()
18     self._mock_files = {}
19
20   def SetMockFile(self, filename, output):
21     self._mock_files[filename] = output
22
23   def GetFileContents(self, filename):
24     return self._mock_files[filename]
25
26   def GetClockTicks(self):
27     return 41
28
29
30 class LinuxBasedPlatformBackendTest(unittest.TestCase):
31
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())
35
36   def testGetCpuStatsBasic(self):
37     if not linux_based_platform_backend.resource:
38       logging.warning('Test not supported')
39       return
40
41     backend = TestBackend()
42     self.SetMockFileInBackend(backend, 'stat', '/proc/1/stat')
43     result = backend.GetCpuStats(1)
44     self.assertEquals(result, {'CpuProcessTime': 22.0})
45
46   def testGetCpuTimestampBasic(self):
47     if not linux_based_platform_backend.resource:
48       logging.warning('Test not supported')
49       return
50
51     backend = TestBackend()
52     self.SetMockFileInBackend(backend, 'timer_list', '/proc/timer_list')
53     result = backend.GetCpuTimestamp()
54     self.assertEquals(result, {'TotalTime': 105054633.0})
55
56   def testGetMemoryStatsBasic(self):
57     if not linux_based_platform_backend.resource:
58       logging.warning('Test not supported')
59       return
60
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,
67                                'VM': 1025978368,
68                                'VMPeak': 1050099712,
69                                'WorkingSetSize': 84000768,
70                                'WorkingSetSizePeak': 144547840})
71
72   def testGetMemoryStatsNoHWM(self):
73     if not linux_based_platform_backend.resource:
74       logging.warning('Test not supported')
75       return
76
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,
83                                'VM': 1025978368,
84                                'VMPeak': 1025978368,
85                                'WorkingSetSize': 84000768,
86                                'WorkingSetSizePeak': 84000768})