-
Notifications
You must be signed in to change notification settings - Fork 421
/
Copy pathtest_metrics.py
69 lines (46 loc) · 2.21 KB
/
test_metrics.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import json
import pytest
from tests.e2e.utils import data_builder, data_fetcher
@pytest.fixture
def basic_handler_fn(infrastructure: dict) -> str:
return infrastructure.get("BasicHandler", "")
@pytest.fixture
def basic_handler_fn_arn(infrastructure: dict) -> str:
return infrastructure.get("BasicHandlerArn", "")
@pytest.fixture
def cold_start_fn(infrastructure: dict) -> str:
return infrastructure.get("ColdStart", "")
@pytest.fixture
def cold_start_fn_arn(infrastructure: dict) -> str:
return infrastructure.get("ColdStartArn", "")
METRIC_NAMESPACE = "powertools-e2e-metric"
@pytest.mark.xdist_group(name="metrics")
def test_basic_lambda_metric_is_visible(basic_handler_fn: str, basic_handler_fn_arn: str):
# GIVEN
metric_name = data_builder.build_metric_name()
service = data_builder.build_service_name()
dimensions = data_builder.build_add_dimensions_input(service=service)
metrics = data_builder.build_multiple_add_metric_input(metric_name=metric_name, value=1, quantity=3)
# WHEN
event = json.dumps({"metrics": metrics, "service": service, "namespace": METRIC_NAMESPACE})
_, execution_time = data_fetcher.get_lambda_response(lambda_arn=basic_handler_fn_arn, payload=event)
metric_values = data_fetcher.get_metrics(
namespace=METRIC_NAMESPACE, start_date=execution_time, metric_name=metric_name, dimensions=dimensions
)
# THEN
assert metric_values == [3.0]
@pytest.mark.xdist_group(name="metrics")
def test_cold_start_metric(cold_start_fn_arn: str, cold_start_fn: str):
# GIVEN
metric_name = "ColdStart"
service = data_builder.build_service_name()
dimensions = data_builder.build_add_dimensions_input(function_name=cold_start_fn, service=service)
# WHEN we invoke twice
event = json.dumps({"service": service, "namespace": METRIC_NAMESPACE})
_, execution_time = data_fetcher.get_lambda_response(lambda_arn=cold_start_fn_arn, payload=event)
data_fetcher.get_lambda_response(lambda_arn=cold_start_fn_arn, payload=event)
metric_values = data_fetcher.get_metrics(
namespace=METRIC_NAMESPACE, start_date=execution_time, metric_name=metric_name, dimensions=dimensions
)
# THEN
assert metric_values == [1.0]