This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 648baabf7617 Rework camel-jbang-it to support camel-launcher (#21362)
648baabf7617 is described below
commit 648baabf7617594325a89251a10f395ed4d66504
Author: Jakub Vrubel <[email protected]>
AuthorDate: Thu Feb 12 16:03:50 2026 +0100
Rework camel-jbang-it to support camel-launcher (#21362)
---
dsl/camel-jbang/camel-jbang-it/pom.xml | 2 ++
.../apache/camel/dsl/jbang/it/CamelDebugITCase.java | 2 +-
.../apache/camel/dsl/jbang/it/CmdStartStopITCase.java | 16 ++++++++--------
.../camel/dsl/jbang/it/InfrastructureITCase.java | 6 +++---
.../org/apache/camel/dsl/jbang/it/JolokiaITCase.java | 7 +++----
.../apache/camel/dsl/jbang/it/MavenGradleITCase.java | 14 ++++++++------
.../apache/camel/dsl/jbang/it/RouteFromDirITCase.java | 1 -
.../apache/camel/dsl/jbang/it/RunCommandITCase.java | 7 ++++---
.../camel/dsl/jbang/it/RunCommandOnMqttITCase.java | 8 ++++----
.../camel/dsl/jbang/it/support/JBangTestSupport.java | 18 +++++++++++++++---
.../infra/cli/services/CliLocalContainerService.java | 8 +++++++-
.../camel/test/infra/cli/services/CliService.java | 2 ++
12 files changed, 57 insertions(+), 34 deletions(-)
diff --git a/dsl/camel-jbang/camel-jbang-it/pom.xml
b/dsl/camel-jbang/camel-jbang-it/pom.xml
index 6d926c948f54..9abfc35706ea 100644
--- a/dsl/camel-jbang/camel-jbang-it/pom.xml
+++ b/dsl/camel-jbang/camel-jbang-it/pom.xml
@@ -227,6 +227,7 @@
<cli.jbang.repo>apache/camel</cli.jbang.repo>
<cli.jbang.branch>main</cli.jbang.branch>
<cli.jbang.docker.file/>
+ <cli.service.command>camel</cli.service.command>
<export.runtime/>
<maven.test.skip>false</maven.test.skip>
<shared.data.folder>target/data</shared.data.folder>
@@ -276,6 +277,7 @@
<cli.service.repo>${cli.jbang.repo}</cli.service.repo>
<cli.service.branch>${cli.jbang.branch}</cli.service.branch>
<cli.service.docker.file>${cli.jbang.docker.file}</cli.service.docker.file>
+
<cli.service.command>${cli.service.command}</cli.service.command>
<jbang.it.assert.wait.timeout>300</jbang.it.assert.wait.timeout>
<DISPLAY>${x11.display}</DISPLAY>
</systemPropertyVariables>
diff --git
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
index 45a1a5df0702..885bc664f331 100644
---
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
+++
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
@@ -25,7 +25,7 @@ public class CamelDebugITCase extends JBangTestSupport {
@Test
public void testDebug() throws IOException {
copyResourceInDataFolder(TestResources.ROUTE2);
- execInContainer(String.format("nohup camel debug %s/route2.yaml&",
mountPoint()));
+ execNohup(String.format("debug %s/route2.yaml", mountPoint()));
checkLogContains("Debugger JMXConnector listening at:");
}
}
diff --git
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CmdStartStopITCase.java
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CmdStartStopITCase.java
index a80e1a46a4a1..f99a8c8da832 100644
---
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CmdStartStopITCase.java
+++
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CmdStartStopITCase.java
@@ -40,10 +40,10 @@ public class CmdStartStopITCase extends JBangTestSupport {
public void testCmdStopByPID() throws IOException {
copyResourceInDataFolder(TestResources.DIR_ROUTE);
copyResourceInDataFolder(TestResources.ROUTE2);
- String PID = executeBackground(String.format("run
%s/FromDirectoryRoute.java", mountPoint()));
+ String process = executeBackground(String.format("run
%s/FromDirectoryRoute.java", mountPoint()));
executeBackground(String.format("run %s/route2.yaml", mountPoint()));
checkLogContains("Hello world!");
- execute("cmd stop-route " + PID);
+ execute("cmd stop-route " + getPID(process));
checkCommandOutputsPattern("get route",
"route1\\s+timer:\\/\\/(yaml|java)\\?period=1000\\s+Stopped.*\\n.*route2.*timer:\\/\\/(yaml|java)\\?period=1000\\s+Started",
ASSERTION_WAIT_SECONDS);
@@ -78,11 +78,11 @@ public class CmdStartStopITCase extends JBangTestSupport {
public void testCmdStartByPID() throws IOException {
copyResourceInDataFolder(TestResources.DIR_ROUTE);
copyResourceInDataFolder(TestResources.ROUTE2);
- String PID = executeBackground(String.format("run
%s/FromDirectoryRoute.java", mountPoint()));
+ String process = executeBackground(String.format("run
%s/FromDirectoryRoute.java", mountPoint()));
executeBackground(String.format("run %s/route2.yaml", mountPoint()));
checkLogContains("Hello world!");
execute("cmd stop-route");
- execute("cmd start-route " + PID);
+ execute("cmd start-route " + getPID(process));
checkCommandOutputsPattern("get route",
"route1\\s+timer:\\/\\/(yaml|java)\\?period=1000\\s+Started.*\\n.*route2.*timer:\\/\\/(yaml|java)\\?period=1000\\s+Stopped",
ASSERTION_WAIT_SECONDS);
@@ -104,14 +104,14 @@ public class CmdStartStopITCase extends JBangTestSupport {
@Test
public void testCamelWatch() throws IOException {
copyResourceInDataFolder(TestResources.ROUTE2);
- String PID = executeBackground(String.format("run %s/route2.yaml",
mountPoint()));
- newFileInDataFolder("watch-sleep", "nohup camel ps --watch&\n" +
+ String process = executeBackground(String.format("run %s/route2.yaml",
mountPoint()));
+ newFileInDataFolder("watch-sleep", "nohup " + getMainCommand() + " ps
--watch&\n" +
"sleep 5\n" +
"echo \"q\"\n");
execInContainer(String.format("chmod +x %s/watch-sleep",
mountPoint()));
Assertions.assertThat(
execInContainer(String.format("%s/watch-sleep", mountPoint())))
- .as("watch command should output PID" + PID)
- .contains(PID);
+ .as("watch command should output PID" + getPID(process))
+ .contains(getPID(process));
}
}
diff --git
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/InfrastructureITCase.java
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/InfrastructureITCase.java
index fe25b73ab338..ae27a71a6d2a 100644
---
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/InfrastructureITCase.java
+++
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/InfrastructureITCase.java
@@ -39,7 +39,7 @@ public class InfrastructureITCase extends JBangTestSupport {
@Test
public void runStopServiceTest() {
String msg = execute("infra run --background " + SERVICE);
- String PID = getPID(msg);
+ String PID = getServicePID(msg);
Assertions.assertThat(msg).contains(String.format("Running %s in
background", SERVICE));
Awaitility.await()
.atMost(Duration.ofSeconds(30))
@@ -55,7 +55,7 @@ public class InfrastructureITCase extends JBangTestSupport {
@Test
public void runServiceWithImplementationTest() {
String msg = execute(String.format("infra run --background %s %s",
IMPL_SERVICE, IMPLEMENTATION));
- String PID = getPID(msg);
+ String PID = getServicePID(msg);
Assertions.assertThat(msg).contains(String.format("Running %s in
background", IMPL_SERVICE));
Awaitility.await()
.atMost(Duration.ofSeconds(30))
@@ -66,7 +66,7 @@ public class InfrastructureITCase extends JBangTestSupport {
checkCommandDoesNotOutput("infra ps", PID);
}
- private String getPID(String message) {
+ private String getServicePID(String message) {
return message.split(":")[1].replaceAll("[^0-9]", "");
}
}
diff --git
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
index 31f43ad678d7..b6281a00f363 100644
---
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
+++
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
@@ -29,7 +29,7 @@ public class JolokiaITCase extends JBangTestSupport {
@Test
public void testAttachJolokia() throws IOException {
copyResourceInDataFolder(TestResources.DIR_ROUTE);
- String processID = executeBackground(String.format("run
%s/FromDirectoryRoute.java", mountPoint()));
+ String process = executeBackground(String.format("run
%s/FromDirectoryRoute.java", mountPoint()));
checkLogContains("(FromDirectoryRoute) started");
execute("jolokia FromDirectoryRoute");
Assertions.assertThat(execInContainer("curl
http://127.0.0.1:8778/jolokia/"))
@@ -37,8 +37,7 @@ public class JolokiaITCase extends JBangTestSupport {
.contains("\"agentContext\":\"/jolokia\"");
Assertions.assertThat(execute("jolokia FromDirectoryRoute --stop"))
.as("Jolokia should stop")
- .contains("Stopped Jolokia for PID " + processID);
-
+ .contains("Stopped Jolokia for PID " + getPID(process));
}
@Test
@@ -46,7 +45,7 @@ public class JolokiaITCase extends JBangTestSupport {
copyResourceInDataFolder(TestResources.DIR_ROUTE);
executeBackground(String.format("run %s/FromDirectoryRoute.java",
mountPoint()));
checkLogContains("(FromDirectoryRoute) started");
- execInContainer("nohup camel hawtio FromDirectoryRoute &");
+ execNohup("hawtio FromDirectoryRoute");
Awaitility.await()
.atMost(Duration.ofSeconds(30))
.pollInterval(Duration.ofSeconds(1))
diff --git
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/MavenGradleITCase.java
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/MavenGradleITCase.java
index 5174a5dfcf0b..a632e797b715 100644
---
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/MavenGradleITCase.java
+++
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/MavenGradleITCase.java
@@ -28,10 +28,11 @@ public class MavenGradleITCase extends JBangTestSupport {
@Test
public void runFromMavenModuleTest() {
execInContainer(String.format("mkdir %s/mvn-app", mountPoint()));
- execInContainer(String.format("cd %s/mvn-app && camel init
cheese.xml", mountPoint()));
+ execInContainer(String.format("cd %s/mvn-app && %s init cheese.xml",
mountPoint(), getMainCommand()));
execInContainer(String.format(
- "cd %s/mvn-app && camel export --runtime=camel-main
--gav=org.jbang:maven-app:1.0-SNAPSHOT", mountPoint()));
- execInContainer(String.format("cd %s/mvn-app && camel run pom.xml
--background", mountPoint()));
+ "cd %s/mvn-app && %s export --runtime=camel-main
--gav=org.jbang:maven-app:1.0-SNAPSHOT", mountPoint(),
+ getMainCommand()));
+ execInContainer(String.format("cd %s/mvn-app && %s run pom.xml
--background", mountPoint(), getMainCommand()));
checkLogContains("Apache Camel " + version() + " (maven-app) started");
checkLogContains("Hello Camel from route1");
}
@@ -39,13 +40,14 @@ public class MavenGradleITCase extends JBangTestSupport {
@Test
public void runFromGradleTest() throws IOException {
execInContainer(String.format("mkdir %s/gradle-app", mountPoint()));
- execInContainer(String.format("cd %s/gradle-app && camel init
cheese.xml", mountPoint()));
+ execInContainer(String.format("cd %s/gradle-app && %s init
cheese.xml", mountPoint(), getMainCommand()));
execInContainer(String.format(
- "cd %s/gradle-app && camel export --runtime=camel-main
--gav=org.jbang:gradle-app:1.0-SNAPSHOT", mountPoint()));
+ "cd %s/gradle-app && %s export --runtime=camel-main
--gav=org.jbang:gradle-app:1.0-SNAPSHOT", mountPoint(),
+ getMainCommand()));
copyResourceInDataFolder(TestResources.BUILD_GRADLE);
Files.move(Path.of(String.format("%s/build.gradle", getDataFolder())),
Path.of(String.format("%s/gradle-app/build.gradle",
getDataFolder())));
- execInContainer(String.format("cd %s/gradle-app && camel run pom.xml
--background", mountPoint()));
+ execInContainer(String.format("cd %s/gradle-app && %s run pom.xml
--background", mountPoint(), getMainCommand()));
checkLogContains("Apache Camel " + version() + " (gradle-app)
started");
checkLogContains("Hello Camel from route1");
}
diff --git
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RouteFromDirITCase.java
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RouteFromDirITCase.java
index f88fb3bcdfd2..762151f2bc84 100644
---
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RouteFromDirITCase.java
+++
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RouteFromDirITCase.java
@@ -29,5 +29,4 @@ public class RouteFromDirITCase extends JBangTestSupport {
executeBackground(String.format("run --source-dir=%s", mountPoint()));
checkLogContains("Hello world!");
}
-
}
diff --git
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
index 4e319f19c049..86bbe5ebef5d 100644
---
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
+++
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
@@ -153,10 +153,10 @@ public class RunCommandITCase extends JBangTestSupport {
@DisabledIfSystemProperty(named = CliProperties.FORCE_RUN_VERSION, matches
= ".+", disabledReason = "Due to CAMEL-20426")
public void runSpecificVersionTest(String version) {
initFileInDataFolder("cheese.xml");
- final String pid = executeBackground(String.format("run %s/cheese.xml
--camel-version=%s", mountPoint(), version));
+ final String process = executeBackground(String.format("run
%s/cheese.xml --camel-version=%s", mountPoint(), version));
checkLogContainsPattern(String.format(" Apache Camel %s .* started",
version));
checkLogContains(DEFAULT_MSG);
- execute("stop " + pid);
+ execute("stop " + getPID(process));
}
@Test
@@ -182,7 +182,8 @@ public class RunCommandITCase extends JBangTestSupport {
"sshpass -p '" + containerService.getSshPassword()
+ "' ssh -o UserKnownHostsFile=/dev/null -o
StrictHostKeyChecking=no -X jbang@localhost -p "
+ containerService.getSshPort()
- + " \"camel run clipboard.xml --background
&& camel log\"")
+ + " \"" + getMainCommand() + " run
clipboard.xml --background && " + getMainCommand()
+ + " log\"")
.redirectErrorStream(true);
try (BufferedReader input = new BufferedReader(new
InputStreamReader(builder.start().getInputStream()))) {
Assertions.assertThatCode(() -> Awaitility.await()
diff --git
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
index 367e1d35deb9..7e3ac64f26bc 100644
---
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
+++
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
@@ -48,22 +48,22 @@ public class RunCommandOnMqttITCase extends
JBangTestSupport {
public void sendMessageWithoutEndpoint() throws IOException {
copyResourceInDataFolder(TestResources.MQQT_CONSUMER);
final String ipAddr = getIpAddr(service.getContainer());
- final String pid = executeBackground(String.format("run
--property=brokerUrl=%s %s/%s",
+ final String process = executeBackground(String.format("run
--property=brokerUrl=%s %s/%s",
"tcp://" + ipAddr + ":1883",
mountPoint(), TestResources.MQQT_CONSUMER.getName()));
checkLogContains("Started route1 (kamelet:mqtt5-source)");
final String payloadFile = "payload.json";
newFileInDataFolder(payloadFile, "{\"value\": 21}");
- sendCmd(String.format("%s/%s", mountPoint(), payloadFile), pid);
+ sendCmd(String.format("%s/%s", mountPoint(), payloadFile),
getPID(process));
checkLogContains("The temperature is 21");
}
@Test
public void testStub() throws IOException {
copyResourceInDataFolder(TestResources.STUB_ROUTE);
- final String pid = executeBackground(String.format("run %s/%s
--stub=jms",
+ final String process = executeBackground(String.format("run %s/%s
--stub=jms",
mountPoint(), TestResources.STUB_ROUTE.getName()));
- checkCommandOutputs("cmd send --body='Hello camel from stubbed jms' "
+ pid, "Sent (success)");
+ checkCommandOutputs("cmd send --body='Hello camel from stubbed jms' "
+ getPID(process), "Sent (success)");
checkCommandOutputs("cmd stub --browse", "Hello camel from stubbed
jms", ASSERTION_WAIT_SECONDS);
}
diff --git
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
index 9be9ed567e30..df1060a7562a 100644
---
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
+++
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
@@ -141,6 +141,10 @@ public abstract class JBangTestSupport {
return containerService.executeBackground(command);
}
+ protected String execNohup(final String command) {
+ return containerService.executeGenericCommand("nohup " +
getMainCommand() + " " + command + " &");
+ }
+
protected String mountPoint() {
return String.format("%s/%s", containerService.getMountPoint(),
containerService.id());
}
@@ -178,13 +182,13 @@ public abstract class JBangTestSupport {
protected void checkCommandOutputs(String command, String contains) {
Assertions.assertThat(execute(command))
- .as("command camel " + command + " should output " + contains)
+ .as("command " + getMainCommand() + " " + command + "should
output " + contains)
.contains(contains);
}
protected void checkCommandOutputsPattern(String command, String contains)
{
Assertions.assertThat(execute(command))
- .as("command camel " + command + " should output pattern " +
contains)
+ .as("command " + getMainCommand() + " " + command + "should
output " + contains)
.containsPattern(contains);
}
@@ -196,7 +200,7 @@ public abstract class JBangTestSupport {
protected void checkCommandDoesNotOutput(String command, String contains) {
Assertions.assertThat(execute(command))
- .as("command camel " + command + " should not output " +
contains)
+ .as("command " + getMainCommand() + " " + command + "should
not output " + contains)
.doesNotContain(contains);
}
@@ -289,6 +293,10 @@ public abstract class JBangTestSupport {
return getLogs(null);
}
+ protected String getPID(String startupMessage) {
+ return startupMessage.split("PID:")[1].split("
")[1].replaceAll("[^0-9]", "");
+ }
+
protected String getContainerLogs() {
return containerService.getContainerLogs();
}
@@ -334,6 +342,10 @@ public abstract class JBangTestSupport {
return containerDataFolder;
}
+ protected String getMainCommand() {
+ return containerService.getMainCommand();
+ }
+
public String version() {
return containerService.version();
}
diff --git
a/test-infra/camel-test-infra-cli/src/test/java/org/apache/camel/test/infra/cli/services/CliLocalContainerService.java
b/test-infra/camel-test-infra-cli/src/test/java/org/apache/camel/test/infra/cli/services/CliLocalContainerService.java
index 03ffac8c21d0..3f71c9958135 100644
---
a/test-infra/camel-test-infra-cli/src/test/java/org/apache/camel/test/infra/cli/services/CliLocalContainerService.java
+++
b/test-infra/camel-test-infra-cli/src/test/java/org/apache/camel/test/infra/cli/services/CliLocalContainerService.java
@@ -35,6 +35,7 @@ import org.testcontainers.containers.Container;
public class CliLocalContainerService implements CliService,
ContainerService<CliBuiltContainer> {
public static final String CONTAINER_NAME = "camel-cli";
+ public static final String MAIN_COMMAND =
System.getProperty("cli.service.command", "camel");
private static final Logger LOG =
LoggerFactory.getLogger(CliLocalContainerService.class);
private final CliBuiltContainer container;
private String version;
@@ -113,7 +114,7 @@ public class CliLocalContainerService implements
CliService, ContainerService<Cl
@Override
public String execute(String command) {
- return executeGenericCommand(String.format("camel %s", command));
+ return executeGenericCommand(MAIN_COMMAND + " " + command);
}
@Override
@@ -215,6 +216,11 @@ public class CliLocalContainerService implements
CliService, ContainerService<Cl
return container.getSshPassword();
}
+ @Override
+ public String getMainCommand() {
+ return MAIN_COMMAND;
+ }
+
private static Map<String, String> getHostsMap() {
return
Optional.ofNullable(System.getProperty(CliProperties.EXTRA_HOSTS))
.map(p -> p.split(","))
diff --git
a/test-infra/camel-test-infra-cli/src/test/java/org/apache/camel/test/infra/cli/services/CliService.java
b/test-infra/camel-test-infra-cli/src/test/java/org/apache/camel/test/infra/cli/services/CliService.java
index 59580227b5f9..4b6e49ea2262 100644
---
a/test-infra/camel-test-infra-cli/src/test/java/org/apache/camel/test/infra/cli/services/CliService.java
+++
b/test-infra/camel-test-infra-cli/src/test/java/org/apache/camel/test/infra/cli/services/CliService.java
@@ -74,4 +74,6 @@ public interface CliService extends BeforeEachCallback,
AfterEachCallback, TestS
int getSshPort();
String getSshPassword();
+
+ String getMainCommand();
}