Skip to content

Commit 0a920b0

Browse files
authored
Merge pull request #293 from glynn1211/develop
Thank you for your contribution
2 parents dba5e90 + 7649287 commit 0a920b0

File tree

7 files changed

+124
-28
lines changed

7 files changed

+124
-28
lines changed

libraries/src/AWS.Lambda.Powertools.Metrics/IMetrics.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,9 @@ void PushSingleMetric(string metricName, double value, MetricUnit unit, string n
9696
/// </summary>
9797
/// <param name="metricsOverflow">if set to <c>true</c> [metrics overflow].</param>
9898
void Flush(bool metricsOverflow = false);
99+
100+
/// <summary>
101+
/// Clears both default dimensions and dimensions lists
102+
/// </summary>
103+
void ClearDefaultDimensions();
99104
}

libraries/src/AWS.Lambda.Powertools.Metrics/Metrics.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,14 @@ void IMetrics.Flush(bool metricsOverflow)
212212
"##WARNING## Metrics and Metadata have not been specified. No data will be sent to Cloudwatch Metrics.");
213213
}
214214
}
215+
216+
/// <summary>
217+
/// Clears both default dimensions and dimensions lists
218+
/// </summary>
219+
void IMetrics.ClearDefaultDimensions()
220+
{
221+
_context.ClearDefaultDimensions();
222+
}
215223

216224
/// <summary>
217225
/// Serialize global context object
@@ -317,6 +325,14 @@ public static void SetDefaultDimensions(Dictionary<string, string> defaultDimens
317325
{
318326
_instance.SetDefaultDimensions(defaultDimensions);
319327
}
328+
329+
/// <summary>
330+
/// Clears both default dimensions and dimensions lists
331+
/// </summary>
332+
public static void ClearDefaultDimensions()
333+
{
334+
_instance.ClearDefaultDimensions();
335+
}
320336

321337
/// <summary>
322338
/// Flushes metrics in Embedded Metric Format (EMF) to Standard Output. In Lambda, this output is collected

libraries/src/AWS.Lambda.Powertools.Metrics/Model/Metadata.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,4 +175,12 @@ internal Dictionary<string, string> ExpandAllDimensionSets()
175175

176176
return dimensionSets;
177177
}
178+
179+
/// <summary>
180+
/// Clears both default dimensions and dimensions lists
181+
/// </summary>
182+
internal void ClearDefaultDimensions()
183+
{
184+
_metricDirective.ClearDefaultDimensions();
185+
}
178186
}

libraries/src/AWS.Lambda.Powertools.Metrics/Model/MetricDirective.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,4 +225,12 @@ internal Dictionary<string, string> ExpandAllDimensionSets()
225225

226226
return dimensions;
227227
}
228+
229+
/// <summary>
230+
/// Clears both default dimensions and dimensions lists
231+
/// </summary>
232+
internal void ClearDefaultDimensions()
233+
{
234+
DefaultDimensions.Clear();
235+
}
228236
}

libraries/src/AWS.Lambda.Powertools.Metrics/Model/MetricsContext.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,4 +162,12 @@ public string Serialize()
162162
{
163163
return _rootNode.Serialize();
164164
}
165+
166+
/// <summary>
167+
/// Clears both default dimensions and dimensions lists
168+
/// </summary>
169+
public void ClearDefaultDimensions()
170+
{
171+
_rootNode.AWS.ClearDefaultDimensions();
172+
}
165173
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
using System;
2+
using System.IO;
3+
using AWS.Lambda.Powertools.Common;
4+
using Moq;
5+
using Xunit;
6+
7+
namespace AWS.Lambda.Powertools.Metrics.Tests;
8+
9+
[Collection("Sequential")]
10+
public class ClearDimensionsTests
11+
{
12+
[Fact]
13+
public void WhenClearAllDimensions_NoDimensionsInOutput()
14+
{
15+
// Arrange
16+
var methodName = Guid.NewGuid().ToString();
17+
var consoleOut = new StringWriter();
18+
Console.SetOut(consoleOut);
19+
20+
var configurations = new Mock<IPowertoolsConfigurations>();
21+
22+
var metrics = new Metrics(
23+
configurations.Object,
24+
nameSpace: "dotnet-powertools-test",
25+
service: "testService"
26+
);
27+
28+
var handler = new MetricsAspectHandler(
29+
metrics,
30+
false
31+
);
32+
33+
var eventArgs = new AspectEventArgs { Name = methodName };
34+
35+
// Act
36+
handler.OnEntry(eventArgs);
37+
38+
Metrics.ClearDefaultDimensions();
39+
Metrics.AddMetric($"Metric Name", 1, MetricUnit.Count);
40+
41+
handler.OnExit(eventArgs);
42+
43+
var metricsOutput = consoleOut.ToString();
44+
45+
// Assert
46+
Assert.Contains("{\"Namespace\":\"dotnet-powertools-test\",\"Metrics\":[{\"Name\":\"Metric Name\",\"Unit\":\"Count\"}],\"Dimensions\":[[]]", metricsOutput);
47+
48+
// Reset
49+
handler.ResetForTest();
50+
}
51+
}

