Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions libraries/src/AWS.Lambda.Powertools.Metrics/IMetrics.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,9 @@ void PushSingleMetric(string metricName, double value, MetricUnit unit, string n
/// </summary>
/// <param name="metricsOverflow">if set to <c>true</c> [metrics overflow].</param>
void Flush(bool metricsOverflow = false);

/// <summary>
/// Clears both default dimensions and dimensions lists
/// </summary>
void ClearDefaultDimensions();
}
16 changes: 16 additions & 0 deletions libraries/src/AWS.Lambda.Powertools.Metrics/Metrics.cs
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,14 @@ void IMetrics.Flush(bool metricsOverflow)
"##WARNING## Metrics and Metadata have not been specified. No data will be sent to Cloudwatch Metrics.");
}
}

/// <summary>
/// Clears both default dimensions and dimensions lists
/// </summary>
void IMetrics.ClearDefaultDimensions()
{
_context.ClearDefaultDimensions();
}

/// <summary>
/// Serialize global context object
Expand Down Expand Up @@ -317,6 +325,14 @@ public static void SetDefaultDimensions(Dictionary<string, string> defaultDimens
{
_instance.SetDefaultDimensions(defaultDimensions);
}

/// <summary>
/// Clears both default dimensions and dimensions lists
/// </summary>
public static void ClearDefaultDimensions()
{
_instance.ClearDefaultDimensions();
}

/// <summary>
/// Flushes metrics in Embedded Metric Format (EMF) to Standard Output. In Lambda, this output is collected
Expand Down
8 changes: 8 additions & 0 deletions libraries/src/AWS.Lambda.Powertools.Metrics/Model/Metadata.cs
Original file line number Diff line number Diff line change
Expand Up @@ -175,4 +175,12 @@ internal Dictionary<string, string> ExpandAllDimensionSets()

return dimensionSets;
}

/// <summary>
/// Clears both default dimensions and dimensions lists
/// </summary>
internal void ClearDefaultDimensions()
{
_metricDirective.ClearDefaultDimensions();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -225,4 +225,12 @@ internal Dictionary<string, string> ExpandAllDimensionSets()

return dimensions;
}

/// <summary>
/// Clears both default dimensions and dimensions lists
/// </summary>
internal void ClearDefaultDimensions()
{
DefaultDimensions.Clear();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -162,4 +162,12 @@ public string Serialize()
{
return _rootNode.Serialize();
}

/// <summary>
/// Clears both default dimensions and dimensions lists
/// </summary>
public void ClearDefaultDimensions()
{
_rootNode.AWS.ClearDefaultDimensions();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
using System;
using System.IO;
using AWS.Lambda.Powertools.Common;
using Moq;
using Xunit;

namespace AWS.Lambda.Powertools.Metrics.Tests;

[Collection("Sequential")]
public class ClearDimensionsTests
{
[Fact]
public void WhenClearAllDimensions_NoDimensionsInOutput()
{
// Arrange
var methodName = Guid.NewGuid().ToString();
var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

var configurations = new Mock<IPowertoolsConfigurations>();

var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
metrics,
false
);

var eventArgs = new AspectEventArgs { Name = methodName };

// Act
handler.OnEntry(eventArgs);

Metrics.ClearDefaultDimensions();
Metrics.AddMetric($"Metric Name", 1, MetricUnit.Count);

handler.OnExit(eventArgs);

var metricsOutput = consoleOut.ToString();

// Assert
Assert.Contains("{\"Namespace\":\"dotnet-powertools-test\",\"Metrics\":[{\"Name\":\"Metric Name\",\"Unit\":\"Count\"}],\"Dimensions\":[[]]", metricsOutput);

// Reset
handler.ResetForTest();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,15 @@ public void WhenCaptureColdStart_CreateSeparateBlob()

var configurations = new Mock<IPowertoolsConfigurations>();

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService",
captureColdStartEnabled: captureColdStartEnabled
);

var handler = new MetricsAspectHandler(
logger,
metrics,
captureColdStartEnabled
);

Expand Down Expand Up @@ -120,14 +120,14 @@ public void When100MetricsAreAdded_FlushAutomatically()

var configurations = new Mock<IPowertoolsConfigurations>();

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

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

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

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

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

Expand Down Expand Up @@ -241,14 +241,14 @@ public void WhenDimensionsAreAdded_MustExistAsMembers()

var configurations = new Mock<IPowertoolsConfigurations>();

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

Expand Down Expand Up @@ -279,10 +279,10 @@ public void WhenNamespaceIsDefined_AbleToRetrieveNamespace()
// Arrange
var methodName = Guid.NewGuid().ToString();
var configurations = new Mock<IPowertoolsConfigurations>();
var logger = new Metrics(configurations.Object);
var metrics = new Metrics(configurations.Object);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

Expand Down Expand Up @@ -311,14 +311,14 @@ public void WhenMetricsDefined_AbleToAddMetadata()
Console.SetOut(consoleOut);

var configurations = new Mock<IPowertoolsConfigurations>();
var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

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

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

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

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

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

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

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

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

Expand Down Expand Up @@ -508,14 +508,14 @@ public void WhenMetricsWithSameNameAdded_ValidateMetricArray()

var configurations = new Mock<IPowertoolsConfigurations>();

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

Expand Down Expand Up @@ -551,14 +551,14 @@ public void WhenMetricsWithStandardResolutionAdded_ValidateMetricArray()

var configurations = new Mock<IPowertoolsConfigurations>();

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

Expand Down Expand Up @@ -593,14 +593,14 @@ public void WhenMetricsWithHighResolutionAdded_ValidateMetricArray()

var configurations = new Mock<IPowertoolsConfigurations>();

var logger = new Metrics(
var metrics = new Metrics(
configurations.Object,
nameSpace: "dotnet-powertools-test",
service: "testService"
);

var handler = new MetricsAspectHandler(
logger,
metrics,
false
);

Expand Down