From d57d0a188784cf3d9bcdaa9099f1b9f3312bf523 Mon Sep 17 00:00:00 2001 From: Cavalcante Damascena Date: Wed, 2 Aug 2023 08:24:20 -0300 Subject: [PATCH] Fix e2e error --- aws_lambda_powertools/metrics/metrics.py | 20 ++++++++++++++++++++ tests/functional/test_metrics.py | 19 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/aws_lambda_powertools/metrics/metrics.py b/aws_lambda_powertools/metrics/metrics.py index d87b7bdd401..d65cb62720a 100644 --- a/aws_lambda_powertools/metrics/metrics.py +++ b/aws_lambda_powertools/metrics/metrics.py @@ -181,6 +181,26 @@ def clear_default_dimensions(self) -> None: def clear_metrics(self) -> None: self.provider.clear_metrics() + # We now allow customers to bring their own instance + # of the AmazonCloudWatchEMFProvider provider + # So we need to define getter/setter for namespace and service properties + # To access these attributes on the provider instance. + @property + def namespace(self): + return self.provider.namespace + + @namespace.setter + def namespace(self, namespace): + self.provider.namespace = namespace + + @property + def service(self): + return self.provider.service + + @service.setter + def service(self, service): + self.provider.service = service + # Maintenance: until v3, we can't afford to break customers. # AmazonCloudWatchEMFProvider has the exact same functionality (non-singleton) diff --git a/tests/functional/test_metrics.py b/tests/functional/test_metrics.py index 1eed6c82294..329ff7064dd 100644 --- a/tests/functional/test_metrics.py +++ b/tests/functional/test_metrics.py @@ -1077,6 +1077,25 @@ def test_clear_default_dimensions(namespace): assert not my_metrics.default_dimensions +def test_get_and_set_namespace_and_service_properties(namespace, service, metrics, capsys): + # GIVEN Metrics instance is initialized without namespace and service + my_metrics = Metrics() + + # WHEN we set service and namespace before flushing the metric + @my_metrics.log_metrics + def lambda_handler(evt, ctx): + my_metrics.namespace = namespace + my_metrics.service = service + for metric in metrics: + my_metrics.add_metric(**metric) + + lambda_handler({}, {}) + invocation = capture_metrics_output(capsys) + + assert service in json.dumps(invocation) + assert namespace in json.dumps(invocation) + + def test_clear_default_dimensions_with_provider(namespace): # GIVEN Metrics is initialized with provider and we persist a set of default dimensions my_provider = AmazonCloudWatchEMFProvider(namespace=namespace)