This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git

commit e390430d37213aa6ea840c5174572940ca202547
Author: Croway <[email protected]>
AuthorDate: Wed Mar 1 11:43:12 2023 +0100

    Camel-JBang tests
---
 dsl/camel-jbang/camel-jbang-core/pom.xml           |  22 ++++
 .../apache/camel/dsl/jbang/core/commands/Bind.java |   2 +-
 .../camel/dsl/jbang/core/commands/Complete.java    |   2 +-
 .../camel/dsl/jbang/core/commands/Export.java      |   2 +-
 .../apache/camel/dsl/jbang/core/commands/Init.java |   2 +-
 .../apache/camel/dsl/jbang/core/commands/Pipe.java |   2 +-
 .../apache/camel/dsl/jbang/core/commands/Run.java  |   4 +-
 .../org/apache/camel/dsl/jbang/BackgroundTest.java | 139 +++++++++++++++++++++
 8 files changed, 168 insertions(+), 7 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/pom.xml 
b/dsl/camel-jbang/camel-jbang-core/pom.xml
index 419a42c821a..8c60fd771b4 100644
--- a/dsl/camel-jbang/camel-jbang-core/pom.xml
+++ b/dsl/camel-jbang/camel-jbang-core/pom.xml
@@ -128,6 +128,28 @@
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
         </dependency>
