Home | History | Annotate | Download | only in value
      1 # Copyright 2014 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 
      5 import os
      6 import sys
      7 import traceback
      8 import unittest
      9 
     10 from telemetry import story
     11 from telemetry import page as page_module
     12 from telemetry import value
     13 from telemetry.value import failure
     14 
     15 
     16 class TestBase(unittest.TestCase):
     17   def setUp(self):
     18     self.story_set = story.StorySet(base_dir=os.path.dirname(__file__))
     19     self.story_set.AddStory(page_module.Page(
     20         'http://www.bar.com/', self.story_set, self.story_set.base_dir))
     21 
     22   @property
     23   def pages(self):
     24     return self.story_set.stories
     25 
     26 class ValueTest(TestBase):
     27   def testRepr(self):
     28     v = failure.FailureValue.FromMessage(self.pages[0], 'Failure')
     29 
     30     exc_info_str = failure.GetStringFromExcInfo(v.exc_info)
     31     expected = 'FailureValue(http://www.bar.com/, %s)' % exc_info_str
     32 
     33     self.assertEquals(expected, str(v))
     34 
     35   def testName(self):
     36     v0 = failure.FailureValue.FromMessage(self.pages[0], 'Failure')
     37     self.assertEquals('Exception', v0.name)
     38     try:
     39       raise NotImplementedError()
     40     except Exception:
     41       v1 = failure.FailureValue(self.pages[0], sys.exc_info())
     42     self.assertEquals('NotImplementedError', v1.name)
     43 
     44   def testBuildbotAndRepresentativeValue(self):
     45     v = failure.FailureValue.FromMessage(self.pages[0], 'Failure')
     46     self.assertIsNone(v.GetBuildbotValue())
     47     self.assertIsNone(v.GetBuildbotDataType(
     48         value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
     49     self.assertIsNone(v.GetChartAndTraceNameForPerPageResult())
     50     self.assertIsNone(v.GetRepresentativeNumber())
     51     self.assertIsNone(v.GetRepresentativeString())
     52 
     53   def testAsDict(self):
     54     v = failure.FailureValue.FromMessage(self.pages[0], 'Failure')
     55     d = v.AsDictWithoutBaseClassEntries()
     56     self.assertTrue(d['value'].find('Exception: Failure') > -1)
     57 
     58   def testFromDict(self):
     59     try:
     60       raise Exception('test')
     61     except Exception:
     62       exc_info = sys.exc_info()
     63     d = {
     64       'type': 'failure',
     65       'name': exc_info[0].__name__,
     66       'units': '',
     67       'value': ''.join(traceback.format_exception(*exc_info))
     68     }
     69     v = value.Value.FromDict(d, {})
     70 
     71     self.assertTrue(isinstance(v, failure.FailureValue))
     72     self.assertEquals(v.name, 'Exception')
     73