Skip to content

chore: update environment variable references to use AWS_SDK_UA_APP_ID #934

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
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
9 changes: 9 additions & 0 deletions libraries/src/AWS.Lambda.Powertools.Common/Core/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
* permissions and limitations under the License.
*/

// ReSharper disable InconsistentNaming
namespace AWS.Lambda.Powertools.Common;

/// <summary>
Expand Down Expand Up @@ -143,4 +144,12 @@ internal static class Constants
/// Constant for POWERTOOLS_METRICS_DISABLED environment variable
/// </summary>
internal const string PowertoolsMetricsDisabledEnv = "POWERTOOLS_METRICS_DISABLED";

/// <summary>
/// A unique and opaque application ID that is appended to the
/// User-Agent header as app/sdk_ua_app_id. It should have a
/// maximum length of 50. This variable is sourced from environment
/// variable AWS_SDK_UA_APP_ID
/// </summary>
internal const string AWSSdkUAAppId = "AWS_SDK_UA_APP_ID";
}
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ public interface IPowertoolsConfigurations
bool GetEnvironmentVariableOrDefault(string variable, bool defaultValue);

/// <summary>
/// Sets the execution Environment Variable (AWS_EXECUTION_ENV)
/// Sets the execution Environment Variable (AWS_SDK_UA_APP_ID)
/// </summary>
/// <param name="type"></param>
void SetExecutionEnvironment<T>(T type);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public interface IPowertoolsEnvironment
string GetAssemblyVersion<T>(T type);

/// <summary>
/// Sets the execution Environment Variable (AWS_EXECUTION_ENV)
/// Sets the execution Environment Variable (AWS_SDK_UA_APP_ID)
/// </summary>
/// <param name="type"></param>
void SetExecutionEnvironment<T>(T type);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public string GetAssemblyVersion<T>(T type)
/// <inheritdoc />
public void SetExecutionEnvironment<T>(T type)
{
const string envName = Constants.AwsExecutionEnvironmentVariableName;
const string envName = Constants.AWSSdkUAAppId;
var currentEnvValue = GetEnvironmentVariable(envName);
var assemblyName = ParseAssemblyName(GetAssemblyName(type));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public void BatchProcessing_Set_Execution_Environment_Context_SQS()

// Assert
Assert.Contains($"{Constants.FeatureContextIdentifier}/BatchProcessing/",
env.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
env.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));

Assert.NotNull(sqsBatchProcessor);
}
Expand All @@ -38,7 +38,7 @@ public void BatchProcessing_Set_Execution_Environment_Context_Kinesis()

// Assert
Assert.Contains($"{Constants.FeatureContextIdentifier}/BatchProcessing/",
env.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
env.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));

Assert.NotNull(KinesisEventBatchProcessor);
}
Expand All @@ -55,7 +55,7 @@ public void BatchProcessing_Set_Execution_Environment_Context_DynamoDB()

// Assert
Assert.Contains($"{Constants.FeatureContextIdentifier}/BatchProcessing/",
env.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
env.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));

Assert.NotNull(dynamoDbStreamBatchProcessor);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public void Set_Execution_Environment()
powertoolsEnv.SetExecutionEnvironment(this);

// Assert
Assert.Equal($"{Constants.FeatureContextIdentifier}/Tests/1.0.0 PTENV/AWS_LAMBDA_DOTNET{Environment.Version.Major}", powertoolsEnv.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
Assert.Equal($"{Constants.FeatureContextIdentifier}/Tests/1.0.0 PTENV/AWS_LAMBDA_DOTNET{Environment.Version.Major}", powertoolsEnv.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));
}

[Fact]
Expand All @@ -29,13 +29,13 @@ public void Set_Execution_Environment_WhenEnvironmentHasValue()
// Arrange
var powertoolsEnv = new PowertoolsEnvironment();

powertoolsEnv.SetEnvironmentVariable("AWS_EXECUTION_ENV", "ExistingValuesInUserAgent");
powertoolsEnv.SetEnvironmentVariable("AWS_SDK_UA_APP_ID", "ExistingValuesInUserAgent");

