/** * Handles the SSH connection in case of timeout or exit. If the session ends with a timeout * condition, it throws an exception; if the channel reaches an end of file condition, but it * does not have an exit status, it returns true to break the loop; otherwise, it returns * false. */ protected static boolean canEndTheSshConnection(int waitResultTimeoutInMs, com.trilead.ssh2.Session sess, int conditions) throws SshException { if (isChannelConditionEof(conditions)) { int newConditions = sess.waitForCondition(ChannelCondition.EXIT_STATUS, waitResultTimeoutInMs); throwSshExceptionIfConditionsTimeout(newConditions); if ((newConditions & ChannelCondition.EXIT_STATUS) != 0) { return true; } } return false; }
@Test public void isChannelConditionEofTestStderr() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.STDERR_DATA)); }
@Test public void isChannelConditionEofTestEof() { Assert.assertTrue(SshHelper.isChannelConditionEof(ChannelCondition.EOF)); }
@Test public void isChannelConditionEofTestTimeout() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.TIMEOUT)); }
@Test public void isChannelConditionEofTestClosed() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.CLOSED)); }
@Test public void isChannelConditionEofTestStdout() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.STDOUT_DATA)); }
@Test public void isChannelConditionEofTestExitStatus() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.EXIT_STATUS)); }
@Test public void isChannelConditionEofTestExitSignal() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.EXIT_SIGNAL)); }
@Test public void canEndTheSshConnectionTest() throws Exception { PowerMockito.spy(SshHelper.class); Session mockedSession = Mockito.mock(Session.class); PowerMockito.doReturn(true).when(SshHelper.class, "isChannelConditionEof", Mockito.anyInt()); Mockito.when(mockedSession.waitForCondition(ChannelCondition.EXIT_STATUS, 1l)).thenReturn(0); PowerMockito.doNothing().when(SshHelper.class, "throwSshExceptionIfConditionsTimeout", Mockito.anyInt()); SshHelper.canEndTheSshConnection(1, mockedSession, 0); PowerMockito.verifyStatic(); SshHelper.isChannelConditionEof(Mockito.anyInt()); SshHelper.throwSshExceptionIfConditionsTimeout(Mockito.anyInt()); Mockito.verify(mockedSession).waitForCondition(ChannelCondition.EXIT_STATUS, 1l); }
/** * Handles the SSH connection in case of timeout or exit. If the session ends with a timeout * condition, it throws an exception; if the channel reaches an end of file condition, but it * does not have an exit status, it returns true to break the loop; otherwise, it returns * false. */ protected static boolean canEndTheSshConnection(final int waitResultTimeoutInMs, final com.trilead.ssh2.Session sess, final int conditions) throws SshException { if (isChannelConditionEof(conditions)) { final int newConditions = sess.waitForCondition(ChannelCondition.EXIT_STATUS, waitResultTimeoutInMs); throwSshExceptionIfConditionsTimeout(newConditions); if ((newConditions & ChannelCondition.EXIT_STATUS) != 0) { return true; } } return false; }
@Test public void isChannelConditionEofTestExitSignal() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.EXIT_SIGNAL)); }
@Test public void isChannelConditionEofTestStdout() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.STDOUT_DATA)); }
@Test public void isChannelConditionEofTestTimeout() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.TIMEOUT)); }
@Test public void isChannelConditionEofTestStderr() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.STDERR_DATA)); }
@Test public void isChannelConditionEofTestClosed() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.CLOSED)); }
@Test public void isChannelConditionEofTestExitStatus() { Assert.assertFalse(SshHelper.isChannelConditionEof(ChannelCondition.EXIT_STATUS)); }
@Test public void isChannelConditionEofTestEof() { Assert.assertTrue(SshHelper.isChannelConditionEof(ChannelCondition.EOF)); }
@Test public void canEndTheSshConnectionTest() throws Exception { PowerMockito.spy(SshHelper.class); final Session mockedSession = Mockito.mock(Session.class); PowerMockito.doReturn(true).when(SshHelper.class, "isChannelConditionEof", Mockito.anyInt()); Mockito.when(mockedSession.waitForCondition(ChannelCondition.EXIT_STATUS, 1l)).thenReturn(0); PowerMockito.doNothing().when(SshHelper.class, "throwSshExceptionIfConditionsTimeout", Mockito.anyInt()); SshHelper.canEndTheSshConnection(1, mockedSession, 0); PowerMockito.verifyStatic(); SshHelper.isChannelConditionEof(Mockito.anyInt()); SshHelper.throwSshExceptionIfConditionsTimeout(Mockito.anyInt()); Mockito.verify(mockedSession).waitForCondition(ChannelCondition.EXIT_STATUS, 1l); }