def test_log_metric_invalid_unit(capsys, invalid_input, expected): # GIVEN invalid units are provided # WHEN log_metric is called # THEN ValueError exception should be raised with pytest.raises(expected): log_metric(name="test_metric", namespace="DemoApp", **invalid_input)
def test_log_metric_partially_correct_args(capsys, invalid_input, expected): # GIVEN invalid arguments are provided such as empty dimension values and metric units in strings # WHEN log_metric is called # THEN default values should be used such as "Count" as a unit, invalid dimensions not included # and no exception raised log_metric(name="test_metric", namespace="DemoApp", **invalid_input) captured = capsys.readouterr() assert captured.out == expected
def test_log_metric_multiple_dimensions(capsys): # GIVEN multiple optional dimensions are provided # WHEN log_metric is called # THEN dimensions should appear as dimenion=value log_metric( name="test_metric", unit=MetricUnit.Seconds, value=60, customer="abc", charge_id="123", namespace="DemoApp", ) expected = "MONITORING|60|Seconds|test_metric|DemoApp|service=service_undefined,customer=abc,charge_id=123\n" captured = capsys.readouterr() assert captured.out == expected
def test_log_metric(capsys): # GIVEN a service, unit and value have been provided # WHEN log_metric is called # THEN custom metric line should be match given values log_metric( service="payment", name="test_metric", unit=MetricUnit.Seconds, value=60, namespace="DemoApp", ) expected = "MONITORING|60|Seconds|test_metric|DemoApp|service=payment\n" captured = capsys.readouterr() assert captured.out == expected
def test_log_metric_env_var(monkeypatch, capsys): # GIVEN a service, unit and value have been provided # WHEN log_metric is called # THEN custom metric line should be match given values service_name = "payment" monkeypatch.setenv("POWERTOOLS_SERVICE_NAME", service_name) log_metric(name="test_metric", unit=MetricUnit.Seconds, value=60, namespace="DemoApp") expected = "MONITORING|60|Seconds|test_metric|DemoApp|service=payment\n" captured = capsys.readouterr() assert captured.out == expected