Skip to content

Commit 5e54c25

Browse files
committed
refactor(e2e-utils): raise upon invocation error
1 parent 7991884 commit 5e54c25

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

tests/e2e/utils/data_fetcher/common.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,45 @@ def get_lambda_response(
1414
lambda_arn: str,
1515
payload: Optional[str] = None,
1616
client: Optional[LambdaClient] = None,
17+
raise_on_error: bool = True,
1718
) -> Tuple[InvocationResponseTypeDef, datetime]:
19+
"""Invoke function synchronously
20+
21+
Parameters
22+
----------
23+
lambda_arn : str
24+
Lambda function ARN to invoke
25+
payload : Optional[str], optional
26+
JSON payload for Lambda invocation, by default None
27+
client : Optional[LambdaClient], optional
28+
Boto3 Lambda SDK client, by default None
29+
raise_on_error : bool, optional
30+
Whether to raise exception upon invocation error, by default True
31+
32+
Returns
33+
-------
34+
Tuple[InvocationResponseTypeDef, datetime]
35+
Function response and approximate execution time
36+
37+
Raises
38+
------
39+
RuntimeError
40+
Function invocation error details
41+
"""
1842
client = client or boto3.client("lambda")
1943
payload = payload or ""
2044
execution_time = datetime.utcnow()
45+
46+
response: InvocationResponseTypeDef = client.invoke(
47+
FunctionName=lambda_arn,
48+
InvocationType="RequestResponse",
49+
Payload=payload,
50+
)
51+
has_error = response.get("FunctionError", "") == "Unhandled"
52+
if has_error and raise_on_error:
53+
error_payload = response["Payload"].read().decode()
54+
raise RuntimeError(f"Function failed invocation: {error_payload}")
55+
2156
return client.invoke(FunctionName=lambda_arn, InvocationType="RequestResponse", Payload=payload), execution_time
2257

2358

0 commit comments

Comments
 (0)