diff --git a/src/main/java/com/jam2in/arcus/testcontainers/ArcusClusterContainer.java b/src/main/java/com/jam2in/arcus/testcontainers/ArcusClusterContainer.java index 29d477e..d2b8cf0 100644 --- a/src/main/java/com/jam2in/arcus/testcontainers/ArcusClusterContainer.java +++ b/src/main/java/com/jam2in/arcus/testcontainers/ArcusClusterContainer.java @@ -1,10 +1,7 @@ package com.jam2in.arcus.testcontainers; -import com.github.dockerjava.api.model.ExposedPort; -import com.github.dockerjava.api.model.PortBinding; -import com.github.dockerjava.api.model.Ports; - import java.io.IOException; +import java.net.ServerSocket; import java.util.ArrayList; import org.testcontainers.containers.GenericContainer; @@ -71,11 +68,11 @@ public class ArcusClusterContainer extends GenericContainer { private static final DockerImageName DEFAULT_ZK_IMAGE_NAME = DockerImageName.parse("zookeeper:3.5.9"); - public ZookeeperContainer(Network network, int port) { + public ZookeeperContainer(Network network) { super(DEFAULT_ZK_IMAGE_NAME); withNetwork(network); withEnv("ZOO_MY_ID", "1"); withCreateContainerCmdModifier(cmd -> { cmd.withHostName("zoo1"); - cmd.getHostConfig().withPortBindings(new PortBinding(Ports.Binding.bindPort(port), new ExposedPort(DEFAULT_ZK_CONTAINER_PORT))); }); withExposedPorts(DEFAULT_ZK_CONTAINER_PORT); } diff --git a/src/main/java/com/jam2in/arcus/testcontainers/ArcusContainer.java b/src/main/java/com/jam2in/arcus/testcontainers/ArcusContainer.java index 6d13579..f2d1ecc 100644 --- a/src/main/java/com/jam2in/arcus/testcontainers/ArcusContainer.java +++ b/src/main/java/com/jam2in/arcus/testcontainers/ArcusContainer.java @@ -40,7 +40,7 @@ public class ArcusContainer extends GenericContainer { private ArcusContainer(DockerImageName dockerImageName, ArcusContainerProps props) { super(dockerImageName); - setupContainer(props.getPort(), props.getMemorySize()); + setupContainer(ArcusClusterContainer.getPort(), props.getMemorySize()); } ArcusContainer(DockerImageName imageName, String address, Network network, int memSize) { diff --git a/src/main/java/com/jam2in/arcus/testcontainers/ArcusContainerProps.java b/src/main/java/com/jam2in/arcus/testcontainers/ArcusContainerProps.java index 5d83e19..7412caf 100644 --- a/src/main/java/com/jam2in/arcus/testcontainers/ArcusContainerProps.java +++ b/src/main/java/com/jam2in/arcus/testcontainers/ArcusContainerProps.java @@ -8,15 +8,11 @@ public class ArcusContainerProps { private final String serviceCode; private final int clusterSize; private final int memorySize; - private final int port; - private final int zkPort; protected ArcusContainerProps(Builder builder) { this.serviceCode = builder.serviceCode; this.clusterSize = builder.clusterSize; this.memorySize = builder.memorySize; - this.port = builder.port; - this.zkPort = builder.zkPort; } public String getServiceCode() { @@ -31,13 +27,6 @@ public int getMemorySize() { return memorySize; } - public int getPort() { - return port; - } - - public int getZkPort() { - return zkPort; - } /** * A builder class for creating an instance of ArcusContainerProps with custom properties. @@ -46,8 +35,6 @@ public static class Builder { private String serviceCode = "test"; private int clusterSize = 3; private int memorySize = 64; - private int port = 11211; - private int zkPort = 2181; /** * Sets the service code for configuring an instance of ArcusContainerProps. @@ -94,37 +81,6 @@ public Builder memorySize(int memorySize) { return this; } - /** - * Sets the port for configuring an instance of ArcusContainerProps. - * - * @param port The port to be set. Must be greater than 0. - * @return The Builder object. - * @throws IllegalArgumentException If the port is smaller than or equal to 0. - */ - public Builder port(int port) { - if (port < 0 || port > 65535) { - throw new IllegalArgumentException("Invalid port number."); - } - this.port = port; - return this; - } - - /** - * Sets the ZooKeeper port for configuring an instance of ArcusContainerProps. - * Only using with cluster option. - * - * @param zkPort The ZooKeeper port to be set. Must be greater than 0. - * @return The Builder object. - * @throws IllegalArgumentException If the zkPort is smaller than or equal to 0. - */ - public Builder zkPort(int zkPort) { - if (zkPort < 0 || zkPort > 65535) { - throw new IllegalArgumentException("Invalid zookeeper port number."); - } - this.zkPort = zkPort; - return this; - } - public ArcusContainerProps build() { return new ArcusContainerProps(this); } diff --git a/src/test/java/com/jam2in/arcus/testcontainers/ArcusClusterContainerTest.java b/src/test/java/com/jam2in/arcus/testcontainers/ArcusClusterContainerTest.java index 44da70e..6f9932a 100644 --- a/src/test/java/com/jam2in/arcus/testcontainers/ArcusClusterContainerTest.java +++ b/src/test/java/com/jam2in/arcus/testcontainers/ArcusClusterContainerTest.java @@ -9,16 +9,23 @@ import org.junit.jupiter.api.Test; -import org.testcontainers.utility.DockerImageName; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; import static org.assertj.core.api.Assertions.assertThat; +@Testcontainers class ArcusClusterContainerTest extends ArcusClusterTestBase { + @Container + private final ArcusClusterContainer clusterContainer = ArcusClusterContainer.create( + ArcusContainerProps.builder().build()); + @Test void createArcusContainerSingle() throws ExecutionException, InterruptedException { //given - ArcusClientPool arcusClient = ArcusClient.createArcusClientPool("test", new ConnectionFactoryBuilder(), 2); + ArcusClientPool arcusClient = ArcusClient.createArcusClientPool(ARCUS_CLUSTER_CONTAINER.getHostPorts(), + "test", new ConnectionFactoryBuilder(), 2); //when OperationFuture set = arcusClient.set("test", 10, "testValue"); @@ -26,46 +33,21 @@ void createArcusContainerSingle() throws ExecutionException, InterruptedExceptio //then assertThat(ARCUS_CLUSTER_CONTAINER.isCreated()).isTrue(); assertThat(ARCUS_CLUSTER_CONTAINER.isRunning()).isTrue(); -// assertThat(ARCUS_CLUSTER_CONTAINER.isHealthy()).isTrue(); assertThat(set.get()).isTrue(); } @Test - void testCreateMethodWithoutParams() { - //when - ArcusClusterContainer container = ArcusClusterContainer.create(); - //then - assertThat(container).isNotNull(); - } - - @Test - void testCreateMethodWithPropsParam(){ + void createNotSharedClusterTest() throws ExecutionException, InterruptedException { //given - ArcusContainerProps props = new ArcusContainerProps.Builder().build(); - //when - ArcusClusterContainer container = ArcusClusterContainer.create(props); - //then - assertThat(container).isNotNull(); - } + ArcusClientPool arcusClient = ArcusClient.createArcusClientPool(clusterContainer.getHostPorts(), + "test", new ConnectionFactoryBuilder(), 2); - @Test - void testCreateMethodWithImageNameParam() { - //given - DockerImageName imageName = DockerImageName.parse("jam2in/arcus-memcached:develop"); //when - ArcusClusterContainer container = ArcusClusterContainer.create(imageName); - //then - assertThat(container).isNotNull(); - } + OperationFuture set = arcusClient.set("test", 10, "testValue"); - @Test - void testCreateMethodWithImageNameAndPropsParams() { - //given - DockerImageName imageName = DockerImageName.parse("jam2in/arcus-memcached:develop"); - ArcusContainerProps props = new ArcusContainerProps.Builder().build(); - //when - ArcusClusterContainer container = ArcusClusterContainer.create(imageName, props); //then - assertThat(container).isNotNull(); + assertThat(clusterContainer.isCreated()).isTrue(); + assertThat(clusterContainer.isRunning()).isTrue(); + assertThat(set.get()).isTrue(); } } diff --git a/src/test/java/com/jam2in/arcus/testcontainers/ArcusClusterContainerTestOther.java b/src/test/java/com/jam2in/arcus/testcontainers/ArcusClusterContainerTestOther.java index f53c439..d5cffd4 100644 --- a/src/test/java/com/jam2in/arcus/testcontainers/ArcusClusterContainerTestOther.java +++ b/src/test/java/com/jam2in/arcus/testcontainers/ArcusClusterContainerTestOther.java @@ -20,7 +20,8 @@ class ArcusClusterContainerTestOther extends ArcusClusterTestBase { @Test void createArcusContainerSingle() throws ExecutionException, InterruptedException { //given - ArcusClientPool arcusClient = ArcusClient.createArcusClientPool("test", new ConnectionFactoryBuilder(), 2); + ArcusClientPool arcusClient = ArcusClient.createArcusClientPool(ARCUS_CLUSTER_CONTAINER.getHostPorts(), + "test", new ConnectionFactoryBuilder(), 2); //when OperationFuture set = arcusClient.set("test2", 10, "testValue2"); diff --git a/src/test/java/com/jam2in/arcus/testcontainers/ArcusClusterPortTest.java b/src/test/java/com/jam2in/arcus/testcontainers/ArcusClusterPortTest.java deleted file mode 100644 index 9e8f119..0000000 --- a/src/test/java/com/jam2in/arcus/testcontainers/ArcusClusterPortTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.jam2in.arcus.testcontainers; - -import java.util.concurrent.ExecutionException; - -import net.spy.memcached.ArcusClient; -import net.spy.memcached.ArcusClientPool; -import net.spy.memcached.ConnectionFactoryBuilder; -import net.spy.memcached.internal.OperationFuture; - -import org.junit.jupiter.api.Test; - -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; - -import static org.assertj.core.api.Assertions.assertThat; - -@Testcontainers -public class ArcusClusterPortTest { - - @Container - private ArcusClusterContainer arcusClusterContainer = ArcusClusterContainer - .create(ArcusContainerProps.builder() - .zkPort(2191) - .port(21211) - .build()); - - @Test - void customZkPortTest() throws ExecutionException, InterruptedException { - //given - ArcusClientPool arcusClient = ArcusClient - .createArcusClientPool("127.0.0.1:2191", "test", new ConnectionFactoryBuilder(), 3); - - //when - OperationFuture set = arcusClient.set("test", 10, "testValue"); - - //then - assertThat(arcusClusterContainer.isRunning()).isTrue(); - assertThat(set.get()).isTrue(); - } -} diff --git a/src/test/java/com/jam2in/arcus/testcontainers/ArcusContainerPropsTest.java b/src/test/java/com/jam2in/arcus/testcontainers/ArcusContainerPropsTest.java index 32d6444..ab46248 100644 --- a/src/test/java/com/jam2in/arcus/testcontainers/ArcusContainerPropsTest.java +++ b/src/test/java/com/jam2in/arcus/testcontainers/ArcusContainerPropsTest.java @@ -2,10 +2,14 @@ import org.junit.jupiter.api.Test; +import org.testcontainers.utility.DockerImageName; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; + public class ArcusContainerPropsTest { @Test @@ -107,83 +111,78 @@ void testMemorySize_whenNotSet() { } @Test - void testPort() { - int portNum = 15244; - ArcusContainerProps arcusContainerProps = ArcusContainerProps.builder() - .port(portNum) - .build(); - - assertEquals(portNum, arcusContainerProps.getPort()); + void testCreateMethodWithoutParams() { + //when + ArcusClusterContainer container = ArcusClusterContainer.create(); + //then + assertThat(container).isNotNull(); } @Test - void testPort_whenMax() { - Exception exception = assertThrows(IllegalArgumentException.class, () -> ArcusContainerProps.builder() - .port(65536) - .build()); - String expectedMessage = "Invalid port number."; - String actualMessage = exception.getMessage(); - - assertTrue(actualMessage.contains(expectedMessage)); + void testCreateMethodWithPropsParam(){ + //given + ArcusContainerProps props = new ArcusContainerProps.Builder().build(); + //when + ArcusClusterContainer container = ArcusClusterContainer.create(props); + //then + assertThat(container).isNotNull(); } @Test - void testPort_whenNegative() { - Exception exception = assertThrows(IllegalArgumentException.class, () -> ArcusContainerProps.builder() - .port(-1) - .build()); - - String expectedMessage = "Invalid port number."; - String actualMessage = exception.getMessage(); - - assertTrue(actualMessage.contains(expectedMessage)); + void testCreateMethodWithImageNameParam() { + //given + DockerImageName imageName = DockerImageName.parse("jam2in/arcus-memcached:develop"); + //when + ArcusClusterContainer container = ArcusClusterContainer.create(imageName); + //then + assertThat(container).isNotNull(); } @Test - void testPort_whenNotSet() { - ArcusContainerProps arcusContainerProps = ArcusContainerProps.builder() - .build(); - - assertEquals(11211, arcusContainerProps.getPort()); + void testCreateMethodWithImageNameAndPropsParams() { + //given + DockerImageName imageName = DockerImageName.parse("jam2in/arcus-memcached:develop"); + ArcusContainerProps props = new ArcusContainerProps.Builder().build(); + //when + ArcusClusterContainer container = ArcusClusterContainer.create(imageName, props); + //then + assertThat(container).isNotNull(); } @Test - void testZkPort() { - int zkPortNum = 5789; - ArcusContainerProps arcusContainerProps = ArcusContainerProps.builder() - .zkPort(zkPortNum) - .build(); + void createArcusContainerWithoutPropsTest() { + //given when + ArcusContainer arcusContainer = ArcusContainer.create(); - assertEquals(zkPortNum, arcusContainerProps.getZkPort()); + //then + assertThat(arcusContainer.getDockerImageName()) + .isEqualTo(ArcusContainer.DEFAULT_ARCUS_IMAGE_NAME.toString()); } @Test - void testZkPort_whenMax() { - Exception exception = assertThrows(IllegalArgumentException.class, () -> ArcusContainerProps.builder() - .zkPort(65536) - .build()); - String expectedMessage = "Invalid zookeeper port number."; - String actualMessage = exception.getMessage(); - - assertTrue(actualMessage.contains(expectedMessage)); - } + void createArcusContainerWithPropsTest() { + //given + ArcusContainerProps props = ArcusContainerProps.builder() + .memorySize(512) + .build(); - @Test - void testZkPort_whenNegative() { - Exception exception = assertThrows(IllegalArgumentException.class, () -> ArcusContainerProps.builder() - .zkPort(-1) - .build()); - String expectedMessage = "Invalid zookeeper port number."; - String actualMessage = exception.getMessage(); + //when + ArcusContainer arcusContainer = ArcusContainer.create(props); - assertTrue(actualMessage.contains(expectedMessage)); + //then + assertThat(arcusContainer.getDockerImageName()) + .isEqualTo(ArcusContainer.DEFAULT_ARCUS_IMAGE_NAME.toString()); } @Test - void testZkPort_whenNotSet() { - ArcusContainerProps arcusContainerProps = ArcusContainerProps.builder() - .build(); + void createArcusContainerWithImageNameTest() { + //given + DockerImageName imageName = DockerImageName.parse("jam2in/arcus-memcached:develop"); + + //when + ArcusContainer arcusContainer = ArcusContainer.create(imageName); - assertEquals(2181, arcusContainerProps.getZkPort()); + //then + assertThat(arcusContainer.getDockerImageName()).isEqualTo(imageName.toString()); } } diff --git a/src/test/java/com/jam2in/arcus/testcontainers/ArcusContainerTest.java b/src/test/java/com/jam2in/arcus/testcontainers/ArcusContainerTest.java index 8459eff..e6a5fa8 100644 --- a/src/test/java/com/jam2in/arcus/testcontainers/ArcusContainerTest.java +++ b/src/test/java/com/jam2in/arcus/testcontainers/ArcusContainerTest.java @@ -3,6 +3,7 @@ import java.io.IOException; import java.net.InetSocketAddress; import java.util.ArrayList; +import java.util.Arrays; import java.util.concurrent.ExecutionException; import net.spy.memcached.ArcusClient; @@ -12,7 +13,6 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.utility.DockerImageName; import static org.assertj.core.api.Assertions.assertThat; @@ -21,65 +21,24 @@ public class ArcusContainerTest { @Container private final ArcusContainer arcusContainer = ArcusContainer.create( - ArcusContainerProps.builder() - .port(11214) - .build()); + ArcusContainerProps.builder().build()); @Test void createArcusContainerSingle() throws IOException, ExecutionException, InterruptedException { //given - ArrayList list = new ArrayList<>(); - list.add(new InetSocketAddress("127.0.0.1", 11214)); - + ArcusClient arcusClient = new ArcusClient( + new DefaultConnectionFactory(), + new ArrayList<>(Arrays.asList( + new InetSocketAddress( + "127.0.0.1", + arcusContainer.getFirstMappedPort())))); //when - ArcusClient arcusClient = new ArcusClient(new DefaultConnectionFactory(), list); Boolean b = arcusClient.set("test", 10, "singleTestValue").get(); //then assertThat(arcusContainer.isRunning()).isTrue(); assertThat(arcusContainer.isCreated()).isTrue(); -// assertThat(arcusContainer.isHealthy()).isTrue(); assertThat(b).isTrue(); } - - @Test - void createArcusContainerWithoutPropsTest() { - //given - - //when - ArcusContainer arcusContainer = ArcusContainer.create(); - - //then - assertThat(arcusContainer.getDockerImageName()) - .isEqualTo(ArcusContainer.DEFAULT_ARCUS_IMAGE_NAME.toString()); - } - - @Test - void createArcusContainerWithPropsTest() { - //given - ArcusContainerProps props = ArcusContainerProps.builder() - .port(11221) - .memorySize(512) - .build(); - - //when - ArcusContainer arcusContainer = ArcusContainer.create(props); - - //then - assertThat(arcusContainer.getDockerImageName()) - .isEqualTo(ArcusContainer.DEFAULT_ARCUS_IMAGE_NAME.toString()); - } - - @Test - void createArcusContainerWithImageNameTest() { - //given - DockerImageName imageName = DockerImageName.parse("jam2in/arcus-memcached:develop"); - - //when - ArcusContainer arcusContainer = ArcusContainer.create(imageName); - - //then - assertThat(arcusContainer.getDockerImageName()).isEqualTo(imageName.toString()); - } }