Skip to content
This repository was archived by the owner on Jun 13, 2023. It is now read-only.

Commit eb56143

Browse files
authored
fix(aiohttp): custom error & test (#311)
1 parent 208b2ea commit eb56143

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

epsagon/wrappers/aiohttp.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,11 @@ async def AiohttpMiddleware(request, handler):
4444
except Exception as exception: # pylint: disable=W0703
4545
warnings.warn('Could not extract request', EpsagonWarning)
4646

47+
raised_err = None
4748
try:
4849
response = await handler(request)
4950
except Exception as exception: # pylint: disable=W0703
51+
raised_err = exception
5052
traceback_data = get_traceback_data_from_exception(exception)
5153
trace.runner.set_exception(exception, traceback_data)
5254

@@ -58,5 +60,6 @@ async def AiohttpMiddleware(request, handler):
5860

5961
if runner:
6062
epsagon.trace.trace_factory.send_traces()
61-
63+
if raised_err:
64+
raise raised_err
6265
return response

tests/wrappers/test_aiohttp_wrapper.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,17 @@
1010
async def handle(request):
1111
return web.Response(body=RETURN_VALUE)
1212

13+
14+
class CustomAioHttpException(Exception):
15+
pass
16+
17+
1318
async def handle_error(request):
14-
raise Exception('test')
19+
raise CustomAioHttpException('test')
1520

1621

1722
def create_app(loop):
18-
app = web.Application(loop=loop, middlewares=[AiohttpMiddleware])
23+
app = web.Application(loop=loop, middlewares=[])
1924
app.router.add_route('GET', '/', handle)
2025
app.router.add_route('GET', '/err', handle_error)
2126
return app
@@ -39,13 +44,12 @@ async def test_aiohttp_sanity(_, trace_transport, aiohttp_client):
3944
async def test_aiohttp_exception(_, trace_transport, aiohttp_client):
4045
"""Test when the handler got an exception."""
4146
client = await aiohttp_client(create_app)
42-
4347
try:
4448
await client.get('/err')
45-
except:
49+
except CustomAioHttpException:
4650
pass
4751

4852
runner = trace_transport.last_trace.events[0]
4953
assert runner.error_code == ErrorCode.EXCEPTION
50-
assert runner.exception['type'] == 'Exception'
54+
assert runner.exception['type'] == 'CustomAioHttpException'
5155
assert runner.exception['message'] == 'test'

0 commit comments

Comments
 (0)