File tree Expand file tree Collapse file tree 5 files changed +48
-47
lines changed
test/HealthChecks.SqlServer.Tests Expand file tree Collapse file tree 5 files changed +48
-47
lines changed Original file line number Diff line number Diff line change 29
29
30
30
jobs :
31
31
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 102
102
<PackageVersion Include =" System.Text.Json" Version =" 8.0.5" />
103
103
<PackageVersion Include =" System.Text.RegularExpressions" Version =" 4.3.1" />
104
104
<PackageVersion Include =" System.Threading.Channels" Version =" 8.0.0" />
105
+ <PackageVersion Include =" Testcontainers.MsSql" Version =" $(TestcontainersVersion)" />
105
106
<PackageVersion Include =" Testcontainers.Redis" Version =" $(TestcontainersVersion)" />
106
107
<PackageVersion Include =" xunit" Version =" 2.9.2" />
107
108
<PackageVersion Include =" xunit.runner.visualstudio" Version =" 2.8.2" />
Original file line number Diff line number Diff line change 2
2
3
3
namespace HealthChecks . SqlServer . Tests . Functional ;
4
4
5
- public class sqlserver_healthcheck_should
5
+ public class sqlserver_healthcheck_should ( SqlServerContainerFixture sqlServerContainerFixture ) : IClassFixture < SqlServerContainerFixture >
6
6
{
7
7
[ Fact ]
8
8
public async Task be_healthy_if_sqlServer_is_available ( )
9
9
{
10
- var connectionString = "Server=tcp:localhost,5433;Initial Catalog=master;User Id=sa;Password=Password12!;Encrypt=false" ;
10
+ var connectionString = sqlServerContainerFixture . GetConnectionString ( ) ;
11
11
12
12
var webHostBuilder = new WebHostBuilder ( )
13
13
. ConfigureServices ( services =>
@@ -57,7 +57,7 @@ public async Task be_unhealthy_if_sqlServer_is_not_available()
57
57
[ Fact ]
58
58
public async Task be_unhealthy_if_sqlquery_spec_is_not_valid ( )
59
59
{
60
- var connectionString = "Server=tcp:localhost,5433;Initial Catalog=master;User Id=sa;Password=Password12!;Encrypt=false" ;
60
+ var connectionString = sqlServerContainerFixture . GetConnectionString ( ) ;
61
61
62
62
var webHostBuilder = new WebHostBuilder ( )
63
63
. ConfigureServices ( services =>
Original file line number Diff line number Diff line change 1
1
<Project Sdk =" Microsoft.NET.Sdk" >
2
2
3
+ <ItemGroup >
4
+ <PackageReference Include =" Testcontainers.MsSql" />
5
+ </ItemGroup >
6
+
3
7
<ItemGroup >
4
8
<ProjectReference Include =" ..\..\src\HealthChecks.SqlServer\HealthChecks.SqlServer.csproj" />
5
9
</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