Skip to content

Commit d640ae8

Browse files
committed
Shutdown server when port has been changed
Since a1e9ed2 the port of the SFTP server can be changed during test. In this case the SFTP server was not shutdown after the test, because the rule restarted it but Apache SSHD is not designed to be restarted. See https://issues.apache.org/jira/browse/SSHD-769 We now start a new server when the port is changed. This server is shutdown after the test.
1 parent 8104d50 commit d640ae8

File tree

4 files changed

+40
-10
lines changed

4 files changed

+40
-10
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Fake SFTP Server Rule is available from [Maven Central](http://search.maven.org/
2121
<dependency>
2222
<groupId>com.github.stefanbirkner</groupId>
2323
<artifactId>fake-sftp-server-rule</artifactId>
24-
<version>1.1.0</version>
24+
<version>1.1.1</version>
2525
</dependency>
2626

2727

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</parent>
1010

1111
<artifactId>fake-sftp-server-rule</artifactId>
12-
<version>1.1.1-SNAPSHOT</version>
12+
<version>1.1.1</version>
1313
<packaging>jar</packaging>
1414

1515
<name>Fake SFTP Server Rule</name>

src/main/java/com/github/stefanbirkner/fakesftpserver/rule/FakeSftpServerRule.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,7 @@ public FakeSftpServerRule setPort(
165165
private void restartServer() {
166166
try {
167167
server.stop();
168-
server.setPort(port);
169-
server.start();
168+
startServer(fileSystem);
170169
} catch (IOException e) {
171170
throw new IllegalStateException(
172171
"The SFTP server cannot be restarted.",
@@ -296,12 +295,16 @@ public Statement apply(
296295
@Override
297296
public void evaluate() throws Throwable {
298297
try (
299-
FileSystem fileSystem = createFileSystem();
300-
SshServer server = startServer(fileSystem)
298+
FileSystem fileSystem = createFileSystem()
301299
) {
302-
base.evaluate();
300+
startServer(fileSystem);
301+
try {
302+
base.evaluate();
303+
} finally {
304+
server.stop();
305+
server = null;
306+
}
303307
} finally {
304-
server = null;
305308
fileSystem = null;
306309
}
307310
}

src/test/java/com/github/stefanbirkner/fakesftpserver/rule/FakeSftpServerRuleTest.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -589,16 +589,43 @@ public void after_an_erroneous_test_SFTP_server_is_shutdown() {
589589
assertConnectionToSftpServerNotPossible(sftpServer);
590590
}
591591

592+
@Test
593+
public void after_a_test_first_SFTP_server_is_shutdown_when_port_was_changed_during_test() {
594+
FakeSftpServerRule sftpServer = new FakeSftpServerRule()
595+
.setPort(DUMMY_PORT - 1);
596+
executeTestWithRule(
597+
() -> sftpServer.setPort(DUMMY_PORT),
598+
sftpServer
599+
);
600+
assertConnectionToSftpServerNotPossible(DUMMY_PORT - 1);
601+
}
602+
603+
@Test
604+
public void after_a_test_second_SFTP_server_is_shutdown_when_port_was_changed_during_test() {
605+
FakeSftpServerRule sftpServer = new FakeSftpServerRule();
606+
executeTestWithRule(
607+
() -> sftpServer.setPort(DUMMY_PORT),
608+
sftpServer
609+
);
610+
assertConnectionToSftpServerNotPossible(DUMMY_PORT);
611+
}
612+
592613
private void assertConnectionToSftpServerNotPossible(
593614
FakeSftpServerRule sftpServer
615+
) {
616+
assertConnectionToSftpServerNotPossible(sftpServer.getPort());
617+
}
618+
619+
private void assertConnectionToSftpServerNotPossible(
620+
int port
594621
) {
595622
Throwable throwable = catchThrowable(
596-
() -> connectToServer(sftpServer)
623+
() -> connectToServerAtPort(port)
597624
);
598625
assertThat(throwable)
599626
.withFailMessage(
600627
"SFTP server is still running on port %d.",
601-
sftpServer.getPort()
628+
port
602629
)
603630
.hasCauseInstanceOf(ConnectException.class);
604631
}

0 commit comments

Comments
 (0)