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 os 5import logging 6import unittest 7 8from telemetry.core import util 9from telemetry.core.platform import proc_supporting_platform_backend 10 11 12class TestBackend( 13 proc_supporting_platform_backend.ProcSupportingPlatformBackend): 14 15 # pylint: disable=W0223 16 17 def __init__(self): 18 super(TestBackend, self).__init__() 19 self._mock_files = {} 20 21 def SetMockFile(self, filename, output): 22 self._mock_files[filename] = output 23 24 def _GetFileContents(self, filename): 25 return self._mock_files[filename] 26 27 28class ProcSupportingPlatformBackendTest(unittest.TestCase): 29 30 def testGetMemoryStatsBasic(self): 31 if not proc_supporting_platform_backend.resource: 32 logging.warning('Test not supported') 33 return 34 35 backend = TestBackend() 36 backend.SetMockFile( 37 '/proc/1/stat', 38 open(os.path.join(util.GetUnittestDataDir(), 'stat')).read()) 39 backend.SetMockFile( 40 '/proc/1/status', 41 open(os.path.join(util.GetUnittestDataDir(), 'status')).read()) 42 result = backend.GetMemoryStats(1) 43 self.assertEquals(result, {'VM': 1025978368, 44 'VMPeak': 1050099712, 45 'WorkingSetSize': 84000768, 46 'WorkingSetSizePeak': 144547840}) 47 48 def testGetMemoryStatsNoHWM(self): 49 if not proc_supporting_platform_backend.resource: 50 logging.warning('Test not supported') 51 return 52 53 backend = TestBackend() 54 backend.SetMockFile( 55 '/proc/1/stat', 56 open(os.path.join(util.GetUnittestDataDir(), 'stat')).read()) 57 backend.SetMockFile( 58 '/proc/1/status', 59 open(os.path.join(util.GetUnittestDataDir(), 'status_nohwm')).read()) 60 result = backend.GetMemoryStats(1) 61 self.assertEquals(result, {'VM': 1025978368, 62 'VMPeak': 1025978368, 63 'WorkingSetSize': 84000768, 64 'WorkingSetSizePeak': 84000768}) 65