blob: b7bc8cf3e0a49d0dab592447b905f3c601e9b2d4 [file] [log] [blame]
# Copyright 2013 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 unittest
from telemetry.core import util
from telemetry.internal.platform import linux_based_platform_backend
import mock
class TestBackend(linux_based_platform_backend.LinuxBasedPlatformBackend):
# pylint: disable=abstract-method
def __init__(self):
super(TestBackend, self).__init__()
self._mock_files = {}
def SetMockFile(self, filename, output):
self._mock_files[filename] = output
def GetFileContents(self, filename):
return self._mock_files[filename]
def GetClockTicks(self):
return 41
class LinuxBasedPlatformBackendTest(unittest.TestCase):
def SetMockFileInBackend(self, backend, real_file, mock_file):
with open(os.path.join(util.GetUnittestDataDir(), real_file)) as f:
backend.SetMockFile(mock_file, f.read())
def testGetSystemCommitCharge(self):
if not linux_based_platform_backend.resource:
logging.warning('Test not supported')
return
backend = TestBackend()
self.SetMockFileInBackend(backend, 'proc_meminfo', '/proc/meminfo')
result = backend.GetSystemCommitCharge()
# 25252140 == MemTotal - MemFree - Buffers - Cached (in kB)
self.assertEquals(result, 25252140)
def testGetSystemTotalPhysicalMemory(self):
if not linux_based_platform_backend.resource:
logging.warning('Test not supported')
return
backend = TestBackend()
self.SetMockFileInBackend(backend, 'proc_meminfo', '/proc/meminfo')
result = backend.GetSystemTotalPhysicalMemory()
# 67479191552 == MemTotal * 1024
self.assertEquals(result, 67479191552)
def testGetCpuStatsBasic(self):
if not linux_based_platform_backend.resource:
logging.warning('Test not supported')
return
backend = TestBackend()
self.SetMockFileInBackend(backend, 'stat', '/proc/1/stat')
result = backend.GetCpuStats(1)
self.assertEquals(result, {'CpuProcessTime': 22.0})
def testGetCpuTimestampBasic(self):
if not linux_based_platform_backend.resource:
logging.warning('Test not supported')
return
jiffies_grep_string = """
jiffies
jiffies a1111
.last_jiffies : 4307239958
.next_jiffies : 4307239968
jiffies: 10505463300
jiffies: 10505463333
"""
with mock.patch.object(
linux_based_platform_backend.LinuxBasedPlatformBackend,
'RunCommand', return_value=jiffies_grep_string) as mock_method:
backend = linux_based_platform_backend.LinuxBasedPlatformBackend()
result = backend.GetCpuTimestamp()
self.assertEquals(result, {'TotalTime': 105054633.0})
mock_method.assert_call_once_with(
['grep', '-m', '1', 'jiffies:', '/proc/timer_list'])
def testGetMemoryStatsBasic(self):
if not linux_based_platform_backend.resource:
logging.warning('Test not supported')
return
backend = TestBackend()
self.SetMockFileInBackend(backend, 'stat', '/proc/1/stat')
self.SetMockFileInBackend(backend, 'status', '/proc/1/status')
self.SetMockFileInBackend(backend, 'smaps', '/proc/1/smaps')
result = backend.GetMemoryStats(1)
self.assertEquals(result, {'PrivateDirty': 5324800,
'VM': 1025978368,
'VMPeak': 1050099712,
'WorkingSetSize': 84000768,
'WorkingSetSizePeak': 144547840})
def testGetMemoryStatsNoHWM(self):
if not linux_based_platform_backend.resource:
logging.warning('Test not supported')
return
backend = TestBackend()
self.SetMockFileInBackend(backend, 'stat', '/proc/1/stat')
self.SetMockFileInBackend(backend, 'status_nohwm', '/proc/1/status')
self.SetMockFileInBackend(backend, 'smaps', '/proc/1/smaps')
result = backend.GetMemoryStats(1)
self.assertEquals(result, {'PrivateDirty': 5324800,
'VM': 1025978368,
'VMPeak': 1025978368,
'WorkingSetSize': 84000768,
'WorkingSetSizePeak': 84000768})