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. 4import logging 5import os 6import unittest 7 8from telemetry.core import util 9from telemetry.core.platform import linux_based_platform_backend 10 11 12class 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 27class LinuxBasedPlatformBackendTest(unittest.TestCase): 28 29 def testGetMemoryStatsBasic(self): 30 if not linux_based_platform_backend.resource: 31 logging.warning('Test not supported') 32 return 33 34 backend = TestBackend() 35 with open(os.path.join(util.GetUnittestDataDir(), 'stat')) as f: 36 backend.SetMockFile('/proc/1/stat', f.read()) 37 with open(os.path.join(util.GetUnittestDataDir(), 'status')) as f: 38 backend.SetMockFile('/proc/1/status', f.read()) 39 with open(os.path.join(util.GetUnittestDataDir(), 'smaps')) as f: 40 backend.SetMockFile('/proc/1/smaps', f.read()) 41 result = backend.GetMemoryStats(1) 42 self.assertEquals(result, {'PrivateDirty': 5324800, 43 'VM': 1025978368, 44 'VMPeak': 1050099712, 45 'WorkingSetSize': 84000768, 46 'WorkingSetSizePeak': 144547840}) 47 48 def testGetMemoryStatsNoHWM(self): 49 if not linux_based_platform_backend.resource: 50 logging.warning('Test not supported') 51 return 52 53 backend = TestBackend() 54 with open(os.path.join(util.GetUnittestDataDir(), 'stat')) as f: 55 backend.SetMockFile('/proc/1/stat', f.read()) 56 with open(os.path.join(util.GetUnittestDataDir(), 'status_nohwm')) as f: 57 backend.SetMockFile('/proc/1/status', f.read()) 58 with open(os.path.join(util.GetUnittestDataDir(), 'smaps')) as f: 59 backend.SetMockFile('/proc/1/smaps', f.read()) 60 result = backend.GetMemoryStats(1) 61 self.assertEquals(result, {'PrivateDirty': 5324800, 62 'VM': 1025978368, 63 'VMPeak': 1025978368, 64 'WorkingSetSize': 84000768, 65 'WorkingSetSizePeak': 84000768}) 66