diff --git a/itests/test/src/test/java/org/apache/karaf/itests/ssh/SshCommandTestBase.java b/itests/test/src/test/java/org/apache/karaf/itests/ssh/SshCommandTestBase.java index ac1d6904aa3..e3c87931ebe 100644 --- a/itests/test/src/test/java/org/apache/karaf/itests/ssh/SshCommandTestBase.java +++ b/itests/test/src/test/java/org/apache/karaf/itests/ssh/SshCommandTestBase.java @@ -20,6 +20,7 @@ import java.io.PipedOutputStream; import java.util.EnumSet; import java.util.Set; +import java.util.concurrent.TimeUnit; import org.apache.karaf.itests.BaseTest; import org.apache.sshd.client.SshClient; @@ -29,6 +30,7 @@ import org.apache.sshd.client.session.ClientSession; import org.apache.sshd.client.session.ClientSession.ClientSessionEvent; import org.awaitility.Awaitility; +import org.awaitility.core.ConditionTimeoutException; import org.junit.Assert; import org.junit.runner.RunWith; import org.ops4j.pax.exam.junit.PaxExam; @@ -48,7 +50,7 @@ enum Result { OK, NOT_FOUND, NO_CREDENTIALS } void addUsers(String manageruser, String vieweruser) throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); OutputStream pipe = openSshChannel("karaf", "karaf", out); - pipe.write(("jaas:realm-manage --realm=karaf" + writeCommandAndWait(pipe, out, "jaas:realm-manage --realm=karaf" + ";jaas:user-add " + manageruser + " " + manageruser + ";jaas:role-add " + manageruser + " manager" + ";jaas:role-add " + manageruser + " viewer" @@ -56,8 +58,7 @@ void addUsers(String manageruser, String vieweruser) throws Exception { + ";jaas:user-add " + vieweruser + " " + vieweruser + ";jaas:role-add " + vieweruser + " viewer" + ";jaas:role-add " + vieweruser + " ssh" - + ";jaas:update;jaas:realm-manage --realm=karaf;jaas:user-list\n").getBytes()); - pipe.flush(); + + ";jaas:update;jaas:realm-manage --realm=karaf;jaas:user-list"); closeSshChannel(pipe); System.out.println(new String(out.toByteArray())); } @@ -65,24 +66,52 @@ void addUsers(String manageruser, String vieweruser) throws Exception { void addViewer(String vieweruser) throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); OutputStream pipe = openSshChannel("karaf", "karaf", out); - pipe.write(("jaas:realm-manage --realm=karaf" + writeCommandAndWait(pipe, out, "jaas:realm-manage --realm=karaf" + ";jaas:user-add " + vieweruser + " " + vieweruser + ";jaas:role-add " + vieweruser + " viewer" + ";jaas:role-add " + vieweruser + " ssh" - + ";jaas:update;jaas:realm-manage --realm=karaf;jaas:user-list\n").getBytes()); - pipe.flush(); + + ";jaas:update;jaas:realm-manage --realm=karaf;jaas:user-list"); closeSshChannel(pipe); System.out.println(new String(out.toByteArray())); } - String assertCommand(String user, String command, Result result) throws Exception { + /** + * Writes the given command(s) to the SSH channel and blocks until they have been fully + * processed by the remote shell. + * + *
A sentinel {@code echo