@@ -240,6 +240,46 @@ def lambda_handler(evt, ctx):
240
240
assert "environment" in second_invocation
241
241
242
242
243
+ def test_log_metrics_precedence_metrics_tags_over_default_tags (capsys ):
244
+ # GIVEN DatadogMetrics is initialized and we persist a set of default tags
245
+ my_metrics = DatadogMetrics (flush_to_log = True )
246
+ default_tags = {"environment" : "test" , "log_group" : "/lambda/test" }
247
+
248
+ # WHEN we use log_metrics with default_tags to serialize
249
+ # and create metrics with a tag that has the same name as one of the default_tags
250
+ @my_metrics .log_metrics (default_tags = default_tags )
251
+ def lambda_handler (evt , ctx ):
252
+ my_metrics .add_metric (name = "item_sold" , value = 1 , environment = "metric_precedence" )
253
+
254
+ lambda_handler ({}, {})
255
+ output = json .loads (capsys .readouterr ().out .strip ())
256
+
257
+ # THEN tag defined in add_metric must have preference over default_tags
258
+ assert "environment:metric_precedence" in output ["t" ]
259
+ assert "environment:test" not in output ["t" ]
260
+
261
+
262
+ def test_log_metrics_merge_metrics_tags_and_default_tags (capsys ):
263
+ # GIVEN DatadogMetrics is initialized and we persist a set of default tags
264
+ my_metrics = DatadogMetrics (flush_to_log = True )
265
+ default_tags = {"environment" : "test" , "log_group" : "/lambda/test" }
266
+
267
+ # WHEN we use log_metrics with default_tags to serialize
268
+ # and create metrics with a tag that has the same name as one of the default_tags
269
+ @my_metrics .log_metrics (default_tags = default_tags )
270
+ def lambda_handler (evt , ctx ):
271
+ my_metrics .add_metric (name = "item_sold" , value = 1 , product = "powertools" )
272
+
273
+ lambda_handler ({}, {})
274
+ output = json .loads (capsys .readouterr ().out .strip ())
275
+
276
+ # THEN there should be serialized default_tags and metric tags
277
+ output ["e" ] = ""
278
+ assert output == json .loads (
279
+ '{"m":"item_sold","v":1,"e":"","t":["environment:test","log_group:/lambda/test", "product:powertools"]}' ,
280
+ )
281
+
282
+
243
283
def test_clear_default_tags ():
244
284
# GIVEN DatadogMetrics is initialized and we persist a set of default tags
245
285
my_metrics = DatadogMetrics ()
0 commit comments