Skip to content

Commit

Permalink
Merge pull request #293 from glynn1211/develop
Browse files Browse the repository at this point in the history
Thank you for your contribution
  • Loading branch information
amirkaws authored Jun 12, 2023
2 parents dba5e90 + 7649287 commit 0a920b0
Show file tree
Hide file tree
Showing 7 changed files with 124 additions and 28 deletions.
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

0 comments on commit 0a920b0

Please sign in to comment.