def test_generator_wrapper(self): reporter = TestTelemetryReporter() telemetry.set_reporter(reporter) range_max = 10 def generator(): for g in range(range_max): yield g wrapped_generator = get_generator_wrapper(generate_record_telemetry('test.'), state='model', enable_if=None) i = j = 0 for i in wrapped_generator(generator): self.assertEqual(j, i) j += 1 self.assertEqual(range_max - 1, i) self.assertLessEqual(0, reporter.get_record('test.latency')) self.assertEqual(1, reporter.get_count('test.requests')) reporter.record('test.latency', 0) wrapped_generator = get_generator_wrapper(generate_record_telemetry('test.'), state='model', enable_if=None) def trigger_generator_exit(): # trigger the GeneratorExit when this goes out of scope iterator = wrapped_generator(generator) six.next(iterator) trigger_generator_exit() self.assertLessEqual(0, reporter.get_record('test.latency')) self.assertEqual(2, reporter.get_count('test.requests'))
def run(self): wrappers = { "django.db.models.query.QuerySet.iterator": get_generator_wrapper( generate_record_telemetry("model.iterator."), state="model" ) } _query_set_methods = [ "aggregate", "count", "bulk_create", "create", "get", "get_or_create", "latest", "first", "last", "in_bulk", "iterator", "update_or_create", "delete", "update", "exists", ] for method in _query_set_methods: metric = "model." + method wrappers["django.db.models.query.QuerySet." + method] = get_complex_wrapper(metric, state="model") self.set_wrapped(wrappers) super(DjangoDbInstrumentor, self).run()
def test_generator_wrapper(self): reporter = TestTelemetryReporter() telemetry.set_reporter(reporter) range_max = 10 def generator(): for g in range(range_max): yield g wrapped_generator = get_generator_wrapper( generate_record_telemetry('test.'), state='model', enable_if=None) i = j = 0 for i in wrapped_generator(generator): self.assertEqual(j, i) j += 1 self.assertEqual(range_max - 1, i) self.assertLessEqual(0, reporter.get_record('test.latency')) self.assertEqual(1, reporter.get_count('test.requests')) reporter.record('test.latency', 0) wrapped_generator = get_generator_wrapper( generate_record_telemetry('test.'), state='model', enable_if=None) def trigger_generator_exit(): # trigger the GeneratorExit when this goes out of scope iterator = wrapped_generator(generator) six.next(iterator) trigger_generator_exit() self.assertLessEqual(0, reporter.get_record('test.latency')) self.assertEqual(2, reporter.get_count('test.requests'))
def run(self): wrappers = { 'django.db.models.query.QuerySet.iterator': get_generator_wrapper(generate_record_telemetry('model.iterator.'), state='model'), } _query_set_methods = [ 'aggregate', 'count', 'bulk_create', 'create', 'get', 'get_or_create', 'latest', 'first', 'last', 'in_bulk', 'iterator', 'update_or_create', 'delete', 'update', 'exists' ] for method in _query_set_methods: metric = 'model.' + method wrappers['django.db.models.query.QuerySet.' + method] = get_complex_wrapper(metric, state='model') self.set_wrapped(wrappers) super(DjangoDbInstrumentor, self).run()