Skip to content

Commit 0328517

Browse files
HimtanayaHimtanaya Bhadada
and
Himtanaya Bhadada
authored
Support 30 dimensions per dimension set (#25)
* Support 30 dimensions per dimension set * Bump version to 1.0.0 Co-authored-by: Himtanaya Bhadada <[email protected]>
1 parent 76f1f4f commit 0328517

File tree

6 files changed

+86
-2
lines changed

6 files changed

+86
-2
lines changed

src/Amazon.CloudWatch.EMF.Web/Amazon.CloudWatch.EMF.Web.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<TargetFramework>netcoreapp3.1</TargetFramework>
55
<OutputType>Library</OutputType>
6-
<VersionPrefix>0.1.0</VersionPrefix>
6+
<VersionPrefix>1.0.0</VersionPrefix>
77
<Authors>Amazon Web Services</Authors>
88
<Description>Amazon CloudWatch Embedded Metric Format Client Library for ASP.Net Core Applications</Description>
99
<Language>en-US</Language>

src/Amazon.CloudWatch.EMF/Amazon.CloudWatch.EMF.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<PackageId>Amazon.CloudWatch.EMF</PackageId>
5-
<VersionPrefix>0.1.1</VersionPrefix>
5+
<VersionPrefix>1.0.0</VersionPrefix>
66
<Authors>Amazon Web Services</Authors>
77
<Description>Amazon CloudWatch Embedded Metric Format Client Library</Description>
88
<Language>en-US</Language>

src/Amazon.CloudWatch.EMF/Constants.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ public class Constants
66

77
public const string UNKNOWN = "Unknown";
88

9+
public const int MAX_DIMENSION_SET_SIZE = 30;
10+
911
public const int MAX_METRICS_PER_EVENT = 100;
1012

1113
public const string DEFAULT_NAMESPACE = "aws-embedded-metrics";
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System;
2+
3+
namespace Amazon.CloudWatch.EMF
4+
{
5+
public class DimensionSetExceededException : Exception
6+
{
7+
public DimensionSetExceededException()
8+
: base("Maximum number of dimensions per dimension set allowed are " + Constants.MAX_DIMENSION_SET_SIZE +
9+
". Account for default dimensions if not using SetDimensions.")
10+
{
11+
}
12+
13+
public DimensionSetExceededException(string message)
14+
: base(message)
15+
{
16+
}
17+
18+
public DimensionSetExceededException(string message, Exception inner)
19+
: base(message, inner)
20+
{
21+
}
22+
}
23+
}

src/Amazon.CloudWatch.EMF/Model/DimensionSet.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ public DimensionSet(string key, string value)
3131
/// <param name="value">the dimension value</param>
3232
public void AddDimension(string key, string value)
3333
{
34+
if (Dimensions.Count >= Constants.MAX_DIMENSION_SET_SIZE)
35+
throw new DimensionSetExceededException();
36+
3437
Dimensions[key] = value;
3538
}
3639

@@ -41,6 +44,10 @@ public void AddDimension(string key, string value)
4144
/// <returns>this dimension set with the other appended</returns>
4245
public DimensionSet AddRange(DimensionSet other)
4346
{
47+
var mergedDimensionSetSize = other.DimensionKeys.Count + Dimensions.Count;
48+
if (mergedDimensionSetSize > Constants.MAX_DIMENSION_SET_SIZE)
49+
throw new DimensionSetExceededException();
50+
4451
foreach (var dimension in other?.Dimensions)
4552
{
4653
Dimensions[dimension.Key] = dimension.Value;
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using Amazon.CloudWatch.EMF.Model;
2+
using Xunit;
3+
4+
namespace Amazon.CloudWatch.EMF.Tests.Model
5+
{
6+
public class DimensionSetTests
7+
{
8+
private static DimensionSet Get_DimensionSet(int dimensionSetSize, string key = "key")
9+
{
10+
var dimensionSet = new DimensionSet();
11+
for (var i = 0; i < dimensionSetSize; i++)
12+
{
13+
dimensionSet.AddDimension(key + i, "value" + i);
14+
}
15+
16+
return dimensionSet;
17+
}
18+
19+
[Fact]
20+
public void AddDimension_30_Dimensions()
21+
{
22+
const int dimensionSetSize = 30;
23+
var dimensionSet = Get_DimensionSet(dimensionSetSize);
24+
25+
Assert.Equal(dimensionSetSize, dimensionSet.DimensionKeys.Count);
26+
}
27+
28+
[Fact]
29+
public void AddDimension_Limit_Exceeded_Error()
30+
{
31+
Assert.Throws<DimensionSetExceededException>(() =>
32+
{
33+
const int dimensionSetSize = 33;
34+
Get_DimensionSet(dimensionSetSize);
35+
});
36+
}
37+
38+
[Fact]
39+
public void AddRange_Limit_Exceeded_Error() {
40+
Assert.Throws<DimensionSetExceededException>(() =>
41+
{
42+
const int dimensionSetSize = 28;
43+
const int otherDimensionSetSize = 5;
44+
var dimensionSet = Get_DimensionSet(dimensionSetSize);
45+
var otherDimensionSet = Get_DimensionSet(otherDimensionSetSize, key: "otherKey");
46+
47+
dimensionSet.AddRange(otherDimensionSet);
48+
});
49+
}
50+
51+
}
52+
}

0 commit comments

Comments
 (0)