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 unittest 5 6 from telemetry.internal.platform import gpu_device 7 from telemetry.internal.platform import gpu_info 8 from telemetry.internal.platform import system_info 9 10 11 class TestSystemInfo(unittest.TestCase): 12 13 def testConstruction(self): 14 data = { 15 'model_name': 'MacBookPro 10.1', 16 'gpu': { 17 'devices': [ 18 {'vendor_id': 1000, 'device_id': 2000, 19 'vendor_string': 'a', 'device_string': 'b'}, 20 ] 21 } 22 } 23 info = system_info.SystemInfo.FromDict(data) 24 self.assertTrue(isinstance(info, system_info.SystemInfo)) 25 self.assertTrue(isinstance(info.gpu, gpu_info.GPUInfo)) 26 self.assertEquals(info.model_name, 'MacBookPro 10.1') 27 self.assertTrue(len(info.gpu.devices) == 1) 28 self.assertTrue(isinstance(info.gpu.devices[0], gpu_device.GPUDevice)) 29 self.assertEquals(info.gpu.devices[0].vendor_id, 1000) 30 self.assertEquals(info.gpu.devices[0].device_id, 2000) 31 self.assertEquals(info.gpu.devices[0].vendor_string, 'a') 32 self.assertEquals(info.gpu.devices[0].device_string, 'b') 33 34 def testEmptyModelName(self): 35 data = { 36 'model_name': '', 37 'gpu': { 38 'devices': [ 39 {'vendor_id': 1000, 'device_id': 2000, 40 'vendor_string': 'a', 'device_string': 'b'}, 41 ] 42 } 43 } 44 try: 45 info = system_info.SystemInfo.FromDict(data) 46 self.assertEquals(info.model_name, '') 47 except AssertionError: 48 raise 49 except Exception: 50 self.fail('Should not raise exception for empty model_name string') 51 52 def testMissingAttrsFromDict(self): 53 data = { 54 'model_name': 'MacBookPro 10.1', 55 'devices': [{'vendor_id': 1000, 'device_id': 2000, 56 'vendor_string': 'a', 'device_string': 'b'}] 57 } 58 59 for k in data: 60 data_copy = data.copy() 61 del data_copy[k] 62 try: 63 system_info.SystemInfo.FromDict(data_copy) 64 self.fail('Should raise exception if attribute "%s" is missing' % k) 65 except AssertionError: 66 raise 67 except KeyError: 68 pass 69