Skip to content

Commit 9e466c7

Browse files
committed
add tests
1 parent 7cff451 commit 9e466c7

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

tests/functional/metrics/required_dependencies/test_metrics_cloudwatch_emf.py

+83
Original file line numberDiff line numberDiff line change
@@ -1329,3 +1329,86 @@ def lambda_handler(evt, ctx):
13291329
"This metric doesn't meet the requirements and will be skipped by Amazon CloudWatch. "
13301330
"Ensure the timestamp is within 14 days past or 2 hours future."
13311331
)
1332+
1333+
1334+
def test_metrics_disabled_with_env_var(monkeypatch):
1335+
# GIVEN environment variable is set to disable metrics
1336+
monkeypatch.setenv("POWERTOOLS_METRICS_DISABLED", "true")
1337+
1338+
# WHEN metrics is initialized and adding metrics
1339+
metrics = Metrics()
1340+
metrics.add_metric(name="test_metric", unit="Count", value=1)
1341+
1342+
# WHEN flushing metrics
1343+
metrics_output = metrics.flush_metrics()
1344+
1345+
# THEN metrics output should be empty
1346+
assert metrics_output is None
1347+
1348+
1349+
def test_metrics_disabled_persists_after_flush(monkeypatch):
1350+
# GIVEN environment variable is set to disable metrics
1351+
monkeypatch.setenv("POWERTOOLS_METRICS_DISABLED", "true")
1352+
metrics = Metrics()
1353+
1354+
# WHEN multiple operations are performed with flush in between
1355+
metrics.add_metric(name="metric1", unit="Count", value=1)
1356+
first_flush = metrics.flush_metrics()
1357+
1358+
metrics.add_metric(name="metric2", unit="Count", value=2)
1359+
second_flush = metrics.flush_metrics()
1360+
1361+
# THEN all flush operations should return None
1362+
assert first_flush is None
1363+
assert second_flush is None
1364+
1365+
1366+
def test_metrics_disabled_with_namespace_and_service(monkeypatch):
1367+
# GIVEN environment variable is set to disable metrics
1368+
monkeypatch.setenv("POWERTOOLS_METRICS_DISABLED", "true")
1369+
1370+
# WHEN metrics is initialized with namespace and service
1371+
metrics = Metrics(namespace="test_namespace", service="test_service")
1372+
metrics.add_metric(name="test_metric", unit="Count", value=1)
1373+
metrics_output = metrics.flush_metrics()
1374+
1375+
# THEN metrics should still be disabled
1376+
assert metrics_output is None
1377+
1378+
1379+
def test_metrics_enabled_with_env_var_false(monkeypatch, capsys):
1380+
# GIVEN environment variable is set to enable metrics
1381+
monkeypatch.setenv("POWERTOOLS_METRICS_DISABLED", "false")
1382+
1383+
# WHEN metrics is initialized with namespace and metrics added
1384+
metrics = Metrics(namespace="test")
1385+
metrics.add_metric(name="test_metric", unit="Count", value=1)
1386+
metrics.flush_metrics()
1387+
1388+
# THEN metrics should be written to stdout
1389+
output = capsys.readouterr().out
1390+
metrics_output = json.loads(output)
1391+
1392+
assert "test_metric" in metrics_output
1393+
assert metrics_output["test_metric"] == [1.0]
1394+
assert metrics_output["_aws"]["CloudWatchMetrics"][0]["Namespace"] == "test"
1395+
assert metrics_output["_aws"]["CloudWatchMetrics"][0]["Metrics"][0]["Name"] == "test_metric"
1396+
1397+
1398+
def test_metrics_enabled_with_env_var_not_set(monkeypatch, capsys):
1399+
# GIVEN environment variable is not set
1400+
monkeypatch.delenv("POWERTOOLS_METRICS_DISABLED", raising=False)
1401+
1402+
# WHEN metrics is initialized with namespace and metrics added
1403+
metrics = Metrics(namespace="test")
1404+
metrics.add_metric(name="test_metric", unit="Count", value=1)
1405+
metrics.flush_metrics()
1406+
1407+
# THEN metrics should be written to stdout
1408+
output = capsys.readouterr().out
1409+
metrics_output = json.loads(output)
1410+
1411+
assert "test_metric" in metrics_output
1412+
assert metrics_output["test_metric"] == [1.0]
1413+
assert metrics_output["_aws"]["CloudWatchMetrics"][0]["Namespace"] == "test"
1414+
assert metrics_output["_aws"]["CloudWatchMetrics"][0]["Metrics"][0]["Name"] == "test_metric"

0 commit comments

Comments
 (0)