// Act
powertoolsEnv.SetExecutionEnvironment(this);

// Assert
Assert.Equal($"ExistingValuesInUserAgent {Constants.FeatureContextIdentifier}/Tests/1.0.0 PTENV/AWS_LAMBDA_DOTNET{Environment.Version.Major}", powertoolsEnv.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
Assert.Equal($"ExistingValuesInUserAgent {Constants.FeatureContextIdentifier}/Tests/1.0.0 PTENV/AWS_LAMBDA_DOTNET{Environment.Version.Major}", powertoolsEnv.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));
}

[Fact]
Expand All @@ -49,7 +49,7 @@ public void Set_Same_Execution_Environment_Multiple_Times_Should_Only_Set_Once()
powertoolsEnv.SetExecutionEnvironment(this);

// Assert
Assert.Equal($"{Constants.FeatureContextIdentifier}/Tests/1.0.0 PTENV/AWS_LAMBDA_DOTNET{Environment.Version.Major}", powertoolsEnv.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
Assert.Equal($"{Constants.FeatureContextIdentifier}/Tests/1.0.0 PTENV/AWS_LAMBDA_DOTNET{Environment.Version.Major}", powertoolsEnv.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));
}

[Fact]
Expand All @@ -64,7 +64,7 @@ public void Set_Multiple_Execution_Environment()

// Assert
Assert.Equal($"{Constants.FeatureContextIdentifier}/Tests/1.0.0 PTENV/AWS_LAMBDA_DOTNET{Environment.Version.Major} {Constants.FeatureContextIdentifier}/Common/1.0.0",
powertoolsEnv.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
powertoolsEnv.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));
}

[Fact]
Expand Down Expand Up @@ -95,7 +95,7 @@ public void SetExecutionEnvironment_Should_Format_Strings_Correctly_With_Mocked_
// Mock the dependencies to return controlled values
mockEnvironment.GetAssemblyName(Arg.Any<object>()).Returns("AWS.Lambda.Powertools.Common.Tests");
mockEnvironment.GetAssemblyVersion(Arg.Any<object>()).Returns("1.2.3");
mockEnvironment.GetEnvironmentVariable("AWS_EXECUTION_ENV").Returns((string)null);
mockEnvironment.GetEnvironmentVariable("AWS_SDK_UA_APP_ID").Returns((string)null);

// Setup the actual method call to use real implementation logic
mockEnvironment.When(x => x.SetExecutionEnvironment(Arg.Any<object>()))
Expand All @@ -106,14 +106,14 @@ public void SetExecutionEnvironment_Should_Format_Strings_Correctly_With_Mocked_
var runtimeEnv = "PTENV/AWS_LAMBDA_DOTNET8"; // Assuming .NET 8
var expectedValue = $"{assemblyName}/{assemblyVersion} {runtimeEnv}";

mockEnvironment.SetEnvironmentVariable("AWS_EXECUTION_ENV", expectedValue);
mockEnvironment.SetEnvironmentVariable("AWS_SDK_UA_APP_ID", expectedValue);
});

// Act
mockEnvironment.SetExecutionEnvironment(this);

// Assert
mockEnvironment.Received(1).SetEnvironmentVariable("AWS_EXECUTION_ENV", "PT/Tests/1.2.3 PTENV/AWS_LAMBDA_DOTNET8");
mockEnvironment.Received(1).SetEnvironmentVariable("AWS_SDK_UA_APP_ID", "PT/Tests/1.2.3 PTENV/AWS_LAMBDA_DOTNET8");
}

[Fact]
Expand All @@ -123,7 +123,7 @@ public void SetExecutionEnvironment_Should_Append_To_Existing_Environment_With_M
var mockEnvironment = Substitute.For<IPowertoolsEnvironment>();

// Mock existing environment value
mockEnvironment.GetEnvironmentVariable("AWS_EXECUTION_ENV").Returns("ExistingValue");
mockEnvironment.GetEnvironmentVariable("AWS_SDK_UA_APP_ID").Returns("ExistingValue");
mockEnvironment.GetAssemblyName(Arg.Any<object>()).Returns("AWS.Lambda.Powertools.Logging");
mockEnvironment.GetAssemblyVersion(Arg.Any<object>()).Returns("2.1.0");

