Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 5 additions & 43 deletions .github/workflows/healthchecks_nats_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,46 +29,8 @@ on:

jobs:
build:
runs-on: ubuntu-latest
services:
nats:
image: nats:latest
ports:
- "4222:4222"
- "8222:8222"
- "6222:6222"
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
8.0.x
9.0.x
- name: Restore
run: |
dotnet restore ./src/HealthChecks.Nats/HealthChecks.Nats.csproj &&
dotnet restore ./test/HealthChecks.Nats.Tests/HealthChecks.Nats.Tests.csproj
- name: Check formatting
run: |
dotnet format --no-restore --verify-no-changes --severity warn ./src/HealthChecks.Nats/HealthChecks.Nats.csproj || (echo "Run 'dotnet format' to fix issues" && exit 1) &&
dotnet format --no-restore --verify-no-changes --severity warn ./test/HealthChecks.Nats.Tests/HealthChecks.Nats.Tests.csproj || (echo "Run 'dotnet format' to fix issues" && exit 1)
- name: Build
run: |
dotnet build --no-restore ./src/HealthChecks.Nats/HealthChecks.Nats.csproj &&
dotnet build --no-restore ./test/HealthChecks.Nats.Tests/HealthChecks.Nats.Tests.csproj
- name: Test
run: >
dotnet test
./test/HealthChecks.Nats.Tests/HealthChecks.Nats.Tests.csproj
--no-restore
--no-build
--collect "XPlat Code Coverage"
--results-directory .coverage
--
DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
- name: Upload Coverage
uses: codecov/codecov-action@v5
with:
flags: Nats
directory: .coverage
uses: ./.github/workflows/reusable_ci_workflow.yml
with:
PROJECT_PATH: ./src/HealthChecks.Nats/HealthChecks.Nats.csproj
TEST_PROJECT_PATH: ./test/HealthChecks.Nats.Tests/HealthChecks.Nats.Tests.csproj
CODECOV_FLAGS: Nats
1 change: 1 addition & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@
<PackageVersion Include="Testcontainers.ClickHouse" Version="$(TestcontainersVersion)" />
<PackageVersion Include="Testcontainers.Kafka" Version="$(TestcontainersVersion)" />
<PackageVersion Include="Testcontainers.Milvus" Version="$(TestcontainersVersion)" />
<PackageVersion Include="Testcontainers.Nats" Version="$(TestcontainersVersion)" />
<PackageVersion Include="Testcontainers.PostgreSql" Version="$(TestcontainersVersion)" />
<PackageVersion Include="TestContainers.MongoDb" Version="$(TestcontainersVersion)" />
<PackageVersion Include="Testcontainers.MsSql" Version="$(TestcontainersVersion)" />
Expand Down
17 changes: 0 additions & 17 deletions test/HealthChecks.Nats.Tests/Defines.cs

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
using NATS.Client.Core;
using static HealthChecks.Nats.Tests.Defines;

namespace HealthChecks.Nats.Tests.DependencyInjection;

public class nats_registration_should
{
private const string ConnectionString = "nats://localhost:4222";

[Fact]
public void add_health_check_when_properly_configured()
{
Expand Down Expand Up @@ -47,7 +48,7 @@ public void add_health_check_when_properly_configured_by_using_singlton_regestra
var services = new ServiceCollection();
var natsOpts = NatsOpts.Default with
{
Url = DefaultLocalConnectionString,
Url = ConnectionString,
};
var connection = new NatsConnection(natsOpts);

Expand Down Expand Up @@ -86,7 +87,7 @@ private NatsConnection ClientFactory(IServiceProvider _)
{
var options = NatsOpts.Default with
{
Url = DefaultLocalConnectionString,
Url = ConnectionString,
};
return new NatsConnection(options);
}
Expand Down
14 changes: 8 additions & 6 deletions test/HealthChecks.Nats.Tests/Functional/NatsHealthCheckTests.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
using System.Net;
using NATS.Client.Core;
using NATS.Client.Hosting;
using static HealthChecks.Nats.Tests.Defines;

namespace HealthChecks.Nats.Tests.Functional;

public class nats_healthcheck_should
public class nats_healthcheck_should(NatsContainerFixture natsFixture) : IClassFixture<NatsContainerFixture>
{
[Fact]
public async Task be_healthy_when_nats_is_available_using_client_factory()
{
string connectionString = natsFixture.GetConnectionString();

var webHostBuilder = new WebHostBuilder()
.ConfigureServices(services =>
{
var options = NatsOpts.Default with
{
Url = DefaultLocalConnectionString,
Url = connectionString,
};
var natsConnection = new NatsConnection(options);

Expand All @@ -42,12 +42,14 @@ public async Task be_healthy_when_nats_is_available_using_client_factory()
[Fact]
public async Task be_healthy_when_nats_is_available_using_singleton()
{
string connectionString = natsFixture.GetConnectionString();

var webHostBuilder = new WebHostBuilder()
.ConfigureServices(services =>
{
var options = NatsOpts.Default with
{
Url = DefaultLocalConnectionString,
Url = connectionString
};

services
Expand Down Expand Up @@ -83,7 +85,7 @@ public async Task be_unhealthy_when_nats_is_unavailable()
{
var options = NatsOpts.Default with
{
Url = ConnectionStringDoesNotExistOrStopped,
Url = "nats://DoesNotExist:4222",
};
return new NatsConnection(options);
}, tags: new string[] { "nats" });
Expand Down
4 changes: 4 additions & 0 deletions test/HealthChecks.Nats.Tests/HealthChecks.Nats.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,8 @@
<ProjectReference Include="..\..\src\HealthChecks.Nats\HealthChecks.Nats.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Testcontainers.Nats" />
</ItemGroup>

</Project>
39 changes: 39 additions & 0 deletions test/HealthChecks.Nats.Tests/NatsContainerFixture.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using Testcontainers.Nats;

namespace HealthChecks.Nats.Tests;

public class NatsContainerFixture : IAsyncLifetime
{
private const string Registry = "docker.io";

private const string Image = "library/nats";

private const string Tag = "2.11.8";

public NatsContainer? Container { get; private set; }

public string GetConnectionString()
{
if (Container is null)
{
throw new InvalidOperationException("The test container was not initialized.");
}

return Container.GetConnectionString();
}

public async Task InitializeAsync() => Container = await CreateContainerAsync();

public Task DisposeAsync() => Container?.DisposeAsync().AsTask() ?? Task.CompletedTask;

private static async Task<NatsContainer> CreateContainerAsync()
{
var container = new NatsBuilder()
.WithImage($"{Registry}/{Image}:{Tag}")
.Build();

await container.StartAsync();

return container;
}
}
Loading