Skip to content

Commit b625b37

Browse files
committed
fix(tests): De-duplicate code in api_gateway_v2 TCs
Signed-off-by: Ferenc Géczi <[email protected]>
1 parent efb60e6 commit b625b37

File tree

1 file changed

+53
-92
lines changed

1 file changed

+53
-92
lines changed

tests/platforms/test_lambda.py

Lines changed: 53 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -319,59 +319,15 @@ def test_api_gateway_v2_trigger_tracing(self):
319319
# figure out the original (the users') Lambda Handler and execute it.
320320
# The original Lambda handler is set in os.environ["LAMBDA_HANDLER"]
321321
result = lambda_handler(event, self.context)
322-
323-
assert isinstance(result, dict)
324-
assert 'headers' in result
325-
assert 'Server-Timing' in result['headers']
326-
327322
time.sleep(1)
328323
payload = self.agent.collector.prepare_payload()
324+
self.__validate_result_and_payload_for_gateway_v2_trace(result, payload)
329325

330-
self.assertTrue("metrics" in payload)
331-
self.assertTrue("spans" in payload)
332-
self.assertEqual(2, len(payload.keys()))
333-
334-
self.assertTrue(isinstance(payload['metrics']['plugins'], list))
335-
self.assertTrue(len(payload['metrics']['plugins']) == 1)
336-
plugin_data = payload['metrics']['plugins'][0]
337-
338-
self.assertEqual('com.instana.plugin.aws.lambda', plugin_data['name'])
339-
self.assertEqual('arn:aws:lambda:us-east-2:12345:function:TestPython:1', plugin_data['entityId'])
340-
341-
self.assertEqual(1, len(payload['spans']))
342-
326+
self.assertEqual(200, result['statusCode'])
343327
span = payload['spans'][0]
344-
self.assertEqual('aws.lambda.entry', span.n)
345-
self.assertEqual('0000000000001234', span.t)
346-
self.assertIsNotNone(span.s)
347-
self.assertEqual('0000000000004567', span.p)
348-
self.assertIsNotNone(span.ts)
349-
self.assertIsNotNone(span.d)
350-
351-
server_timing_value = "intid;desc=%s" % span.t
352-
assert result['headers']['Server-Timing'] == server_timing_value
353-
354-
self.assertEqual({'hl': True, 'cp': 'aws', 'e': 'arn:aws:lambda:us-east-2:12345:function:TestPython:1'},
355-
span.f)
356-
357-
self.assertTrue(span.sy)
358-
359328
self.assertIsNone(span.ec)
360329
self.assertIsNone(span.data['lambda']['error'])
361-
362-
self.assertEqual('arn:aws:lambda:us-east-2:12345:function:TestPython:1', span.data['lambda']['arn'])
363-
self.assertEqual(None, span.data['lambda']['alias'])
364-
self.assertEqual('python', span.data['lambda']['runtime'])
365-
self.assertEqual('TestPython', span.data['lambda']['functionName'])
366-
self.assertEqual('1', span.data['lambda']['functionVersion'])
367-
self.assertIsNone(span.data['service'])
368-
369-
self.assertEqual('aws:api.gateway', span.data['lambda']['trigger'])
370-
self.assertEqual('POST', span.data['http']['method'])
371330
self.assertEqual(200, span.data['http']['status'])
372-
self.assertEqual('/my/path', span.data['http']['url'])
373-
self.assertEqual('/my/{resource}', span.data['http']['path_tpl'])
374-
self.assertEqual("secret=key&q=term", span.data['http']['params'])
375331

376332

377333
def test_api_gateway_v2_trigger_errored_tracing(self):
@@ -383,59 +339,15 @@ def test_api_gateway_v2_trigger_errored_tracing(self):
383339
self.create_agent_and_setup_tracer()
384340

385341
result = lambda_handler(event, self.context)
386-
387-
assert isinstance(result, dict)
388-
assert 'headers' in result
389-
assert 'Server-Timing' in result['headers']
390-
391342
time.sleep(1)
392343
payload = self.agent.collector.prepare_payload()
344+
self.__validate_result_and_payload_for_gateway_v2_trace(result, payload)
393345

