From 446af1637467a0d03423d0071610cb676825c465 Mon Sep 17 00:00:00 2001 From: Andriy Svyryd Date: Wed, 15 Apr 2026 21:38:15 -0700 Subject: [PATCH] Fix more tests for Linux Cosmos emulator --- .../ConfigPatternsCosmosTest.cs | 24 +++++++++++++++---- .../EmbeddedDocumentsTest.cs | 9 ++++--- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/test/EFCore.Cosmos.FunctionalTests/ConfigPatternsCosmosTest.cs b/test/EFCore.Cosmos.FunctionalTests/ConfigPatternsCosmosTest.cs index e2c1b9570da..a2f885cf09d 100644 --- a/test/EFCore.Cosmos.FunctionalTests/ConfigPatternsCosmosTest.cs +++ b/test/EFCore.Cosmos.FunctionalTests/ConfigPatternsCosmosTest.cs @@ -16,13 +16,15 @@ public class ConfigPatternsCosmosTest(ConfigPatternsCosmosTest.CosmosFixture fix { private const string DatabaseName = "ConfigPatternsCosmos"; + private IServiceProvider _serviceProvider; + protected CosmosFixture Fixture { get; } = fixture; [ConditionalFact] public async Task Cosmos_client_instance_is_shared_between_contexts() { await using var testDatabase = await CosmosTestStore.CreateInitializedAsync(DatabaseName); - var options = CreateOptions(testDatabase); + var options = CreateOptions(testDatabase, useExternalServiceProvider: false); CosmosClient client; using (var context = new CustomerContext(options)) @@ -39,7 +41,8 @@ public async Task Cosmos_client_instance_is_shared_between_contexts() } await using var testDatabase2 = await CosmosTestStore.CreateInitializedAsync(DatabaseName, o => o.Region(Regions.AustraliaCentral)); - options = CreateOptions(testDatabase2); + + options = CreateOptions(testDatabase2, useExternalServiceProvider: false); using (var context = new CustomerContext(options)) { @@ -164,11 +167,20 @@ public async Task Cosmos_client_instance_is_thread_safe() Assert.Single(uniqueClients); // Should only have one unique client instance } - private DbContextOptions CreateOptions(CosmosTestStore testDatabase, Action configure = null) + private DbContextOptions CreateOptions( + CosmosTestStore testDatabase, + Action configure = null, + bool useExternalServiceProvider = true) { var builder = Fixture.AddOptions(testDatabase.AddProviderOptions(new DbContextOptionsBuilder())) - .ConfigureWarnings(w => w.Ignore(CoreEventId.ManyServiceProvidersCreatedWarning)) .EnableDetailedErrors(); + + if (useExternalServiceProvider) + { + _serviceProvider ??= Fixture.CreateServiceProvider(); + builder.UseInternalServiceProvider(_serviceProvider); + } + configure?.Invoke(builder); return builder.Options; } @@ -191,6 +203,10 @@ public override DbContextOptionsBuilder AddOptions(DbContextOptionsBuilder build => base.AddOptions(builder).ConfigureWarnings(w => w.Ignore(CosmosEventId.NoPartitionKeyDefined)); + public IServiceProvider CreateServiceProvider() + => AddServices(TestStoreFactory.AddProviderServices(new ServiceCollection())) + .BuildServiceProvider(validateScopes: true); + protected override ITestStoreFactory TestStoreFactory => CosmosTestStoreFactory.Instance; } diff --git a/test/EFCore.Cosmos.FunctionalTests/EmbeddedDocumentsTest.cs b/test/EFCore.Cosmos.FunctionalTests/EmbeddedDocumentsTest.cs index 5c2b5dca1f6..82032072fb4 100644 --- a/test/EFCore.Cosmos.FunctionalTests/EmbeddedDocumentsTest.cs +++ b/test/EFCore.Cosmos.FunctionalTests/EmbeddedDocumentsTest.cs @@ -776,10 +776,13 @@ public async Task CreateOptions( Action onModelCreating = null, bool seed = true) { - var options = CreateOptions(TestStore); - var embeddedOptions = new EmbeddedTransportationContextOptions(options, onModelCreating); + EmbeddedTransportationContextOptions embeddedOptions = null; + await TestStore.InitializeAsync( - ServiceProvider, () => new EmbeddedTransportationContext(embeddedOptions), async c => + ServiceProvider, + () => new EmbeddedTransportationContext( + embeddedOptions ??= new EmbeddedTransportationContextOptions(CreateOptions(TestStore), onModelCreating)), + async c => { if (seed) {