You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2021/03/25 08:46:40 UTC
[camel-quarkus] branch master updated: Only invoke completed method
on unknown arguments if the failure remedy is FAIL
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/master by this push:
new 0a9e60f Only invoke completed method on unknown arguments if the failure remedy is FAIL
0a9e60f is described below
commit 0a9e60fb893912859a6400b32c8486317783746f
Author: James Netherton <ja...@gmail.com>
AuthorDate: Wed Mar 24 18:00:33 2021 +0000
Only invoke completed method on unknown arguments if the failure remedy is FAIL
Fixes #2293
---
.../CamelMainUnknownArgumentFailTest.java | 2 +-
.../CamelMainUnknownArgumentIgnoreTest.java | 4 +--
.../CamelMainUnknownArgumentWarnTest.java | 12 ++++++--
.../org/apache/camel/quarkus/main/CamelMain.java | 20 +++++++++----
.../support/process/QuarkusProcessExecutor.java | 15 ++++++++--
integration-tests/main-command-mode/pom.xml | 4 +++
.../camel/quarkus/main/cmd/it/CommandModeTest.java | 33 ++++++++++++++++++++++
.../pom.xml | 8 ++++--
.../quarkus/main/unknown/args/fail/Routes.java} | 23 +++++----------
.../src/main/resources/application.properties | 21 ++++++++++++++
.../args/fail/MainUnknownArgumentFailIT.java} | 22 +++------------
.../args/fail/MainUnknownArgumentFailTest.java} | 23 +++++++++------
.../pom.xml | 8 ++++--
.../quarkus/main/unknown/args/ignore/Routes.java} | 23 +++++----------
.../src/main/resources/application.properties | 21 ++++++++++++++
.../args/ignore/MainUnknownArgumentIgnoreIT.java} | 22 +++------------
.../ignore/MainUnknownArgumentIgnoreTest.java} | 23 +++++++++------
integration-tests/pom.xml | 2 ++
tooling/scripts/test-categories.yaml | 4 ++-
tooling/test-list/pom.xml | 2 ++
20 files changed, 189 insertions(+), 103 deletions(-)
diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentFailTest.java b/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentFailTest.java
index a48b1cc..13ba8da 100644
--- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentFailTest.java
+++ b/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentFailTest.java
@@ -48,7 +48,7 @@ public class CamelMainUnknownArgumentFailTest {
@Test
public void unknownArgumentThrowsException() {
Exception exception = Assertions.assertThrows(RuntimeException.class, () -> {
- main.parseArguments(new String[] { "-d", "10", "-foo", "bar" });
+ main.parseArguments(new String[] { "-d", "10", "-foo", "bar", "-t" });
});
assertEquals("CamelMain encountered unknown arguments", exception.getMessage());
}
diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentIgnoreTest.java b/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentIgnoreTest.java
index 6b17182..7ffa54b 100644
--- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentIgnoreTest.java
+++ b/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentIgnoreTest.java
@@ -53,10 +53,10 @@ public class CamelMainUnknownArgumentIgnoreTest {
try (ByteArrayOutputStream sysout = new ByteArrayOutputStream()) {
System.setOut(new PrintStream(sysout));
- main.parseArguments(new String[] { "-d", "10", "-foo", "bar" });
+ main.parseArguments(new String[] { "-d", "10", "-foo", "bar", "-t" });
String consoleContent = sysout.toString();
- assertFalse(consoleContent.contains("Unknown option: -foo"));
+ assertFalse(consoleContent.contains("Unknown option: -foo bar"));
assertFalse(consoleContent.contains("Apache Camel Runner takes the following options"));
} catch (IOException e) {
throw new RuntimeException(e);
diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentWarnTest.java b/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentWarnTest.java
index 27cb594..a112944 100644
--- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentWarnTest.java
+++ b/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentWarnTest.java
@@ -27,6 +27,7 @@ import javax.inject.Inject;
import io.quarkus.test.QuarkusUnitTest;
import org.apache.camel.quarkus.main.CamelMain;
+import org.apache.camel.util.StringHelper;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.Asset;
import org.jboss.shrinkwrap.api.asset.StringAsset;
@@ -53,10 +54,17 @@ public class CamelMainUnknownArgumentWarnTest {
try (ByteArrayOutputStream sysout = new ByteArrayOutputStream()) {
System.setOut(new PrintStream(sysout));
- main.parseArguments(new String[] { "-d", "10", "-foo", "bar" });
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < 150; i++) {
+ builder.append("test");
+ }
+
+ String longArg = builder.toString();
+ main.parseArguments(new String[] { "-d", "10", "-foo", "bar", "-t", longArg });
String consoleContent = sysout.toString();
- assertTrue(consoleContent.contains("Unknown option: -foo"));
+ assertTrue(consoleContent
+ .contains("Unknown option: -foo bar " + String.format("%s...", StringHelper.limitLength(longArg, 97))));
assertTrue(consoleContent.contains("Apache Camel Runner takes the following options"));
} catch (IOException e) {
throw new RuntimeException(e);
diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java
index 965f2b6..6078f35 100644
--- a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java
+++ b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java
@@ -16,10 +16,12 @@
*/
package org.apache.camel.quarkus.main;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
+import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import io.quarkus.runtime.Quarkus;
@@ -35,6 +37,7 @@ import org.apache.camel.main.SimpleMainShutdownStrategy;
import org.apache.camel.quarkus.core.CamelConfig.FailureRemedy;
import org.apache.camel.spi.HasCamelContext;
import org.apache.camel.support.service.ServiceHelper;
+import org.apache.camel.util.StringHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -171,12 +174,12 @@ public final class CamelMain extends MainCommandLineSupport implements HasCamelC
@Override
public void parseArguments(String[] arguments) {
LinkedList<String> args = new LinkedList<>(Arrays.asList(arguments));
+ List<String> unknownArgs = new ArrayList<>();
boolean valid = true;
while (!args.isEmpty()) {
initOptions();
String arg = args.removeFirst();
-
boolean handled = false;
for (Option option : options) {
if (option.processOption(arg, args)) {
@@ -185,17 +188,22 @@ public final class CamelMain extends MainCommandLineSupport implements HasCamelC
}
}
if (!handled && !failureRemedy.equals(FailureRemedy.ignore)) {
- System.out.println("Unknown option: " + arg);
- System.out.println();
-
+ if (arg.length() >= 100) {
+ // For long arguments, clean up formatting for console output
+ String truncatedArg = String.format("%s...", StringHelper.limitLength(arg, 97));
+ unknownArgs.add(truncatedArg);
+ } else {
+ unknownArgs.add(arg);
+ }
valid = false;
- break;
}
}
if (!valid) {
+ System.out.println("Unknown option: " + String.join(" ", unknownArgs));
+ System.out.println();
showOptions();
- completed();
if (failureRemedy.equals(FailureRemedy.fail)) {
+ completed();
throw new RuntimeException("CamelMain encountered unknown arguments");
}
}
diff --git a/integration-tests-support/process-executor-support/src/main/java/org/apache/camel/quarkus/test/support/process/QuarkusProcessExecutor.java b/integration-tests-support/process-executor-support/src/main/java/org/apache/camel/quarkus/test/support/process/QuarkusProcessExecutor.java
index ee1b409..c92a961 100644
--- a/integration-tests-support/process-executor-support/src/main/java/org/apache/camel/quarkus/test/support/process/QuarkusProcessExecutor.java
+++ b/integration-tests-support/process-executor-support/src/main/java/org/apache/camel/quarkus/test/support/process/QuarkusProcessExecutor.java
@@ -39,10 +39,19 @@ public class QuarkusProcessExecutor {
private final int httpPort = AvailablePortFinder.getNextAvailable();
private final int httpsPort = AvailablePortFinder.getNextAvailable();
- public QuarkusProcessExecutor(String... args) {
- LOGGER.infof("Executing process: %s", String.join(" ", command(args)));
+ public QuarkusProcessExecutor(String... jvmArgs) {
+ this(jvmArgs, null);
+ }
+
+ public QuarkusProcessExecutor(String[] jvmArgs, String... applicationArgs) {
+ List<String> command = command(jvmArgs);
+ if (applicationArgs != null) {
+ command.addAll(Arrays.asList(applicationArgs));
+ }
+
+ LOGGER.infof("Executing process: %s", String.join(" ", command));
executor = new ProcessExecutor()
- .command(command(args))
+ .command(command)
.redirectOutput(System.out)
.readOutput(true);
}
diff --git a/integration-tests/main-command-mode/pom.xml b/integration-tests/main-command-mode/pom.xml
index 44f7ff1..64a2420 100644
--- a/integration-tests/main-command-mode/pom.xml
+++ b/integration-tests/main-command-mode/pom.xml
@@ -45,6 +45,10 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-timer</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-vertx-web</artifactId>
+ </dependency>
<!-- test dependencies -->
<dependency>
diff --git a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java b/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
index c907f24..d3a8c8e 100644
--- a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
+++ b/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
@@ -20,11 +20,14 @@ import java.io.IOException;
import java.util.concurrent.TimeoutException;
import org.apache.camel.quarkus.test.support.process.QuarkusProcessExecutor;
+import org.apache.camel.util.StringHelper;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.zeroturnaround.exec.InvalidExitValueException;
import org.zeroturnaround.exec.ProcessResult;
+import static org.assertj.core.api.Assertions.assertThat;
+
public class CommandModeTest {
@Test
@@ -34,4 +37,34 @@ public class CommandModeTest {
Assertions.assertThat(result.getExitValue()).isEqualTo(0);
Assertions.assertThat(result.outputUTF8()).contains("Hello Joe!");
}
+
+ @Test
+ void testMainWarnsOnUnknownArguments() throws InterruptedException, IOException, TimeoutException {
+ // Build a long fake classpath argument
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < 150; i++) {
+ builder.append("jar-" + i + ".jar:");
+ }
+ String classpathArg = builder.toString();
+
+ final String[] jvmArgs = new String[] { "-Dgreeted.subject=Joe" };
+ final String[] applicationArgs = new String[] {
+ "-d",
+ "10",
+ "-cp",
+ classpathArg,
+ "-t"
+ };
+
+ final ProcessResult result = new QuarkusProcessExecutor(jvmArgs, applicationArgs).execute();
+
+ // Verify the application ran successfully
+ assertThat(result.getExitValue()).isEqualTo(0);
+ assertThat(result.outputUTF8()).contains("Hello Joe!");
+
+ // Verify warning for unknown arguments was printed to the console
+ String truncatedCpArg = String.format("%s...", StringHelper.limitLength(classpathArg, 97));
+ assertThat(result.outputUTF8()).contains("Unknown option: -cp " + truncatedCpArg);
+ assertThat(result.outputUTF8()).contains("Apache Camel Runner takes the following options");
+ }
}
diff --git a/integration-tests/main-command-mode/pom.xml b/integration-tests/main-unknown-args-fail/pom.xml
similarity index 95%
copy from integration-tests/main-command-mode/pom.xml
copy to integration-tests/main-unknown-args-fail/pom.xml
index 44f7ff1..4a1a5bd 100644
--- a/integration-tests/main-command-mode/pom.xml
+++ b/integration-tests/main-unknown-args-fail/pom.xml
@@ -25,8 +25,8 @@
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>camel-quarkus-integration-test-main-command-mode</artifactId>
- <name>Camel Quarkus :: Integration Tests :: Main Command Mode</name>
+ <artifactId>camel-quarkus-integration-test-main-unknown-args-fail</artifactId>
+ <name>Camel Quarkus :: Integration Tests :: Main Unknown Arguments Fail :: Tests</name>
<properties>
<quarkus.runner.jar>${project.build.directory}/quarkus-app/quarkus-run.jar</quarkus.runner.jar>
@@ -45,6 +45,10 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-timer</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-vertx-web</artifactId>
+ </dependency>
<!-- test dependencies -->
<dependency>
diff --git a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java b/integration-tests/main-unknown-args-fail/src/main/java/org/apache/camel/quarkus/main/unknown/args/fail/Routes.java
similarity index 51%
copy from integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
copy to integration-tests/main-unknown-args-fail/src/main/java/org/apache/camel/quarkus/main/unknown/args/fail/Routes.java
index c907f24..4d23161 100644
--- a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
+++ b/integration-tests/main-unknown-args-fail/src/main/java/org/apache/camel/quarkus/main/unknown/args/fail/Routes.java
@@ -14,24 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.main.cmd.it;
+package org.apache.camel.quarkus.main.unknown.args.fail;
-import java.io.IOException;
-import java.util.concurrent.TimeoutException;
+import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.quarkus.test.support.process.QuarkusProcessExecutor;
-import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.Test;
-import org.zeroturnaround.exec.InvalidExitValueException;
-import org.zeroturnaround.exec.ProcessResult;
+public class Routes extends RouteBuilder {
-public class CommandModeTest {
-
- @Test
- void hello() throws InvalidExitValueException, IOException, InterruptedException, TimeoutException {
- final ProcessResult result = new QuarkusProcessExecutor("-Dgreeted.subject=Joe").execute();
-
- Assertions.assertThat(result.getExitValue()).isEqualTo(0);
- Assertions.assertThat(result.outputUTF8()).contains("Hello Joe!");
+ @Override
+ public void configure() throws Exception {
+ from("timer:tick?repeatCount=1&delay=-1")
+ .log("Timer tick!");
}
}
diff --git a/integration-tests/main-unknown-args-fail/src/main/resources/application.properties b/integration-tests/main-unknown-args-fail/src/main/resources/application.properties
new file mode 100644
index 0000000..62d96d9
--- /dev/null
+++ b/integration-tests/main-unknown-args-fail/src/main/resources/application.properties
@@ -0,0 +1,21 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+# Terminate after 1 message is generated
+camel.main.duration-max-messages = 1
+
+quarkus.camel.main.arguments.on-unknown = fail
diff --git a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java b/integration-tests/main-unknown-args-fail/src/test/java/org/apache/camel/quarkus/main/unknown/args/fail/MainUnknownArgumentFailIT.java
similarity index 51%
copy from integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
copy to integration-tests/main-unknown-args-fail/src/test/java/org/apache/camel/quarkus/main/unknown/args/fail/MainUnknownArgumentFailIT.java
index c907f24..ee4966c 100644
--- a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
+++ b/integration-tests/main-unknown-args-fail/src/test/java/org/apache/camel/quarkus/main/unknown/args/fail/MainUnknownArgumentFailIT.java
@@ -14,24 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.main.cmd.it;
+package org.apache.camel.quarkus.main.unknown.args.fail;
-import java.io.IOException;
-import java.util.concurrent.TimeoutException;
+import io.quarkus.test.junit.NativeImageTest;
-import org.apache.camel.quarkus.test.support.process.QuarkusProcessExecutor;
-import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.Test;
-import org.zeroturnaround.exec.InvalidExitValueException;
-import org.zeroturnaround.exec.ProcessResult;
-
-public class CommandModeTest {
-
- @Test
- void hello() throws InvalidExitValueException, IOException, InterruptedException, TimeoutException {
- final ProcessResult result = new QuarkusProcessExecutor("-Dgreeted.subject=Joe").execute();
-
- Assertions.assertThat(result.getExitValue()).isEqualTo(0);
- Assertions.assertThat(result.outputUTF8()).contains("Hello Joe!");
- }
+@NativeImageTest
+class MainUnknownArgumentFailIT extends MainUnknownArgumentFailTest {
}
diff --git a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java b/integration-tests/main-unknown-args-fail/src/test/java/org/apache/camel/quarkus/main/unknown/args/fail/MainUnknownArgumentFailTest.java
similarity index 57%
copy from integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
copy to integration-tests/main-unknown-args-fail/src/test/java/org/apache/camel/quarkus/main/unknown/args/fail/MainUnknownArgumentFailTest.java
index c907f24..e113e07 100644
--- a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
+++ b/integration-tests/main-unknown-args-fail/src/test/java/org/apache/camel/quarkus/main/unknown/args/fail/MainUnknownArgumentFailTest.java
@@ -14,24 +14,31 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.main.cmd.it;
+package org.apache.camel.quarkus.main.unknown.args.fail;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
+import io.quarkus.test.junit.QuarkusTest;
import org.apache.camel.quarkus.test.support.process.QuarkusProcessExecutor;
-import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
-import org.zeroturnaround.exec.InvalidExitValueException;
import org.zeroturnaround.exec.ProcessResult;
-public class CommandModeTest {
+import static org.assertj.core.api.Assertions.assertThat;
+
+@QuarkusTest
+public class MainUnknownArgumentFailTest {
@Test
- void hello() throws InvalidExitValueException, IOException, InterruptedException, TimeoutException {
- final ProcessResult result = new QuarkusProcessExecutor("-Dgreeted.subject=Joe").execute();
+ public void testMainTerminatesOnUnknownArguments() throws InterruptedException, IOException, TimeoutException {
+ final ProcessResult result = new QuarkusProcessExecutor(new String[] {}, "-d", "10", "-cp", "foo.jar", "-t").execute();
+
+ // Verify the application did not run successfully
+ assertThat(result.getExitValue()).isEqualTo(1);
+ assertThat(result.outputUTF8()).doesNotContain("Timer tick!");
- Assertions.assertThat(result.getExitValue()).isEqualTo(0);
- Assertions.assertThat(result.outputUTF8()).contains("Hello Joe!");
+ // Verify warning for unknown arguments was printed to the console
+ assertThat(result.outputUTF8()).contains("Unknown option: -cp foo.jar");
+ assertThat(result.outputUTF8()).contains("Apache Camel Runner takes the following options");
}
}
diff --git a/integration-tests/main-command-mode/pom.xml b/integration-tests/main-unknown-args-ignore/pom.xml
similarity index 95%
copy from integration-tests/main-command-mode/pom.xml
copy to integration-tests/main-unknown-args-ignore/pom.xml
index 44f7ff1..c7a7a65 100644
--- a/integration-tests/main-command-mode/pom.xml
+++ b/integration-tests/main-unknown-args-ignore/pom.xml
@@ -25,8 +25,8 @@
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>camel-quarkus-integration-test-main-command-mode</artifactId>
- <name>Camel Quarkus :: Integration Tests :: Main Command Mode</name>
+ <artifactId>camel-quarkus-integration-test-main-unknown-args-ignore</artifactId>
+ <name>Camel Quarkus :: Integration Tests :: Main Unknown Arguments Ignore :: Tests</name>
<properties>
<quarkus.runner.jar>${project.build.directory}/quarkus-app/quarkus-run.jar</quarkus.runner.jar>
@@ -45,6 +45,10 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-timer</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-vertx-web</artifactId>
+ </dependency>
<!-- test dependencies -->
<dependency>
diff --git a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java b/integration-tests/main-unknown-args-ignore/src/main/java/org/apache/camel/quarkus/main/unknown/args/ignore/Routes.java
similarity index 51%
copy from integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
copy to integration-tests/main-unknown-args-ignore/src/main/java/org/apache/camel/quarkus/main/unknown/args/ignore/Routes.java
index c907f24..a14e906 100644
--- a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
+++ b/integration-tests/main-unknown-args-ignore/src/main/java/org/apache/camel/quarkus/main/unknown/args/ignore/Routes.java
@@ -14,24 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.main.cmd.it;
+package org.apache.camel.quarkus.main.unknown.args.ignore;
-import java.io.IOException;
-import java.util.concurrent.TimeoutException;
+import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.quarkus.test.support.process.QuarkusProcessExecutor;
-import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.Test;
-import org.zeroturnaround.exec.InvalidExitValueException;
-import org.zeroturnaround.exec.ProcessResult;
+public class Routes extends RouteBuilder {
-public class CommandModeTest {
-
- @Test
- void hello() throws InvalidExitValueException, IOException, InterruptedException, TimeoutException {
- final ProcessResult result = new QuarkusProcessExecutor("-Dgreeted.subject=Joe").execute();
-
- Assertions.assertThat(result.getExitValue()).isEqualTo(0);
- Assertions.assertThat(result.outputUTF8()).contains("Hello Joe!");
+ @Override
+ public void configure() throws Exception {
+ from("timer:tick?repeatCount=1&delay=-1")
+ .log("Timer tick!");
}
}
diff --git a/integration-tests/main-unknown-args-ignore/src/main/resources/application.properties b/integration-tests/main-unknown-args-ignore/src/main/resources/application.properties
new file mode 100644
index 0000000..6de63fb
--- /dev/null
+++ b/integration-tests/main-unknown-args-ignore/src/main/resources/application.properties
@@ -0,0 +1,21 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+# Terminate after 1 message is generated
+camel.main.duration-max-messages = 1
+
+quarkus.camel.main.arguments.on-unknown = ignore
diff --git a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java b/integration-tests/main-unknown-args-ignore/src/test/java/org/apache/camel/quarkus/main/unknown/args/ignore/MainUnknownArgumentIgnoreIT.java
similarity index 51%
copy from integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
copy to integration-tests/main-unknown-args-ignore/src/test/java/org/apache/camel/quarkus/main/unknown/args/ignore/MainUnknownArgumentIgnoreIT.java
index c907f24..be0f91a 100644
--- a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
+++ b/integration-tests/main-unknown-args-ignore/src/test/java/org/apache/camel/quarkus/main/unknown/args/ignore/MainUnknownArgumentIgnoreIT.java
@@ -14,24 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.main.cmd.it;
+package org.apache.camel.quarkus.main.unknown.args.ignore;
-import java.io.IOException;
-import java.util.concurrent.TimeoutException;
+import io.quarkus.test.junit.NativeImageTest;
-import org.apache.camel.quarkus.test.support.process.QuarkusProcessExecutor;
-import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.Test;
-import org.zeroturnaround.exec.InvalidExitValueException;
-import org.zeroturnaround.exec.ProcessResult;
-
-public class CommandModeTest {
-
- @Test
- void hello() throws InvalidExitValueException, IOException, InterruptedException, TimeoutException {
- final ProcessResult result = new QuarkusProcessExecutor("-Dgreeted.subject=Joe").execute();
-
- Assertions.assertThat(result.getExitValue()).isEqualTo(0);
- Assertions.assertThat(result.outputUTF8()).contains("Hello Joe!");
- }
+@NativeImageTest
+class MainUnknownArgumentIgnoreIT extends MainUnknownArgumentIgnoreTest {
}
diff --git a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java b/integration-tests/main-unknown-args-ignore/src/test/java/org/apache/camel/quarkus/main/unknown/args/ignore/MainUnknownArgumentIgnoreTest.java
similarity index 56%
copy from integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
copy to integration-tests/main-unknown-args-ignore/src/test/java/org/apache/camel/quarkus/main/unknown/args/ignore/MainUnknownArgumentIgnoreTest.java
index c907f24..b205bce 100644
--- a/integration-tests/main-command-mode/src/test/java/org/apache/camel/quarkus/main/cmd/it/CommandModeTest.java
+++ b/integration-tests/main-unknown-args-ignore/src/test/java/org/apache/camel/quarkus/main/unknown/args/ignore/MainUnknownArgumentIgnoreTest.java
@@ -14,24 +14,31 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.main.cmd.it;
+package org.apache.camel.quarkus.main.unknown.args.ignore;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
+import io.quarkus.test.junit.QuarkusTest;
import org.apache.camel.quarkus.test.support.process.QuarkusProcessExecutor;
-import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
-import org.zeroturnaround.exec.InvalidExitValueException;
import org.zeroturnaround.exec.ProcessResult;
-public class CommandModeTest {
+import static org.assertj.core.api.Assertions.assertThat;
+
+@QuarkusTest
+public class MainUnknownArgumentIgnoreTest {
@Test
- void hello() throws InvalidExitValueException, IOException, InterruptedException, TimeoutException {
- final ProcessResult result = new QuarkusProcessExecutor("-Dgreeted.subject=Joe").execute();
+ public void testMainIgnoresUnknownArguments() throws InterruptedException, IOException, TimeoutException {
+ final ProcessResult result = new QuarkusProcessExecutor(new String[] {}, "-d", "10", "-cp", "foo.jar", "-t").execute();
+
+ // Verify the application ran successfully
+ assertThat(result.getExitValue()).isEqualTo(0);
+ assertThat(result.outputUTF8()).contains("Timer tick!");
- Assertions.assertThat(result.getExitValue()).isEqualTo(0);
- Assertions.assertThat(result.outputUTF8()).contains("Hello Joe!");
+ // Verify unknown arguments were ignored and no warning was printed to the console
+ assertThat(result.outputUTF8()).doesNotContain("Unknown option: -cp foo.jar");
+ assertThat(result.outputUTF8()).doesNotContain("Apache Camel Runner takes the following options");
}
}
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 30ea475..6321b16 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -58,6 +58,8 @@
<module>main-collector</module>
<module>main-caffeine-lrucache</module>
<module>main-command-mode</module>
+ <module>main-unknown-args-fail</module>
+ <module>main-unknown-args-ignore</module>
<!-- extensions a..z; do not remove this comment, it is important when sorting via mvn process-resources -Pformat -->
<module>activemq</module>
diff --git a/tooling/scripts/test-categories.yaml b/tooling/scripts/test-categories.yaml
index 8f861cd..21c87af 100644
--- a/tooling/scripts/test-categories.yaml
+++ b/tooling/scripts/test-categories.yaml
@@ -149,9 +149,11 @@ misc:
- as2
- kotlin
- disruptor
-networking2-dataformats:
+networking2-dataformats-main:
- atlasmap
- mail
+ - main-unknown-args-fail
+ - main-unknown-args-ignore
- netty
- nsq
- servlet
diff --git a/tooling/test-list/pom.xml b/tooling/test-list/pom.xml
index d138aa4..c28b5e4 100644
--- a/tooling/test-list/pom.xml
+++ b/tooling/test-list/pom.xml
@@ -58,6 +58,8 @@
<exclude>support/**/*</exclude>
<exclude>master/pom.xml</exclude>
<exclude>main-command-mode/pom.xml</exclude>
+ <exclude>main-unknown-args-fail/pom.xml</exclude>
+ <exclude>main-unknown-args-ignore/pom.xml</exclude>
</excludes>
</fileSet>
</fileSets>