diff --git a/Directory.Build.props b/Directory.Build.props index 83eccf85..7dfefb1c 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -52,7 +52,7 @@ - + diff --git a/examples-Aspire/AspireApp1.AppHost/AspireApp1.AppHost.csproj b/examples-Aspire/AspireApp1.AppHost/AspireApp1.AppHost.csproj index a04440d9..5e425c0a 100644 --- a/examples-Aspire/AspireApp1.AppHost/AspireApp1.AppHost.csproj +++ b/examples-Aspire/AspireApp1.AppHost/AspireApp1.AppHost.csproj @@ -1,6 +1,6 @@ - + Exe @@ -18,7 +18,7 @@ - + diff --git a/examples-Aspire/AspireApp1.AppHostOriginal/AspireApp1.AppHostOriginal.csproj b/examples-Aspire/AspireApp1.AppHostOriginal/AspireApp1.AppHostOriginal.csproj index ddfe855d..0bb94bf0 100644 --- a/examples-Aspire/AspireApp1.AppHostOriginal/AspireApp1.AppHostOriginal.csproj +++ b/examples-Aspire/AspireApp1.AppHostOriginal/AspireApp1.AppHostOriginal.csproj @@ -1,6 +1,6 @@ - + Exe @@ -15,7 +15,7 @@ - + diff --git a/src/WireMock.Net.Aspire/WireMock.Net.Aspire.csproj b/src/WireMock.Net.Aspire/WireMock.Net.Aspire.csproj index 379011c0..ed353f88 100644 --- a/src/WireMock.Net.Aspire/WireMock.Net.Aspire.csproj +++ b/src/WireMock.Net.Aspire/WireMock.Net.Aspire.csproj @@ -45,7 +45,7 @@ - + diff --git a/src/WireMock.Net.Aspire/WireMockHealthCheck.cs b/src/WireMock.Net.Aspire/WireMockHealthCheck.cs index 2b51cbee..03d784fa 100644 --- a/src/WireMock.Net.Aspire/WireMockHealthCheck.cs +++ b/src/WireMock.Net.Aspire/WireMockHealthCheck.cs @@ -21,11 +21,6 @@ public class WireMockHealthCheck(WireMockServerResource resource) : IHealthCheck return HealthCheckResult.Unhealthy("WireMock.Net is not healthy"); } - if (resource.ApiMappingState == WireMockMappingState.NotSubmitted) - { - return HealthCheckResult.Unhealthy("WireMock.Net has not received mappings"); - } - return HealthCheckResult.Healthy(); } @@ -41,4 +36,4 @@ public class WireMockHealthCheck(WireMockServerResource resource) : IHealthCheck return false; } } -} +} \ No newline at end of file diff --git a/src/WireMock.Net.Aspire/WireMockLifecycleSubscriber.cs b/src/WireMock.Net.Aspire/WireMockLifecycleSubscriber.cs index df6f1f48..252f56d6 100644 --- a/src/WireMock.Net.Aspire/WireMockLifecycleSubscriber.cs +++ b/src/WireMock.Net.Aspire/WireMockLifecycleSubscriber.cs @@ -21,7 +21,13 @@ internal class WireMockLifecycleSubscriber(ILoggerFactory loggerFactory) : IDist var endpoint = wireMockServerResource.GetEndpoint(); Debug.Assert(endpoint.IsAllocated); + } + }); + eventing.Subscribe(async (@event, ct) => + { + if (@event.Resource is WireMockServerResource wireMockServerResource) + { await wireMockServerResource.WaitForHealthAsync(ct); await wireMockServerResource.CallAddProtoDefinitionsAsync(ct); diff --git a/src/WireMock.Net.RestClient/Extensions/WireMockAdminApiExtensions.cs b/src/WireMock.Net.RestClient/Extensions/WireMockAdminApiExtensions.cs index bb7d5ef2..b4149279 100644 --- a/src/WireMock.Net.RestClient/Extensions/WireMockAdminApiExtensions.cs +++ b/src/WireMock.Net.RestClient/Extensions/WireMockAdminApiExtensions.cs @@ -65,6 +65,7 @@ public static class WireMockAdminApiExtensions waitTime = (int)(InitialWaitingTimeInMilliSeconds * Math.Pow(2, retries)); await Task.Delay(waitTime, cancellationToken); isHealthy = await IsHealthyAsync(adminApi, cancellationToken); + retries++; totalWaitTime += waitTime; } diff --git a/test/WireMock.Net.Aspire.TestAppHost/WireMock.Net.Aspire.TestAppHost.csproj b/test/WireMock.Net.Aspire.TestAppHost/WireMock.Net.Aspire.TestAppHost.csproj index 3c3f9dae..d2e5a78f 100644 --- a/test/WireMock.Net.Aspire.TestAppHost/WireMock.Net.Aspire.TestAppHost.csproj +++ b/test/WireMock.Net.Aspire.TestAppHost/WireMock.Net.Aspire.TestAppHost.csproj @@ -1,6 +1,6 @@ - + Exe @@ -19,7 +19,7 @@ - + diff --git a/test/WireMock.Net.Aspire.Tests/WireMock.Net.Aspire.Tests.csproj b/test/WireMock.Net.Aspire.Tests/WireMock.Net.Aspire.Tests.csproj index f048cd86..52b2e98b 100644 --- a/test/WireMock.Net.Aspire.Tests/WireMock.Net.Aspire.Tests.csproj +++ b/test/WireMock.Net.Aspire.Tests/WireMock.Net.Aspire.Tests.csproj @@ -14,7 +14,7 @@ - + all @@ -25,7 +25,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/test/WireMock.Net.Aspire.Tests/WireMockServerBuilderExtensionsTests.cs b/test/WireMock.Net.Aspire.Tests/WireMockServerBuilderExtensionsTests.cs index ccf2a703..12de5551 100644 --- a/test/WireMock.Net.Aspire.Tests/WireMockServerBuilderExtensionsTests.cs +++ b/test/WireMock.Net.Aspire.Tests/WireMockServerBuilderExtensionsTests.cs @@ -92,17 +92,11 @@ public class WireMockServerBuilderExtensionsTests Tag = "latest" }); - var endpointAnnotation = wiremock.Resource.Annotations.OfType().FirstOrDefault(); - endpointAnnotation.Should().BeEquivalentTo(new EndpointAnnotation( - protocol: ProtocolType.Tcp, - uriScheme: "http", - transport: null, - name: null, - port: port, - targetPort: 80, - isExternal: null, - isProxied: true - )); + var endpointAnnotation = wiremock.Resource.Annotations.OfType().First(); + endpointAnnotation.Protocol.Should().Be(ProtocolType.Tcp); + endpointAnnotation.UriScheme.Should().Be("http"); + endpointAnnotation.Port.Should().Be(port); + endpointAnnotation.TargetPort.Should().Be(80); wiremock.Resource.Annotations.OfType().FirstOrDefault().Should().NotBeNull(); wiremock.Resource.Annotations.OfType().FirstOrDefault().Should().NotBeNull(); @@ -153,39 +147,24 @@ public class WireMockServerBuilderExtensionsTests endpointAnnotations.Should().HaveCount(3); var endpointAnnotationForHttp80 = endpointAnnotations[0]; - endpointAnnotationForHttp80.Should().BeEquivalentTo(new EndpointAnnotation( - protocol: ProtocolType.Tcp, - uriScheme: "http", - transport: null, - name: null, - port: null, - targetPort: 80, - isExternal: null, - isProxied: true - )); + endpointAnnotationForHttp80.Protocol.Should().Be(ProtocolType.Tcp); + endpointAnnotationForHttp80.UriScheme.Should().Be("http"); + endpointAnnotationForHttp80.Port.Should().BeNull(); + endpointAnnotationForHttp80.TargetPort.Should().Be(80); + var endpointAnnotationForHttpFreePort = endpointAnnotations[1]; - endpointAnnotationForHttpFreePort.Should().BeEquivalentTo(new EndpointAnnotation( - protocol: ProtocolType.Tcp, - uriScheme: "http", - transport: null, - name: $"http-{freePorts[0]}", - port: freePorts[0], - targetPort: freePorts[0], - isExternal: null, - isProxied: true - )); + endpointAnnotationForHttpFreePort.Protocol.Should().Be(ProtocolType.Tcp); + endpointAnnotationForHttpFreePort.UriScheme.Should().Be("http"); + endpointAnnotationForHttpFreePort.Name.Should().Be($"http-{freePorts[0]}"); + endpointAnnotationForHttpFreePort.Port.Should().Be(freePorts[0]); + endpointAnnotationForHttpFreePort.TargetPort.Should().Be(freePorts[0]); var endpointAnnotationForGrpcFreePort = endpointAnnotations[2]; - endpointAnnotationForGrpcFreePort.Should().BeEquivalentTo(new EndpointAnnotation( - protocol: ProtocolType.Tcp, - uriScheme: "grpc", - transport: null, - name: $"grpc-{freePorts[1]}", - port: freePorts[1], - targetPort: freePorts[1], - isExternal: null, - isProxied: true - )); + endpointAnnotationForGrpcFreePort.Protocol.Should().Be(ProtocolType.Tcp); + endpointAnnotationForGrpcFreePort.UriScheme.Should().Be("grpc"); + endpointAnnotationForGrpcFreePort.Name.Should().Be($"grpc-{freePorts[1]}"); + endpointAnnotationForGrpcFreePort.Port.Should().Be(freePorts[1]); + endpointAnnotationForGrpcFreePort.TargetPort.Should().Be(freePorts[1]); wiremock.Resource.Annotations.OfType().FirstOrDefault().Should().NotBeNull(); wiremock.Resource.Annotations.OfType().FirstOrDefault().Should().NotBeNull();