Skip to content

New AWS Lambda Support #219

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 29 commits into from
Mar 19, 2020
Merged
Changes from 1 commit
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
4642823
Refactor, reorganize and cleanup for AWS prep
pglombardo Feb 14, 2020
d090049
AWS Lambda Agent, Layer, Span & handler method
pglombardo Feb 25, 2020
4e5e1ed
Functional Lambda Tracing and Infra linking
pglombardo Feb 27, 2020
a53e74b
Bug fixes for test suite issues
pglombardo Feb 27, 2020
f0d336e
Bug fixes for test suite issues: second batch
pglombardo Feb 27, 2020
df6f73f
Restructured tag collection
pglombardo Mar 3, 2020
cc3dd0a
Update suds and grpcio tests. Unify spans in span.py
pglombardo Mar 3, 2020
2b641ea
Remove debug remnants
pglombardo Mar 3, 2020
63c4dd6
Update/fix cassandra tests
pglombardo Mar 3, 2020
1e7f775
Check if agent supports extra_headers before proceeding
pglombardo Mar 5, 2020
ddd45ce
Centralize all lambda instrumentation
pglombardo Mar 10, 2020
130e931
New Lambda test suite
pglombardo Mar 10, 2020
6d27d42
New and improved lambda handler and handler parsing
pglombardo Mar 10, 2020
e3c5f92
Fix trailing slash bug reported by Justyn
pglombardo Mar 10, 2020
a2f9ae4
Refinement and additions for the test suite
pglombardo Mar 10, 2020
d7189a4
Linter love
pglombardo Mar 10, 2020
46df777
Allow get/set of agent & tracer for tests
pglombardo Mar 10, 2020
a28c1ae
Updated build script
pglombardo Mar 10, 2020
2c824ad
Restore agent and tracer after each test; lint fixes
pglombardo Mar 10, 2020
cdd15b0
Enable script for all regions
pglombardo Mar 13, 2020
26888d0
Better script name
pglombardo Mar 13, 2020
e70ae15
Trigger support & tests
pglombardo Mar 17, 2020
e214ceb
Move Lambda inst into it's own package
pglombardo Mar 17, 2020
d583626
Code documentation
pglombardo Mar 18, 2020
61d80ce
Update import path
pglombardo Mar 18, 2020
372672d
Keep 2.7 compatible: no type hints
pglombardo Mar 18, 2020
06be7e8
Py 2.7 compatible decompression
pglombardo Mar 18, 2020
58abc62
Fix Python 3.5 compatibility
pglombardo Mar 19, 2020
4e0571e
Remove comment
pglombardo Mar 19, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Restore agent and tracer after each test; lint fixes
  • Loading branch information
pglombardo committed Mar 10, 2020
commit 2c824adfa28cd37b529da8534f2342e41d9c2bcb
23 changes: 14 additions & 9 deletions tests/test_lambda.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from __future__ import absolute_import

import os
import wrapt
import unittest
from instana.singletons import set_agent, set_tracer
import wrapt
from instana.singletons import get_agent, set_agent, get_tracer, set_tracer
from instana.tracer import InstanaTracer
from instana.agent import AWSLambdaAgent
from instana.recorder import AWSLambdaRecorder
Expand All @@ -22,7 +22,7 @@ def __init__(self, **kwargs):


# This is the target handler that will be instrumented for these tests
def test_lambda_handler(event, context):
def my_lambda_handler(event, context):
print("target_handler called")
return "All Ok"

Expand All @@ -34,6 +34,9 @@ def __init__(self, methodName='runTest'):
self.span_recorder = None
self.tracer = None

self.original_agent = get_agent()
self.original_tracer = get_tracer()

def tearDown(self):
""" Reset all environment variables of consequence """
if "LAMBDA_HANDLER" in os.environ:
Expand All @@ -45,6 +48,9 @@ def tearDown(self):
if "INSTANA_AGENT_KEY" in os.environ:
os.environ.pop("INSTANA_AGENT_KEY")

set_agent(self.original_agent)
set_tracer(self.original_tracer)

def create_agent_and_setup_tracer(self):
self.agent = AWSLambdaAgent()
self.span_recorder = AWSLambdaRecorder(self.agent)
Expand Down Expand Up @@ -73,15 +79,15 @@ def test_agent_extra_headers(self):
self.assertEqual(should_headers, self.agent.extra_headers)

def test_api_gateway_tracing(self):
os.environ["LAMBDA_HANDLER"] = "tests.test_lambda.test_lambda_handler"
os.environ["LAMBDA_HANDLER"] = "tests.test_lambda.my_lambda_handler"
os.environ["INSTANA_ENDPOINT_URL"] = "https://localhost/notreal"
os.environ["INSTANA_AGENT_KEY"] = "Fake_Key"

self.create_agent_and_setup_tracer()

module_name, function_name = get_lambda_handler_or_default()
self.assertEqual("tests.test_lambda", module_name)
self.assertEqual("test_lambda_handler", function_name)
self.assertEqual("my_lambda_handler", function_name)

wrapt.wrap_function_wrapper(module_name, function_name, lambda_handler_with_instana)

Expand All @@ -96,7 +102,8 @@ def test_api_gateway_tracing(self):
self.assertTrue("spans" in payload)
self.assertEqual(2, len(payload.keys()))
self.assertEqual('com.instana.plugin.aws.lambda', payload['metrics']['plugins']['name'])
self.assertEqual('arn:aws:lambda:us-east-2:12345:function:TestPython:1', payload['metrics']['plugins']['entityId'])
self.assertEqual('arn:aws:lambda:us-east-2:12345:function:TestPython:1',
payload['metrics']['plugins']['entityId'])

self.assertEqual(1, len(payload['spans']))

Expand All @@ -119,6 +126,4 @@ def test_api_gateway_tracing(self):
self.assertEqual(None, span.data['lambda']['alias'])
self.assertEqual('python', span.data['lambda']['runtime'])
self.assertEqual('TestPython', span.data['lambda']['functionName'])
self.assertEqual('1', span.data['lambda']['functionVersion'])


self.assertEqual('1', span.data['lambda']['functionVersion'])