package org.testcontainers.junit; import org.junit.*; import org.testcontainers.containers.DockerComposeContainer; import org.testcontainers.utility.TestEnvironment; import redis.clients.jedis.Jedis; import java.io.File; import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals; /** * Created by rnorth on 08/08/2015. */ public class DockerComposeContainerScalingTest { private static final int REDIS_PORT = 6379; private Jedis[] clients = new Jedis[3]; @BeforeClass public static void checkVersion() { Assume.assumeTrue(TestEnvironment.dockerApiAtLeast("1.22")); } @Rule public DockerComposeContainer environment = new DockerComposeContainer(new File("src/test/resources/scaled-compose-test.yml")) .withScaledService("redis", 3) .withExposedService("redis", REDIS_PORT) // implicit '_1' .withExposedService("redis_2", REDIS_PORT) // explicit service index .withExposedService("redis", 3, REDIS_PORT); // explicit service index via parameter @Before public void setupClients() { for (int i = 0; i < 3; i++) { String name = String.format("redis_%d", i + 1); clients[i] = new Jedis(environment.getServiceHost(name, REDIS_PORT), environment.getServicePort(name, REDIS_PORT)); } } @Test public void simpleTest() { for (int i = 0; i < 3; i++) { clients[i].incr("somekey"); assertEquals("Each redis instance is separate", "1", clients[i].get("somekey")); } } }