Skip to content

Commit a640982

Browse files
committed
fix(#11): preserve context across flushes
1 parent 8452074 commit a640982

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

aws_embedded_metrics/logger/metrics_logger.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ async def flush(self) -> None:
4141

4242
# accept and reset the context
4343
sink.accept(self.context)
44-
self.context = MetricsContext.empty()
44+
self.context = self.context.create_copy_with_context()
4545

4646
def __configureContextForEnvironment(self, env: Environment) -> None:
4747
default_dimensions = {

tests/logger/test_metrics_logger.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,41 @@ async def test_can_set_namespace(mocker):
180180
assert context.namespace == expected_value
181181

182182

183+
@pytest.mark.asyncio
184+
async def test_context_is_preserved_across_flushes(mocker):
185+
# arrange
186+
expected_namespace = "Namespace"
187+
metric_key = "Metric"
188+
expected_dimension_key = "Dim"
189+
expected_property_key = "Prop"
190+
expected_value = "Value"
191+
192+
logger, sink, env = get_logger_and_sink(mocker)
193+
194+
logger.set_namespace(expected_namespace)
195+
logger.set_property(expected_property_key, expected_value)
196+
logger.set_dimensions({expected_dimension_key: expected_value})
197+
198+
# act
199+
logger.put_metric(metric_key, 0)
200+
await logger.flush()
201+
202+
context = sink.accept.call_args[0][0]
203+
assert context.namespace == expected_namespace
204+
assert context.get_dimensions()[0][expected_dimension_key] == expected_value
205+
assert context.properties[expected_property_key] == expected_value
206+
assert context.metrics[metric_key].values == [0]
207+
208+
logger.put_metric(metric_key, 1)
209+
await logger.flush()
210+
211+
context = sink.accept.call_args[0][0]
212+
assert context.namespace == expected_namespace
213+
assert context.get_dimensions()[0][expected_dimension_key] == expected_value
214+
assert context.properties[expected_property_key] == expected_value
215+
assert context.metrics[metric_key].values == [1]
216+
217+
183218
# Test helper methods
184219

185220

0 commit comments

Comments
 (0)