File tree Expand file tree Collapse file tree
test/HealthChecks.SqlServer.Tests Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2929
3030jobs :
3131 build :
32- runs-on : ubuntu-latest
33- services :
34- sqlserver :
35- image : mcr.microsoft.com/mssql/server
36- ports :
37- - 5433:1433
38- env :
39- ACCEPT_EULA : Y
40- SA_PASSWORD : Password12!
41- steps :
42- - uses : actions/checkout@v3
43- - name : Setup .NET
44- uses : actions/setup-dotnet@v4
45- with :
46- dotnet-version : |
47- 8.0.x
48- 9.0.x
49- - name : Restore
50- run : |
51- dotnet restore ./src/HealthChecks.SqlServer/HealthChecks.SqlServer.csproj &&
52- dotnet restore ./test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj
53- - name : Check formatting
54- run : |
55- dotnet format --no-restore --verify-no-changes --severity warn ./src/HealthChecks.SqlServer/HealthChecks.SqlServer.csproj || (echo "Run 'dotnet format' to fix issues" && exit 1) &&
56- dotnet format --no-restore --verify-no-changes --severity warn ./test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj || (echo "Run 'dotnet format' to fix issues" && exit 1)
57- - name : Build
58- run : |
59- dotnet build --no-restore ./src/HealthChecks.SqlServer/HealthChecks.SqlServer.csproj &&
60- dotnet build --no-restore ./test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj
61- - name : Test
62- run : >
63- dotnet test
64- ./test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj
65- --no-restore
66- --no-build
67- --collect "XPlat Code Coverage"
68- --results-directory .coverage
69- --
70- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
71- - name : Upload Coverage
72- uses : codecov/codecov-action@v5
73- with :
74- flags : SqlServer
75- directory : .coverage
32+ uses : ./.github/workflows/reusable_ci_workflow.yml
33+ with :
34+ PROJECT_PATH : ./src/HealthChecks.SqlServer/HealthChecks.SqlServer.csproj
35+ TEST_PROJECT_PATH : ./test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj
36+ CODECOV_FLAGS : SqlServer
Original file line number Diff line number Diff line change 102102 <PackageVersion Include =" System.Text.Json" Version =" 8.0.5" />
103103 <PackageVersion Include =" System.Text.RegularExpressions" Version =" 4.3.1" />
104104 <PackageVersion Include =" System.Threading.Channels" Version =" 8.0.0" />
105+ <PackageVersion Include =" Testcontainers.MsSql" Version =" $(TestcontainersVersion)" />
105106 <PackageVersion Include =" Testcontainers.Redis" Version =" $(TestcontainersVersion)" />
106107 <PackageVersion Include =" xunit" Version =" 2.9.2" />
107108 <PackageVersion Include =" xunit.runner.visualstudio" Version =" 2.8.2" />
Original file line number Diff line number Diff line change 22
33namespace HealthChecks . SqlServer . Tests . Functional ;
44
5- public class sqlserver_healthcheck_should
5+ public class sqlserver_healthcheck_should ( SqlServerContainerFixture sqlServerContainerFixture ) : IClassFixture < SqlServerContainerFixture >
66{
77 [ Fact ]
88 public async Task be_healthy_if_sqlServer_is_available ( )
99 {
10- var connectionString = "Server=tcp:localhost,5433;Initial Catalog=master;User Id=sa;Password=Password12!;Encrypt=false" ;
10+ var connectionString = sqlServerContainerFixture . GetConnectionString ( ) ;
1111
1212 var webHostBuilder = new WebHostBuilder ( )
1313 . ConfigureServices ( services =>
@@ -57,7 +57,7 @@ public async Task be_unhealthy_if_sqlServer_is_not_available()
5757 [ Fact ]
5858 public async Task be_unhealthy_if_sqlquery_spec_is_not_valid ( )
5959 {
60- var connectionString = "Server=tcp:localhost,5433;Initial Catalog=master;User Id=sa;Password=Password12!;Encrypt=false" ;
60+ var connectionString = sqlServerContainerFixture . GetConnectionString ( ) ;
6161
6262 var webHostBuilder = new WebHostBuilder ( )
6363 . ConfigureServices ( services =>
Original file line number Diff line number Diff line change 11<Project Sdk =" Microsoft.NET.Sdk" >
22
3+ <ItemGroup >
4+ <PackageReference Include =" Testcontainers.MsSql" />
5+ </ItemGroup >
6+
37 <ItemGroup >
48 <ProjectReference Include =" ..\..\src\HealthChecks.SqlServer\HealthChecks.SqlServer.csproj" />
59 </ItemGroup >
Original file line number Diff line number Diff line change 1+ using Testcontainers . MsSql ;
2+
3+ namespace HealthChecks . SqlServer . Tests ;
4+
5+ public sealed class SqlServerContainerFixture : IAsyncLifetime
6+ {
7+ public const string Registry = "mcr.microsoft.com" ;
8+
9+ public const string Image = "mssql/server" ;
10+
11+ public const string Tag = "2022-latest" ;
12+
13+ public MsSqlContainer ? Container { get ; private set ; }
14+
15+ public string GetConnectionString ( ) => Container ? . GetConnectionString ( ) ??
16+ throw new InvalidOperationException ( "The test container was not initialized." ) ;
17+
18+ public async Task InitializeAsync ( ) => Container = await CreateContainerAsync ( ) ;
19+
20+ public async Task DisposeAsync ( )
21+ {
22+ if ( Container is not null )
23+ await Container . DisposeAsync ( ) ;
24+ }
25+
26+ public static async Task < MsSqlContainer > CreateContainerAsync ( )
27+ {
28+ var container = new MsSqlBuilder ( )
29+ . WithImage ( $ "{ Registry } /{ Image } :{ Tag } ")
30+ . Build ( ) ;
31+ await container . StartAsync ( ) ;
32+
33+ return container ;
34+ }
35+ }
You can’t perform that action at this time.
0 commit comments