libraries/tests/AWS.Lambda.Powertools.Metrics.Tests/EMFValidationTests.cs

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ public void WhenCaptureColdStart_CreateSeparateBlob()
3939

4040
var configurations = new Mock<IPowertoolsConfigurations>();
4141

42-
var logger = new Metrics(
42+
var metrics = new Metrics(
4343
configurations.Object,
4444
nameSpace: "dotnet-powertools-test",
4545
service: "testService",
4646
captureColdStartEnabled: captureColdStartEnabled
4747
);
4848

4949
var handler = new MetricsAspectHandler(
50-
logger,
50+
metrics,
5151
captureColdStartEnabled
5252
);
5353

@@ -120,14 +120,14 @@ public void When100MetricsAreAdded_FlushAutomatically()
120120

121121
var configurations = new Mock<IPowertoolsConfigurations>();
122122

123-
var logger = new Metrics(
123+
var metrics = new Metrics(
124124
configurations.Object,
125125
nameSpace: "dotnet-powertools-test",
126126
service: "testService"
127127
);
128128

129129
var handler = new MetricsAspectHandler(
130-
logger,
130+
metrics,
131131
false
132132
);
133133

@@ -162,14 +162,14 @@ public void WhenMoreThan9DimensionsAdded_ThrowArgumentOutOfRangeException()
162162
var methodName = Guid.NewGuid().ToString();
163163
var configurations = new Mock<IPowertoolsConfigurations>();
164164

165-
var logger = new Metrics(
165+
var metrics = new Metrics(
166166
configurations.Object,
167167
nameSpace: "dotnet-powertools-test",
168168
service: "testService"
169169
);
170170

171171
var handler = new MetricsAspectHandler(
172-
logger,
172+
metrics,
173173
false
174174
);
175175

@@ -203,12 +203,12 @@ public void WhenNamespaceNotDefined_ThrowSchemaValidationException()
203203
var methodName = Guid.NewGuid().ToString();
204204
var configurations = new Mock<IPowertoolsConfigurations>();
205205

206-
var logger = new Metrics(
206+
var metrics = new Metrics(
207207
configurations.Object
208208
);
209209

210210
var handler = new MetricsAspectHandler(
211-
logger,
211+
metrics,
212212
false
213213
);
214214

@@ -241,14 +241,14 @@ public void WhenDimensionsAreAdded_MustExistAsMembers()
241241

242242
var configurations = new Mock<IPowertoolsConfigurations>();
243243

244-
var logger = new Metrics(
244+
var metrics = new Metrics(
245245
configurations.Object,
246246
nameSpace: "dotnet-powertools-test",
247247
service: "testService"
248248
);
249249

250250
var handler = new MetricsAspectHandler(
251-
logger,
251+
metrics,
252252
false
253253
);
254254

@@ -279,10 +279,10 @@ public void WhenNamespaceIsDefined_AbleToRetrieveNamespace()
279279
// Arrange
280280
var methodName = Guid.NewGuid().ToString();
281281
var configurations = new Mock<IPowertoolsConfigurations>();
282-
var logger = new Metrics(configurations.Object);
282+
var metrics = new Metrics(configurations.Object);
283283

284284
var handler = new MetricsAspectHandler(
285-
logger,
285+
metrics,
286286
false
287287
);
288288

@@ -311,14 +311,14 @@ public void WhenMetricsDefined_AbleToAddMetadata()
311311
Console.SetOut(consoleOut);
312312

313313
var configurations = new Mock<IPowertoolsConfigurations>();
314-
var logger = new Metrics(
314+
var metrics = new Metrics(
315315
configurations.Object,
316316
nameSpace: "dotnet-powertools-test",
317317
service: "testService"
318318
);
319319

320320
var handler = new MetricsAspectHandler(
321-
logger,
321+
metrics,
322322
false
323323
);
324324

@@ -350,14 +350,14 @@ public void WhenDefaultDimensionsSet_ValidInitialization()
350350
var defaultDimensions = new Dictionary<string, string> { { "CustomDefaultDimension", "CustomDefaultDimensionValue" } };
351351
var configurations = new Mock<IPowertoolsConfigurations>();
352352

353-
var logger = new Metrics(
353+
var metrics = new Metrics(
354354
configurations.Object,
355355
nameSpace: "dotnet-powertools-test",
356356
service: "testService"
357357
);
358358

359359
var handler = new MetricsAspectHandler(
360-
logger,
360+
metrics,
361361
false
362362
);
363363

@@ -387,14 +387,14 @@ public void WhenMetricIsNegativeValue_ThrowException()
387387
var methodName = Guid.NewGuid().ToString();
388388
var configurations = new Mock<IPowertoolsConfigurations>();
389389

390-
var logger = new Metrics(
390+
var metrics = new Metrics(
391391
configurations.Object,
392392
nameSpace: "dotnet-powertools-test",
393393
service: "testService"
394394
);
395395

396396
var handler = new MetricsAspectHandler(
397-
logger,
397+
metrics,
398398
false
399399
);
400400

@@ -428,14 +428,14 @@ public void WhenDefaultDimensionSet_IgnoreDuplicates()
428428
var configurations = new Mock<IPowertoolsConfigurations>();
429429
var defaultDimensions = new Dictionary<string, string> { { "CustomDefaultDimension", "CustomDefaultDimensionValue" } };
430430

431-
var logger = new Metrics(
431+
var metrics = new Metrics(
432432
configurations.Object,
433433
nameSpace: "dotnet-powertools-test",
434434
service: "testService"
435435
);
436436

437437
var handler = new MetricsAspectHandler(
438-
logger,
438+
metrics,
439439
false
440440
);
441441

@@ -467,14 +467,14 @@ public void WhenMetricsAndMetadataAdded_ValidateOutput()
467467
Console.SetOut(consoleOut);
468468
var configurations = new Mock<IPowertoolsConfigurations>();
469469

470-
var logger = new Metrics(
470+
var metrics = new Metrics(
471471
configurations.Object,
472472
nameSpace: "dotnet-powertools-test",
473473
service: "testService"
474474
);
475475

476476
var handler = new MetricsAspectHandler(
477-
logger,
477+
metrics,
478478
false
479479
);
480480

@@ -508,14 +508,14 @@ public void WhenMetricsWithSameNameAdded_ValidateMetricArray()
508508

509509
var configurations = new Mock<IPowertoolsConfigurations>();
510510

511-
var logger = new Metrics(
511+
var metrics = new Metrics(
512512
configurations.Object,
513513
nameSpace: "dotnet-powertools-test",
514514
service: "testService"
515515
);
516516

517517
var handler = new MetricsAspectHandler(
518-
logger,
518+
metrics,
519519
false
520520
);
521521

@@ -551,14 +551,14 @@ public void WhenMetricsWithStandardResolutionAdded_ValidateMetricArray()
551551

552552
var configurations = new Mock<IPowertoolsConfigurations>();
553553

554-
var logger = new Metrics(
554+
var metrics = new Metrics(
555555
configurations.Object,
556556
nameSpace: "dotnet-powertools-test",
557557
service: "testService"
558558
);
559559

560560
var handler = new MetricsAspectHandler(
561-
logger,
561+
metrics,
562562
false
563563
);
564564

@@ -593,14 +593,14 @@ public void WhenMetricsWithHighResolutionAdded_ValidateMetricArray()
593593

594594
var configurations = new Mock<IPowertoolsConfigurations>();
595595

596-
var logger = new Metrics(
596+
var metrics = new Metrics(
597597
configurations.Object,
598598
nameSpace: "dotnet-powertools-test",
599599
service: "testService"
600600
);
601601

602602
var handler = new MetricsAspectHandler(
603-
logger,
603+
metrics,
604604
false
605605
);
606606

0 commit comments

Comments
 (0)