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 unittest 5 6from telemetry.core import gpu_device 7from telemetry.core import gpu_info 8 9 10class TestGPUInfo(unittest.TestCase): 11 def testConstruction(self): 12 data = { 13 'devices': [ 14 { 'vendor_id': 1000, 'device_id': 2000, 15 'vendor_string': 'a', 'device_string': 'b' }, 16 { 'vendor_id': 3000, 'device_id': 4000, 17 'vendor_string': 'k', 'device_string': 'l' } 18 ], 19 'aux_attributes': { 20 'optimus': False, 21 'amd_switchable': False, 22 'lenovo_dcute': False, 23 'driver_vendor': 'c', 24 'driver_version': 'd', 25 'driver_date': 'e', 26 'gl_version_string': 'g', 27 'gl_vendor': 'h', 28 'gl_renderer': 'i', 29 'gl_extensions': 'j', 30 } 31 } 32 info = gpu_info.GPUInfo.FromDict(data) 33 self.assertTrue(len(info.devices) == 2) 34 self.assertTrue(isinstance(info.devices[0], gpu_device.GPUDevice)) 35 self.assertEquals(info.devices[0].vendor_id, 1000) 36 self.assertEquals(info.devices[0].device_id, 2000) 37 self.assertEquals(info.devices[0].vendor_string, 'a') 38 self.assertEquals(info.devices[0].device_string, 'b') 39 self.assertTrue(isinstance(info.devices[1], gpu_device.GPUDevice)) 40 self.assertEquals(info.devices[1].vendor_id, 3000) 41 self.assertEquals(info.devices[1].device_id, 4000) 42 self.assertEquals(info.devices[1].vendor_string, 'k') 43 self.assertEquals(info.devices[1].device_string, 'l') 44 self.assertEquals(info.aux_attributes['optimus'], False) 45 self.assertEquals(info.aux_attributes['amd_switchable'], False) 46 self.assertEquals(info.aux_attributes['lenovo_dcute'], False) 47 self.assertEquals(info.aux_attributes['driver_vendor'], 'c') 48 self.assertEquals(info.aux_attributes['driver_version'], 'd') 49 self.assertEquals(info.aux_attributes['driver_date'], 'e') 50 self.assertEquals(info.aux_attributes['gl_version_string'], 'g') 51 self.assertEquals(info.aux_attributes['gl_vendor'], 'h') 52 self.assertEquals(info.aux_attributes['gl_renderer'], 'i') 53 self.assertEquals(info.aux_attributes['gl_extensions'], 'j') 54 55 def testMissingAttrsFromDict(self): 56 data = { 57 'devices': [{ 'vendor_id': 1000, 'device_id': 2000, 58 'vendor_string': 'a', 'device_string': 'b' }] 59 } 60 61 for k in data: 62 data_copy = data.copy() 63 del data_copy[k] 64 try: 65 gpu_info.GPUInfo.FromDict(data_copy) 66 self.fail('Should raise exception if attribute "%s" is missing' % k) 67 except AssertionError: 68 raise 69 except: 70 pass 71 72 def testMissingDevices(self): 73 data = { 74 'devices': [] 75 } 76 77 try: 78 gpu_info.GPUInfo.FromDict(data) 79 self.fail('Should raise exception if devices array is empty') 80 except AssertionError: 81 raise 82 except: 83 pass 84