Home | History | Annotate | Download | only in trace_event_impl
      1 #!/usr/bin/env python
      2 # Copyright 2016 The Chromium Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 import decorators
      6 import logging
      7 import unittest
      8 
      9 from trace_test import TraceTest
     10 #from .trace_test import TraceTest
     11 
     12 def generator():
     13   yield 1
     14   yield 2
     15 
     16 class DecoratorTests(unittest.TestCase):
     17   def test_tracing_object_fails(self):
     18     self.assertRaises(Exception, lambda: decorators.trace(1))
     19     self.assertRaises(Exception, lambda: decorators.trace(""))
     20     self.assertRaises(Exception, lambda: decorators.trace([]))
     21 
     22   def test_tracing_generators_fail(self):
     23     self.assertRaises(Exception, lambda: decorators.trace(generator))
     24 
     25 class ClassToTest(object):
     26   @decorators.traced
     27   def method1(self):
     28     return 1
     29 
     30   @decorators.traced
     31   def method2(self):
     32     return 1
     33 
     34 @decorators.traced
     35 def traced_func():
     36   return 1
     37 
     38 class DecoratorTests(TraceTest):
     39   def _get_decorated_method_name(self, f):
     40     res = self.go(f)
     41     events = res.findEventsOnThread(res.findThreadIds()[0])
     42 
     43     # Sanity checks.
     44     self.assertEquals(2, len(events))
     45     self.assertEquals(events[0]["name"], events[1]["name"])
     46     return events[1]["name"]
     47 
     48 
     49   def test_func_names_work(self):
     50     self.assertEquals('__main__.traced_func',
     51                       self._get_decorated_method_name(traced_func))
     52 
     53   def test_method_names_work(self):
     54     ctt = ClassToTest()
     55     self.assertEquals('ClassToTest.method1',
     56                       self._get_decorated_method_name(ctt.method1))
     57     self.assertEquals('ClassToTest.method2',
     58                       self._get_decorated_method_name(ctt.method2))
     59 
     60 if __name__ == '__main__':
     61   logging.getLogger().setLevel(logging.DEBUG)
     62   unittest.main(verbosity=2)
     63