From 7403b326f0cf0b9a18afcc3f8fc25f91d6991d09 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Tue, 10 Sep 2024 02:58:30 +0000 Subject: [PATCH 1/3] CosmosDB emulator: set default number of partitions to 1 --- .../AzureCosmosDBExtensions.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs b/src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs index 64fdf876c5d..02af3612320 100644 --- a/src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs +++ b/src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs @@ -100,12 +100,12 @@ public static IResourceBuilder RunAsEmulator(this IResour Tag = "latest" }); - if (configureContainer != null) - { - var surrogate = new AzureCosmosDBEmulatorResource(builder.Resource); - var surrogateBuilder = builder.ApplicationBuilder.CreateResourceBuilder(surrogate); - configureContainer(surrogateBuilder); - } + var surrogate = new AzureCosmosDBEmulatorResource(builder.Resource); + var surrogateBuilder = builder.ApplicationBuilder.CreateResourceBuilder(surrogate); + // Set a low default number of partitions to improve container startup time + surrogateBuilder.WithEnvironment("AZURE_COSMOS_EMULATOR_PARTITION_COUNT", "1"); + + configureContainer?.Invoke(surrogateBuilder); return builder; } From 6a8c1bfa5dfb7915c3936bfd96fe3b469d6b2551 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Tue, 10 Sep 2024 03:25:27 +0000 Subject: [PATCH 2/3] Address review feedback from @ mitchdenny - add tests --- .../AzureResourceExtensionsTests.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/Aspire.Hosting.Azure.Tests/AzureResourceExtensionsTests.cs b/tests/Aspire.Hosting.Azure.Tests/AzureResourceExtensionsTests.cs index 8967fd899e6..52666ca724b 100644 --- a/tests/Aspire.Hosting.Azure.Tests/AzureResourceExtensionsTests.cs +++ b/tests/Aspire.Hosting.Azure.Tests/AzureResourceExtensionsTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Hosting.ApplicationModel; +using Aspire.Hosting.Tests.Utils; using Aspire.Hosting.Utils; using Xunit; @@ -173,4 +174,30 @@ public void AddAzureCosmosDBWithEmulatorGetsExpectedImageTag(string imageTag) var actualTag = containerImageAnnotation.Tag; Assert.Equal(imageTag ?? "latest", actualTag); } + + [Fact] + public async Task AddAzureCosmosDBWithEmulatorGetDefaultNumberOfPartitions() + { + using var builder = TestDistributedApplicationBuilder.Create(); + + var cosmos = builder.AddAzureCosmosDB("cosmos"); + + cosmos.RunAsEmulator(); + var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); + + Assert.Equal("2", config["AZURE_COSMOS_EMULATOR_PARTITION_COUNT"]); + } + + [Fact] + public async Task AddAzureCosmosDBWithEmulatorCanOverrideNumberOfPartitions() + { + using var builder = TestDistributedApplicationBuilder.Create(); + + var cosmos = builder.AddAzureCosmosDB("cosmos"); + + cosmos.RunAsEmulator(r => r.WithEnvironment("AZURE_COSMOS_EMULATOR_PARTITION_COUNT", "30")); + var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); + + Assert.Equal("30", config["AZURE_COSMOS_EMULATOR_PARTITION_COUNT"]); + } } From 6df3fef9796fd462b1a297ea9229d8c384465fd6 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Tue, 10 Sep 2024 00:20:32 -0400 Subject: [PATCH 3/3] fix typo in test --- .../Aspire.Hosting.Azure.Tests/AzureResourceExtensionsTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Aspire.Hosting.Azure.Tests/AzureResourceExtensionsTests.cs b/tests/Aspire.Hosting.Azure.Tests/AzureResourceExtensionsTests.cs index 52666ca724b..2337eeb3e89 100644 --- a/tests/Aspire.Hosting.Azure.Tests/AzureResourceExtensionsTests.cs +++ b/tests/Aspire.Hosting.Azure.Tests/AzureResourceExtensionsTests.cs @@ -185,7 +185,7 @@ public async Task AddAzureCosmosDBWithEmulatorGetDefaultNumberOfPartitions() cosmos.RunAsEmulator(); var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(cosmos.Resource, DistributedApplicationOperation.Run, TestServiceProvider.Instance); - Assert.Equal("2", config["AZURE_COSMOS_EMULATOR_PARTITION_COUNT"]); + Assert.Equal("1", config["AZURE_COSMOS_EMULATOR_PARTITION_COUNT"]); } [Fact]