a91a0331cf7c748c278b4072d125cbc3e3d75bb5
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / value / failure_unittest.py
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 value
11 from telemetry.page import page_set
12 from telemetry.value import failure
13
14
15 class TestBase(unittest.TestCase):
16   def setUp(self):
17     self.page_set = page_set.PageSet(file_path=os.path.dirname(__file__))
18     self.page_set.AddPageWithDefaultRunNavigate("http://www.bar.com/")
19
20   @property
21   def pages(self):
22     return self.page_set.pages
23
24 class ValueTest(TestBase):
25   def testName(self):
26     v0 = failure.FailureValue.FromMessage(self.pages[0], 'Failure')
27     self.assertEquals('Exception', v0.name)
28     try:
29       raise NotImplementedError()
30     except Exception:
31       v1 = failure.FailureValue(self.pages[0], sys.exc_info())
32     self.assertEquals('NotImplementedError', v1.name)
33
34   def testBuildbotAndRepresentativeValue(self):
35     v = failure.FailureValue.FromMessage(self.pages[0], 'Failure')
36     self.assertIsNone(v.GetBuildbotValue())
37     self.assertIsNone(v.GetBuildbotDataType(
38         value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
39     self.assertIsNone(v.GetChartAndTraceNameForPerPageResult())
40     self.assertIsNone(v.GetRepresentativeNumber())
41     self.assertIsNone(v.GetRepresentativeString())
42
43   def testAsDict(self):
44     v = failure.FailureValue.FromMessage(self.pages[0], 'Failure')
45     d = v.AsDictWithoutBaseClassEntries()
46     self.assertTrue(d['value'].find('Exception: Failure') > -1)
47
48   def testFromDict(self):
49     try:
50       raise Exception('test')
51     except Exception:
52       exc_info = sys.exc_info()
53     d = {
54       'type': 'failure',
55       'name': exc_info[0].__name__,
56       'units': '',
57       'value': ''.join(traceback.format_exception(*exc_info))
58     }
59     v = value.Value.FromDict(d, {})
60
61     self.assertTrue(isinstance(v, failure.FailureValue))
62     self.assertEquals(v.name, 'Exception')