Skip to content

Commit 65726aa

Browse files
committed
Change Context Naming convention PTFeature/Name/Version. Fix Version to Major.Minor.Build Update tests.
1 parent e620bef commit 65726aa

File tree

4 files changed

+79
-11
lines changed

4 files changed

+79
-11
lines changed

libraries/src/AWS.Lambda.Powertools.Common/Core/PowertoolsEnvironment.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public string GetAssemblyName<T>(T type)
3737
/// <inheritdoc />
3838
public string GetAssemblyVersion<T>(T type)
3939
{
40-
return type.GetType().Assembly.GetName().Version?.ToString();
40+
var version = type.GetType().Assembly.GetName().Version;
41+
return version != null ? $"{version.Major}.{version.Minor}.{version.Build}" : string.Empty;
4142
}
4243
}

libraries/src/AWS.Lambda.Powertools.Common/Core/SystemWrapper.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,34 @@ public void SetExecutionEnvironment<T>(T type)
100100
// If there is an existing execution environment variable add the annotations package as a suffix.
101101
if(!string.IsNullOrEmpty(GetEnvironmentVariable(envName)))
102102
{
103-
envValue.Append($"{GetEnvironmentVariable(envName)}_");
103+
envValue.Append($"{GetEnvironmentVariable(envName)} ");
104104
}
105105

106106
var assemblyVersion = _powertoolsEnvironment.GetAssemblyVersion(type);
107107
var assemblyName =_powertoolsEnvironment.GetAssemblyName(type);
108108

109-
envValue.Append($"{assemblyName}_{assemblyVersion}");
109+
envValue.Append($"{ParseAssemblyName(assemblyName)}/{assemblyVersion}");
110110

111111
SetEnvironmentVariable(envName, envValue.ToString());
112112
}
113+
114+
/// <summary>
115+
/// Parsing the name to conform with the required naming convention for the UserAgent header (PTFeature/Name/Version)
116+
/// Fallback to Assembly Name on exception
117+
/// </summary>
118+
/// <param name="assemblyName"></param>
119+
/// <returns></returns>
120+
private string ParseAssemblyName(string assemblyName)
121+
{
122+
try
123+
{
124+
var parsedName = assemblyName.Substring(assemblyName.LastIndexOf(".", StringComparison.Ordinal)+1);
125+
return $"PTFeature/{parsedName}";
126+
}
127+
catch
128+
{
129+
//NOOP
130+
}
131+
return $"PTFeature/{assemblyName}";
132+
}
113133
}

libraries/tests/AWS.Lambda.Powertools.Common.Tests/Core/PowertoolsEnvironmentTest.cs

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
using System;
22
using System.Collections.Generic;
3-
using Moq;
43
using Xunit;
54

65
namespace AWS.Lambda.Powertools.Common.Tests;
76

8-
public class PowertoolsEnvironmentTest
7+
public class PowertoolsEnvironmentTest : IDisposable
98
{
109
[Fact]
1110
public void Set_Execution_Environment()
@@ -17,7 +16,7 @@ public void Set_Execution_Environment()
1716
systemWrapper.SetExecutionEnvironment(this);
1817

1918
// Assert
20-
Assert.Equal("Lambda_Powertools_1.0.0", systemWrapper.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
19+
Assert.Equal("PTFeature/Fake/1.0.0", systemWrapper.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
2120
}
2221

2322
[Fact]
@@ -26,13 +25,61 @@ public void Set_Execution_Environment_WhenEnvironmentHasValue()
2625
// Arrange
2726
var systemWrapper = new SystemWrapper(new MockEnvironment());
2827

29-
systemWrapper.SetEnvironmentVariable("AWS_EXECUTION_ENV", "ExistingValue");
28+
systemWrapper.SetEnvironmentVariable("AWS_EXECUTION_ENV", "ExistingValuesInUserAgent");
3029

3130
// Act
3231
systemWrapper.SetExecutionEnvironment(this);
3332

3433
// Assert
35-
Assert.Equal("ExistingValue_Lambda_Powertools_1.0.0", systemWrapper.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
34+
Assert.Equal("ExistingValuesInUserAgent PTFeature/Fake/1.0.0", systemWrapper.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
35+
}
36+
37+
[Fact]
38+
public void Set_Multiple_Execution_Environment()
39+
{
40+
// Arrange
41+
var systemWrapper = new SystemWrapper(new MockEnvironment());
42+
43+
// Act
44+
systemWrapper.SetExecutionEnvironment(this);
45+
systemWrapper.SetExecutionEnvironment(this);
46+
47+
// Assert
48+
Assert.Equal("PTFeature/Fake/1.0.0 PTFeature/Fake/1.0.0", systemWrapper.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
49+
}
50+
51+
[Fact]
52+
public void Set_Execution_Real_Environment()
53+
{
54+
// Arrange
55+
var systemWrapper = new SystemWrapper(new PowertoolsEnvironment());
56+
57+
// Act
58+
systemWrapper.SetExecutionEnvironment(this);
59+
60+
// Assert
61+
Assert.Equal("PTFeature/Tests/1.0.0", systemWrapper.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
62+
}
63+
64+
[Fact]
65+
public void Set_Execution_Real_Environment_Multiple()
66+
{
67+
// Arrange
68+
var systemWrapper = new SystemWrapper(new PowertoolsEnvironment());
69+
70+
// Act
71+
systemWrapper.SetExecutionEnvironment(this);
72+
systemWrapper.SetExecutionEnvironment(this);
73+
74+
// Assert
75+
Assert.Equal("PTFeature/Tests/1.0.0 PTFeature/Tests/1.0.0", systemWrapper.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
76+
}
77+
78+
public void Dispose()
79+
{
80+
//Do cleanup actions here
81+
82+
Environment.SetEnvironmentVariable("AWS_EXECUTION_ENV", null);
3683
}
3784
}
3885

@@ -56,7 +103,7 @@ public void SetEnvironmentVariable(string variableName, string value)
56103

57104
public string GetAssemblyName<T>(T type)
58105
{
59-
return "Lambda_Powertools";
106+
return "AWS.Lambda.Powertools.Fake";
60107
}
61108

62109
public string GetAssemblyVersion<T>(T type)

libraries/tests/AWS.Lambda.Powertools.Logging.Tests/PowertoolsLoggerTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,7 +1226,7 @@ public void Log_Set_Execution_Environment_Context()
12261226
{
12271227
// Arrange
12281228
var loggerName = Guid.NewGuid().ToString();
1229-
var assemblyName = "LambdaPowertools";
1229+
var assemblyName = "AWS.Lambda.Powertools.Logger";
12301230
var assemblyVersion = "1.0.0";
12311231

12321232
var configurations = new Mock<IPowertoolsConfigurations>();
@@ -1248,7 +1248,7 @@ public void Log_Set_Execution_Environment_Context()
12481248
// Assert
12491249
env.Verify(v =>
12501250
v.SetEnvironmentVariable(
1251-
"AWS_EXECUTION_ENV", $"{assemblyName}_{assemblyVersion}"
1251+
"AWS_EXECUTION_ENV", $"PTFeature/Logger/{assemblyVersion}"
12521252
), Times.Once);
12531253

12541254
env.Verify(v =>

0 commit comments

Comments
 (0)