Expand All @@ -137,14 +137,14 @@ public void SetExecutionEnvironment_Should_Append_To_Existing_Environment_With_M
var runtimeEnv = "PTENV/AWS_LAMBDA_DOTNET8";
var expectedValue = $"{currentEnv} {assemblyName}/{assemblyVersion} {runtimeEnv}";

mockEnvironment.SetEnvironmentVariable("AWS_EXECUTION_ENV", expectedValue);
mockEnvironment.SetEnvironmentVariable("AWS_SDK_UA_APP_ID", expectedValue);
});

// Act
mockEnvironment.SetExecutionEnvironment(this);

// Assert
mockEnvironment.Received(1).SetEnvironmentVariable("AWS_EXECUTION_ENV", "ExistingValue PT/Logging/2.1.0 PTENV/AWS_LAMBDA_DOTNET8");
mockEnvironment.Received(1).SetEnvironmentVariable("AWS_SDK_UA_APP_ID", "ExistingValue PT/Logging/2.1.0 PTENV/AWS_LAMBDA_DOTNET8");
}

[Fact]
Expand All @@ -154,7 +154,7 @@ public void SetExecutionEnvironment_Should_Not_Add_PTENV_Twice_With_Mocked_Value
var mockEnvironment = Substitute.For<IPowertoolsEnvironment>();

// Mock existing environment value that already contains PTENV
mockEnvironment.GetEnvironmentVariable("AWS_EXECUTION_ENV").Returns("PT/Metrics/1.0.0 PTENV/AWS_LAMBDA_DOTNET8");
mockEnvironment.GetEnvironmentVariable("AWS_SDK_UA_APP_ID").Returns("PT/Metrics/1.0.0 PTENV/AWS_LAMBDA_DOTNET8");
mockEnvironment.GetAssemblyName(Arg.Any<object>()).Returns("AWS.Lambda.Powertools.Tracing");
mockEnvironment.GetAssemblyVersion(Arg.Any<object>()).Returns("1.5.0");

Expand All @@ -168,14 +168,14 @@ public void SetExecutionEnvironment_Should_Not_Add_PTENV_Twice_With_Mocked_Value
// No PTENV added since it already exists
var expectedValue = $"{currentEnv} {assemblyName}/{assemblyVersion}";

mockEnvironment.SetEnvironmentVariable("AWS_EXECUTION_ENV", expectedValue);
mockEnvironment.SetEnvironmentVariable("AWS_SDK_UA_APP_ID", expectedValue);
});

// Act
mockEnvironment.SetExecutionEnvironment(this);

// Assert
mockEnvironment.Received(1).SetEnvironmentVariable("AWS_EXECUTION_ENV", "PT/Metrics/1.0.0 PTENV/AWS_LAMBDA_DOTNET8 PT/Tracing/1.5.0");
mockEnvironment.Received(1).SetEnvironmentVariable("AWS_SDK_UA_APP_ID", "PT/Metrics/1.0.0 PTENV/AWS_LAMBDA_DOTNET8 PT/Tracing/1.5.0");
}