+
+        <!-- Test dependencies -->
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-params</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
 </project>
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java
index 6ab96f549f2..4fbd181c6af 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java
@@ -45,7 +45,7 @@ import static 
org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asText;
 import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.nodeAt;
 
 @Command(name = "bind", description = "Bind source and sink Kamelets as a new 
Camel integration")
-class Bind extends CamelCommand {
+public class Bind extends CamelCommand {
 
     @CommandLine.Option(names = { "--source" }, description = "Source (from) 
such as a Kamelet or Camel endpoint uri",
                         required = true)
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java
index e958ff1efa1..f23ae4c83e3 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java
@@ -22,7 +22,7 @@ import picocli.AutoComplete;
 import picocli.CommandLine;
 
 @CommandLine.Command(name = "complete", description = "Generate completion 
script for bash/zsh")
-class Complete extends CamelCommand {
+public class Complete extends CamelCommand {
 
     public Complete(CamelJBangMain main) {
         super(main);
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
index 3eb0815a346..fd38d2f10a5 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
@@ -27,7 +27,7 @@ import picocli.CommandLine.Command;
 
 @Command(name = "export",
          description = "Export Camel integration to Spring Boot or Quarkus 
based project")
-class Export extends ExportBaseCommand {
+public class Export extends ExportBaseCommand {
 
     public Export(CamelJBangMain main) {
         super(main);
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
index b578d169c6c..e5a73d38c60 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
@@ -42,7 +42,7 @@ import static 
org.apache.camel.dsl.jbang.core.common.GitHubHelper.asGithubSingle
 import static 
org.apache.camel.dsl.jbang.core.common.GitHubHelper.fetchGithubUrls;
 
 @Command(name = "init", description = "Creates a new Camel integration")
-class Init extends CamelCommand {
+public class Init extends CamelCommand {
 
     @Parameters(description = "Name of integration file (or a github link)", 
arity = "1",
                 paramLabel = "<file>", parameterConsumer = FileConsumer.class)
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java
index abe17f93f17..fbc929fc7c2 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java
@@ -22,7 +22,7 @@ import java.util.Stack;
 import picocli.CommandLine;
 
 @CommandLine.Command(name = "pipe", description = "Run Camel integration in 
pipe and filters mode for terminal scripting")
-class Pipe extends CamelCommand {
+public class Pipe extends CamelCommand {
 
     @CommandLine.Parameters(description = "Name of file", arity = "1",
                             paramLabel = "<file>", parameterConsumer = 
FileConsumer.class)
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index 7bd9a459048..873d150362c 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -75,7 +75,7 @@ import static 
org.apache.camel.dsl.jbang.core.common.GitHubHelper.asGithubSingle
 import static 
org.apache.camel.dsl.jbang.core.common.GitHubHelper.fetchGithubUrls;
 
 @Command(name = "run", description = "Run as local Camel integration")
-class Run extends CamelCommand {
+public class Run extends CamelCommand {
 
     public static final String WORK_DIR = ".camel-jbang";
     public static final String RUN_SETTINGS_FILE = 
"camel-jbang-run.properties";
@@ -638,7 +638,7 @@ class Run extends CamelCommand {
             cmd = StringHelper.after(cmd, "main.CamelJBang ");
         }
         if (cmd == null) {
-            System.err.println("No Camel integration files to run");
+            spec.commandLine().getOut().println("No Camel integration files to 
run");
             return 1;
         }
         cmd = cmd.replaceFirst("--background=true", "");
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/BackgroundTest.java
 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/BackgroundTest.java
new file mode 100644
index 00000000000..868df823e19
--- /dev/null
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/BackgroundTest.java
@@ -0,0 +1,139 @@
+package org.apache.camel.dsl.jbang;
+
+import org.apache.camel.dsl.jbang.core.commands.Bind;
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.dsl.jbang.core.commands.CodeGenerator;
+import org.apache.camel.dsl.jbang.core.commands.CodeRestGenerator;
+import org.apache.camel.dsl.jbang.core.commands.Complete;
+import org.apache.camel.dsl.jbang.core.commands.DependencyCommand;
+import org.apache.camel.dsl.jbang.core.commands.DependencyCopy;
+import org.apache.camel.dsl.jbang.core.commands.DependencyList;
+import org.apache.camel.dsl.jbang.core.commands.Export;
+import org.apache.camel.dsl.jbang.core.commands.Init;
+import org.apache.camel.dsl.jbang.core.commands.Pipe;
+import org.apache.camel.dsl.jbang.core.commands.Run;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelGCAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelLogAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelReloadAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelResetStatsAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelRouteStartAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelRouteStopAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelSourceAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelSourceTop;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelThreadDump;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelTraceAction;
+import org.apache.camel.dsl.jbang.core.commands.action.LoggerAction;
+import org.apache.camel.dsl.jbang.core.commands.action.RouteControllerAction;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogCommand;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogComponent;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDataFormat;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDoc;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogKamelet;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogLanguage;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogOther;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelContextStatus;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelContextTop;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelCount;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelProcessorStatus;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelProcessorTop;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelRouteStatus;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelRouteTop;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelStatus;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelTop;
+import org.apache.camel.dsl.jbang.core.commands.process.Hawtio;
+import org.apache.camel.dsl.jbang.core.commands.process.Jolokia;
+import org.apache.camel.dsl.jbang.core.commands.process.ListBlocked;
+import org.apache.camel.dsl.jbang.core.commands.process.ListCircuitBreaker;
+import org.apache.camel.dsl.jbang.core.commands.process.ListEndpoint;
+import org.apache.camel.dsl.jbang.core.commands.process.ListEvent;
+import org.apache.camel.dsl.jbang.core.commands.process.ListHealth;
+import org.apache.camel.dsl.jbang.core.commands.process.ListInflight;
+import org.apache.camel.dsl.jbang.core.commands.process.ListMetric;
+import org.apache.camel.dsl.jbang.core.commands.process.ListProcess;
+import org.apache.camel.dsl.jbang.core.commands.process.ListService;
+import org.apache.camel.dsl.jbang.core.commands.process.ListVault;
+import org.apache.camel.dsl.jbang.core.commands.process.StopProcess;
+
+import org.junit.jupiter.api.Test;
+
+import org.assertj.core.api.Assertions;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import picocli.CommandLine;
+
+public class BackgroundTest {
+
+       @Test
+       public void test() {
+               CamelJBangMain main = new CamelJBangMain();
+               CommandLine commandLine = new CommandLine(main)
+                               .addSubcommand("init", new CommandLine(new 
Init(main)))
+                               .addSubcommand("run", new CommandLine(new 
Run(main)))
+                               .addSubcommand("log", new CommandLine(new 
CamelLogAction(main)))
+                               .addSubcommand("ps", new CommandLine(new 
ListProcess(main)))
+                               .addSubcommand("stop", new CommandLine(new 
StopProcess(main)))
+                               .addSubcommand("trace", new CommandLine(new 
CamelTraceAction(main)))
+                               .addSubcommand("get", new CommandLine(new 
CamelStatus(main))
+                                               .addSubcommand("context", new 
CommandLine(new CamelContextStatus(main)))
+                                               .addSubcommand("route", new 
CommandLine(new CamelRouteStatus(main)))
+                                               .addSubcommand("processor", new 
CommandLine(new CamelProcessorStatus(main)))
+                                               .addSubcommand("count", new 
CommandLine(new CamelCount(main)))
+                                               .addSubcommand("health", new 
CommandLine(new ListHealth(main)))
+                                               .addSubcommand("endpoint", new 
CommandLine(new ListEndpoint(main)))
+                                               .addSubcommand("event", new 
CommandLine(new ListEvent(main)))
+                                               .addSubcommand("inflight", new 
CommandLine(new ListInflight(main)))
+                                               .addSubcommand("blocked", new 
CommandLine(new ListBlocked(main)))
+                                               
.addSubcommand("route-controller", new CommandLine(new 
RouteControllerAction(main)))
+                                               
.addSubcommand("circuit-breaker", new CommandLine(new ListCircuitBreaker(main)))
+                                               .addSubcommand("metric", new 
CommandLine(new ListMetric(main)))
+                                               .addSubcommand("service", new 
CommandLine(new ListService(main)))
+                                               .addSubcommand("source", new 
CommandLine(new CamelSourceAction(main)))
+                                               .addSubcommand("vault", new 
CommandLine(new ListVault(main))))
+                               .addSubcommand("top", new CommandLine(new 
CamelTop(main))
+                                               .addSubcommand("context", new 
CommandLine(new CamelContextTop(main)))
+                                               .addSubcommand("route", new 
CommandLine(new CamelRouteTop(main)))
+                                               .addSubcommand("processor", new 
CommandLine(new CamelProcessorTop(main)))
+                                               .addSubcommand("source", new 
CommandLine(new CamelSourceTop(main))))
+                               .addSubcommand("cmd", new CommandLine(new 
CamelAction(main))
+                                               .addSubcommand("start-route", 
new CommandLine(new CamelRouteStartAction(main)))
+                                               .addSubcommand("stop-route", 
new CommandLine(new CamelRouteStopAction(main)))
+                                               .addSubcommand("reset-stats", 
new CommandLine(new CamelResetStatsAction(main)))
+                                               .addSubcommand("reload", new 
CommandLine(new CamelReloadAction(main)))
+                                               .addSubcommand("thread-dump", 
new CommandLine(new CamelThreadDump(main)))
+                                               .addSubcommand("logger", new 
CommandLine(new LoggerAction(main)))
+                                               .addSubcommand("gc", new 
CommandLine(new CamelGCAction(main))))
+                               .addSubcommand("dependency", new 
CommandLine(new DependencyCommand(main))
+                                               .addSubcommand("list", new 
CommandLine(new DependencyList(main)))
+                                               .addSubcommand("copy", new 
CommandLine(new DependencyCopy(main))))
+                               .addSubcommand("generate", new CommandLine(new 
CodeGenerator(main))
+                                               .addSubcommand("rest", new 
CommandLine(new CodeRestGenerator(main))))
+                               .addSubcommand("catalog", new CommandLine(new 
CatalogCommand(main))
+                                               .addSubcommand("component", new 
CommandLine(new CatalogComponent(main)))
+                                               .addSubcommand("dataformat", 
new CommandLine(new CatalogDataFormat(main)))
+                                               .addSubcommand("language", new 
CommandLine(new CatalogLanguage(main)))
+                                               .addSubcommand("other", new 
CommandLine(new CatalogOther(main)))
+                                               .addSubcommand("kamelet", new 
CommandLine(new CatalogKamelet(main))))
+                               .addSubcommand("doc", new CommandLine(new 
CatalogDoc(main)))
+                               .addSubcommand("jolokia", new CommandLine(new 
Jolokia(main)))
+                               .addSubcommand("hawtio", new CommandLine(new 
Hawtio(main)))
+                               .addSubcommand("bind", new CommandLine(new 
Bind(main)))
+                               .addSubcommand("pipe", new CommandLine(new 
Pipe(main)))
+                               .addSubcommand("export", new CommandLine(new 
Export(main)))
+                               .addSubcommand("completion", new 
CommandLine(new Complete(main)));
+
+               StringWriter sw = new StringWriter();
+               commandLine.setOut(new PrintWriter(sw));
+
+               int exitCode = commandLine.execute("init", "test.yaml", 
"--directory=target/data");
+               Assertions.assertThat(exitCode).isGreaterThanOrEqualTo(0);
+
+               exitCode = commandLine.execute("run", "target/data/test.yaml", 
"--background");
+               // ProcessHandle.current().info().commandLine().orElse(null);
+               // /home/federico/.sdkman/candidates/java/17.0.2-open/bin/java 
-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:27155,suspend=y,server=n 
-ea -Djava.security.egd=file:///dev/urandom 
-Djavax.xml.accessExternalSchema=file,http,https 
-Djavax.xml.accessExternalDTD=file,http 
-Dderby.stream.error.file=target/derby.log -Djava.awt.headless=true 
-Djava.util.logging.config.file=/home/federico/Work/croway/camel/dsl/camel-jbang/camel-jbang-core/target/test-classes/logging.properties
 -Dorg.apach [...]
+               Assertions.assertThat(sw.toString()).doesNotContain("No Camel 
integration files to run");
+               Assertions.assertThat(exitCode).isGreaterThanOrEqualTo(0);
+       }
+}

Reply via email to