From 8d9e8e91c91c18353ae6f3fa9ce3e3a639d50535 Mon Sep 17 00:00:00 2001 From: Peter Giacomo Lombardo Date: Mon, 24 Aug 2020 10:25:37 +0200 Subject: [PATCH] Augment aiohttp tests; linter --- instana/instrumentation/aiohttp/server.py | 15 +- tests/apps/__init__.py | 12 - tests/apps/aiohttp_app/__init__.py | 9 + .../{app_aiohttp.py => aiohttp_app/app.py} | 11 +- tests/frameworks/test_aiohttp.py | 311 ++++++++++++------ tests/frameworks/test_wsgi.py | 56 ++-- 6 files changed, 263 insertions(+), 151 deletions(-) create mode 100644 tests/apps/aiohttp_app/__init__.py rename tests/apps/{app_aiohttp.py => aiohttp_app/app.py} (79%) diff --git a/instana/instrumentation/aiohttp/server.py b/instana/instrumentation/aiohttp/server.py index a4fde8d5..80bf9a04 100644 --- a/instana/instrumentation/aiohttp/server.py +++ b/instana/instrumentation/aiohttp/server.py @@ -25,7 +25,9 @@ async def stan_middleware(request, handler): url = str(request.url) parts = url.split('?') if len(parts) > 1: - cleaned_qp = strip_secrets_from_query(parts[1], agent.options.secrets_matcher, agent.options.secrets_list) + cleaned_qp = strip_secrets_from_query(parts[1], + agent.options.secrets_matcher, + agent.options.secrets_list) scope.span.set_tag("http.params", cleaned_qp) scope.span.set_tag("http.url", parts[0]) @@ -40,10 +42,10 @@ async def stan_middleware(request, handler): response = None try: response = await handler(request) - except aiohttp.web.HTTPException as e: + except aiohttp.web.HTTPException as exc: # AIOHTTP uses exceptions for specific responses # see https://docs.aiohttp.org/en/latest/web_exceptions.html#web-server-exceptions - response = e + response = exc if response is not None: # Mark 500 responses as errored @@ -55,18 +57,18 @@ async def stan_middleware(request, handler): response.headers['Server-Timing'] = "intid;desc=%s" % scope.span.context.trace_id return response - except Exception as e: + except Exception as exc: logger.debug("aiohttp stan_middleware", exc_info=True) if scope is not None: scope.span.set_tag("http.status_code", 500) - scope.span.log_exception(e) + scope.span.log_exception(exc) raise finally: if scope is not None: scope.close() - @wrapt.patch_function_wrapper('aiohttp.web','Application.__init__') + @wrapt.patch_function_wrapper('aiohttp.web', 'Application.__init__') def init_with_instana(wrapped, instance, argv, kwargs): if "middlewares" in kwargs: kwargs["middlewares"].insert(0, stan_middleware) @@ -78,4 +80,3 @@ def init_with_instana(wrapped, instance, argv, kwargs): logger.debug("Instrumenting aiohttp server") except ImportError: pass - diff --git a/tests/apps/__init__.py b/tests/apps/__init__.py index 60eee1c6..325625d1 100644 --- a/tests/apps/__init__.py +++ b/tests/apps/__init__.py @@ -18,16 +18,4 @@ print("Starting background RPC app...") rpc_server_thread.start() - if sys.version_info >= (3, 5, 3): - # Background aiohttp application - from .app_aiohttp import run_server - - # Spawn our background aiohttp app that the tests will throw - # requests at. - aio_server = threading.Thread(target=run_server) - aio_server.daemon = True - aio_server.name = "Background aiohttp server" - print("Starting background aiohttp server...") - aio_server.start() - time.sleep(1) diff --git a/tests/apps/aiohttp_app/__init__.py b/tests/apps/aiohttp_app/__init__.py new file mode 100644 index 00000000..8146495f --- /dev/null +++ b/tests/apps/aiohttp_app/__init__.py @@ -0,0 +1,9 @@ +import os +import sys +from .app import aiohttp_server as server +from ..utils import launch_background_thread + +APP_THREAD = None + +if 'GEVENT_TEST' not in os.environ and 'CASSANDRA_TEST' not in os.environ and sys.version_info >= (3, 5, 3): + APP_THREAD = launch_background_thread(server, "AIOHTTP") diff --git a/tests/apps/app_aiohttp.py b/tests/apps/aiohttp_app/app.py similarity index 79% rename from tests/apps/app_aiohttp.py rename to tests/apps/aiohttp_app/app.py index 583edabb..92bf2613 100644 --- a/tests/apps/app_aiohttp.py +++ b/tests/apps/aiohttp_app/app.py @@ -3,7 +3,7 @@ import asyncio from aiohttp import web -from ..helpers import testenv +from ...helpers import testenv testenv["aiohttp_port"] = 10810 @@ -14,8 +14,12 @@ def say_hello(request): return web.Response(text='Hello, world') +def two_hundred_four(request): + raise web.HTTPNoContent() + + def four_hundred_one(request): - return web.HTTPUnauthorized(reason="I must simulate errors.", text="Simulated server error.") + raise web.HTTPUnauthorized(reason="I must simulate errors.", text="Simulated server error.") def five_hundred(request): @@ -26,12 +30,13 @@ def raise_exception(request): raise Exception("Simulated exception") -def run_server(): +def aiohttp_server(): loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) app = web.Application(debug=False) app.add_routes([web.get('/', say_hello)]) + app.add_routes([web.get('/204', two_hundred_four)]) app.add_routes([web.get('/401', four_hundred_one)]) app.add_routes([web.get('/500', five_hundred)]) app.add_routes([web.get('/exception', raise_exception)]) diff --git a/tests/frameworks/test_aiohttp.py b/tests/frameworks/test_aiohttp.py index 97e499b0..bfc26808 100644 --- a/tests/frameworks/test_aiohttp.py +++ b/tests/frameworks/test_aiohttp.py @@ -6,6 +6,8 @@ from instana.singletons import async_tracer, agent +import tests.apps.flask_app +import tests.apps.aiohttp_app from ..helpers import testenv @@ -63,20 +65,22 @@ async def test(): self.assertEqual("aiohttp-client", aiohttp_span.n) self.assertEqual(200, aiohttp_span.data["http"]["status"]) - self.assertEqual(testenv["wsgi_server"] + "/", aiohttp_span.data["http"]["url"]) + self.assertEqual(testenv["wsgi_server"] + "/", + aiohttp_span.data["http"]["url"]) self.assertEqual("GET", aiohttp_span.data["http"]["method"]) self.assertIsNotNone(aiohttp_span.stack) self.assertTrue(type(aiohttp_span.stack) is list) self.assertTrue(len(aiohttp_span.stack) > 1) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], wsgi_span.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) def test_client_get_301(self): async def test(): @@ -115,20 +119,22 @@ async def test(): self.assertEqual("aiohttp-client", aiohttp_span.n) self.assertEqual(200, aiohttp_span.data["http"]["status"]) - self.assertEqual(testenv["wsgi_server"] + "/301", aiohttp_span.data["http"]["url"]) + self.assertEqual(testenv["wsgi_server"] + "/301", + aiohttp_span.data["http"]["url"]) self.assertEqual("GET", aiohttp_span.data["http"]["method"]) self.assertIsNotNone(aiohttp_span.stack) self.assertTrue(type(aiohttp_span.stack) is list) self.assertTrue(len(aiohttp_span.stack) > 1) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], wsgi_span2.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) def test_client_get_405(self): async def test(): @@ -163,20 +169,22 @@ async def test(): self.assertEqual("aiohttp-client", aiohttp_span.n) self.assertEqual(405, aiohttp_span.data["http"]["status"]) - self.assertEqual(testenv["wsgi_server"] + "/405", aiohttp_span.data["http"]["url"]) + self.assertEqual(testenv["wsgi_server"] + "/405", + aiohttp_span.data["http"]["url"]) self.assertEqual("GET", aiohttp_span.data["http"]["method"]) self.assertIsNotNone(aiohttp_span.stack) self.assertTrue(type(aiohttp_span.stack) is list) self.assertTrue(len(aiohttp_span.stack) > 1) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], wsgi_span.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) def test_client_get_500(self): async def test(): @@ -211,21 +219,24 @@ async def test(): self.assertEqual("aiohttp-client", aiohttp_span.n) self.assertEqual(500, aiohttp_span.data["http"]["status"]) - self.assertEqual(testenv["wsgi_server"] + "/500", aiohttp_span.data["http"]["url"]) + self.assertEqual(testenv["wsgi_server"] + "/500", + aiohttp_span.data["http"]["url"]) self.assertEqual("GET", aiohttp_span.data["http"]["method"]) - self.assertEqual('INTERNAL SERVER ERROR', aiohttp_span.data["http"]["error"]) + self.assertEqual('INTERNAL SERVER ERROR', + aiohttp_span.data["http"]["error"]) self.assertIsNotNone(aiohttp_span.stack) self.assertTrue(type(aiohttp_span.stack) is list) self.assertTrue(len(aiohttp_span.stack) > 1) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], wsgi_span.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) def test_client_get_504(self): async def test(): @@ -260,21 +271,23 @@ async def test(): self.assertEqual("aiohttp-client", aiohttp_span.n) self.assertEqual(504, aiohttp_span.data["http"]["status"]) - self.assertEqual(testenv["wsgi_server"] + "/504", aiohttp_span.data["http"]["url"]) + self.assertEqual(testenv["wsgi_server"] + "/504", + aiohttp_span.data["http"]["url"]) self.assertEqual("GET", aiohttp_span.data["http"]["method"]) self.assertEqual('GATEWAY TIMEOUT', aiohttp_span.data["http"]["error"]) self.assertIsNotNone(aiohttp_span.stack) self.assertTrue(type(aiohttp_span.stack) is list) self.assertTrue(len(aiohttp_span.stack) > 1) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], wsgi_span.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) def test_client_get_with_params_to_scrub(self): async def test(): @@ -309,21 +322,24 @@ async def test(): self.assertEqual("aiohttp-client", aiohttp_span.n) self.assertEqual(200, aiohttp_span.data["http"]["status"]) - self.assertEqual(testenv["wsgi_server"] + "/", aiohttp_span.data["http"]["url"]) + self.assertEqual(testenv["wsgi_server"] + "/", + aiohttp_span.data["http"]["url"]) self.assertEqual("GET", aiohttp_span.data["http"]["method"]) - self.assertEqual("secret=", aiohttp_span.data["http"]["params"]) + self.assertEqual("secret=", + aiohttp_span.data["http"]["params"]) self.assertIsNotNone(aiohttp_span.stack) self.assertTrue(type(aiohttp_span.stack) is list) self.assertTrue(len(aiohttp_span.stack) > 1) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], wsgi_span.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) def test_client_response_header_capture(self): original_extra_http_headers = agent.options.extra_http_headers @@ -361,21 +377,24 @@ async def test(): self.assertEqual("aiohttp-client", aiohttp_span.n) self.assertEqual(200, aiohttp_span.data["http"]["status"]) - self.assertEqual(testenv["wsgi_server"] + "/response_headers", aiohttp_span.data["http"]["url"]) + self.assertEqual( + testenv["wsgi_server"] + "/response_headers", aiohttp_span.data["http"]["url"]) self.assertEqual("GET", aiohttp_span.data["http"]["method"]) self.assertIsNotNone(aiohttp_span.stack) self.assertTrue(type(aiohttp_span.stack) is list) self.assertTrue(len(aiohttp_span.stack) > 1) - self.assertTrue('http.X-Capture-This' in aiohttp_span.data["custom"]["tags"]) + self.assertTrue( + 'http.X-Capture-This' in aiohttp_span.data["custom"]["tags"]) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], wsgi_span.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) agent.options.extra_http_headers = original_extra_http_headers @@ -412,7 +431,8 @@ async def test(): self.assertEqual("aiohttp-client", aiohttp_span.n) self.assertIsNone(aiohttp_span.data["http"]["status"]) - self.assertEqual("http://doesnotexist:10/", aiohttp_span.data["http"]["url"]) + self.assertEqual("http://doesnotexist:10/", + aiohttp_span.data["http"]["url"]) self.assertEqual("GET", aiohttp_span.data["http"]["method"]) self.assertIsNotNone(aiohttp_span.data["http"]["error"]) assert(len(aiohttp_span.data["http"]["error"])) @@ -460,35 +480,102 @@ async def test(): self.assertEqual("aiohttp-server", aioserver_span.n) self.assertEqual(200, aioserver_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/", aioserver_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/", aioserver_span.data["http"]["url"]) self.assertEqual("GET", aioserver_span.data["http"]["method"]) self.assertIsNotNone(aioserver_span.stack) - self.assertTrue(type(aioserver_span.stack) is list) + self.assertTrue(isinstance(aioserver_span.stack, list)) self.assertTrue(len(aioserver_span.stack) > 1) self.assertEqual("aiohttp-client", aioclient_span.n) self.assertEqual(200, aioclient_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/", aioclient_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/", aioclient_span.data["http"]["url"]) self.assertEqual("GET", aioclient_span.data["http"]["method"]) self.assertIsNotNone(aioclient_span.stack) self.assertTrue(type(aioclient_span.stack) is list) self.assertTrue(len(aioclient_span.stack) > 1) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], aioserver_span.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) + + def test_server_get_204(self): + async def test(): + with async_tracer.start_active_span('test'): + async with aiohttp.ClientSession() as session: + return await self.fetch(session, testenv["aiohttp_server"] + "/204") + + response = self.loop.run_until_complete(test()) + + spans = self.recorder.queued_spans() + self.assertEqual(3, len(spans)) + + aioserver_span = spans[0] + aioclient_span = spans[1] + test_span = spans[2] + + self.assertIsNone(async_tracer.active_span) + + # Same traceId + trace_id = test_span.t + self.assertEqual(trace_id, aioclient_span.t) + self.assertEqual(trace_id, aioserver_span.t) + + # Parent relationships + self.assertEqual(aioclient_span.p, test_span.s) + self.assertEqual(aioserver_span.p, aioclient_span.s) + + # Synthetic + self.assertIsNone(test_span.sy) + self.assertIsNone(aioclient_span.sy) + self.assertIsNone(aioserver_span.sy) + + # Error logging + self.assertIsNone(test_span.ec) + self.assertIsNone(aioclient_span.ec) + self.assertIsNone(aioserver_span.ec) + + self.assertEqual("aiohttp-server", aioserver_span.n) + self.assertEqual(204, aioserver_span.data["http"]["status"]) + self.assertEqual(testenv["aiohttp_server"] + + "/204", aioserver_span.data["http"]["url"]) + self.assertEqual("GET", aioserver_span.data["http"]["method"]) + self.assertIsNotNone(aioserver_span.stack) + self.assertTrue(isinstance(aioserver_span.stack, list)) + self.assertTrue(len(aioserver_span.stack) > 1) + + self.assertEqual("aiohttp-client", aioclient_span.n) + self.assertEqual(204, aioclient_span.data["http"]["status"]) + self.assertEqual(testenv["aiohttp_server"] + + "/204", aioclient_span.data["http"]["url"]) + self.assertEqual("GET", aioclient_span.data["http"]["method"]) + self.assertIsNotNone(aioclient_span.stack) + self.assertTrue(isinstance(aioclient_span.stack, list)) + self.assertTrue(len(aioclient_span.stack) > 1) + + assert "X-Instana-T" in response.headers + self.assertEqual(response.headers["X-Instana-T"], trace_id) + assert "X-Instana-S" in response.headers + self.assertEqual(response.headers["X-Instana-S"], aioserver_span.s) + assert "X-Instana-L" in response.headers + self.assertEqual(response.headers["X-Instana-L"], '1') + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % trace_id) def test_server_synthetic_request(self): async def test(): headers = { 'X-Instana-Synthetic': '1' - } - + } + with async_tracer.start_active_span('test'): async with aiohttp.ClientSession() as session: return await self.fetch(session, testenv["aiohttp_server"] + "/", headers=headers) @@ -539,37 +626,43 @@ async def test(): self.assertEqual("aiohttp-server", aioserver_span.n) self.assertEqual(200, aioserver_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/", aioserver_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/", aioserver_span.data["http"]["url"]) self.assertEqual("GET", aioserver_span.data["http"]["method"]) - self.assertEqual("secret=", aioserver_span.data["http"]["params"]) + self.assertEqual("secret=", + aioserver_span.data["http"]["params"]) self.assertIsNotNone(aioserver_span.stack) - self.assertTrue(type(aioserver_span.stack) is list) + self.assertTrue(isinstance(aioserver_span.stack, list)) self.assertTrue(len(aioserver_span.stack) > 1) self.assertEqual("aiohttp-client", aioclient_span.n) self.assertEqual(200, aioclient_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/", aioclient_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/", aioclient_span.data["http"]["url"]) self.assertEqual("GET", aioclient_span.data["http"]["method"]) - self.assertEqual("secret=", aioclient_span.data["http"]["params"]) + self.assertEqual("secret=", + aioclient_span.data["http"]["params"]) self.assertIsNotNone(aioclient_span.stack) self.assertTrue(type(aioclient_span.stack) is list) self.assertTrue(len(aioclient_span.stack) > 1) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], aioserver_span.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) def test_server_custom_header_capture(self): async def test(): with async_tracer.start_active_span('test'): async with aiohttp.ClientSession() as session: # Hack together a manual custom headers list - agent.options.extra_http_headers = [u'X-Capture-This', u'X-Capture-That'] + agent.options.extra_http_headers = [ + u'X-Capture-This', u'X-Capture-That'] headers = dict() headers['X-Capture-This'] = 'this' @@ -604,35 +697,42 @@ async def test(): self.assertEqual("aiohttp-server", aioserver_span.n) self.assertEqual(200, aioserver_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/", aioserver_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/", aioserver_span.data["http"]["url"]) self.assertEqual("GET", aioserver_span.data["http"]["method"]) - self.assertEqual("secret=", aioserver_span.data["http"]["params"]) + self.assertEqual("secret=", + aioserver_span.data["http"]["params"]) self.assertIsNotNone(aioserver_span.stack) - self.assertTrue(type(aioserver_span.stack) is list) + self.assertTrue(isinstance(aioserver_span.stack, list)) self.assertTrue(len(aioserver_span.stack) > 1) self.assertEqual("aiohttp-client", aioclient_span.n) self.assertEqual(200, aioclient_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/", aioclient_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/", aioclient_span.data["http"]["url"]) self.assertEqual("GET", aioclient_span.data["http"]["method"]) - self.assertEqual("secret=", aioclient_span.data["http"]["params"]) + self.assertEqual("secret=", + aioclient_span.data["http"]["params"]) self.assertIsNotNone(aioclient_span.stack) self.assertTrue(type(aioclient_span.stack) is list) self.assertTrue(len(aioclient_span.stack) > 1) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], aioserver_span.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) assert("http.X-Capture-This" in aioserver_span.data["custom"]["tags"]) - self.assertEqual('this', aioserver_span.data["custom"]["tags"]['http.X-Capture-This']) + self.assertEqual( + 'this', aioserver_span.data["custom"]["tags"]['http.X-Capture-This']) assert("http.X-Capture-That" in aioserver_span.data["custom"]["tags"]) - self.assertEqual('that', aioserver_span.data["custom"]["tags"]['http.X-Capture-That']) + self.assertEqual( + 'that', aioserver_span.data["custom"]["tags"]['http.X-Capture-That']) def test_server_get_401(self): async def test(): @@ -667,28 +767,31 @@ async def test(): self.assertEqual("aiohttp-server", aioserver_span.n) self.assertEqual(401, aioserver_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/401", aioserver_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/401", aioserver_span.data["http"]["url"]) self.assertEqual("GET", aioserver_span.data["http"]["method"]) self.assertIsNotNone(aioserver_span.stack) - self.assertTrue(type(aioserver_span.stack) is list) + self.assertTrue(isinstance(aioserver_span.stack, list)) self.assertTrue(len(aioserver_span.stack) > 1) self.assertEqual("aiohttp-client", aioclient_span.n) self.assertEqual(401, aioclient_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/401", aioclient_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/401", aioclient_span.data["http"]["url"]) self.assertEqual("GET", aioclient_span.data["http"]["method"]) self.assertIsNotNone(aioclient_span.stack) self.assertTrue(type(aioclient_span.stack) is list) self.assertTrue(len(aioclient_span.stack) > 1) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], aioserver_span.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) def test_server_get_500(self): async def test(): @@ -723,30 +826,33 @@ async def test(): self.assertEqual("aiohttp-server", aioserver_span.n) self.assertEqual(500, aioserver_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/500", aioserver_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/500", aioserver_span.data["http"]["url"]) self.assertEqual("GET", aioserver_span.data["http"]["method"]) self.assertIsNotNone(aioserver_span.stack) - self.assertTrue(type(aioserver_span.stack) is list) + self.assertTrue(isinstance(aioserver_span.stack, list)) self.assertTrue(len(aioserver_span.stack) > 1) self.assertEqual("aiohttp-client", aioclient_span.n) self.assertEqual(500, aioclient_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/500", aioclient_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/500", aioclient_span.data["http"]["url"]) self.assertEqual("GET", aioclient_span.data["http"]["method"]) - self.assertEqual('I must simulate errors.', aioclient_span.data["http"]["error"]) + self.assertEqual('I must simulate errors.', + aioclient_span.data["http"]["error"]) self.assertIsNotNone(aioclient_span.stack) self.assertTrue(type(aioclient_span.stack) is list) self.assertTrue(len(aioclient_span.stack) > 1) - assert("X-Instana-T" in response.headers) + assert "X-Instana-T" in response.headers self.assertEqual(response.headers["X-Instana-T"], traceId) - assert("X-Instana-S" in response.headers) + assert "X-Instana-S" in response.headers self.assertEqual(response.headers["X-Instana-S"], aioserver_span.s) - assert("X-Instana-L" in response.headers) + assert "X-Instana-L" in response.headers self.assertEqual(response.headers["X-Instana-L"], '1') - assert("Server-Timing" in response.headers) - self.assertEqual(response.headers["Server-Timing"], "intid;desc=%s" % traceId) - + assert "Server-Timing" in response.headers + self.assertEqual( + response.headers["Server-Timing"], "intid;desc=%s" % traceId) def test_server_get_exception(self): async def test(): @@ -781,17 +887,20 @@ async def test(): self.assertEqual("aiohttp-server", aioserver_span.n) self.assertEqual(500, aioserver_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/exception", aioserver_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/exception", aioserver_span.data["http"]["url"]) self.assertEqual("GET", aioserver_span.data["http"]["method"]) self.assertIsNotNone(aioserver_span.stack) - self.assertTrue(type(aioserver_span.stack) is list) + self.assertTrue(isinstance(aioserver_span.stack, list)) self.assertTrue(len(aioserver_span.stack) > 1) self.assertEqual("aiohttp-client", aioclient_span.n) self.assertEqual(500, aioclient_span.data["http"]["status"]) - self.assertEqual(testenv["aiohttp_server"] + "/exception", aioclient_span.data["http"]["url"]) + self.assertEqual(testenv["aiohttp_server"] + + "/exception", aioclient_span.data["http"]["url"]) self.assertEqual("GET", aioclient_span.data["http"]["method"]) - self.assertEqual('Internal Server Error', aioclient_span.data["http"]["error"]) + self.assertEqual('Internal Server Error', + aioclient_span.data["http"]["error"]) self.assertIsNotNone(aioclient_span.stack) self.assertTrue(type(aioclient_span.stack) is list) self.assertTrue(len(aioclient_span.stack) > 1) diff --git a/tests/frameworks/test_wsgi.py b/tests/frameworks/test_wsgi.py index dc12f1d8..582e04b4 100644 --- a/tests/frameworks/test_wsgi.py +++ b/tests/frameworks/test_wsgi.py @@ -45,18 +45,18 @@ def test_get_request(self): assert response self.assertEqual(200, response.status) - assert('X-Instana-T' in response.headers) + assert 'X-Instana-T' in response.headers assert(int(response.headers['X-Instana-T'], 16)) self.assertEqual(response.headers['X-Instana-T'], wsgi_span.t) - assert('X-Instana-S' in response.headers) + assert 'X-Instana-S' in response.headers assert(int(response.headers['X-Instana-S'], 16)) self.assertEqual(response.headers['X-Instana-S'], wsgi_span.s) - assert('X-Instana-L' in response.headers) + assert 'X-Instana-L' in response.headers self.assertEqual(response.headers['X-Instana-L'], '1') - assert('Server-Timing' in response.headers) + assert 'Server-Timing' in response.headers server_timing_value = "intid;desc=%s" % wsgi_span.t self.assertEqual(response.headers['Server-Timing'], server_timing_value) @@ -124,18 +124,18 @@ def test_complex_request(self): assert response self.assertEqual(200, response.status) - assert('X-Instana-T' in response.headers) + assert 'X-Instana-T' in response.headers assert(int(response.headers['X-Instana-T'], 16)) self.assertEqual(response.headers['X-Instana-T'], wsgi_span.t) - assert('X-Instana-S' in response.headers) + assert 'X-Instana-S' in response.headers assert(int(response.headers['X-Instana-S'], 16)) self.assertEqual(response.headers['X-Instana-S'], wsgi_span.s) - assert('X-Instana-L' in response.headers) + assert 'X-Instana-L' in response.headers self.assertEqual(response.headers['X-Instana-L'], '1') - assert('Server-Timing' in response.headers) + assert 'Server-Timing' in response.headers server_timing_value = "intid;desc=%s" % wsgi_span.t self.assertEqual(response.headers['Server-Timing'], server_timing_value) @@ -192,18 +192,18 @@ def test_custom_header_capture(self): assert response self.assertEqual(200, response.status) - assert('X-Instana-T' in response.headers) + assert 'X-Instana-T' in response.headers assert(int(response.headers['X-Instana-T'], 16)) self.assertEqual(response.headers['X-Instana-T'], wsgi_span.t) - assert('X-Instana-S' in response.headers) + assert 'X-Instana-S' in response.headers assert(int(response.headers['X-Instana-S'], 16)) self.assertEqual(response.headers['X-Instana-S'], wsgi_span.s) - assert('X-Instana-L' in response.headers) + assert 'X-Instana-L' in response.headers self.assertEqual(response.headers['X-Instana-L'], '1') - assert('Server-Timing' in response.headers) + assert 'Server-Timing' in response.headers server_timing_value = "intid;desc=%s" % wsgi_span.t self.assertEqual(response.headers['Server-Timing'], server_timing_value) @@ -251,18 +251,18 @@ def test_secret_scrubbing(self): assert response self.assertEqual(200, response.status) - assert('X-Instana-T' in response.headers) + assert 'X-Instana-T' in response.headers assert(int(response.headers['X-Instana-T'], 16)) self.assertEqual(response.headers['X-Instana-T'], wsgi_span.t) - assert('X-Instana-S' in response.headers) + assert 'X-Instana-S' in response.headers assert(int(response.headers['X-Instana-S'], 16)) self.assertEqual(response.headers['X-Instana-S'], wsgi_span.s) - assert('X-Instana-L' in response.headers) + assert 'X-Instana-L' in response.headers self.assertEqual(response.headers['X-Instana-L'], '1') - assert('Server-Timing' in response.headers) + assert 'Server-Timing' in response.headers server_timing_value = "intid;desc=%s" % wsgi_span.t self.assertEqual(response.headers['Server-Timing'], server_timing_value) @@ -308,18 +308,18 @@ def test_with_incoming_context(self): self.assertEqual(wsgi_span.t, '0000000000000001') self.assertEqual(wsgi_span.p, '0000000000000001') - assert('X-Instana-T' in response.headers) + assert 'X-Instana-T' in response.headers assert(int(response.headers['X-Instana-T'], 16)) self.assertEqual(response.headers['X-Instana-T'], wsgi_span.t) - assert('X-Instana-S' in response.headers) + assert 'X-Instana-S' in response.headers assert(int(response.headers['X-Instana-S'], 16)) self.assertEqual(response.headers['X-Instana-S'], wsgi_span.s) - assert('X-Instana-L' in response.headers) + assert 'X-Instana-L' in response.headers self.assertEqual(response.headers['X-Instana-L'], '1') - assert('Server-Timing' in response.headers) + assert 'Server-Timing' in response.headers server_timing_value = "intid;desc=%s" % wsgi_span.t self.assertEqual(response.headers['Server-Timing'], server_timing_value) @@ -341,18 +341,18 @@ def test_with_incoming_mixed_case_context(self): self.assertEqual(wsgi_span.t, '0000000000000001') self.assertEqual(wsgi_span.p, '0000000000000001') - assert('X-Instana-T' in response.headers) + assert 'X-Instana-T' in response.headers assert(int(response.headers['X-Instana-T'], 16)) self.assertEqual(response.headers['X-Instana-T'], wsgi_span.t) - assert('X-Instana-S' in response.headers) + assert 'X-Instana-S' in response.headers assert(int(response.headers['X-Instana-S'], 16)) self.assertEqual(response.headers['X-Instana-S'], wsgi_span.s) - assert('X-Instana-L' in response.headers) + assert 'X-Instana-L' in response.headers self.assertEqual(response.headers['X-Instana-L'], '1') - assert('Server-Timing' in response.headers) + assert 'Server-Timing' in response.headers server_timing_value = "intid;desc=%s" % wsgi_span.t self.assertEqual(response.headers['Server-Timing'], server_timing_value) @@ -372,18 +372,18 @@ def test_response_headers(self): assert response self.assertEqual(200, response.status) - assert('X-Instana-T' in response.headers) + assert 'X-Instana-T' in response.headers assert(int(response.headers['X-Instana-T'], 16)) self.assertEqual(response.headers['X-Instana-T'], wsgi_span.t) - assert('X-Instana-S' in response.headers) + assert 'X-Instana-S' in response.headers assert(int(response.headers['X-Instana-S'], 16)) self.assertEqual(response.headers['X-Instana-S'], wsgi_span.s) - assert('X-Instana-L' in response.headers) + assert 'X-Instana-L' in response.headers self.assertEqual(response.headers['X-Instana-L'], '1') - assert('Server-Timing' in response.headers) + assert 'Server-Timing' in response.headers server_timing_value = "intid;desc=%s" % wsgi_span.t self.assertEqual(response.headers['Server-Timing'], server_timing_value)