[Fact]
Expand Down Expand Up @@ -279,13 +279,13 @@ public void SetExecutionEnvironment_Should_Handle_Empty_Current_Environment()
{
// Arrange
var powertoolsEnv = new PowertoolsEnvironment();
Environment.SetEnvironmentVariable("AWS_EXECUTION_ENV", "");
Environment.SetEnvironmentVariable("AWS_SDK_UA_APP_ID", "");

// Act
powertoolsEnv.SetExecutionEnvironment(this);

// Assert
var result = powertoolsEnv.GetEnvironmentVariable("AWS_EXECUTION_ENV");
var result = powertoolsEnv.GetEnvironmentVariable("AWS_SDK_UA_APP_ID");
Assert.Contains($"{Constants.FeatureContextIdentifier}/Tests/", result);
Assert.Contains("PTENV/AWS_LAMBDA_DOTNET", result);
}
Expand All @@ -295,13 +295,13 @@ public void SetExecutionEnvironment_Should_Add_PTENV_When_Not_Present()
{
// Arrange
var powertoolsEnv = new PowertoolsEnvironment();
powertoolsEnv.SetEnvironmentVariable("AWS_EXECUTION_ENV", "SomeExistingValue");
powertoolsEnv.SetEnvironmentVariable("AWS_SDK_UA_APP_ID", "SomeExistingValue");

// Act
powertoolsEnv.SetExecutionEnvironment(this);

// Assert
var result = powertoolsEnv.GetEnvironmentVariable("AWS_EXECUTION_ENV");
var result = powertoolsEnv.GetEnvironmentVariable("AWS_SDK_UA_APP_ID");
Assert.StartsWith("SomeExistingValue", result);
Assert.Contains("PTENV/AWS_LAMBDA_DOTNET", result);
}
Expand All @@ -312,21 +312,21 @@ public void SetExecutionEnvironment_Should_Not_Add_PTENV_When_Already_Present()
// Arrange
var powertoolsEnv = new PowertoolsEnvironment();
var existingValue = $"ExistingValue PTENV/AWS_LAMBDA_DOTNET{Environment.Version.Major}";
powertoolsEnv.SetEnvironmentVariable("AWS_EXECUTION_ENV", existingValue);
powertoolsEnv.SetEnvironmentVariable("AWS_SDK_UA_APP_ID", existingValue);

// Act
powertoolsEnv.SetExecutionEnvironment(this);

// Assert
var result = powertoolsEnv.GetEnvironmentVariable("AWS_EXECUTION_ENV");
var result = powertoolsEnv.GetEnvironmentVariable("AWS_SDK_UA_APP_ID");
var ptenvCount = result.Split("PTENV/").Length - 1;
Assert.Equal(1, ptenvCount); // Should only have one PTENV entry
}

public void Dispose()
{
//Do cleanup actions here
Environment.SetEnvironmentVariable("AWS_EXECUTION_ENV", null);
Environment.SetEnvironmentVariable("AWS_SDK_UA_APP_ID", null);

// Clear the singleton instance to ensure fresh state for each test
var instanceField = typeof(PowertoolsEnvironment).GetField("_instance",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ public void Idempotency_Set_Execution_Environment_Context()

// Assert
Assert.Contains($"{Constants.FeatureContextIdentifier}/Idempotency/",
env.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
env.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));

Assert.NotNull(xRayRecorder);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1355,7 +1355,7 @@ public void Log_Set_Execution_Environment_Context()

// Assert
Assert.Contains($"{Constants.FeatureContextIdentifier}/Logging/",
env.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
env.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));
}

[Fact]
Expand All @@ -1365,7 +1365,7 @@ public void Log_Skip_If_Exists_Execution_Environment_Context()
var loggerName = Guid.NewGuid().ToString();

var env = new PowertoolsEnvironment();
env.SetEnvironmentVariable("AWS_EXECUTION_ENV",
env.SetEnvironmentVariable("AWS_SDK_UA_APP_ID",
$"{Constants.FeatureContextIdentifier}/Logging/AlreadyThere");

// Act
Expand All @@ -1383,8 +1383,8 @@ public void Log_Skip_If_Exists_Execution_Environment_Context()

// Assert
Assert.Equal($"{Constants.FeatureContextIdentifier}/Logging/AlreadyThere",
env.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
env.SetEnvironmentVariable("AWS_EXECUTION_ENV", null);
env.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));
env.SetEnvironmentVariable("AWS_SDK_UA_APP_ID", null);
}

[Fact]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public void Metrics_Set_Execution_Environment_Context()

// Assert
Assert.Contains($"{Constants.FeatureContextIdentifier}/Metrics/",
env.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
env.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));
}

[Fact]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public void Tracing_Set_Execution_Environment_Context()

// Assert
Assert.Contains($"{Constants.FeatureContextIdentifier}/Tracing/",
env.GetEnvironmentVariable("AWS_EXECUTION_ENV"));
env.GetEnvironmentVariable("AWS_SDK_UA_APP_ID"));

Assert.NotNull(xRayRecorder);
}
Expand Down
Loading