def test_capture_as_context_manager(self): """{CaptureTracer}s can be used as context managers.""" conn = StubConnection() with CaptureTracer() as tracer: self.assertEqual([tracer], get_tracers()) tracer.connection_raw_execute(conn, "cursor", "select", []) self.assertEqual([], get_tracers()) self.assertEqual(["select"], tracer.queries)
def test_remove_tracer_type(self): class C(object): pass class D(C): pass c = C() d1 = D() d2 = D() install_tracer(d1) install_tracer(c) install_tracer(d2) remove_tracer_type(C) self.assertEquals(get_tracers(), [d1, d2]) remove_tracer_type(D) self.assertEquals(get_tracers(), [])
def test_disable_timeout_tracer(self): """disable_timeout_tracer removes the tracer.""" enable_timeout_tracer() disable_timeout_tracer() timeout_tracers = [t for t in tracer.get_tracers() if isinstance(t, StorageTimeoutTracer)] self.assertEqual(timeout_tracers, [])
def test_enable_timeout_tracer(self): """enable_timeout_tracer adds the tracer.""" enable_timeout_tracer() timeout_tracers = [t for t in tracer.get_tracers() if isinstance(t, StorageTimeoutTracer)] self.assertNotEqual(timeout_tracers, []) self.assertEqual(timeout_tracers[0].max_time, 20)
def current_timeout_tracer(): """Get the current timeout tracer.""" timeout_tracers = [t for t in get_tracers() if isinstance(t, StorageTimeoutTracer)] try: return timeout_tracers[0] except IndexError: raise NoTimeoutTracer('No timeout tracer registered')
def test_remove_tracer(cleanup_tracers): """The C{remote_tracer} function removes a specific tracer.""" tracer1 = object() tracer2 = object() install_tracer(tracer1) install_tracer(tracer2) remove_tracer(tracer1) assert get_tracers() == [tracer2]
def test_remove_tracer(self): """The C{remote_tracer} function removes a specific tracer.""" tracer1 = object() tracer2 = object() install_tracer(tracer1) install_tracer(tracer2) remove_tracer(tracer1) self.assertEquals(get_tracers(), [tracer2])
def test_remove_tracer_type(cleanup_tracers): class C(object): pass class D(C): pass c = C() d1 = D() d2 = D() install_tracer(d1) install_tracer(c) install_tracer(d2) remove_tracer_type(C) assert get_tracers() == [d1, d2] remove_tracer_type(D) assert get_tracers() == []
def test_enable_timeout_tracer(self): """enable_timeout_tracer adds the tracer.""" enable_timeout_tracer() timeout_tracers = [ t for t in tracer.get_tracers() if isinstance(t, StorageTimeoutTracer) ] self.assertNotEqual(timeout_tracers, []) self.assertEqual(timeout_tracers[0].max_time, 20)
def test_disable_timeout_tracer(self): """disable_timeout_tracer removes the tracer.""" enable_timeout_tracer() disable_timeout_tracer() timeout_tracers = [ t for t in tracer.get_tracers() if isinstance(t, StorageTimeoutTracer) ] self.assertEqual(timeout_tracers, [])
def test_gets_current_timeout_tracer(self): """Test that we're able to get the current timeout tracer.""" enable_timeout_tracer() timeout_tracers = [t for t in tracer.get_tracers() if isinstance(t, StorageTimeoutTracer)] expected_tracer = timeout_tracers[0] actual_tracer = current_timeout_tracer() self.assertEqual(actual_tracer, expected_tracer)
def test_gets_current_timeout_tracer(self): """Test that we're able to get the current timeout tracer.""" enable_timeout_tracer() timeout_tracers = [ t for t in tracer.get_tracers() if isinstance(t, StorageTimeoutTracer) ] expected_tracer = timeout_tracers[0] actual_tracer = current_timeout_tracer() self.assertEqual(actual_tracer, expected_tracer)
def test_capture_with_exception(self): """ L{CaptureTracer}s re-raise any error when used as context managers. """ errors = [] try: with CaptureTracer(): raise RuntimeError("boom") except RuntimeError as error: errors.append(error) [error] = errors self.assertEqual("boom", str(error)) self.assertEqual([], get_tracers())
def test_capture(self): """ Using the L{CaptureTracer} fixture starts capturing queries and stops removes the tracer upon cleanup. """ tracer = self.useFixture(CaptureTracer()) self.assertEqual([tracer], get_tracers()) conn = StubConnection() conn.param_mark = '%s' var = MockVariable(u"var") tracer.connection_raw_execute(conn, "cursor", "select %s", [var]) self.assertEqual(["select 'var'"], tracer.queries) def check(): self.assertEqual([], get_tracers()) self.addCleanup(check)
def test_capture_multiple(self): """L{CaptureTracer}s can be used as nested context managers.""" conn = StubConnection() def trace(statement): for tracer in get_tracers(): tracer.connection_raw_execute(conn, "cursor", statement, []) with CaptureTracer() as tracer1: trace("one") with CaptureTracer() as tracer2: trace("two") trace("three") self.assertEqual([], get_tracers()) self.assertEqual(["one", "two", "three"], tracer1.queries) self.assertEqual(["two"], tracer2.queries)
def test_remove_debug(self): debug(True) debug(True) debug(False) self.assertEquals(get_tracers(), [])
def test_wb_install_debug_with_custom_stream(self): marker = object() debug(True, marker) [tracer] = get_tracers() self.assertEquals(tracer._stream, marker)
def test_install_debug(self): debug(True) debug(True) self.assertEquals([type(x) for x in get_tracers()], [DebugTracer])
def test_install_debug(cleanup_tracers): debug(True) debug(True) assert [type(x) for x in get_tracers()] == [DebugTracer]
def test_remove_tracer_with_not_installed_tracer(): """C{remote_tracer} exits gracefully if the tracer is not installed.""" tracer = object() remove_tracer(tracer) assert get_tracers() == []
def trace(statement): for tracer in get_tracers(): tracer.connection_raw_execute(conn, "cursor", statement, [])
def test_remove_all_tracers(cleanup_tracers): install_tracer(object()) remove_all_tracers() assert get_tracers() == []
def test_remove_debug(cleanup_tracers): debug(True) debug(True) debug(False) assert get_tracers() == []
class CaptureTracerTest(TestHelper, TestWithFixtures): def is_supported(self): return has_fixtures def tearDown(self): super(CaptureTracerTest, self).tearDown() del _tracers[:] def test_capture(self): """ Using the L{CaptureTracer} fixture starts capturing queries and stops removes the tracer upon cleanup. """ tracer = self.useFixture(CaptureTracer()) self.assertEqual([tracer], get_tracers()) conn = StubConnection() conn.param_mark = '%s' var = MockVariable(u"var") tracer.connection_raw_execute(conn, "cursor", "select %s", [var]) self.assertEqual(["select 'var'"], tracer.queries) def check(): self.assertEqual([], get_tracers()) self.addCleanup(check) def test_capture_as_context_manager(self): """{CaptureTracer}s can be used as context managers.""" conn = StubConnection() with CaptureTracer() as tracer: self.assertEqual([tracer], get_tracers()) tracer.connection_raw_execute(conn, "cursor", "select", []) self.assertEqual([], get_tracers()) self.assertEqual(["select"], tracer.queries) def test_capture_multiple(self): """L{CaptureTracer}s can be used as nested context managers.""" conn = StubConnection() def trace(statement): for tracer in get_tracers(): tracer.connection_raw_execute(conn, "cursor", statement, []) with CaptureTracer() as tracer1: trace("one") with CaptureTracer() as tracer2: trace("two") trace("three") self.assertEqual([], get_tracers()) self.assertEqual(["one", "two", "three"], tracer1.queries) self.assertEqual(["two"], tracer2.queries) def test_capture_with_exception(self): """ L{CaptureTracer}s re-raise any error when used as context managers. """ errors = [] try: with CaptureTracer(): raise RuntimeError("boom") except RuntimeError, error: errors.append(error) [error] = errors self.assertEqual("boom", str(error)) self.assertEqual([], get_tracers())
def test_install_tracer(self): c = object() d = object() install_tracer(c) install_tracer(d) self.assertEquals(get_tracers(), [c, d])
def check(): self.assertEqual([], get_tracers())
def test_remove_tracer_with_not_installed_tracer(self): """C{remote_tracer} exits gracefully if the tracer is not installed.""" tracer = object() remove_tracer(tracer) self.assertEquals(get_tracers(), [])
def test_wb_install_debug_with_custom_stream(cleanup_tracers): marker = object() debug(True, marker) [tracer] = get_tracers() assert tracer._stream == marker
def test_install_tracer(cleanup_tracers): c = object() d = object() install_tracer(c) install_tracer(d) assert get_tracers() == [c, d]
def test_remove_all_tracers(self): install_tracer(object()) remove_all_tracers() self.assertEquals(get_tracers(), [])