@@ -53,6 +53,13 @@ def event_api2():
53
53
return json .load (f )
54
54
55
55
56
+ @pytest .fixture
57
+ def event_lurl ():
58
+ aws_data_file = os .path .join (os .path .dirname (__file__ ), "aws_lurl_test_data.json" )
59
+ with open (aws_data_file ) as f :
60
+ return json .load (f )
61
+
62
+
56
63
@pytest .fixture
57
64
def event_elb ():
58
65
aws_data_file = os .path .join (os .path .dirname (__file__ ), "aws_elb_test_data.json" )
@@ -107,7 +114,10 @@ def test_request_data(event_api, event_api2):
107
114
data = get_data_from_request (event_api , capture_body = True , capture_headers = True )
108
115
109
116
assert data ["method" ] == "GET"
110
- assert data ["url" ]["full" ] == "https://02plqthge2.execute-api.us-east-1.amazonaws.com/dev/fetch_all?test%40key=test%40value"
117
+ assert (
118
+ data ["url" ]["full" ]
119
+ == "https://02plqthge2.execute-api.us-east-1.amazonaws.com/dev/fetch_all?test%40key=test%40value"
120
+ )
111
121
assert data ["headers" ]["Host" ] == "02plqthge2.execute-api.us-east-1.amazonaws.com"
112
122
113
123
data = get_data_from_request (event_api2 , capture_body = True , capture_headers = True )
@@ -119,24 +129,31 @@ def test_request_data(event_api, event_api2):
119
129
data = get_data_from_request (event_api , capture_body = False , capture_headers = False )
120
130
121
131
assert data ["method" ] == "GET"
122
- assert data ["url" ]["full" ] == "https://02plqthge2.execute-api.us-east-1.amazonaws.com/dev/fetch_all?test%40key=test%40value"
132
+ assert (
133
+ data ["url" ]["full" ]
134
+ == "https://02plqthge2.execute-api.us-east-1.amazonaws.com/dev/fetch_all?test%40key=test%40value"
135
+ )
123
136
assert "headers" not in data
124
137
125
138
126
139
def test_elb_request_data (event_elb ):
127
140
data = get_data_from_request (event_elb , capture_body = True , capture_headers = True )
128
141
129
142
assert data ["method" ] == "POST"
130
- assert data ["url" ][
131
- "full" ] == "https://blabla.com/toolz/api/v2.0/downloadPDF/PDF_2020-09-11_11-06-01.pdf?test%40key=test%40value&language=en-DE"
143
+ assert (
144
+ data ["url" ]["full" ]
145
+ == "https://blabla.com/toolz/api/v2.0/downloadPDF/PDF_2020-09-11_11-06-01.pdf?test%40key=test%40value&language=en-DE"
146
+ )
132
147
assert data ["headers" ]["host" ] == "blabla.com"
133
148
assert data ["body" ] == "blablablabody"
134
149
135
150
data = get_data_from_request (event_elb , capture_body = False , capture_headers = False )
136
151
137
152
assert data ["method" ] == "POST"
138
- assert data ["url" ][
139
- "full" ] == "https://blabla.com/toolz/api/v2.0/downloadPDF/PDF_2020-09-11_11-06-01.pdf?test%40key=test%40value&language=en-DE"
153
+ assert (
154
+ data ["url" ]["full" ]
155
+ == "https://blabla.com/toolz/api/v2.0/downloadPDF/PDF_2020-09-11_11-06-01.pdf?test%40key=test%40value&language=en-DE"
156
+ )
140
157
assert "headers" not in data
141
158
assert data ["body" ] == "[REDACTED]"
142
159
@@ -202,6 +219,30 @@ def test_func(event, context):
202
219
assert transaction ["context" ]["request" ]["method" ] == "GET"
203
220
assert transaction ["context" ]["request" ]["headers" ]
204
221
assert transaction ["context" ]["response" ]["status_code" ] == 200
222
+ assert transaction ["context" ]["cloud" ]["origin" ]["service" ]["name" ] == "api gateway"
223
+
224
+
225
+ def test_capture_serverless_lambda_url (event_lurl , context , elasticapm_client ):
226
+ os .environ ["AWS_LAMBDA_FUNCTION_NAME" ] = "test_func"
227
+
228
+ @capture_serverless (elasticapm_client = elasticapm_client )
229
+ def test_func (event , context ):
230
+ with capture_span ("test_span" ):
231
+ time .sleep (0.01 )
232
+ return {"statusCode" : 200 , "headers" : {"foo" : "bar" }}
233
+
234
+ test_func (event_lurl , context )
235
+
236
+ assert len (elasticapm_client .events [constants .TRANSACTION ]) == 1
237
+ transaction = elasticapm_client .events [constants .TRANSACTION ][0 ]
238
+
239
+ assert transaction ["name" ] == "GET /dev/fetch_all"
240
+ assert transaction ["result" ] == "HTTP 2xx"
241
+ assert transaction ["span_count" ]["started" ] == 1
242
+ assert transaction ["context" ]["request" ]["method" ] == "GET"
243
+ assert transaction ["context" ]["request" ]["headers" ]
244
+ assert transaction ["context" ]["response" ]["status_code" ] == 200
245
+ assert transaction ["context" ]["cloud" ]["origin" ]["service" ]["name" ] == "lambda url"
205
246
206
247
207
248
def test_capture_serverless_elb (event_elb , context , elasticapm_client ):
0 commit comments