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 a Db2 container instance from any .NET application. To create and start a container instance with the default configuration, use the module-specific builder as shown below:

1
2
var db2Container = new Db2Builder().Build();
await db2Container.StartAsync();

The following example utilizes the xUnit.net module to reduce overhead by automatically managing the lifecycle of the dependent container instance. It creates and starts the container using the module-specific builder and injects it as a shared class fixture into the test class.

 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
[Fact]
[Trait(nameof(DockerCli.DockerPlatform), nameof(DockerCli.DockerPlatform.Linux))]
public void ConnectionStateReturnsOpen()
{
    // Given
    using DbConnection connection = fixture.CreateConnection();

    // 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 fixture.Container.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.