This is a small library for executing JUnit tests that interact with Docker containers. It supports the following:
- Hitting the docker containers according the their hostnames when using interfaces that are not backed by Java NIO
- Auto-mapping the hostnames when using docker-compose-rule
- Auto-mapping the hostnames when specifying the name of the network they are on
This code allows you to avoid having to map internal docker ports to external ports so you don't have to map them to ports that may be in-use, or map them to random ports then have logic to construct clients based on which random port is being used.
Add a dependency to your project. For example, in gradle:
repositories {
mavenCentral() // docker-proxy-rule is published on maven central
}
dependencies {
testImplementation 'com.palantir.docker.proxy:docker-proxy-rule:<latest-tag>'
}
For the most basic use (with docker-compose-rule), simply add an @ClassRule
as follows:
public class MyIntegrationTest {
private static DockerComposeRule docker = ...;
private static DockerProxyRule proxy = DockerProxyRule.fromProjectName(docker.projectName());
@ClassRule
public static RuleChain ruleChain = RuleChain.outerRule(docker)
.around(proxy);
}
You can then communicate with the hosts within your tests. For example:
URLConnection urlConnection = new URL(TARGET).openConnection();
urlConnection.connect();