Skip to content

//tempest-testing-docker/app.cash.tempest.testing/Composer

Composer

[jvm]\ class Composer(name: String, containers: Container)

Composer composes many Containers together to use in a unit test.

The Containers are networked using a dedicated Docker network. Tests need to expose ports in order for the test to communicate with the containers over 127.0.0.1.

The following example composes Kafka and Zookeeper containers for testing. Kafka is exposed to the jUnit test via 127.0.0.1:9102. In this example, Zookeeper is not exposed to the test.

    val zkContainer = Container {
        withImage("confluentinc/cp-zookeeper")
        withName("zookeeper")
        withEnv("ZOOKEEPER_CLIENT_PORT=2181")
    }
    val kafka = Container {
        withImage("confluentinc/cp-kafka")
        withName("kafka")
        withExposedPorts(ExposedPort.tcp(port))
        withPortBindings(Ports().apply {
          bind(ExposedPort.tcp(9102), Ports.Binding.bindPort(9102))
        })
        withEnv(
          "KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181",
          "KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9102")
        }
    val composer = Composer("e-kafka", zkContainer, kafka)
    composer.start()

Constructors

Composer [jvm]
constructor(name: String, vararg containers: Container)

Properties

Name Summary
running [jvm]
val running: AtomicBoolean

Functions

Name Summary
start [jvm]
fun start()
stop [jvm]
fun stop()