diff --git a/src/Aspire.Hosting.Azure.Kusto/AzureKustoBuilderExtensions.cs b/src/Aspire.Hosting.Azure.Kusto/AzureKustoBuilderExtensions.cs index 6755d2d46a2..31ebdc15439 100644 --- a/src/Aspire.Hosting.Azure.Kusto/AzureKustoBuilderExtensions.cs +++ b/src/Aspire.Hosting.Azure.Kusto/AzureKustoBuilderExtensions.cs @@ -184,8 +184,7 @@ public static IResourceBuilder RunAsEmulator( Image = AzureKustoEmulatorContainerImageTags.Image, Tag = AzureKustoEmulatorContainerImageTags.Tag }) - .WithEnvironment("ACCEPT_EULA", "Y") - .WithContainerRuntimeArgs("--memory", "4G"); + .WithEnvironment("ACCEPT_EULA", "Y"); configureContainer?.Invoke(surrogateBuilder); diff --git a/tests/Aspire.Hosting.Azure.Kusto.Tests/AddAzureKustoTests.cs b/tests/Aspire.Hosting.Azure.Kusto.Tests/AddAzureKustoTests.cs index 42aba939d9f..03c8f38c146 100644 --- a/tests/Aspire.Hosting.Azure.Kusto.Tests/AddAzureKustoTests.cs +++ b/tests/Aspire.Hosting.Azure.Kusto.Tests/AddAzureKustoTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Hosting.ApplicationModel; +using Aspire.Hosting.Testing; using Aspire.Hosting.Utils; namespace Aspire.Hosting.Azure.Kusto.Tests; @@ -88,7 +89,7 @@ public void RunAsEmulator_ShouldAddEmulatorResourceAnnotation() } [Fact] - public void RunAsEmulator_RespectsConfigurationCallback() + public async Task RunAsEmulator_RespectsConfigurationCallback() { // Arrange using var builder = TestDistributedApplicationBuilder.Create(); @@ -97,12 +98,33 @@ public void RunAsEmulator_RespectsConfigurationCallback() var resourceBuilder = builder.AddAzureKustoCluster("kusto").RunAsEmulator(builder => { builder.WithAnnotation(new ContainerNameAnnotation() { Name = "custom-kusto-emulator" }); + builder.WithContainerRuntimeArgs("--memory", "4G"); }); // Assert - var annotation = resourceBuilder.Resource.Annotations.OfType().SingleOrDefault(); + var nameAnnotation = resourceBuilder.Resource.Annotations.OfType().SingleOrDefault(); + Assert.NotNull(nameAnnotation); + Assert.Equal("custom-kusto-emulator", nameAnnotation.Name); + + var argsAnnotation = resourceBuilder.Resource.Annotations.OfType().SingleOrDefault(); + Assert.NotNull(argsAnnotation); + Assert.Equivalent(new[] { "--memory", "4G" }, await argsAnnotation.GetContainerRuntimeArgs()); + } + + [Fact] + public async Task RunAsEmulator_SetsEula() + { + // Arrange + using var builder = TestDistributedApplicationBuilder.Create(); + + // Act + var resourceBuilder = builder.AddAzureKustoCluster("kusto").RunAsEmulator(); + + // Assert + var annotation = resourceBuilder.Resource.Annotations.OfType().SingleOrDefault(); Assert.NotNull(annotation); - Assert.Equal("custom-kusto-emulator", annotation.Name); + var env = await builder.GetEnvironmentVariables(annotation); + Assert.Equivalent(new Dictionary() { { "ACCEPT_EULA", "Y" } }, env); } [Theory] @@ -353,3 +375,23 @@ public void WithHostPort_ShouldThrowArgumentNullException_WhenBuilderIsNull() Assert.Equal("builder", exception.ParamName); } } + +file static class TestingExtensions +{ + public static async Task> GetEnvironmentVariables(this IDistributedApplicationTestingBuilder builder, EnvironmentCallbackAnnotation annotation) + { + var context = new EnvironmentCallbackContext(builder.ExecutionContext); + await annotation.Callback(context); + + return context.EnvironmentVariables; + } + + public static async Task> GetContainerRuntimeArgs(this ContainerRuntimeArgsCallbackAnnotation annotation) + { + var results = new List(); + var context = new ContainerRuntimeArgsCallbackContext(results); + await annotation.Callback(context); + + return context.Args; + } +}