15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)# found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)import os 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)import sys 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)import traceback 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)import unittest 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from telemetry import value 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from telemetry.page import page_set 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from telemetry.value import failure 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class TestBase(unittest.TestCase): 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) def setUp(self): 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.page_set = page_set.PageSet(file_path=os.path.dirname(__file__)) 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.page_set.AddPageWithDefaultRunNavigate("http://www.bar.com/") 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) @property 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) def pages(self): 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return self.page_set.pages 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ValueTest(TestBase): 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) def testName(self): 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) v0 = failure.FailureValue.FromMessage(self.pages[0], 'Failure') 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertEquals('Exception', v0.name) 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) try: 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) raise NotImplementedError() 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) except Exception: 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) v1 = failure.FailureValue(self.pages[0], sys.exc_info()) 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertEquals('NotImplementedError', v1.name) 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) def testBuildbotAndRepresentativeValue(self): 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) v = failure.FailureValue.FromMessage(self.pages[0], 'Failure') 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertIsNone(v.GetBuildbotValue()) 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertIsNone(v.GetBuildbotDataType( 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT)) 3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.assertIsNone(v.GetChartAndTraceNameForPerPageResult()) 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertIsNone(v.GetRepresentativeNumber()) 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertIsNone(v.GetRepresentativeString()) 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) def testAsDict(self): 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) v = failure.FailureValue.FromMessage(self.pages[0], 'Failure') 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) d = v.AsDictWithoutBaseClassEntries() 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertTrue(d['value'].find('Exception: Failure') > -1) 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) def testFromDict(self): 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) try: 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) raise Exception('test') 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) except Exception: 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) exc_info = sys.exc_info() 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) d = { 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'type': 'failure', 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'name': exc_info[0].__name__, 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'units': '', 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'value': ''.join(traceback.format_exception(*exc_info)) 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) v = value.Value.FromDict(d, {}) 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertTrue(isinstance(v, failure.FailureValue)) 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertEquals(v.name, 'Exception') 63