protected void VerifyCommonEnvironmentVariables( ProductImageData imageData, IEnumerable <EnvironmentVariableInfo> customVariables = null) { List <EnvironmentVariableInfo> variables = new List <EnvironmentVariableInfo>(); variables.AddRange(GetCommonEnvironmentVariables()); variables.Add(new EnvironmentVariableInfo("ASPNETCORE_URLS", "http://+:80")); if (customVariables != null) { variables.AddRange(customVariables); } if (imageData.OS.StartsWith(OS.AlpinePrefix)) { variables.Add(new EnvironmentVariableInfo("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "true")); } string imageTag; if (imageData.IsDistroless) { imageTag = DockerHelper.BuildDistrolessHelper(ImageType, imageData, "bash"); } else { imageTag = imageData.GetImage(ImageType, DockerHelper); } EnvironmentVariableInfo.Validate(variables, imageTag, imageData, DockerHelper); }
public void VerifySdkImage_EnvironmentVariables(ImageData imageData) { List <EnvironmentVariableInfo> variables = new List <EnvironmentVariableInfo>(); variables.AddRange(GetCommonEnvironmentVariables()); string aspnetUrlsValue = imageData.Version.Major < 3 ? "http://+:80" : string.Empty; variables.Add(new EnvironmentVariableInfo("ASPNETCORE_URLS", aspnetUrlsValue)); variables.Add(new EnvironmentVariableInfo("DOTNET_USE_POLLING_FILE_WATCHER", "true")); variables.Add(new EnvironmentVariableInfo("NUGET_XMLDOC_MODE", "skip")); if (imageData.Version.Major >= 3 && (DockerHelper.IsLinuxContainerModeEnabled || imageData.Version >= new Version("3.1"))) { variables.Add(new EnvironmentVariableInfo("POWERSHELL_DISTRIBUTION_CHANNEL", allowAnyValue: true)); } if (imageData.SdkOS.StartsWith(Tests.OS.AlpinePrefix)) { variables.Add(new EnvironmentVariableInfo("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "false")); variables.Add(new EnvironmentVariableInfo("LC_ALL", "en_US.UTF-8")); variables.Add(new EnvironmentVariableInfo("LANG", "en_US.UTF-8")); } EnvironmentVariableInfo.Validate(variables, DotNetImageType.SDK, imageData, _dockerHelper); }
public static void Validate( IEnumerable <EnvironmentVariableInfo> variables, DotNetImageType imageType, ProductImageData imageData, DockerHelper dockerHelper) { const char delimiter = '|'; IEnumerable <string> echoParts; string invokeCommand; char delimiterEscape; if (DockerHelper.IsLinuxContainerModeEnabled) { echoParts = variables.Select(envVar => $"${envVar.Name}"); invokeCommand = $"/bin/sh -c"; delimiterEscape = '\\'; } else { echoParts = variables.Select(envVar => $"%{envVar.Name}%"); invokeCommand = $"CMD /S /C"; delimiterEscape = '^'; } string combinedValues = dockerHelper.Run( image: imageData.GetImage(imageType, dockerHelper), name: imageData.GetIdentifier($"env"), command: $"{invokeCommand} \"echo {string.Join($"{delimiterEscape}{delimiter}", echoParts)}\""); string[] values = combinedValues.Split(delimiter); Assert.Equal(variables.Count(), values.Count()); for (int i = 0; i < values.Count(); i++) { EnvironmentVariableInfo variable = variables.ElementAt(i); string actualValue; // Process unset variables in Windows if (!DockerHelper.IsLinuxContainerModeEnabled && string.Equals(values[i], $"%{variable.Name}%", StringComparison.Ordinal)) { actualValue = string.Empty; } else { actualValue = values[i]; } if (variable.AllowAnyValue) { Assert.NotEmpty(actualValue); } else { Assert.Equal(variable.ExpectedValue, actualValue); } } }
public void VerifyEnvironmentVariables(ProductImageData imageData) { List <EnvironmentVariableInfo> variables = new() { new EnvironmentVariableInfo("ASPNETCORE_URLS", string.Empty), new EnvironmentVariableInfo("DOTNET_GENERATE_ASPNET_CERTIFICATE", "false"), new EnvironmentVariableInfo("DOTNET_USE_POLLING_FILE_WATCHER", "true"), new EnvironmentVariableInfo("NUGET_XMLDOC_MODE", "skip") }; variables.AddRange(GetCommonEnvironmentVariables()); if (imageData.Version.Major >= 3) { variables.Add(new EnvironmentVariableInfo("POWERSHELL_DISTRIBUTION_CHANNEL", allowAnyValue: true)); } if (imageData.Version.Major >= 5) { string version = imageData.GetProductVersion(ImageType, DockerHelper); variables.Add(new EnvironmentVariableInfo("DOTNET_SDK_VERSION", version)); } if (imageData.Version.Major >= 5) { variables.Add(AspnetImageTests.GetAspnetVersionVariableInfo(imageData, DockerHelper)); variables.Add(RuntimeImageTests.GetRuntimeVersionVariableInfo(imageData, DockerHelper)); } if (imageData.Version.Major >= 6) { variables.Add(new EnvironmentVariableInfo("DOTNET_NOLOGO", "true")); } if (imageData.Version.Major == 6) { variables.Add(new EnvironmentVariableInfo("Logging__Console__FormatterName", string.Empty)); } if (imageData.SdkOS.StartsWith(OS.AlpinePrefix)) { variables.Add(new EnvironmentVariableInfo("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "false")); if (imageData.Version.Major < 5) { variables.Add(new EnvironmentVariableInfo("LC_ALL", "en_US.UTF-8")); variables.Add(new EnvironmentVariableInfo("LANG", "en_US.UTF-8")); } } EnvironmentVariableInfo.Validate(variables, imageData.GetImage(DotNetImageType.SDK, DockerHelper), imageData, DockerHelper); }
private void VerifyCommonRuntimeEnvironmentVariables(DotNetImageType imageType, ImageData imageData) { List <EnvironmentVariableInfo> variables = new List <EnvironmentVariableInfo>(); variables.AddRange(GetCommonEnvironmentVariables()); variables.Add(new EnvironmentVariableInfo("ASPNETCORE_URLS", "http://+:80")); if (imageData.OS.StartsWith(Tests.OS.AlpinePrefix)) { variables.Add(new EnvironmentVariableInfo("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "true")); } EnvironmentVariableInfo.Validate(variables, imageType, imageData, _dockerHelper); }
private void ValidateEnvironmentVariables(SampleImageData imageData, string image, SampleImageType imageType) { List <EnvironmentVariableInfo> variables = new List <EnvironmentVariableInfo>(); variables.AddRange(ProductImageTests.GetCommonEnvironmentVariables()); if (imageType == SampleImageType.Aspnetapp) { variables.Add(new EnvironmentVariableInfo("ASPNETCORE_URLS", "http://+:80")); } EnvironmentVariableInfo.Validate( variables, image, imageData, DockerHelper); }
public void VerifyEnvironmentVariables(MonitorImageData imageData) { List <EnvironmentVariableInfo> variables = new List <EnvironmentVariableInfo>(); variables.AddRange(ProductImageTests.GetCommonEnvironmentVariables()); // ASPNETCORE_URLS has been unset to allow the default URL binding to occur. variables.Add(new EnvironmentVariableInfo("ASPNETCORE_URLS", string.Empty)); // Diagnostics should be disabled variables.Add(new EnvironmentVariableInfo("COMPlus_EnableDiagnostics", "0")); EnvironmentVariableInfo.Validate( variables, imageData.GetImage(DockerHelper), imageData, DockerHelper); }
public void VerifyEnvironmentVariables(ProductImageData imageData) { List <EnvironmentVariableInfo> variables = new List <EnvironmentVariableInfo>(); EnvironmentVariableInfo aspnetVersionVariableInfo = GetAspnetVersionVariableInfo(imageData, DockerHelper); if (aspnetVersionVariableInfo != null) { variables.Add(aspnetVersionVariableInfo); } if (imageData.Version.Major >= 5) { variables.Add(RuntimeImageTests.GetRuntimeVersionVariableInfo(imageData, DockerHelper)); } base.VerifyCommonEnvironmentVariables(imageData, variables); }
public void VerifyEnvironmentVariables(ProductImageData imageData) { List <EnvironmentVariableInfo> variables = new List <EnvironmentVariableInfo>(); variables.AddRange(GetCommonEnvironmentVariables()); string aspnetUrlsValue = imageData.Version.Major < 3 ? "http://+:80" : string.Empty; variables.Add(new EnvironmentVariableInfo("ASPNETCORE_URLS", aspnetUrlsValue)); variables.Add(new EnvironmentVariableInfo("DOTNET_USE_POLLING_FILE_WATCHER", "true")); variables.Add(new EnvironmentVariableInfo("NUGET_XMLDOC_MODE", "skip")); if (imageData.Version.Major >= 3) { variables.Add(new EnvironmentVariableInfo("POWERSHELL_DISTRIBUTION_CHANNEL", allowAnyValue: true)); } if (imageData.Version.Major >= 5 || (imageData.Version.Major == 2 && DockerHelper.IsLinuxContainerModeEnabled)) { string version = imageData.GetProductVersion(ImageType, DockerHelper); variables.Add(new EnvironmentVariableInfo("DOTNET_SDK_VERSION", version)); } if (imageData.Version.Major >= 5) { variables.Add(AspnetImageTests.GetAspnetVersionVariableInfo(imageData, DockerHelper)); variables.Add(RuntimeImageTests.GetRuntimeVersionVariableInfo(imageData, DockerHelper)); } if (imageData.SdkOS.StartsWith(OS.AlpinePrefix)) { variables.Add(new EnvironmentVariableInfo("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "false")); if (imageData.Version.Major < 5) { variables.Add(new EnvironmentVariableInfo("LC_ALL", "en_US.UTF-8")); variables.Add(new EnvironmentVariableInfo("LANG", "en_US.UTF-8")); } } EnvironmentVariableInfo.Validate(variables, DotNetImageType.SDK, imageData, DockerHelper); }
public void VerifyEnvironmentVariables(MonitorImageData imageData) { List <EnvironmentVariableInfo> variables = new List <EnvironmentVariableInfo>(); variables.AddRange(ProductImageTests.GetCommonEnvironmentVariables()); // ASPNETCORE_URLS has been unset to allow the default URL binding to occur. variables.Add(new EnvironmentVariableInfo("ASPNETCORE_URLS", string.Empty)); // Diagnostics should be disabled variables.Add(new EnvironmentVariableInfo("COMPlus_EnableDiagnostics", "0")); // DefaultProcess filter should select a process with a process ID of 1 variables.Add(new EnvironmentVariableInfo("DefaultProcess__Filters__0__Key", "ProcessId")); variables.Add(new EnvironmentVariableInfo("DefaultProcess__Filters__0__Value", "1")); // Console logger format should be JSON and output UTC timestamps without timezone information variables.Add(new EnvironmentVariableInfo("Logging__Console__FormatterName", "json")); variables.Add(new EnvironmentVariableInfo("Logging__Console__FormatterOptions__TimestampFormat", "yyyy-MM-ddTHH:mm:ss.fffffffZ")); variables.Add(new EnvironmentVariableInfo("Logging__Console__FormatterOptions__UseUtcTimestamp", "true")); EnvironmentVariableInfo.Validate( variables, imageData.GetImage(DockerHelper), imageData, DockerHelper); }