Skip to content

Db2

Db2 is a relational database engine developed by IBM.

Add the following dependency to your project file:

NuGet
1
dotnet add package Testcontainers.Db2

Warning

The Linux client dependency, Net.IBM.Data.Db2-lnx, requires additional configurations. We use the Testcontainers.Db2.Tests.targets file to configure the environment variables: LD_LIBRARY_PATH, PATH, DB2_CLI_DRIVER_INSTALL_PATH, at runtime.

You can start an Db2 container instance from any .NET application. This example uses xUnit.net's IAsyncLifetime interface to manage the lifecycle of the container. The container is started in the InitializeAsync method before the test method runs, ensuring that the environment is ready for testing. After the test completes, the container is removed in the DisposeAsync method.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
private readonly Db2Container _db2Container = new Db2Builder().WithAcceptLicenseAgreement(true).Build();

public Task InitializeAsync()
{
    return _db2Container.StartAsync();
}

public Task DisposeAsync()
{
    return _db2Container.DisposeAsync().AsTask();
}

[Fact]
[Trait(nameof(DockerCli.DockerPlatform), nameof(DockerCli.DockerPlatform.Linux))]
public void ConnectionStateReturnsOpen()
{
    // Given
    using DbConnection connection = new DB2Connection(_db2Container.GetConnectionString());

    // When
    connection.Open();

    // Then
    Assert.Equal(ConnectionState.Open, connection.State);
}

[Fact]
[Trait(nameof(DockerCli.DockerPlatform), nameof(DockerCli.DockerPlatform.Linux))]
public async Task ExecScriptReturnsSuccessful()
{
    // Given
    const string scriptContent = "SELECT 1 FROM SYSIBM.SYSDUMMY1;";

    // When
    var execResult = await _db2Container.ExecScriptAsync(scriptContent)
        .ConfigureAwait(true);

    // Then
    Assert.True(0L.Equals(execResult.ExitCode), execResult.Stderr);
    Assert.Empty(execResult.Stderr);
}

The test example uses the following NuGet dependencies:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk"/>
    <PackageReference Include="coverlet.collector"/>
    <PackageReference Include="xunit.runner.visualstudio"/>
    <PackageReference Include="xunit"/>
</ItemGroup>
<ItemGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))">
    <PackageReference Include="Net.IBM.Data.Db2-lnx"/>
</ItemGroup>
<ItemGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))">
    <PackageReference Include="Net.IBM.Data.Db2-osx"/>
</ItemGroup>
<ItemGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
    <PackageReference Include="Net.IBM.Data.Db2"/>
</ItemGroup>

To execute the tests, use the command dotnet test from a terminal.

Tip

For the complete source code of this example and additional information, please refer to our test projects.