diff --git a/Aspire.sln b/Aspire.sln index 0a0d557c07c..f064c79ba78 100644 --- a/Aspire.sln +++ b/Aspire.sln @@ -491,8 +491,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elasticsearch.AppHost", "pl EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dockerfile", "dockerfile", "{A6813855-E322-41EF-B2E6-7A44949EF962}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "withdockerfile", "withdockerfile", "{5B5DC91B-5754-4CE5-B3C0-FA1584B916A0}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.Hosting.Containers.Tests", "tests\Aspire.Hosting.Containers.Tests\Aspire.Hosting.Containers.Tests.csproj", "{588CD2D7-EE70-43C1-8233-330854BDF53C}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WithDockerfile.AppHost", "playground\withdockerfile\WithDockerfile.AppHost\WithDockerfile.AppHost.csproj", "{E6BE41D3-872C-47D2-B5B1-78C37AFAEAF9}" @@ -512,6 +510,7 @@ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.Hosting.Redis.Tests", "tests\Aspire.Hosting.Redis.Tests\Aspire.Hosting.Redis.Tests.csproj", "{1BC02557-B78B-48CE-9D3C-488A6B7672F4}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.Hosting.Garnet.Tests", "tests\Aspire.Hosting.Garnet.Tests\Aspire.Hosting.Garnet.Tests.csproj", "{CAA4A93F-6BEB-42EB-8680-C1CF72928023}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.Hosting.PostgreSQL.Tests", "tests\Aspire.Hosting.PostgreSQL.Tests\Aspire.Hosting.PostgreSQL.Tests.csproj", "{7425E5B2-BC47-4521-AC40-B8CECA329E08}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.Hosting.Qdrant.Tests", "tests\Aspire.Hosting.Qdrant.Tests\Aspire.Hosting.Qdrant.Tests.csproj", "{8E2AA85E-C351-47B4-AF91-58557FAD5840}" @@ -543,6 +542,7 @@ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.Keycloak.Authentication.Tests", "tests\Aspire.Keycloak.Authentication.Tests\Aspire.Keycloak.Authentication.Tests.csproj", "{48FF09E9-7D33-4A3F-9FF2-4C43A219C7B7}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.Hosting.Nats.Tests", "tests\Aspire.Hosting.Nats.Tests\Aspire.Hosting.Nats.Tests.csproj", "{F492357C-682E-4CBB-A374-1A124B3976A3}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.Hosting.Azure.Tests", "tests\Aspire.Hosting.Azure.Tests\Aspire.Hosting.Azure.Tests.csproj", "{8691F993-7B19-496E-B8E1-EF1199ACF2E1}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestShop.AppHost", "playground\TestShop\TestShop.AppHost\TestShop.AppHost.csproj", "{DB3E1AD8-87F6-414D-B46F-A0DC334AECCD}" @@ -555,6 +555,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SignalR.AppHost", "playgrou EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebPubSub.AppHost", "playground\webpubsub\WebPubSub.AppHost\WebPubSub.AppHost.csproj", "{1419BDCB-47EB-43EB-9149-C935B7208A72}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.Hosting.RabbitMQ.Tests", "tests\Aspire.Hosting.RabbitMQ.Tests\Aspire.Hosting.RabbitMQ.Tests.csproj", "{872AC635-B880-4FAC-BB43-4FD97D7B1209}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1377,14 +1379,6 @@ Global {CAA4A93F-6BEB-42EB-8680-C1CF72928023}.Debug|Any CPU.Build.0 = Debug|Any CPU {CAA4A93F-6BEB-42EB-8680-C1CF72928023}.Release|Any CPU.ActiveCfg = Release|Any CPU {CAA4A93F-6BEB-42EB-8680-C1CF72928023}.Release|Any CPU.Build.0 = Release|Any CPU - {8E2AA85E-C351-47B4-AF91-58557FAD5840}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E2AA85E-C351-47B4-AF91-58557FAD5840}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E2AA85E-C351-47B4-AF91-58557FAD5840}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E2AA85E-C351-47B4-AF91-58557FAD5840}.Release|Any CPU.Build.0 = Release|Any CPU - {986886B7-0E38-4890-92C3-5B46DE322DAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {986886B7-0E38-4890-92C3-5B46DE322DAF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {986886B7-0E38-4890-92C3-5B46DE322DAF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {986886B7-0E38-4890-92C3-5B46DE322DAF}.Release|Any CPU.Build.0 = Release|Any CPU {7425E5B2-BC47-4521-AC40-B8CECA329E08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7425E5B2-BC47-4521-AC40-B8CECA329E08}.Debug|Any CPU.Build.0 = Debug|Any CPU {7425E5B2-BC47-4521-AC40-B8CECA329E08}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -1469,6 +1463,10 @@ Global {1419BDCB-47EB-43EB-9149-C935B7208A72}.Debug|Any CPU.Build.0 = Debug|Any CPU {1419BDCB-47EB-43EB-9149-C935B7208A72}.Release|Any CPU.ActiveCfg = Release|Any CPU {1419BDCB-47EB-43EB-9149-C935B7208A72}.Release|Any CPU.Build.0 = Release|Any CPU + {872AC635-B880-4FAC-BB43-4FD97D7B1209}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {872AC635-B880-4FAC-BB43-4FD97D7B1209}.Debug|Any CPU.Build.0 = Debug|Any CPU + {872AC635-B880-4FAC-BB43-4FD97D7B1209}.Release|Any CPU.ActiveCfg = Release|Any CPU + {872AC635-B880-4FAC-BB43-4FD97D7B1209}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1698,9 +1696,6 @@ Global {9FAE1602-2C69-4D24-8655-A164489441E8} = {C424395C-1235-41A4-BF55-07880A04368C} {DF00FDA3-D3EC-4E07-B4EC-0EBB57A813A4} = {77CFE74A-32EE-400C-8930-5025E8555256} {5CB63205-24F4-4388-A41B-BAF3BEA59866} = {B80354C7-BE58-43F6-8928-9F3A74AB7F47} - {588CD2D7-EE70-43C1-8233-330854BDF53C} = {4981B3A5-4AFD-4191-BF7D-8692D9783D60} - {588CD2D7-EE70-43C1-8233-330854BDF53C} = {4981B3A5-4AFD-4191-BF7D-8692D9783D60} - {E6BE41D3-872C-47D2-B5B1-78C37AFAEAF9} = {D173887B-AF42-4576-B9C1-96B9E9B3D9C0} {9357EC71-823B-433A-9993-B7CB2FA082D1} = {B80354C7-BE58-43F6-8928-9F3A74AB7F47} {3F7B206E-5457-458F-AA81-9449FA3C1B5C} = {27381127-6C45-4B4C-8F18-41FF48DFE4B2} {6C71A90C-30AE-45D7-9347-D66F9B257CBE} = {D173887B-AF42-4576-B9C1-96B9E9B3D9C0} @@ -1717,8 +1712,6 @@ Global {830A89EC-4029-4753-B25A-068BAE37DEC7} = {4981B3A5-4AFD-4191-BF7D-8692D9783D60} {1BC02557-B78B-48CE-9D3C-488A6B7672F4} = {830A89EC-4029-4753-B25A-068BAE37DEC7} {CAA4A93F-6BEB-42EB-8680-C1CF72928023} = {830A89EC-4029-4753-B25A-068BAE37DEC7} - {8E2AA85E-C351-47B4-AF91-58557FAD5840} = {830A89EC-4029-4753-B25A-068BAE37DEC7} - {986886B7-0E38-4890-92C3-5B46DE322DAF} = {830A89EC-4029-4753-B25A-068BAE37DEC7} {7425E5B2-BC47-4521-AC40-B8CECA329E08} = {830A89EC-4029-4753-B25A-068BAE37DEC7} {8E2AA85E-C351-47B4-AF91-58557FAD5840} = {830A89EC-4029-4753-B25A-068BAE37DEC7} {986886B7-0E38-4890-92C3-5B46DE322DAF} = {830A89EC-4029-4753-B25A-068BAE37DEC7} @@ -1741,6 +1734,7 @@ Global {355F724F-D24F-45C6-8914-574385F6FC89} = {8BAF2119-8370-4E9E-A887-D92506F8C727} {F1D00709-50F2-4533-B38F-3517C0EDEAEE} = {E6985EED-47E3-4EAC-8222-074E5410CEDC} {1419BDCB-47EB-43EB-9149-C935B7208A72} = {90A70EFA-F26A-49E0-A375-DB461E4E0E25} + {872AC635-B880-4FAC-BB43-4FD97D7B1209} = {830A89EC-4029-4753-B25A-068BAE37DEC7} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {6DCEDFEC-988E-4CB3-B45B-191EB5086E0C} diff --git a/tests/Aspire.EndToEnd.Tests/IntegrationServicesFixture.cs b/tests/Aspire.EndToEnd.Tests/IntegrationServicesFixture.cs index fc0bfb2b6c3..f90da96c65f 100644 --- a/tests/Aspire.EndToEnd.Tests/IntegrationServicesFixture.cs +++ b/tests/Aspire.EndToEnd.Tests/IntegrationServicesFixture.cs @@ -107,7 +107,6 @@ public Task DumpComponentLogsAsync(TestResourceNames resource, ITestOutputHelper TestResourceNames.mongodb => "mongodb", TestResourceNames.oracledatabase => "oracledatabase", TestResourceNames.postgres or TestResourceNames.efnpgsql => "postgres", - TestResourceNames.rabbitmq => "rabbitmq", TestResourceNames.redis => "redis", TestResourceNames.sqlserver or TestResourceNames.efsqlserver => "sqlserver", _ => throw new ArgumentException($"Unknown resource: {resource}") @@ -143,7 +142,6 @@ private static TestResourceNames GetResourcesToSkip() "cosmos" => TestResourceNames.cosmos | TestResourceNames.efcosmos, "eventhubs" => TestResourceNames.eventhubs, "basicservices" => TestResourceNames.mongodb - | TestResourceNames.rabbitmq | TestResourceNames.redis | TestResourceNames.postgres | TestResourceNames.efnpgsql diff --git a/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs b/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs index 5957d3622cb..8e7ca371f2e 100644 --- a/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs +++ b/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs @@ -26,7 +26,6 @@ public IntegrationServicesTests(ITestOutputHelper testOutput, IntegrationService [InlineData(TestResourceNames.mongodb)] [InlineData(TestResourceNames.postgres)] [InlineData(TestResourceNames.efnpgsql)] - [InlineData(TestResourceNames.rabbitmq)] [InlineData(TestResourceNames.redis)] [InlineData(TestResourceNames.sqlserver)] [InlineData(TestResourceNames.efsqlserver)] diff --git a/tests/Aspire.Hosting.Tests/RabbitMQ/AddRabbitMQTests.cs b/tests/Aspire.Hosting.RabbitMQ.Tests/AddRabbitMQTests.cs similarity index 97% rename from tests/Aspire.Hosting.Tests/RabbitMQ/AddRabbitMQTests.cs rename to tests/Aspire.Hosting.RabbitMQ.Tests/AddRabbitMQTests.cs index ed5a8b06ae8..b47e9d2d5ab 100644 --- a/tests/Aspire.Hosting.Tests/RabbitMQ/AddRabbitMQTests.cs +++ b/tests/Aspire.Hosting.RabbitMQ.Tests/AddRabbitMQTests.cs @@ -1,13 +1,13 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Aspire.Hosting.RabbitMQ; +using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Utils; using Microsoft.Extensions.DependencyInjection; using System.Net.Sockets; using Xunit; -namespace Aspire.Hosting.Tests.RabbitMQ; +namespace Aspire.Hosting.RabbitMQ.Tests; public class AddRabbitMQTests { @@ -18,7 +18,7 @@ public void AddRabbitMQAddsGeneratedPasswordParameterWithUserSecretsParameterDef var rmq = appBuilder.AddRabbitMQ("rmq"); - Assert.IsType(rmq.Resource.PasswordParameter.Default); + Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.PasswordParameter.Default?.GetType().FullName); } [Fact] @@ -28,7 +28,7 @@ public void AddRabbitMQDoesNotAddGeneratedPasswordParameterWithUserSecretsParame var rmq = appBuilder.AddRabbitMQ("rmq"); - Assert.IsNotType(rmq.Resource.PasswordParameter.Default); + Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", rmq.Resource.PasswordParameter.Default?.GetType().FullName); } [Theory] diff --git a/tests/Aspire.Hosting.RabbitMQ.Tests/Aspire.Hosting.RabbitMQ.Tests.csproj b/tests/Aspire.Hosting.RabbitMQ.Tests/Aspire.Hosting.RabbitMQ.Tests.csproj new file mode 100644 index 00000000000..7dc661636a7 --- /dev/null +++ b/tests/Aspire.Hosting.RabbitMQ.Tests/Aspire.Hosting.RabbitMQ.Tests.csproj @@ -0,0 +1,19 @@ + + + + $(NetCurrent) + + + + + + + + + + + + + + + diff --git a/tests/Aspire.Hosting.RabbitMQ.Tests/RabbitMQFunctionalTests.cs b/tests/Aspire.Hosting.RabbitMQ.Tests/RabbitMQFunctionalTests.cs new file mode 100644 index 00000000000..6693552f89d --- /dev/null +++ b/tests/Aspire.Hosting.RabbitMQ.Tests/RabbitMQFunctionalTests.cs @@ -0,0 +1,195 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Text; +using Aspire.Components.Common.Tests; +using Aspire.Hosting.Utils; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using RabbitMQ.Client; +using Xunit; +using Xunit.Abstractions; + +namespace Aspire.Hosting.RabbitMQ.Tests; + +public class RabbitMQFunctionalTests(ITestOutputHelper testOutputHelper) +{ + [Fact] + [RequiresDocker] + public async Task VerifyRabbitMQResource() + { + var builder = CreateDistributedApplicationBuilder(); + + var rabbitMQ = builder.AddRabbitMQ("rabbitMQ"); + + using var app = builder.Build(); + + await app.StartAsync(); + + var hb = Host.CreateApplicationBuilder(); + hb.Configuration[$"ConnectionStrings:{rabbitMQ.Resource.Name}"] = await rabbitMQ.Resource.ConnectionStringExpression.GetValueAsync(default); + hb.AddRabbitMQClient(rabbitMQ.Resource.Name); + + using var host = hb.Build(); + + await host.StartAsync(); + + var connection = host.Services.GetRequiredService(); + + using var channel = connection.CreateModel(); + const string queueName = "hello"; + channel.QueueDeclare(queueName, durable: false, exclusive: false, autoDelete: false, arguments: null); + + const string message = "Hello World!"; + var body = Encoding.UTF8.GetBytes(message); + + channel.BasicPublish(exchange: string.Empty, routingKey: queueName, basicProperties: null, body: body); + + var result = channel.BasicGet(queueName, true); + Assert.Equal(message, Encoding.UTF8.GetString(result.Body.Span)); + } + + [Theory] + [InlineData(true)] + [InlineData(false)] + [RequiresDocker] + public async Task WithDataShouldPersistStateBetweenUsages(bool useVolume) + { + var cts = new CancellationTokenSource(TimeSpan.FromMinutes(3)); + + string? volumeName = null; + string? bindMountPath = null; + + try + { + var builder1 = CreateDistributedApplicationBuilder(); + var rabbitMQ1 = builder1.AddRabbitMQ("rabbitMQ"); + var password = rabbitMQ1.Resource.PasswordParameter.Value; + + if (useVolume) + { + // Use a deterministic volume name to prevent them from exhausting the machines if deletion fails + volumeName = VolumeNameGenerator.CreateVolumeName(rabbitMQ1, nameof(WithDataShouldPersistStateBetweenUsages)); + + // if the volume already exists (because of a crashing previous run), try to delete it + DockerUtils.AttemptDeleteDockerVolume(volumeName); + rabbitMQ1.WithDataVolume(volumeName); + } + else + { + bindMountPath = Directory.CreateTempSubdirectory().FullName; + rabbitMQ1.WithDataBindMount(bindMountPath); + } + + using (var app = builder1.Build()) + { + await app.StartAsync(); + try + { + var hb = Host.CreateApplicationBuilder(); + hb.Configuration[$"ConnectionStrings:{rabbitMQ1.Resource.Name}"] = await rabbitMQ1.Resource.ConnectionStringExpression.GetValueAsync(default); + hb.AddRabbitMQClient(rabbitMQ1.Resource.Name); + + using (var host = hb.Build()) + { + await host.StartAsync(); + + var connection = host.Services.GetRequiredService(); + + using var channel = connection.CreateModel(); + const string queueName = "hello"; + channel.QueueDeclare(queueName, durable: true, exclusive: false); + + const string message = "Hello World!"; + var body = Encoding.UTF8.GetBytes(message); + + var props = channel.CreateBasicProperties(); + props.Persistent = true; // or props.DeliveryMode = 2; + channel.BasicPublish( + exchange: string.Empty, + queueName, + props, + body); + } + } + finally + { + // Stops the container, or the Volume/mount would still be in use + await app.StopAsync(); + } + } + + var builder2 = CreateDistributedApplicationBuilder(); + var passwordParameter2 = builder2.AddParameter("pwd"); + builder2.Configuration["Parameters:pwd"] = password; + + var rabbitMQ2 = builder2.AddRabbitMQ("rabbitMQ", password: passwordParameter2); + + if (useVolume) + { + rabbitMQ2.WithDataVolume(volumeName); + } + else + { + rabbitMQ2.WithDataBindMount(bindMountPath!); + } + + using (var app = builder2.Build()) + { + await app.StartAsync(); + try + { + var hb = Host.CreateApplicationBuilder(); + hb.Configuration[$"ConnectionStrings:{rabbitMQ2.Resource.Name}"] = await rabbitMQ2.Resource.ConnectionStringExpression.GetValueAsync(default); + hb.AddRabbitMQClient(rabbitMQ2.Resource.Name); + + using (var host = hb.Build()) + { + await host.StartAsync(); + + var connection = host.Services.GetRequiredService(); + + using var channel = connection.CreateModel(); + const string queueName = "hello"; + channel.QueueDeclare(queueName, durable: true, exclusive: false); + + var result = channel.BasicGet(queueName, true); + Assert.Equal("Hello World!", Encoding.UTF8.GetString(result.Body.Span)); + } + } + finally + { + // Stops the container, or the Volume/mount would still be in use + await app.StopAsync(); + } + } + } + finally + { + if (volumeName is not null) + { + DockerUtils.AttemptDeleteDockerVolume(volumeName); + } + + if (bindMountPath is not null) + { + try + { + Directory.Delete(bindMountPath, recursive: true); + } + catch + { + // Don't fail test if we can't clean the temporary folder + } + } + } + } + + private TestDistributedApplicationBuilder CreateDistributedApplicationBuilder() + { + var builder = TestDistributedApplicationBuilder.CreateWithTestContainerRegistry(); + builder.Services.AddXunitLogging(testOutputHelper); + return builder; + } +} diff --git a/tests/Aspire.Hosting.Tests/Aspire.Hosting.Tests.csproj b/tests/Aspire.Hosting.Tests/Aspire.Hosting.Tests.csproj index 80fee8b0b3f..931dea052a2 100644 --- a/tests/Aspire.Hosting.Tests/Aspire.Hosting.Tests.csproj +++ b/tests/Aspire.Hosting.Tests/Aspire.Hosting.Tests.csproj @@ -27,7 +27,6 @@ - diff --git a/tests/Aspire.Hosting.Tests/ManifestGenerationTests.cs b/tests/Aspire.Hosting.Tests/ManifestGenerationTests.cs index 8b31b7c4623..415262001f1 100644 --- a/tests/Aspire.Hosting.Tests/ManifestGenerationTests.cs +++ b/tests/Aspire.Hosting.Tests/ManifestGenerationTests.cs @@ -6,7 +6,6 @@ using Aspire.Hosting.MongoDB; using Aspire.Hosting.Postgres; using Aspire.Hosting.Publishing; -using Aspire.Hosting.RabbitMQ; using Aspire.Hosting.Redis; using Aspire.Hosting.Tests.Helpers; using Aspire.Hosting.Utils; @@ -284,25 +283,6 @@ public void EnsureAllPostgresManifestTypesHaveVersion0Suffix() Assert.Equal("value.v0", db.GetProperty("type").GetString()); } - [Fact] - public void EnsureAllRabbitMQManifestTypesHaveVersion0Suffix() - { - using var program = CreateTestProgramJsonDocumentManifestPublisher(); - - program.AppBuilder.AddRabbitMQ("rabbitcontainer"); - - // Build AppHost so that publisher can be resolved. - program.Build(); - var publisher = program.GetManifestPublisher(); - - program.Run(); - - var resources = publisher.ManifestDocument.RootElement.GetProperty("resources"); - - var server = resources.GetProperty("rabbitcontainer"); - Assert.Equal("container.v0", server.GetProperty("type").GetString()); - } - [Fact] public void NodeAppIsExecutableResource() { @@ -480,7 +460,6 @@ public void VerifyTestProgramFullManifest() "ConnectionStrings__tempdb": "{tempdb.connectionString}", "ConnectionStrings__redis": "{redis.connectionString}", "ConnectionStrings__postgresdb": "{postgresdb.connectionString}", - "ConnectionStrings__rabbitmq": "{rabbitmq.connectionString}", "ConnectionStrings__mymongodb": "{mymongodb.connectionString}", "ConnectionStrings__freepdb1": "{freepdb1.connectionString}", "ConnectionStrings__cosmos": "{cosmos.connectionString}", @@ -557,23 +536,6 @@ public void VerifyTestProgramFullManifest() "type": "value.v0", "connectionString": "{postgres.connectionString};Database=postgresdb" }, - "rabbitmq": { - "type": "container.v0", - "connectionString": "amqp://guest:{rabbitmq-password.value}@{rabbitmq.bindings.tcp.host}:{rabbitmq.bindings.tcp.port}", - "image": "{{TestConstants.AspireTestContainerRegistry}}/{{RabbitMQContainerImageTags.Image}}:{{RabbitMQContainerImageTags.Tag}}", - "env": { - "RABBITMQ_DEFAULT_USER": "guest", - "RABBITMQ_DEFAULT_PASS": "{rabbitmq-password.value}" - }, - "bindings": { - "tcp": { - "scheme": "tcp", - "protocol": "tcp", - "transport": "tcp", - "targetPort": 5672 - } - } - }, "mongodb": { "type": "container.v0", "connectionString": "mongodb://{mongodb.bindings.tcp.host}:{mongodb.bindings.tcp.port}", @@ -661,22 +623,6 @@ public void VerifyTestProgramFullManifest() } } }, - "rabbitmq-password": { - "type": "parameter.v0", - "value": "{rabbitmq-password.inputs.value}", - "inputs": { - "value": { - "type": "string", - "secret": true, - "default": { - "generate": { - "minLength": 22, - "special": false - } - } - } - } - }, "oracledatabase-password": { "type": "parameter.v0", "value": "{oracledatabase-password.inputs.value}", diff --git a/tests/testproject/Common/TestResourceNames.cs b/tests/testproject/Common/TestResourceNames.cs index 6343b8bc90a..d6f7479f7e0 100644 --- a/tests/testproject/Common/TestResourceNames.cs +++ b/tests/testproject/Common/TestResourceNames.cs @@ -12,14 +12,13 @@ public enum TestResourceNames mongodb = 1 << 3, oracledatabase = 1 << 5, postgres = 1 << 7, - rabbitmq = 1 << 8, redis = 1 << 9, sqlserver = 1 << 10, efnpgsql = 1 << 11, eventhubs = 1 << 13, efsqlserver = 1 << 16, efcosmos = 1 << 17, - All = cosmos | dashboard | mongodb | oracledatabase | postgres | rabbitmq | redis | sqlserver | efnpgsql | eventhubs | efsqlserver | efcosmos + All = cosmos | dashboard | mongodb | oracledatabase | postgres | redis | sqlserver | efnpgsql | eventhubs | efsqlserver | efcosmos } public static class TestResourceNamesExtensions diff --git a/tests/testproject/TestProject.AppHost/TestProgram.cs b/tests/testproject/TestProject.AppHost/TestProgram.cs index 92404fab4cf..bf283eb4ae0 100644 --- a/tests/testproject/TestProject.AppHost/TestProgram.cs +++ b/tests/testproject/TestProject.AppHost/TestProgram.cs @@ -104,12 +104,6 @@ private TestProgram( .AddDatabase(postgresDbName); IntegrationServiceABuilder = IntegrationServiceABuilder.WithReference(postgres); } - if (!resourcesToSkip.HasFlag(TestResourceNames.rabbitmq)) - { - var rabbitmq = AppBuilder.AddRabbitMQ("rabbitmq") - .WithImageRegistry(AspireTestContainerRegistry); - IntegrationServiceABuilder = IntegrationServiceABuilder.WithReference(rabbitmq); - } if (!resourcesToSkip.HasFlag(TestResourceNames.mongodb)) { var mongoDbName = "mymongodb"; diff --git a/tests/testproject/TestProject.AppHost/TestProject.AppHost.csproj b/tests/testproject/TestProject.AppHost/TestProject.AppHost.csproj index 28f42236bb9..7ea70d670d4 100644 --- a/tests/testproject/TestProject.AppHost/TestProject.AppHost.csproj +++ b/tests/testproject/TestProject.AppHost/TestProject.AppHost.csproj @@ -18,7 +18,6 @@ - diff --git a/tests/testproject/TestProject.IntegrationServiceA/Program.cs b/tests/testproject/TestProject.IntegrationServiceA/Program.cs index 937fe4f536e..b1a55bb8a93 100644 --- a/tests/testproject/TestProject.IntegrationServiceA/Program.cs +++ b/tests/testproject/TestProject.IntegrationServiceA/Program.cs @@ -29,10 +29,6 @@ { builder.AddNpgsqlDbContext("postgresdb"); } -if (!resourcesToSkip.HasFlag(TestResourceNames.rabbitmq)) -{ - builder.AddRabbitMQClient("rabbitmq"); -} if (!resourcesToSkip.HasFlag(TestResourceNames.mongodb)) { builder.AddMongoDBClient("mymongodb"); @@ -111,11 +107,6 @@ app.MapEFCoreSqlServerApi(); } -if (!resourcesToSkip.HasFlag(TestResourceNames.rabbitmq)) -{ - app.MapRabbitMQApi(); -} - if (!resourcesToSkip.HasFlag(TestResourceNames.oracledatabase)) { app.MapOracleDatabaseApi(); diff --git a/tests/testproject/TestProject.IntegrationServiceA/RabbitMQ/RabbitMQExtensions.cs b/tests/testproject/TestProject.IntegrationServiceA/RabbitMQ/RabbitMQExtensions.cs deleted file mode 100644 index 282866e9eab..00000000000 --- a/tests/testproject/TestProject.IntegrationServiceA/RabbitMQ/RabbitMQExtensions.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Text; -using RabbitMQ.Client; - -public static class RabbitMQExtensions -{ - public static void MapRabbitMQApi(this WebApplication app) - { - app.MapGet("/rabbitmq/verify", VerifyRabbitMQ); - } - - private static IResult VerifyRabbitMQ(IConnection connection) - { - try - { - using var channel = connection.CreateModel(); - const string queueName = "hello"; - channel.QueueDeclare(queue: queueName, durable: false, exclusive: false, autoDelete: false, arguments: null); - - const string message = "Hello World!"; - var body = Encoding.UTF8.GetBytes(message); - - channel.BasicPublish(exchange: string.Empty, routingKey: queueName, basicProperties: null, body: body); - var result = channel.BasicGet(queueName, true); - - return result.Body.Span.SequenceEqual(body) ? Results.Ok("Success!") : Results.Problem("Failed"); - } - catch (Exception e) - { - return Results.Problem(e.ToString()); - } - } -} diff --git a/tests/testproject/TestProject.IntegrationServiceA/TestProject.IntegrationServiceA.csproj b/tests/testproject/TestProject.IntegrationServiceA/TestProject.IntegrationServiceA.csproj index fa61d1ac211..2a68cd478f0 100644 --- a/tests/testproject/TestProject.IntegrationServiceA/TestProject.IntegrationServiceA.csproj +++ b/tests/testproject/TestProject.IntegrationServiceA/TestProject.IntegrationServiceA.csproj @@ -22,7 +22,6 @@ -