Add tests to example projects apache/camel-quarkus#1501
diff --git a/file-split-log-xml/pom.xml b/file-split-log-xml/pom.xml
index c1f210e..309985a 100644
--- a/file-split-log-xml/pom.xml
+++ b/file-split-log-xml/pom.xml
@@ -67,7 +67,7 @@
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-timer</artifactId>
+ <artifactId>camel-quarkus-microprofile-health</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
@@ -75,12 +75,28 @@
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-timer</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-xml-io</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-file</artifactId>
</dependency>
+
+ <!-- Test -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit5</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
@@ -240,6 +256,27 @@
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <systemPropertyVariables>
+ <quarkus.package.type>${quarkus.package.type}</quarkus.package.type>
+ </systemPropertyVariables>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</profile>
</profiles>
diff --git a/file-split-log-xml/src/main/resources/application.properties b/file-split-log-xml/src/main/resources/application.properties
index ab79f43..76bf7d8 100644
--- a/file-split-log-xml/src/main/resources/application.properties
+++ b/file-split-log-xml/src/main/resources/application.properties
@@ -18,8 +18,7 @@
# Quarkus
#
quarkus.banner.enabled = false
-
-quarkus.log.category."org.apache.camel.main".level = DEBUG
+quarkus.log.file.enable = true
#
# Camel
@@ -29,4 +28,3 @@
camel.file.route.folder = src/main/resources/file
camel.file.repeat.interval = 30000
camel.file.split.parallel = false
-
diff --git a/http-log/src/main/java/org/acme/http/ExampleResource.java b/file-split-log-xml/src/test/java/org/acme/filereader/FileSplitLogXmlIT.java
similarity index 64%
copy from http-log/src/main/java/org/acme/http/ExampleResource.java
copy to file-split-log-xml/src/test/java/org/acme/filereader/FileSplitLogXmlIT.java
index 1db4c3e..864e86a 100644
--- a/http-log/src/main/java/org/acme/http/ExampleResource.java
+++ b/file-split-log-xml/src/test/java/org/acme/filereader/FileSplitLogXmlIT.java
@@ -14,27 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.acme.http;
+package org.acme.filereader;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import io.quarkus.test.junit.NativeImageTest;
-/**
- * A JAX-RS resource
- */
-@Path("/hello")
-public class ExampleResource {
+@NativeImageTest
+class FileSplitLogXmlIT extends FileSplitLogXmlTest {
- /**
- * A JAX-RS endpoint always returning {@code "hello"}
- *
- * @return {@code "hello"}
- */
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String hello() {
- return "hello";
- }
}
diff --git a/file-split-log-xml/src/test/java/org/acme/filereader/FileSplitLogXmlTest.java b/file-split-log-xml/src/test/java/org/acme/filereader/FileSplitLogXmlTest.java
new file mode 100644
index 0000000..d3a502c
--- /dev/null
+++ b/file-split-log-xml/src/test/java/org/acme/filereader/FileSplitLogXmlTest.java
@@ -0,0 +1,50 @@
+/*
+ * 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.acme.filereader;
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Test;
+
+import static org.awaitility.Awaitility.await;
+
+@QuarkusTest
+public class FileSplitLogXmlTest {
+
+ @Test
+ public void testFileSplitLogXml() {
+ // Verify that all 1000 items were output to the log
+ File quarkusLogFile = getQuarkusLogFile();
+ await().atMost(10L, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> {
+ String log = FileUtils.readFileToString(quarkusLogFile, StandardCharsets.UTF_8);
+ return log.contains("line 1000 contains: Anna,COOKE");
+ });
+ }
+
+ private File getQuarkusLogFile() {
+ String pathPrefix = "target";
+ String packageType = System.getProperty("quarkus.package.type");
+ if (packageType != null && packageType.equals("native")) {
+ pathPrefix += "/target";
+ }
+ return new File(pathPrefix + "/quarkus.log");
+ }
+}
diff --git a/health/pom.xml b/health/pom.xml
index b798a6d..177fccd 100644
--- a/health/pom.xml
+++ b/health/pom.xml
@@ -62,11 +62,6 @@
<dependencies>
<dependency>
- <groupId>io.quarkus</groupId>
- <artifactId>quarkus-resteasy</artifactId>
- </dependency>
-
- <dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-bean</artifactId>
</dependency>
@@ -80,15 +75,26 @@
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-microprofile-health</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-netty</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-timer</artifactId>
</dependency>
+
+ <!-- Test -->
<dependency>
- <groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-microprofile-health</artifactId>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit5</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.rest-assured</groupId>
+ <artifactId>rest-assured</artifactId>
</dependency>
</dependencies>
diff --git a/http-log/src/main/java/org/acme/http/ExampleResource.java b/health/src/test/java/org/acme/health/HealthIT.java
similarity index 64%
copy from http-log/src/main/java/org/acme/http/ExampleResource.java
copy to health/src/test/java/org/acme/health/HealthIT.java
index 1db4c3e..adacdc9 100644
--- a/http-log/src/main/java/org/acme/http/ExampleResource.java
+++ b/health/src/test/java/org/acme/health/HealthIT.java
@@ -14,27 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.acme.http;
+package org.acme.health;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import io.quarkus.test.junit.NativeImageTest;
-/**
- * A JAX-RS resource
- */
-@Path("/hello")
-public class ExampleResource {
-
- /**
- * A JAX-RS endpoint always returning {@code "hello"}
- *
- * @return {@code "hello"}
- */
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String hello() {
- return "hello";
- }
+@NativeImageTest
+class HealthIT extends HealthTest {
}
diff --git a/health/src/test/java/org/acme/health/HealthTest.java b/health/src/test/java/org/acme/health/HealthTest.java
new file mode 100644
index 0000000..c12c1e0
--- /dev/null
+++ b/health/src/test/java/org/acme/health/HealthTest.java
@@ -0,0 +1,40 @@
+/*
+ * 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.acme.health;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.containsInAnyOrder;
+
+@QuarkusTest
+public class HealthTest {
+
+ @Test
+ public void testHealth() throws InterruptedException {
+ RestAssured.get("/q/health")
+ .then()
+ .statusCode(200)
+ .body("status", is("UP"),
+ "checks.status", containsInAnyOrder("UP", "UP", "UP"),
+ "checks.name",
+ containsInAnyOrder("camel-readiness-checks", "camel-liveness-checks", "camel-context-check"),
+ "checks.data.contextStatus", containsInAnyOrder(null, null, "Started"));
+ }
+}
diff --git a/http-log/pom.xml b/http-log/pom.xml
index 7449d8d..a8208e7 100644
--- a/http-log/pom.xml
+++ b/http-log/pom.xml
@@ -62,10 +62,9 @@
<dependencies>
<dependency>
- <groupId>io.quarkus</groupId>
- <artifactId>quarkus-resteasy</artifactId>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-log</artifactId>
</dependency>
-
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-main</artifactId>
@@ -76,16 +75,28 @@
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-log</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-microprofile-health</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-microprofile-metrics</artifactId>
</dependency>
+
+ <!-- Test -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit5</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.rest-assured</groupId>
+ <artifactId>rest-assured</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
@@ -241,6 +252,27 @@
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <systemPropertyVariables>
+ <quarkus.package.type>${quarkus.package.type}</quarkus.package.type>
+ </systemPropertyVariables>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</profile>
</profiles>
diff --git a/http-log/src/main/resources/META-INF/resources/index.html b/http-log/src/main/resources/META-INF/resources/index.html
deleted file mode 100644
index cb44c76..0000000
--- a/http-log/src/main/resources/META-INF/resources/index.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<!--
-
- 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.
-
--->
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <title>code-with-quarkus - 1.0.0-SNAPSHOT</title>
- <style>
- h1, h2, h3, h4, h5, h6 {
- margin-bottom: 0.5rem;
- font-weight: 400;
- line-height: 1.5;
- }
-
- h1 {
- font-size: 2.5rem;
- }
-
- h2 {
- font-size: 2rem
- }
-
- h3 {
- font-size: 1.75rem
- }
-
- h4 {
- font-size: 1.5rem
- }
-
- h5 {
- font-size: 1.25rem
- }
-
- h6 {
- font-size: 1rem
- }
-
- .lead {
- font-weight: 300;
- font-size: 2rem;
- }
-
- .banner {
- font-size: 2.7rem;
- margin: 0;
- padding: 2rem 1rem;
- background-color: #00A1E2;
- color: white;
- }
-
- body {
- margin: 0;
- font-family: -apple-system, system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
- }
-
- code {
- font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
- font-size: 87.5%;
- color: #e83e8c;
- word-break: break-word;
- }
-
- .left-column {
- padding: .75rem;
- max-width: 75%;
- min-width: 55%;
- }
-
- .right-column {
- padding: .75rem;
- max-width: 25%;
- }
-
- .container {
- display: flex;
- width: 100%;
- }
-
- li {
- margin: 0.75rem;
- }
-
- .right-section {
- margin-left: 1rem;
- padding-left: 0.5rem;
- }
-
- .right-section h3 {
- padding-top: 0;
- font-weight: 200;
- }
-
- .right-section ul {
- border-left: 0.3rem solid #00A1E2;
- list-style-type: none;
- padding-left: 0;
- }
-
- </style>
-</head>
-<body>
-
-<div class="banner lead">
- Your new Cloud-Native application is ready!
-</div>
-
-<div class="container">
- <div class="left-column">
- <p class="lead"> Congratulations, you have created a new Quarkus application.</p>
-
- <h2>Why do you see this?</h2>
-
- <p>This page is served by Quarkus. The source is in
- <code>src/main/resources/META-INF/resources/index.html</code>.</p>
-
- <h2>What can I do from here?</h2>
-
- <p>If not already done, run the application in <em>dev mode</em> using: <code>mvn compile quarkus:dev</code>.
- </p>
- <ul>
- <li>Add REST resources, Servlets, functions and other services in <code>src/main/java</code>.</li>
- <li>Your static assets are located in <code>src/main/resources/META-INF/resources</code>.</li>
- <li>Configure your application in <code>src/main/resources/application.properties</code>.
- </li>
- </ul>
-
- <h2>How do I get rid of this page?</h2>
- <p>Just delete the <code>src/main/resources/META-INF/resources/index.html</code> file.</p>
- </div>
- <div class="right-column">
- <div class="right-section">
- <h3>Application</h3>
- <ul>
- <li>GroupId: org.apache.camel.quarkus</li>
- <li>ArtifactId: http-log</li>
- <li>Version: 1.0.0-SNAPSHOT</li>
- <li>Quarkus Version: 1.3.2.Final</li>
- </ul>
- </div>
- <div class="right-section">
- <h3>Next steps</h3>
- <ul>
- <li><a href="https://quarkus.io/guides/maven-tooling.html" target="_blank">Setup your IDE</a></li>
- <li><a href="https://quarkus.io/guides/getting-started.html" target="_blank">Getting started</a></li>
- <li><a href="https://quarkus.io" target="_blank">Quarkus Web Site</a></li>
- </ul>
- </div>
- </div>
-</div>
-
-
-</body>
-</html>
\ No newline at end of file
diff --git a/http-log/src/main/resources/application.properties b/http-log/src/main/resources/application.properties
index 1d0efa7..1ed3a9f 100644
--- a/http-log/src/main/resources/application.properties
+++ b/http-log/src/main/resources/application.properties
@@ -18,6 +18,7 @@
# Quarkus
#
quarkus.banner.enabled = false
+quarkus.log.file.enable = true
#
# Quarkus - Camel
diff --git a/http-log/src/main/java/org/acme/http/ExampleResource.java b/http-log/src/test/java/org/acme/http/HttpLogIT.java
similarity index 66%
rename from http-log/src/main/java/org/acme/http/ExampleResource.java
rename to http-log/src/test/java/org/acme/http/HttpLogIT.java
index 1db4c3e..3a792d4 100644
--- a/http-log/src/main/java/org/acme/http/ExampleResource.java
+++ b/http-log/src/test/java/org/acme/http/HttpLogIT.java
@@ -16,25 +16,8 @@
*/
package org.acme.http;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import io.quarkus.test.junit.NativeImageTest;
-/**
- * A JAX-RS resource
- */
-@Path("/hello")
-public class ExampleResource {
-
- /**
- * A JAX-RS endpoint always returning {@code "hello"}
- *
- * @return {@code "hello"}
- */
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String hello() {
- return "hello";
- }
+@NativeImageTest
+class HttpLogIT extends HttpLogTest {
}
diff --git a/http-log/src/test/java/org/acme/http/HttpLogTest.java b/http-log/src/test/java/org/acme/http/HttpLogTest.java
new file mode 100644
index 0000000..624db1e
--- /dev/null
+++ b/http-log/src/test/java/org/acme/http/HttpLogTest.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.acme.http;
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Test;
+
+import static org.awaitility.Awaitility.await;
+
+@QuarkusTest
+public class HttpLogTest {
+
+ @Test
+ public void testHttpLog() {
+ RestAssured.get("/camel/hello")
+ .then()
+ .statusCode(200);
+
+ File quarkusLogFile = getQuarkusLogFile();
+ await().atMost(10L, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> {
+ String log = FileUtils.readFileToString(quarkusLogFile, StandardCharsets.UTF_8);
+ return log.contains("Camel runs on");
+ });
+ }
+
+ private File getQuarkusLogFile() {
+ String pathPrefix = "target";
+ String packageType = System.getProperty("quarkus.package.type");
+ if (packageType != null && packageType.equals("native")) {
+ pathPrefix += "/target";
+ }
+ return new File(pathPrefix + "/quarkus.log");
+ }
+}
diff --git a/timer-log-cdi/pom.xml b/timer-log-cdi/pom.xml
index 93597f7..3ab588e 100644
--- a/timer-log-cdi/pom.xml
+++ b/timer-log-cdi/pom.xml
@@ -63,11 +63,27 @@
<dependencies>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-timer</artifactId>
+ <artifactId>camel-quarkus-log</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-log</artifactId>
+ <artifactId>camel-quarkus-microprofile-health</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-timer</artifactId>
+ </dependency>
+
+ <!-- Test -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit5</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
</dependency>
</dependencies>
@@ -224,6 +240,27 @@
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <systemPropertyVariables>
+ <quarkus.package.type>${quarkus.package.type}</quarkus.package.type>
+ </systemPropertyVariables>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</profile>
</profiles>
diff --git a/timer-log-cdi/src/main/resources/application.properties b/timer-log-cdi/src/main/resources/application.properties
index 63dd4fa..2346366 100644
--- a/timer-log-cdi/src/main/resources/application.properties
+++ b/timer-log-cdi/src/main/resources/application.properties
@@ -19,6 +19,7 @@
# Quarkus
#
quarkus.banner.enabled = false
+quarkus.log.file.enable = true
#
# Integration
diff --git a/http-log/src/main/java/org/acme/http/ExampleResource.java b/timer-log-cdi/src/test/java/org/acme/timer/TimerLogCdiIT.java
similarity index 64%
copy from http-log/src/main/java/org/acme/http/ExampleResource.java
copy to timer-log-cdi/src/test/java/org/acme/timer/TimerLogCdiIT.java
index 1db4c3e..eb82d87 100644
--- a/http-log/src/main/java/org/acme/http/ExampleResource.java
+++ b/timer-log-cdi/src/test/java/org/acme/timer/TimerLogCdiIT.java
@@ -14,27 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.acme.http;
+package org.acme.timer;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import io.quarkus.test.junit.NativeImageTest;
-/**
- * A JAX-RS resource
- */
-@Path("/hello")
-public class ExampleResource {
+@NativeImageTest
+class TimerLogCdiIT extends TimerLogCdiTest {
- /**
- * A JAX-RS endpoint always returning {@code "hello"}
- *
- * @return {@code "hello"}
- */
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String hello() {
- return "hello";
- }
}
diff --git a/timer-log-cdi/src/test/java/org/acme/timer/TimerLogCdiTest.java b/timer-log-cdi/src/test/java/org/acme/timer/TimerLogCdiTest.java
new file mode 100644
index 0000000..9259c7c
--- /dev/null
+++ b/timer-log-cdi/src/test/java/org/acme/timer/TimerLogCdiTest.java
@@ -0,0 +1,49 @@
+/*
+ * 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.acme.timer;
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Test;
+
+import static org.awaitility.Awaitility.await;
+
+@QuarkusTest
+public class TimerLogCdiTest {
+
+ @Test
+ public void testTimerLog() {
+ File quarkusLogFile = getQuarkusLogFile();
+ await().atMost(10L, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> {
+ String log = FileUtils.readFileToString(quarkusLogFile, StandardCharsets.UTF_8);
+ return log.contains("Incremented the counter");
+ });
+ }
+
+ private File getQuarkusLogFile() {
+ String pathPrefix = "target";
+ String packageType = System.getProperty("quarkus.package.type");
+ if (packageType != null && packageType.equals("native")) {
+ pathPrefix += "/target";
+ }
+ return new File(pathPrefix + "/quarkus.log");
+ }
+}
diff --git a/timer-log-kotlin/pom.xml b/timer-log-kotlin/pom.xml
index ba01e3f..cf11e91 100644
--- a/timer-log-kotlin/pom.xml
+++ b/timer-log-kotlin/pom.xml
@@ -64,11 +64,7 @@
<dependencies>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-main</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-timer</artifactId>
+ <artifactId>camel-quarkus-kotlin</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
@@ -76,11 +72,34 @@
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-kotlin</artifactId>
+ <artifactId>camel-quarkus-main</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-microprofile-health</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-timer</artifactId>
+ </dependency>
+
+ <!-- Test -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit5</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
</dependency>
</dependencies>
<build>
+ <sourceDirectory>src/main/kotlin</sourceDirectory>
+ <testSourceDirectory>src/test/kotlin</testSourceDirectory>
+
<pluginManagement>
<plugins>
@@ -178,7 +197,6 @@
</plugins>
</pluginManagement>
- <sourceDirectory>src/main/kotlin</sourceDirectory>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
@@ -272,6 +290,27 @@
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <systemPropertyVariables>
+ <quarkus.package.type>${quarkus.package.type}</quarkus.package.type>
+ </systemPropertyVariables>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</profile>
</profiles>
diff --git a/timer-log-kotlin/src/main/resources/application.properties b/timer-log-kotlin/src/main/resources/application.properties
index 16b8c20..6302ccf 100644
--- a/timer-log-kotlin/src/main/resources/application.properties
+++ b/timer-log-kotlin/src/main/resources/application.properties
@@ -18,6 +18,7 @@
# Quarkus
#
quarkus.banner.enabled = false
+quarkus.log.file.enable = true
# to turn on DEBUG logging in camel-main
# quarkus.log.category."org.apache.camel.main".level = DEBUG
diff --git a/timer-log-kotlin/src/test/kotlin/org/acme/timer/TimerLogKotlin.kt b/timer-log-kotlin/src/test/kotlin/org/acme/timer/TimerLogKotlin.kt
new file mode 100644
index 0000000..07e0f22
--- /dev/null
+++ b/timer-log-kotlin/src/test/kotlin/org/acme/timer/TimerLogKotlin.kt
@@ -0,0 +1,44 @@
+/*
+ * 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.acme.timer
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.awaitility.Awaitility.await
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+open class TimerLogKotlinTest {
+
+ @Test
+ fun testTimerLogKotlin() {
+ val packageType = System.getProperty("quarkus.package.type")
+ var pathPrefix = "target"
+ if (packageType != null && packageType == "native") {
+ pathPrefix += "/target"
+ }
+
+ val quarkusLogFile = File("$pathPrefix/quarkus.log")
+
+ await().atMost(10L, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until {
+ quarkusLogFile.readText(StandardCharsets.UTF_8).contains("Hello from Kotlin!")
+ }
+ }
+}
\ No newline at end of file
diff --git a/http-log/src/main/java/org/acme/http/ExampleResource.java b/timer-log-kotlin/src/test/kotlin/org/acme/timer/TimerLogKotlinIT.kt
similarity index 64%
copy from http-log/src/main/java/org/acme/http/ExampleResource.java
copy to timer-log-kotlin/src/test/kotlin/org/acme/timer/TimerLogKotlinIT.kt
index 1db4c3e..dd3157a 100644
--- a/http-log/src/main/java/org/acme/http/ExampleResource.java
+++ b/timer-log-kotlin/src/test/kotlin/org/acme/timer/TimerLogKotlinIT.kt
@@ -14,27 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.acme.http;
+package org.acme.timer
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import io.quarkus.test.junit.NativeImageTest
-/**
- * A JAX-RS resource
- */
-@Path("/hello")
-public class ExampleResource {
-
- /**
- * A JAX-RS endpoint always returning {@code "hello"}
- *
- * @return {@code "hello"}
- */
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String hello() {
- return "hello";
- }
-}
+@NativeImageTest
+class TimerLogKotlinIT : TimerLogKotlinTest()
diff --git a/timer-log-main/pom.xml b/timer-log-main/pom.xml
index f105513..96700f6 100644
--- a/timer-log-main/pom.xml
+++ b/timer-log-main/pom.xml
@@ -45,6 +45,8 @@
<maven-resources-plugin.version>3.1.0</maven-resources-plugin.version>
<maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
<mycila-license.version>3.0</mycila-license.version>
+
+ <quarkus.runner>${project.build.directory}/quarkus-app/quarkus-run.jar</quarkus.runner>
</properties>
<dependencyManagement>
@@ -57,21 +59,54 @@
<type>pom</type>
<scope>import</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-bom-test</artifactId>
+ <version>${camel-quarkus.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-log</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-main</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-microprofile-health</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-timer</artifactId>
</dependency>
+
+ <!-- Test -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit5</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.rest-assured</groupId>
+ <artifactId>rest-assured</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-log</artifactId>
+ <artifactId>camel-quarkus-integration-tests-process-executor-support</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
</dependency>
</dependencies>
@@ -113,16 +148,27 @@
</configuration>
</plugin>
+ <!-- Move surefire:test to integration-test phase to be able to execute the runner JAR from a test -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
- <configuration>
- <failIfNoTests>false</failIfNoTests>
- <systemProperties>
- <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
- </systemProperties>
- </configuration>
+ <executions>
+ <execution>
+ <id>default-test</id>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <phase>integration-test</phase>
+ <configuration>
+ <failIfNoTests>false</failIfNoTests>
+ <systemProperties>
+ <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
+ <quarkus.runner>${quarkus.runner}</quarkus.runner>
+ </systemProperties>
+ </configuration>
+ </execution>
+ </executions>
</plugin>
<plugin>
@@ -227,7 +273,30 @@
</activation>
<properties>
<quarkus.package.type>native</quarkus.package.type>
+ <quarkus.runner>${project.build.directory}/${project.artifactId}-${project.version}-runner</quarkus.runner>
</properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <systemPropertyVariables>
+ <quarkus.package.type>${quarkus.package.type}</quarkus.package.type>
+ <quarkus.runner>${quarkus.runner}</quarkus.runner>
+ </systemPropertyVariables>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</profile>
</profiles>
diff --git a/timer-log-main/src/main/java/org/acme/timer/Main.java b/timer-log-main/src/main/java/org/acme/timer/Main.java
index 575f326..342785a 100644
--- a/timer-log-main/src/main/java/org/acme/timer/Main.java
+++ b/timer-log-main/src/main/java/org/acme/timer/Main.java
@@ -26,10 +26,12 @@
import io.quarkus.runtime.Quarkus;
import io.quarkus.runtime.annotations.QuarkusMain;
import org.apache.camel.quarkus.main.CamelMainApplication;
+import org.jboss.logging.Logger;
@QuarkusMain
public class Main {
+ private static final Logger LOG = Logger.getLogger(Main.class);
private static String greeting;
public static void main(String... args) {
@@ -39,18 +41,24 @@
* @Inject @Named("greeting")
* And we pass the second argument as -durationMaxMessages which is the number of messages that the application
* will process before terminating */
- if (args.length < 2) {
- throw new IllegalStateException("Expected at least two CLI arguments");
- }
- int i = 0;
List<String> filteredArgs = new ArrayList<>(args.length);
- greeting = args[i++];
- final String repeatTimes = args[i++];
- filteredArgs.add("-durationMaxMessages");
- filteredArgs.add(repeatTimes);
+ if (args.length < 2) {
+ LOG.warnf(
+ "Expected at least 2 CLI arguments but got %d. Will proceed with default greeting. Refer to the README instructions.",
+ args.length);
+ greeting = "Hello";
+ filteredArgs.add("-durationMaxMessages");
+ filteredArgs.add("2");
+ } else {
+ int i = 0;
+ greeting = args[i++];
+ final String repeatTimes = args[i++];
+ filteredArgs.add("-durationMaxMessages");
+ filteredArgs.add(repeatTimes);
- for (; i < args.length; i++) {
- filteredArgs.add(args[i++]);
+ for (; i < args.length; i++) {
+ filteredArgs.add(args[i++]);
+ }
}
Quarkus.run(CamelMainApplication.class, filteredArgs.toArray(new String[filteredArgs.size()]));
diff --git a/timer-log-main/src/main/resources/application.properties b/timer-log-main/src/main/resources/application.properties
index 3a0d58c..65d45b5 100644
--- a/timer-log-main/src/main/resources/application.properties
+++ b/timer-log-main/src/main/resources/application.properties
@@ -19,6 +19,7 @@
# Quarkus
#
quarkus.banner.enabled = false
+quarkus.log.file.enable = true
#
# Camel - Main
diff --git a/http-log/src/main/java/org/acme/http/ExampleResource.java b/timer-log-main/src/test/java/org/acme/timer/TimerLogMainIT.java
similarity index 64%
copy from http-log/src/main/java/org/acme/http/ExampleResource.java
copy to timer-log-main/src/test/java/org/acme/timer/TimerLogMainIT.java
index 1db4c3e..6a45cb8 100644
--- a/http-log/src/main/java/org/acme/http/ExampleResource.java
+++ b/timer-log-main/src/test/java/org/acme/timer/TimerLogMainIT.java
@@ -14,27 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.acme.http;
+package org.acme.timer;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import io.quarkus.test.junit.NativeImageTest;
-/**
- * A JAX-RS resource
- */
-@Path("/hello")
-public class ExampleResource {
+@NativeImageTest
+class TimerLogMainIT extends TimerLogMainTest {
- /**
- * A JAX-RS endpoint always returning {@code "hello"}
- *
- * @return {@code "hello"}
- */
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String hello() {
- return "hello";
- }
}
diff --git a/timer-log-main/src/test/java/org/acme/timer/TimerLogMainTest.java b/timer-log-main/src/test/java/org/acme/timer/TimerLogMainTest.java
new file mode 100644
index 0000000..fe0b62b
--- /dev/null
+++ b/timer-log-main/src/test/java/org/acme/timer/TimerLogMainTest.java
@@ -0,0 +1,106 @@
+/*
+ * 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.acme.timer;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.apache.camel.quarkus.test.support.process.QuarkusProcessExecutor;
+import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Test;
+import org.zeroturnaround.exec.StartedProcess;
+
+import static org.awaitility.Awaitility.await;
+
+@QuarkusTest
+public class TimerLogMainTest {
+
+ private static final String PACKAGE_TYPE = System.getProperty("quarkus.package.type");
+
+ @Test
+ public void testTimerLogMain() throws IOException {
+ QuarkusRunnerExecutor quarkusProcessExecutor = new QuarkusRunnerExecutor();
+ StartedProcess process = quarkusProcessExecutor.start();
+
+ awaitStartup(quarkusProcessExecutor);
+
+ try {
+ File quarkusLogFile = getQuarkusLogFile();
+ await().atMost(10L, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> {
+ String log = FileUtils.readFileToString(quarkusLogFile, StandardCharsets.UTF_8);
+ return log.contains("Greetings");
+ });
+ } finally {
+ if (process != null && process.getProcess().isAlive()) {
+ process.getProcess().destroy();
+ }
+ }
+ }
+
+ private File getQuarkusLogFile() {
+ String pathPrefix = "target/quarkus";
+ if (isNative()) {
+ pathPrefix += "-native";
+ }
+ return new File(pathPrefix + ".log");
+ }
+
+ private void awaitStartup(QuarkusProcessExecutor quarkusProcessExecutor) {
+ await().atMost(10, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> {
+ return isApplicationHealthy(quarkusProcessExecutor.getHttpPort());
+ });
+ }
+
+ private boolean isApplicationHealthy(int port) {
+ try {
+ int status = RestAssured.given()
+ .port(port)
+ .get("/health")
+ .then()
+ .extract()
+ .statusCode();
+ return status == 200;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ private static boolean isNative() {
+ return PACKAGE_TYPE != null && PACKAGE_TYPE.equals("native");
+ }
+
+ static final class QuarkusRunnerExecutor extends QuarkusProcessExecutor {
+ @Override
+ protected List<String> command(String... args) {
+ List<String> command = super.command(args);
+ if (isNative()) {
+ command.add("-Dquarkus.log.file.path=target/quarkus-native.log");
+ } else {
+ command.add(1, "-Dquarkus.log.file.path=target/quarkus.log");
+ }
+ command.add("Greetings");
+ command.add("2");
+ return command;
+ }
+
+ }
+}
diff --git a/timer-log-spring/pom.xml b/timer-log-spring/pom.xml
index 73d0e7e..8a1bd15 100644
--- a/timer-log-spring/pom.xml
+++ b/timer-log-spring/pom.xml
@@ -63,20 +63,36 @@
<dependencies>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-log</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-main</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-microprofile-health</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-timer</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-log</artifactId>
- </dependency>
- <dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-spring-di</artifactId>
</dependency>
+
+ <!-- Test -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit5</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
@@ -232,6 +248,27 @@
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <systemPropertyVariables>
+ <quarkus.package.type>${quarkus.package.type}</quarkus.package.type>
+ </systemPropertyVariables>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</profile>
</profiles>
diff --git a/timer-log-spring/src/main/resources/application.properties b/timer-log-spring/src/main/resources/application.properties
index 096809f..82f885a 100644
--- a/timer-log-spring/src/main/resources/application.properties
+++ b/timer-log-spring/src/main/resources/application.properties
@@ -19,6 +19,7 @@
# Quarkus
#
quarkus.banner.enabled = false
+quarkus.log.file.enable = true
#
# Camel
diff --git a/http-log/src/main/java/org/acme/http/ExampleResource.java b/timer-log-spring/src/test/java/org/acme/timer/TimerLogSpringIT.java
similarity index 64%
copy from http-log/src/main/java/org/acme/http/ExampleResource.java
copy to timer-log-spring/src/test/java/org/acme/timer/TimerLogSpringIT.java
index 1db4c3e..dee6660 100644
--- a/http-log/src/main/java/org/acme/http/ExampleResource.java
+++ b/timer-log-spring/src/test/java/org/acme/timer/TimerLogSpringIT.java
@@ -14,27 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.acme.http;
+package org.acme.timer;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import io.quarkus.test.junit.NativeImageTest;
-/**
- * A JAX-RS resource
- */
-@Path("/hello")
-public class ExampleResource {
+@NativeImageTest
+class TimerLogSpringIT extends TimerLogSpringTest {
- /**
- * A JAX-RS endpoint always returning {@code "hello"}
- *
- * @return {@code "hello"}
- */
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String hello() {
- return "hello";
- }
}
diff --git a/timer-log-spring/src/test/java/org/acme/timer/TimerLogSpringTest.java b/timer-log-spring/src/test/java/org/acme/timer/TimerLogSpringTest.java
new file mode 100644
index 0000000..1691d95
--- /dev/null
+++ b/timer-log-spring/src/test/java/org/acme/timer/TimerLogSpringTest.java
@@ -0,0 +1,49 @@
+/*
+ * 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.acme.timer;
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Test;
+
+import static org.awaitility.Awaitility.await;
+
+@QuarkusTest
+public class TimerLogSpringTest {
+
+ @Test
+ public void testTimerLogSpring() {
+ File quarkusLogFile = getQuarkusLogFile();
+ await().atMost(10L, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> {
+ String log = FileUtils.readFileToString(quarkusLogFile, StandardCharsets.UTF_8);
+ return log.contains("Incremented the counter");
+ });
+ }
+
+ private File getQuarkusLogFile() {
+ String pathPrefix = "target";
+ String packageType = System.getProperty("quarkus.package.type");
+ if (packageType != null && packageType.equals("native")) {
+ pathPrefix += "/target";
+ }
+ return new File(pathPrefix + "/quarkus.log");
+ }
+}
diff --git a/timer-log-xml/pom.xml b/timer-log-xml/pom.xml
index 5da0a9d..cc94e6c 100644
--- a/timer-log-xml/pom.xml
+++ b/timer-log-xml/pom.xml
@@ -63,19 +63,35 @@
<dependencies>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-log</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-main</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-microprofile-health</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-timer</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-log</artifactId>
+ <artifactId>camel-quarkus-xml-io</artifactId>
+ </dependency>
+
+ <!-- Test -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit5</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-xml-io</artifactId>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
</dependency>
</dependencies>
@@ -235,6 +251,27 @@
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <systemPropertyVariables>
+ <quarkus.package.type>${quarkus.package.type}</quarkus.package.type>
+ </systemPropertyVariables>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</profile>
</profiles>
diff --git a/timer-log-xml/src/main/resources/application.properties b/timer-log-xml/src/main/resources/application.properties
index 20a531d..00bedd3 100644
--- a/timer-log-xml/src/main/resources/application.properties
+++ b/timer-log-xml/src/main/resources/application.properties
@@ -18,6 +18,7 @@
# Quarkus
#
quarkus.banner.enabled = false
+quarkus.log.file.enable = true
# to turn on DEBUG logging in camel-main
# quarkus.log.category."org.apache.camel.main".level = DEBUG
diff --git a/timer-log-xml/src/test/java/org/acme/timer/TimerLogXmlTest.java b/timer-log-xml/src/test/java/org/acme/timer/TimerLogXmlTest.java
new file mode 100644
index 0000000..823dc14
--- /dev/null
+++ b/timer-log-xml/src/test/java/org/acme/timer/TimerLogXmlTest.java
@@ -0,0 +1,49 @@
+/*
+ * 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.acme.timer;
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Test;
+
+import static org.awaitility.Awaitility.await;
+
+@QuarkusTest
+public class TimerLogXmlTest {
+
+ @Test
+ public void testTimerLogXml() {
+ File quarkusLogFile = getQuarkusLogFile();
+ await().atMost(10L, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> {
+ String log = FileUtils.readFileToString(quarkusLogFile, StandardCharsets.UTF_8);
+ return log.contains("Hello XML!");
+ });
+ }
+
+ private File getQuarkusLogFile() {
+ String pathPrefix = "target";
+ String packageType = System.getProperty("quarkus.package.type");
+ if (packageType != null && packageType.equals("native")) {
+ pathPrefix += "/target";
+ }
+ return new File(pathPrefix + "/quarkus.log");
+ }
+}
diff --git a/http-log/src/main/java/org/acme/http/ExampleResource.java b/timer-log-xml/src/test/java/org/acme/timer/TimerLogXmlXmlIT.java
similarity index 64%
copy from http-log/src/main/java/org/acme/http/ExampleResource.java
copy to timer-log-xml/src/test/java/org/acme/timer/TimerLogXmlXmlIT.java
index 1db4c3e..fd26ac0 100644
--- a/http-log/src/main/java/org/acme/http/ExampleResource.java
+++ b/timer-log-xml/src/test/java/org/acme/timer/TimerLogXmlXmlIT.java
@@ -14,27 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.acme.http;
+package org.acme.timer;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import io.quarkus.test.junit.NativeImageTest;
-/**
- * A JAX-RS resource
- */
-@Path("/hello")
-public class ExampleResource {
+@NativeImageTest
+class TimerLogXmlXmlIT extends TimerLogXmlTest {
- /**
- * A JAX-RS endpoint always returning {@code "hello"}
- *
- * @return {@code "hello"}
- */
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String hello() {
- return "hello";
- }
}
diff --git a/timer-log/pom.xml b/timer-log/pom.xml
index 489026a..db75ed9 100644
--- a/timer-log/pom.xml
+++ b/timer-log/pom.xml
@@ -67,12 +67,28 @@
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-microprofile-health</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-timer</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-log</artifactId>
</dependency>
+
+ <!-- Test -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit5</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
@@ -228,6 +244,27 @@
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <systemPropertyVariables>
+ <quarkus.package.type>${quarkus.package.type}</quarkus.package.type>
+ </systemPropertyVariables>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</profile>
</profiles>
diff --git a/timer-log/src/main/resources/application.properties b/timer-log/src/main/resources/application.properties
index 261dde5..bac70c3 100644
--- a/timer-log/src/main/resources/application.properties
+++ b/timer-log/src/main/resources/application.properties
@@ -18,9 +18,9 @@
# Quarkus
#
quarkus.banner.enabled = false
+quarkus.log.file.enable = true
#
# Camel
#
camel.context.name = quarkus-camel-example-timer-log
-
diff --git a/http-log/src/main/java/org/acme/http/ExampleResource.java b/timer-log/src/test/java/org/acme/timer/TimerLogIT.java
similarity index 64%
copy from http-log/src/main/java/org/acme/http/ExampleResource.java
copy to timer-log/src/test/java/org/acme/timer/TimerLogIT.java
index 1db4c3e..2f8e97f 100644
--- a/http-log/src/main/java/org/acme/http/ExampleResource.java
+++ b/timer-log/src/test/java/org/acme/timer/TimerLogIT.java
@@ -14,27 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.acme.http;
+package org.acme.timer;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import io.quarkus.test.junit.NativeImageTest;
-/**
- * A JAX-RS resource
- */
-@Path("/hello")
-public class ExampleResource {
+@NativeImageTest
+class TimerLogIT extends TimerLogTest {
- /**
- * A JAX-RS endpoint always returning {@code "hello"}
- *
- * @return {@code "hello"}
- */
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String hello() {
- return "hello";
- }
}
diff --git a/timer-log/src/test/java/org/acme/timer/TimerLogTest.java b/timer-log/src/test/java/org/acme/timer/TimerLogTest.java
new file mode 100644
index 0000000..dd6898d
--- /dev/null
+++ b/timer-log/src/test/java/org/acme/timer/TimerLogTest.java
@@ -0,0 +1,49 @@
+/*
+ * 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.acme.timer;
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Test;
+
+import static org.awaitility.Awaitility.await;
+
+@QuarkusTest
+public class TimerLogTest {
+
+ @Test
+ public void testTimerLog() {
+ File quarkusLogFile = getQuarkusLogFile();
+ await().atMost(10L, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> {
+ String log = FileUtils.readFileToString(quarkusLogFile, StandardCharsets.UTF_8);
+ return log.contains("Hello World");
+ });
+ }
+
+ private File getQuarkusLogFile() {
+ String pathPrefix = "target";
+ String packageType = System.getProperty("quarkus.package.type");
+ if (packageType != null && packageType.equals("native")) {
+ pathPrefix += "/target";
+ }
+ return new File(pathPrefix + "/quarkus.log");
+ }
+}