gpu_info_unittest.py revision 3551c9c881056c480085172ff9840cab31610854
13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved. 23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)# found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)import unittest 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)from telemetry.core import gpu_info 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)from telemetry.core import gpu_device 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class TestGPUInfo(unittest.TestCase): 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) def testConstruction(self): 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) data = { 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'devices': [ 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) { 'vendor_id': 1000, 'device_id': 2000, 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'vendor_string': 'a', 'device_string': 'b' }, 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) { 'vendor_id': 3000, 'device_id': 4000, 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'vendor_string': 'k', 'device_string': 'l' } 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ], 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'aux_attributes': { 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'optimus': False, 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'amd_switchable': False, 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'lenovo_dcute': False, 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'driver_vendor': 'c', 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'driver_version': 'd', 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'driver_date': 'e', 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'gl_version_string': 'g', 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'gl_vendor': 'h', 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'gl_renderer': 'i', 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'gl_extensions': 'j', 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) info = gpu_info.GPUInfo.FromDict(data) 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertTrue(len(info.devices) == 2) 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertTrue(isinstance(info.devices[0], gpu_device.GPUDevice)) 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.devices[0].vendor_id, 1000) 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.devices[0].device_id, 2000) 363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.devices[0].vendor_string, 'a') 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.devices[0].device_string, 'b') 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertTrue(isinstance(info.devices[1], gpu_device.GPUDevice)) 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.devices[1].vendor_id, 3000) 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.devices[1].device_id, 4000) 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.devices[1].vendor_string, 'k') 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.devices[1].device_string, 'l') 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.aux_attributes['optimus'], False) 443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.aux_attributes['amd_switchable'], False) 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.aux_attributes['lenovo_dcute'], False) 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.aux_attributes['driver_vendor'], 'c') 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.aux_attributes['driver_version'], 'd') 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.aux_attributes['driver_date'], 'e') 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.aux_attributes['gl_version_string'], 'g') 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.aux_attributes['gl_vendor'], 'h') 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.aux_attributes['gl_renderer'], 'i') 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.assertEquals(info.aux_attributes['gl_extensions'], 'j') 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) def testMissingAttrsFromDict(self): 553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) data = { 563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'devices': [{ 'vendor_id': 1000, 'device_id': 2000, 573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'vendor_string': 'a', 'device_string': 'b' }] 583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) for k in data: 613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) data_copy = data.copy() 623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) del data_copy[k] 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) try: 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) gpu_info.GPUInfo.FromDict(data_copy) 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.fail('Should raise exception if attribute "%s" is missing' % k) 663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) except AssertionError: 673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) raise 683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) except: 693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) pass 703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) def testMissingDevices(self): 723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) data = { 733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'devices': [] 743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) try: 773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) gpu_info.GPUInfo.FromDict(data) 783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) self.fail('Should raise exception if devices array is empty') 793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) except AssertionError: 803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) raise 813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) except: 823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) pass 83