394-
self.assertTrue("metrics" in payload)
395-
self.assertTrue("spans" in payload)
396-
self.assertEqual(2, len(payload.keys()))
397-
398-
self.assertTrue(isinstance(payload['metrics']['plugins'], list))
399-
self.assertTrue(len(payload['metrics']['plugins']) == 1)
400-
plugin_data = payload['metrics']['plugins'][0]
401-
402-
self.assertEqual('com.instana.plugin.aws.lambda', plugin_data['name'])
403-
self.assertEqual('arn:aws:lambda:us-east-2:12345:function:TestPython:1', plugin_data['entityId'])
404-
405-
self.assertEqual(1, len(payload['spans']))
406-
346+
self.assertEqual(500, result['statusCode'])
407347
span = payload['spans'][0]
408-
self.assertEqual('aws.lambda.entry', span.n)
409-
self.assertEqual('0000000000001234', span.t)
410-
self.assertIsNotNone(span.s)
411-
self.assertEqual('0000000000004567', span.p)
412-
self.assertIsNotNone(span.ts)
413-
self.assertIsNotNone(span.d)
414-
415-
server_timing_value = "intid;desc=%s" % span.t
416-
assert result['headers']['Server-Timing'] == server_timing_value
417-
418-
self.assertEqual({'hl': True, 'cp': 'aws', 'e': 'arn:aws:lambda:us-east-2:12345:function:TestPython:1'},
419-
span.f)
420-
421-
self.assertTrue(span.sy)
422-
423348
self.assertEqual(1, span.ec)
424349
self.assertEqual('HTTP status 500', span.data['lambda']['error'])
425-
426-
self.assertEqual('arn:aws:lambda:us-east-2:12345:function:TestPython:1', span.data['lambda']['arn'])
427-
self.assertEqual(None, span.data['lambda']['alias'])
428-
self.assertEqual('python', span.data['lambda']['runtime'])
429-
self.assertEqual('TestPython', span.data['lambda']['functionName'])
430-
self.assertEqual('1', span.data['lambda']['functionVersion'])
431-
self.assertIsNone(span.data['service'])
432-
433-
self.assertEqual('aws:api.gateway', span.data['lambda']['trigger'])
434-
self.assertEqual('POST', span.data['http']['method'])
435350
self.assertEqual(500, span.data['http']['status'])
436-
self.assertEqual('/my/path', span.data['http']['url'])
437-
self.assertEqual('/my/{resource}', span.data['http']['path_tpl'])
438-
self.assertEqual("secret=key&q=term", span.data['http']['params'])
439351

440352

441353
def test_application_lb_trigger_tracing(self):
@@ -801,3 +713,52 @@ def test_agent_custom_log_level(self):
801713
os.environ['INSTANA_LOG_LEVEL'] = "eRror"
802714
self.create_agent_and_setup_tracer()
803715
assert self.agent.options.log_level == logging.ERROR
716+
717+
def __validate_result_and_payload_for_gateway_v2_trace(self, result, payload):
718+
self.assertIsInstance(result, dict)
719+
self.assertIn('headers', result)
720+
self.assertIn('Server-Timing', result['headers'])
721+
self.assertIn('statusCode', result)
722+
723+
self.assertTrue("metrics" in payload)
724+
self.assertTrue("spans" in payload)
725+
self.assertEqual(2, len(payload.keys()))
726+
727+
self.assertTrue(isinstance(payload['metrics']['plugins'], list))
728+
self.assertTrue(len(payload['metrics']['plugins']) == 1)
729+
plugin_data = payload['metrics']['plugins'][0]
730+
731+
self.assertEqual('com.instana.plugin.aws.lambda', plugin_data['name'])
732+
self.assertEqual('arn:aws:lambda:us-east-2:12345:function:TestPython:1', plugin_data['entityId'])
733+
734+
self.assertEqual(1, len(payload['spans']))
735+
736+
span = payload['spans'][0]
737+
self.assertEqual('aws.lambda.entry', span.n)
738+
self.assertEqual('0000000000001234', span.t)
739+
self.assertIsNotNone(span.s)
740+
self.assertEqual('0000000000004567', span.p)
741+
self.assertIsNotNone(span.ts)
742+
self.assertIsNotNone(span.d)
743+
744+
server_timing_value = "intid;desc=%s" % span.t
745+
assert result['headers']['Server-Timing'] == server_timing_value
746+
747+
self.assertEqual({'hl': True, 'cp': 'aws', 'e': 'arn:aws:lambda:us-east-2:12345:function:TestPython:1'},
748+
span.f)
749+
750+
self.assertTrue(span.sy)
751+
752+
753+
self.assertEqual('arn:aws:lambda:us-east-2:12345:function:TestPython:1', span.data['lambda']['arn'])
754+
self.assertEqual(None, span.data['lambda']['alias'])
755+
self.assertEqual('python', span.data['lambda']['runtime'])
756+
self.assertEqual('TestPython', span.data['lambda']['functionName'])
757+
self.assertEqual('1', span.data['lambda']['functionVersion'])
758+
self.assertIsNone(span.data['service'])
759+
760+
self.assertEqual('aws:api.gateway', span.data['lambda']['trigger'])
761+
self.assertEqual('POST', span.data['http']['method'])
762+
self.assertEqual('/my/path', span.data['http']['url'])
763+
self.assertEqual('/my/{resource}', span.data['http']['path_tpl'])
764+
self.assertEqual("secret=key&q=term", span.data['http']['params'])

0 commit comments

Comments
 (0)