Skip to content

A JUnit Proxy/DNS rule for connecting to dockerised applications with standard hostnames and ports

License

Notifications You must be signed in to change notification settings

palantir/docker-proxy-rule

Repository files navigation

Autorelease

build status

Docker Proxy JUnit Rule

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

Why should I use this

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.

Simple Use

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();

About

A JUnit Proxy/DNS rule for connecting to dockerised applications with standard hostnames and ports

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published