This is an automated email from the ASF dual-hosted git repository. aldettinger pushed a commit to branch CAMEL-13342-JUNIT5-EXPLORATORY in repository https://gitbox.apache.org/repos/asf/camel.git
commit b744435a38afb8da591f4552b70f7de8b7230025 Author: aldettinger <aldettin...@gmail.com> AuthorDate: Thu Jul 4 11:35:54 2019 +0200 CAMEL-13342: Implemented a first version of a proof-of-concept for camel-testcontainers with JUnit 5 --- .../camel/component/consul/ConsulCatalogTest.java | 16 +-- .../component/consul/ConsulClientKeyValueTest.java | 7 +- .../component/consul/ConsulCoordinatesTest.java | 20 ++-- .../camel/component/consul/ConsulEventTest.java | 9 +- .../component/consul/ConsulEventWatchTest.java | 2 +- .../camel/component/consul/ConsulHealthTest.java | 14 +-- .../camel/component/consul/ConsulKeyValueTest.java | 7 +- .../component/consul/ConsulKeyValueWatchTest.java | 2 +- .../camel/component/consul/ConsulRegistryTest.java | 32 +++--- .../component/consul/ConsulRegistryUtilsTest.java | 6 +- .../camel/component/consul/ConsulSessionTest.java | 18 ++-- .../camel/component/consul/ConsulTestSupport.java | 17 ++-- .../cloud/ConsulDefaultServiceCallRouteTest.java | 2 +- .../cloud/ConsulRibbonServiceCallRouteTest.java | 2 +- .../ConsulServiceCallWithRegistrationTest.java | 60 ++++++----- .../consul/cloud/ConsulServiceDiscoveryTest.java | 5 +- .../cloud/ConsulServiceRegistrationTestBase.java | 5 +- .../consul/cloud/ConsulServiceRegistryTest.java | 4 +- .../ConsulClusteredRoutePolicyFactoryTest.java | 14 +-- .../cluster/ConsulClusteredRoutePolicyTest.java | 14 +-- .../component/consul/cluster/ConsulMasterTest.java | 14 +-- components/camel-testcontainers/pom.xml | 6 +- .../testcontainers/ContainerAwareTestSupport.java | 112 +++++++++++++++++++++ .../ContainerAwareTestSupportIT.java | 54 ++++++++++ 24 files changed, 315 insertions(+), 127 deletions(-) diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCatalogTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCatalogTest.java index d96305b..097daec 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCatalogTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCatalogTest.java @@ -21,8 +21,8 @@ import java.util.List; import com.orbitz.consul.model.health.Node; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.endpoint.ConsulCatalogActions; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; public class ConsulCatalogTest extends ConsulTestSupport { @@ -34,9 +34,9 @@ public class ConsulCatalogTest extends ConsulTestSupport { .to("direct:consul") .request(List.class); - Assert.assertFalse(ref.isEmpty()); - Assert.assertFalse(res.isEmpty()); - Assert.assertEquals(ref, res); + Assertions.assertFalse(ref.isEmpty()); + Assertions.assertFalse(res.isEmpty()); + Assertions.assertEquals(ref, res); } @Test @@ -47,9 +47,9 @@ public class ConsulCatalogTest extends ConsulTestSupport { .to("direct:consul") .request(List.class); - Assert.assertFalse(ref.isEmpty()); - Assert.assertFalse(res.isEmpty()); - Assert.assertEquals(ref, res); + Assertions.assertFalse(ref.isEmpty()); + Assertions.assertFalse(res.isEmpty()); + Assertions.assertEquals(ref, res); } @Override diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulClientKeyValueTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulClientKeyValueTest.java index ef6cc27..0835d8c 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulClientKeyValueTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulClientKeyValueTest.java @@ -24,7 +24,8 @@ import org.apache.camel.BindToRegistry; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.endpoint.ConsulKeyValueActions; import org.apache.camel.component.mock.MockEndpoint; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; public class ConsulClientKeyValueTest extends ConsulTestSupport { @@ -49,8 +50,8 @@ public class ConsulClientKeyValueTest extends ConsulTestSupport { Optional<String> keyVal = getConsul().keyValueClient().getValueAsString(key); - assertTrue(keyVal.isPresent()); - assertEquals(val, keyVal.get()); + Assertions.assertTrue(keyVal.isPresent()); + Assertions.assertEquals(val, keyVal.get()); } @BindToRegistry("consulClient") diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCoordinatesTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCoordinatesTest.java index 1b9d280..fc8a855 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCoordinatesTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCoordinatesTest.java @@ -22,9 +22,9 @@ import com.orbitz.consul.model.coordinate.Coordinate; import com.orbitz.consul.model.coordinate.Datacenter; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.endpoint.ConsulCoordinatesActions; -import org.junit.Assert; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; public class ConsulCoordinatesTest extends ConsulTestSupport { @@ -36,12 +36,12 @@ public class ConsulCoordinatesTest extends ConsulTestSupport { .to("direct:consul") .request(List.class); - Assert.assertFalse(ref.isEmpty()); - Assert.assertFalse(res.isEmpty()); - Assert.assertEquals(ref, res); + Assertions.assertFalse(ref.isEmpty()); + Assertions.assertFalse(res.isEmpty()); + Assertions.assertEquals(ref, res); } - @Ignore("Disabled as it seems that nodes is always 0") + @Disabled("Disabled as it seems that nodes is always 0") @Test public void testNodes() throws Exception { List<Coordinate> ref = getConsul().coordinateClient().getNodes(); @@ -50,9 +50,9 @@ public class ConsulCoordinatesTest extends ConsulTestSupport { .to("direct:consul") .request(List.class); - Assert.assertFalse(ref.isEmpty()); - Assert.assertFalse(res.isEmpty()); - Assert.assertEquals(ref, res); + Assertions.assertFalse(ref.isEmpty()); + Assertions.assertFalse(res.isEmpty()); + Assertions.assertEquals(ref, res); } @Override diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventTest.java index 6daed84..5050343 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventTest.java @@ -23,7 +23,8 @@ import com.orbitz.consul.model.event.Event; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.endpoint.ConsulEventActions; import org.apache.camel.component.mock.MockEndpoint; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; public class ConsulEventTest extends ConsulTestSupport { @@ -48,9 +49,9 @@ public class ConsulEventTest extends ConsulTestSupport { EventResponse response = getConsul().eventClient().listEvents(key); List<Event> events = response.getEvents(); - assertFalse(events.isEmpty()); - assertTrue(events.get(0).getPayload().isPresent()); - assertEquals(val, events.get(0).getPayload().get()); + Assertions.assertFalse(events.isEmpty()); + Assertions.assertTrue(events.get(0).getPayload().isPresent()); + Assertions.assertEquals(val, events.get(0).getPayload().get()); } @Override diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventWatchTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventWatchTest.java index 8550295..b546e1c 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventWatchTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventWatchTest.java @@ -21,7 +21,7 @@ import java.util.List; import com.orbitz.consul.EventClient; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; -import org.junit.Test; +import org.junit.jupiter.api.Test; public class ConsulEventWatchTest extends ConsulTestSupport { private String key; diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulHealthTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulHealthTest.java index 79e2cfe..79855b7 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulHealthTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulHealthTest.java @@ -27,8 +27,8 @@ import com.orbitz.consul.model.agent.Registration; import com.orbitz.consul.model.health.ServiceHealth; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.endpoint.ConsulHealthActions; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; public class ConsulHealthTest extends ConsulTestSupport { private AgentClient client; @@ -85,14 +85,14 @@ public class ConsulHealthTest extends ConsulTestSupport { .to("direct:consul") .request(List.class); - Assert.assertEquals(2, ref.size()); - Assert.assertEquals(2, res.size()); - Assert.assertEquals(ref, res); + Assertions.assertEquals(2, ref.size()); + Assertions.assertEquals(2, res.size()); + Assertions.assertEquals(ref, res); - assertTrue(registrations.stream().anyMatch( + Assertions.assertTrue(registrations.stream().anyMatch( r -> r.getPort().isPresent() && r.getPort().get() == res.get(0).getService().getPort() && r.getId().equalsIgnoreCase(res.get(0).getService().getId()) )); - assertTrue(registrations.stream().anyMatch( + Assertions.assertTrue(registrations.stream().anyMatch( r -> r.getPort().isPresent() && r.getPort().get() == res.get(1).getService().getPort() && r.getId().equalsIgnoreCase(res.get(1).getService().getId()) )); } diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueTest.java index dc03889..1a61f29 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueTest.java @@ -21,7 +21,8 @@ import java.util.Optional; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.endpoint.ConsulKeyValueActions; import org.apache.camel.component.mock.MockEndpoint; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; public class ConsulKeyValueTest extends ConsulTestSupport { @@ -46,8 +47,8 @@ public class ConsulKeyValueTest extends ConsulTestSupport { Optional<String> keyVal = getConsul().keyValueClient().getValueAsString(key); - assertTrue(keyVal.isPresent()); - assertEquals(val, keyVal.get()); + Assertions.assertTrue(keyVal.isPresent()); + Assertions.assertEquals(val, keyVal.get()); } @Override diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueWatchTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueWatchTest.java index 716e25e..7dcfab9 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueWatchTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueWatchTest.java @@ -22,7 +22,7 @@ import java.util.Random; import com.orbitz.consul.KeyValueClient; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; -import org.junit.Test; +import org.junit.jupiter.api.Test; public class ConsulKeyValueWatchTest extends ConsulTestSupport { private String key; diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryTest.java index 67cc2fd..68e94fd 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryTest.java @@ -23,14 +23,14 @@ import java.util.Set; import com.orbitz.consul.Consul; import org.apache.camel.NoSuchBeanException; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.testcontainers.containers.GenericContainer; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; /** * Unit test for Camel Registry implementation for Consul @@ -49,7 +49,7 @@ public class ConsulRegistryTest implements Serializable { } } - @BeforeClass + @BeforeAll public static void setUp() { container = ConsulTestSupport.consulContainer(); container.start(); @@ -57,7 +57,7 @@ public class ConsulRegistryTest implements Serializable { registry = new ConsulRegistry(container.getContainerIpAddress(), container.getMappedPort(Consul.DEFAULT_HTTP_PORT)); } - @AfterClass + @AfterAll public static void tearDown() { container.stop(); } @@ -67,7 +67,7 @@ public class ConsulRegistryTest implements Serializable { registry.put("stringTestKey", "stringValue"); String result = (String) registry.lookupByName("stringTestKey"); registry.remove("stringTestKey"); - assertNotNull(result); + Assertions.assertNotNull(result); assertEquals("stringValue", result); } @@ -77,7 +77,7 @@ public class ConsulRegistryTest implements Serializable { registry.put("uniqueKey", "stringValueTwo"); String result = (String) registry.lookupByName("uniqueKey"); registry.remove("uniqueKey"); - assertNotNull(result); + Assertions.assertNotNull(result); assertEquals("stringValueTwo", result); } @@ -86,7 +86,7 @@ public class ConsulRegistryTest implements Serializable { registry.put("namedKey", "namedValue"); String result = (String) registry.lookupByName("namedKey"); registry.remove("namedKey"); - assertNotNull(result); + Assertions.assertNotNull(result); assertEquals("namedValue", result); } @@ -104,7 +104,7 @@ public class ConsulRegistryTest implements Serializable { registry.put("testClass", consulTestClass); ConsulTestClass consulTestClassClone = registry.lookupByNameAndType("testClass", consulTestClass.getClass()); registry.remove("testClass"); - assertNotNull(consulTestClassClone); + Assertions.assertNotNull(consulTestClassClone); assertEquals(consulTestClass.getClass(), consulTestClassClone.getClass()); } @@ -128,7 +128,7 @@ public class ConsulRegistryTest implements Serializable { registry.remove("testClassOne"); registry.remove("testClassTwo"); HashMap<String, ConsulTestClass> emptyHashMap = new HashMap<>(); - assertNotNull(consulTestClassMap); + Assertions.assertNotNull(consulTestClassMap); assertEquals(consulTestClassMap.getClass(), emptyHashMap.getClass()); assertEquals(2, consulTestClassMap.size()); } @@ -153,7 +153,7 @@ public class ConsulRegistryTest implements Serializable { ConsulTestClass classTwo = new ConsulTestClass(); registry.put("classTwo", classTwo); Set<? extends ConsulTestClass> results = registry.findByType(classOne.getClass()); - assertNotNull(results); + Assertions.assertNotNull(results); HashSet<ConsulTestClass> hashSet = new HashSet<>(); registry.remove("classOne"); registry.remove("classTwo"); @@ -165,8 +165,8 @@ public class ConsulRegistryTest implements Serializable { } - @Test(expected = NoSuchBeanException.class) + @Test public void deleteNonExisting() { - registry.remove("nonExisting"); + Assertions.assertThrows(NoSuchBeanException.class, () -> registry.remove("nonExisting")); } } diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java index f56045d..221e569 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java @@ -21,10 +21,10 @@ import java.util.Arrays; import java.util.List; import org.apache.camel.component.consul.ConsulRegistry.ConsulRegistryUtils; -import org.junit.Test; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; /** * @author <a href="https://github.com/ppalaga">Peter Palaga</a> diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulSessionTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulSessionTest.java index 63fa765..300feaa 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulSessionTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulSessionTest.java @@ -24,8 +24,8 @@ import com.orbitz.consul.model.session.SessionCreatedResponse; import com.orbitz.consul.model.session.SessionInfo; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.endpoint.ConsulSessionActions; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; public class ConsulSessionTest extends ConsulTestSupport { @@ -40,8 +40,8 @@ public class ConsulSessionTest extends ConsulTestSupport { .to("direct:consul") .request(List.class); - Assert.assertEquals(sessions, list.size()); - Assert.assertFalse(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name))); + Assertions.assertEquals(sessions, list.size()); + Assertions.assertFalse(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name))); } SessionCreatedResponse res = fluentTemplate() @@ -50,7 +50,7 @@ public class ConsulSessionTest extends ConsulTestSupport { .to("direct:consul") .request(SessionCreatedResponse.class); - Assert.assertNotNull(res.getId()); + Assertions.assertNotNull(res.getId()); { List<SessionInfo> list = fluentTemplate() @@ -58,8 +58,8 @@ public class ConsulSessionTest extends ConsulTestSupport { .to("direct:consul") .request(List.class); - Assert.assertEquals(sessions + 1, list.size()); - Assert.assertTrue(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name))); + Assertions.assertEquals(sessions + 1, list.size()); + Assertions.assertTrue(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name))); } { @@ -74,8 +74,8 @@ public class ConsulSessionTest extends ConsulTestSupport { .to("direct:consul") .request(List.class); - Assert.assertEquals(sessions, list.size()); - Assert.assertFalse(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name))); + Assertions.assertEquals(sessions, list.size()); + Assertions.assertFalse(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name))); } } diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulTestSupport.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulTestSupport.java index bc1d6cd..a5e8831 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulTestSupport.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulTestSupport.java @@ -24,10 +24,10 @@ import com.orbitz.consul.Consul; import com.orbitz.consul.KeyValueClient; import org.apache.camel.BindToRegistry; -import org.apache.camel.test.testcontainers.ContainerAwareTestSupport; +import org.apache.camel.test.junit5.testcontainers.ContainerAwareTestSupport; import org.apache.camel.test.testcontainers.Wait; -import org.junit.Rule; -import org.junit.rules.TestName; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.TestInfo; import org.testcontainers.containers.GenericContainer; public class ConsulTestSupport extends ContainerAwareTestSupport { @@ -35,8 +35,13 @@ public class ConsulTestSupport extends ContainerAwareTestSupport { public static final String CONTAINER_NAME = "consul"; public static final String KV_PREFIX = "/camel"; - @Rule - public final TestName testName = new TestName(); + protected String testName; + + @BeforeEach + public void setUp(TestInfo testInfo) throws Exception { + super.setUp(); + testName = testInfo.getDisplayName(); + } @BindToRegistry("consul") public ConsulComponent getConsulComponent() { @@ -69,7 +74,7 @@ public class ConsulTestSupport extends ContainerAwareTestSupport { } protected String generateKey() { - return KV_PREFIX + "/" + testName.getMethodName() + "/" + generateRandomString(); + return KV_PREFIX + "/" + testName + "/" + generateRandomString(); } protected String consulUrl() { diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulDefaultServiceCallRouteTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulDefaultServiceCallRouteTest.java index c21ed04..1f054d0 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulDefaultServiceCallRouteTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulDefaultServiceCallRouteTest.java @@ -26,7 +26,7 @@ import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.ConsulTestSupport; import org.apache.camel.test.AvailablePortFinder; -import org.junit.Test; +import org.junit.jupiter.api.Test; public class ConsulDefaultServiceCallRouteTest extends ConsulTestSupport { private static final String SERVICE_NAME = "http-service"; diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulRibbonServiceCallRouteTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulRibbonServiceCallRouteTest.java index eb7c769..ec26483 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulRibbonServiceCallRouteTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulRibbonServiceCallRouteTest.java @@ -26,7 +26,7 @@ import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.ConsulTestSupport; import org.apache.camel.test.AvailablePortFinder; -import org.junit.Test; +import org.junit.jupiter.api.Test; public class ConsulRibbonServiceCallRouteTest extends ConsulTestSupport { private static final String SERVICE_NAME = "http-service"; diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceCallWithRegistrationTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceCallWithRegistrationTest.java index e7f6a80..9cb0334 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceCallWithRegistrationTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceCallWithRegistrationTest.java @@ -23,9 +23,12 @@ import org.apache.camel.CamelExecutionException; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.ConsulTestSupport; import org.apache.camel.impl.cloud.ServiceRegistrationRoutePolicy; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; import org.springframework.util.SocketUtils; +import static org.junit.jupiter.api.Assertions.assertThrows; + public class ConsulServiceCallWithRegistrationTest extends ConsulTestSupport { private static final String SERVICE_HOST = "localhost"; @@ -90,43 +93,36 @@ public class ConsulServiceCallWithRegistrationTest extends ConsulTestSupport { context.start(); - assertEquals("ping on " + port, template.requestBody("direct:start", "ping", String.class)); + Assertions.assertEquals("ping on " + port, template.requestBody("direct:start", "ping", String.class)); } - @Test(expected = CamelExecutionException.class) + @Test public void testServiceCallFailure() throws Exception { - final int port = SocketUtils.findAvailableTcpPort(); - final String serviceId = UUID.randomUUID().toString(); - final String serviceName = UUID.randomUUID().toString(); - context.addRoutes(new RouteBuilder() { - @Override - public void configure() throws Exception { - // context path is had coded so it should fail as it not exposed - // by jetty - from("direct:start") - .serviceCall() - .name(serviceName + "/bad/path") - .component("http") - .defaultLoadBalancer() - .consulServiceDiscovery() - .url(consulUrl()) - .end() - .end() - .log("${body}"); + assertThrows(CamelExecutionException.class, () -> { - fromF("undertow:http://%s:%d/service/path", SERVICE_HOST, port) - .routeId(serviceId) - .routeGroup(serviceName) - .routePolicy(new ServiceRegistrationRoutePolicy()) - .transform() - .simple("${in.body} on " + port); - } - }); + final int port = SocketUtils.findAvailableTcpPort(); + final String serviceId = UUID.randomUUID().toString(); + final String serviceName = UUID.randomUUID().toString(); - context.start(); + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + // context path is had coded so it should fail as it not + // exposed + // by jetty + from("direct:start").serviceCall().name(serviceName + "/bad/path").component("http").defaultLoadBalancer().consulServiceDiscovery().url(consulUrl()).end().end() + .log("${body}"); - template.requestBody("direct:start", "ping", String.class); - fail("Should have failed"); + fromF("undertow:http://%s:%d/service/path", SERVICE_HOST, port).routeId(serviceId).routeGroup(serviceName).routePolicy(new ServiceRegistrationRoutePolicy()) + .transform().simple("${in.body} on " + port); + } + }); + + context.start(); + + template.requestBody("direct:start", "ping", String.class); + Assertions.fail("Should have failed"); + }); } } diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceDiscoveryTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceDiscoveryTest.java index 8023c29..196500f 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceDiscoveryTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceDiscoveryTest.java @@ -29,9 +29,12 @@ import org.apache.camel.cloud.ServiceDiscovery; import org.apache.camel.component.consul.ConsulConfiguration; import org.apache.camel.component.consul.ConsulTestSupport; import org.assertj.core.api.Assertions; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.springframework.util.SocketUtils; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + public class ConsulServiceDiscoveryTest extends ConsulTestSupport { private AgentClient client; private List<Registration> registrations; diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistrationTestBase.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistrationTestBase.java index b9a3bed..231cf88 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistrationTestBase.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistrationTestBase.java @@ -28,9 +28,12 @@ import com.orbitz.consul.model.health.ServiceHealth; import org.apache.camel.CamelContext; import org.apache.camel.cloud.ServiceDefinition; import org.apache.camel.component.consul.ConsulTestSupport; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.springframework.util.SocketUtils; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + public abstract class ConsulServiceRegistrationTestBase extends ConsulTestSupport { protected static final String SERVICE_ID = UUID.randomUUID().toString(); protected static final String SERVICE_NAME = "my-service"; diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistryTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistryTest.java index 2c7f574..b4e0df0 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistryTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistryTest.java @@ -24,7 +24,9 @@ import com.orbitz.consul.model.catalog.CatalogService; import com.orbitz.consul.model.health.ServiceHealth; import org.apache.camel.component.consul.ConsulTestSupport; import org.apache.camel.impl.cloud.DefaultServiceDefinition; -import org.junit.Test; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; public class ConsulServiceRegistryTest extends ConsulTestSupport { @Override diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java index bdd59df..7d996d5 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java @@ -31,16 +31,18 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.ConsulTestSupport; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory; -import org.junit.Assert; -import org.junit.ClassRule; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testcontainers.containers.GenericContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +@Testcontainers public class ConsulClusteredRoutePolicyFactoryTest { - @ClassRule + @Container public static GenericContainer container = ConsulTestSupport.consulContainer(); private static final Logger LOGGER = LoggerFactory.getLogger(ConsulClusteredRoutePolicyFactoryTest.class); @@ -62,8 +64,8 @@ public class ConsulClusteredRoutePolicyFactoryTest { LATCH.await(1, TimeUnit.MINUTES); SCHEDULER.shutdownNow(); - Assert.assertEquals(CLIENTS.size(), RESULTS.size()); - Assert.assertTrue(RESULTS.containsAll(CLIENTS)); + Assertions.assertEquals(CLIENTS.size(), RESULTS.size()); + Assertions.assertTrue(RESULTS.containsAll(CLIENTS)); } // ************************************ diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java index cb06bb6..a7867d3 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java @@ -31,16 +31,18 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.ConsulTestSupport; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.impl.cluster.ClusteredRoutePolicy; -import org.junit.Assert; -import org.junit.ClassRule; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testcontainers.containers.GenericContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +@Testcontainers public class ConsulClusteredRoutePolicyTest { - @ClassRule + @Container public static GenericContainer container = ConsulTestSupport.consulContainer(); private static final Logger LOGGER = LoggerFactory.getLogger(ConsulClusteredRoutePolicyTest.class); @@ -62,8 +64,8 @@ public class ConsulClusteredRoutePolicyTest { LATCH.await(1, TimeUnit.MINUTES); SCHEDULER.shutdownNow(); - Assert.assertEquals(CLIENTS.size(), RESULTS.size()); - Assert.assertTrue(RESULTS.containsAll(CLIENTS)); + Assertions.assertEquals(CLIENTS.size(), RESULTS.size()); + Assertions.assertTrue(RESULTS.containsAll(CLIENTS)); } // ************************************ diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulMasterTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulMasterTest.java index 90129b2..0a609ff 100644 --- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulMasterTest.java +++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulMasterTest.java @@ -30,16 +30,18 @@ import com.orbitz.consul.Consul; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.consul.ConsulTestSupport; import org.apache.camel.impl.DefaultCamelContext; -import org.junit.Assert; -import org.junit.ClassRule; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testcontainers.containers.GenericContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +@Testcontainers public class ConsulMasterTest { - @ClassRule + @Container public static GenericContainer container = ConsulTestSupport.consulContainer(); private static final Logger LOGGER = LoggerFactory.getLogger(ConsulMasterTest.class); @@ -61,8 +63,8 @@ public class ConsulMasterTest { LATCH.await(1, TimeUnit.MINUTES); SCHEDULER.shutdownNow(); - Assert.assertEquals(CLIENTS.size(), RESULTS.size()); - Assert.assertTrue(RESULTS.containsAll(CLIENTS)); + Assertions.assertEquals(CLIENTS.size(), RESULTS.size()); + Assertions.assertTrue(RESULTS.containsAll(CLIENTS)); } // ************************************ diff --git a/components/camel-testcontainers/pom.xml b/components/camel-testcontainers/pom.xml index 19e6356..0a51834 100644 --- a/components/camel-testcontainers/pom.xml +++ b/components/camel-testcontainers/pom.xml @@ -49,7 +49,11 @@ <artifactId>testcontainers</artifactId> <version>${testcontainers-version}</version> </dependency> - + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>junit-jupiter</artifactId> + <version>${testcontainers-version}</version> + </dependency> <!-- optional dependencies for running tests --> <dependency> <groupId>org.assertj</groupId> diff --git a/components/camel-testcontainers/src/main/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupport.java b/components/camel-testcontainers/src/main/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupport.java new file mode 100644 index 0000000..c5381ff --- /dev/null +++ b/components/camel-testcontainers/src/main/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupport.java @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.test.junit5.testcontainers; + +import java.util.Collections; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.TimeUnit; + +import org.apache.camel.CamelContext; +import org.apache.camel.component.properties.PropertiesComponent; +import org.apache.camel.test.junit5.CamelTestSupport; +import org.apache.camel.test.testcontainers.ContainerPropertiesFunction; +import org.apache.camel.test.testcontainers.Containers; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.Network; + +public class ContainerAwareTestSupport extends CamelTestSupport { + private List<GenericContainer<?>> containers = new CopyOnWriteArrayList<>(); + + // ****************** + // Setup + // ****************** + + @Override + protected void setupResources() throws Exception { + super.setupResources(); + + containers.clear(); + containers.addAll(createContainers()); + + final Network network = containerNetwork(); + final long timeout = containersStartupTimeout(); + + Containers.start(containers, network, timeout); + } + + @Override + protected void cleanupResources() throws Exception { + super.cleanupResources(); + + Containers.stop(containers, containerShutdownTimeout()); + } + + @Override + protected CamelContext createCamelContext() throws Exception { + final CamelContext context = super.createCamelContext(); + final PropertiesComponent pc = context.getComponent("properties", PropertiesComponent.class); + + pc.addFunction(new ContainerPropertiesFunction(containers)); + + return context; + } + + // ****************** + // Containers set-up + // ****************** + + protected GenericContainer<?> createContainer() { + return null; + } + + protected List<GenericContainer<?>> createContainers() { + GenericContainer<?> container = createContainer(); + + return container == null + ? Collections.emptyList() + : Collections.singletonList(container); + } + + protected long containersStartupTimeout() { + return TimeUnit.MINUTES.toSeconds(1); + } + + protected long containerShutdownTimeout() { + return TimeUnit.MINUTES.toSeconds(1); + } + + protected Network containerNetwork() { + return null; + } + + // ****************** + // Helpers + // ****************** + + protected GenericContainer<?> getContainer(String containerName) { + return Containers.lookup(containers, containerName); + } + + protected String getContainerHost(String containerName) { + return getContainer(containerName).getContainerIpAddress(); + } + + protected int getContainerPort(String containerName, int originalPort) { + return getContainer(containerName).getMappedPort(originalPort); + } +} diff --git a/components/camel-testcontainers/src/test/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupportIT.java b/components/camel-testcontainers/src/test/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupportIT.java new file mode 100644 index 0000000..1a608ea --- /dev/null +++ b/components/camel-testcontainers/src/test/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupportIT.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.test.junit5.testcontainers; + +import org.apache.camel.test.testcontainers.Wait; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.GenericContainer; + +public class ContainerAwareTestSupportIT extends ContainerAwareTestSupport { + @Test + public void testPropertyPlaceholders() throws Exception { + final GenericContainer<?> container = getContainer("myconsul"); + + final String host = context.resolvePropertyPlaceholders("{{container:host:myconsul}}"); + Assertions.assertThat(host).isEqualTo(container.getContainerIpAddress()); + + final String port = context.resolvePropertyPlaceholders("{{container:port:8500@myconsul}}"); + Assertions.assertThat(port).isEqualTo("" + container.getMappedPort(8500)); + } + + @Override + protected GenericContainer<?> createContainer() { + return new GenericContainer<>("consul:1.5.1") + .withNetworkAliases("myconsul") + .withExposedPorts(8500) + .waitingFor(Wait.forLogMessageContaining("Synced node info", 1)) + .withCommand( + "agent", + "-dev", + "-server", + "-bootstrap", + "-client", + "0.0.0.0", + "-log-level", + "trace" + ); + } + +}