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); + } +}
