Browse Source

Add a test for upstream bug SSHD-1028

SSHD-1028:[1] server doesn't close server-side sessions properly when
client disconnects.

[1] https://issues.apache.org/jira/projects/SSHD/issues/SSHD-1028

Change-Id: I0d67f49e35abe8375cb1370a494dc01d0fb2c9b1
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
tags/v5.9.0.202008260805-m3
Thomas Wolf 3 years ago
parent
commit
151f0cb82b

+ 12
- 0
org.eclipse.jgit.junit.ssh/src/org/eclipse/jgit/junit/ssh/SshTestGitServer.java View File

@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import org.apache.sshd.common.NamedResource;
import org.apache.sshd.common.PropertyResolverUtils;
@@ -297,6 +298,17 @@ public class SshTestGitServer {
DefaultKeyboardInteractiveAuthenticator.INSTANCE);
}

/**
* Retrieves the server's property map. This is a live map; changing it
* affects the server.
*
* @return a live map of the server's properties
* @since 5.9
*/
public Map<String, Object> getProperties() {
return server.getProperties();
}

/**
* Starts the test server, listening on a random port.
*

+ 2
- 0
org.eclipse.jgit.ssh.apache.test/META-INF/MANIFEST.MF View File

@@ -15,6 +15,8 @@ Import-Package: org.apache.sshd.client.config.hosts;version="[2.4.0,2.5.0)",
org.apache.sshd.common.session;version="[2.4.0,2.5.0)",
org.apache.sshd.common.util.net;version="[2.4.0,2.5.0)",
org.apache.sshd.common.util.security;version="[2.4.0,2.5.0)",
org.apache.sshd.server;version="[2.4.0,2.5.0)",
org.eclipse.jgit.api;version="[5.9.0,5.10.0)",
org.eclipse.jgit.api.errors;version="[5.9.0,5.10.0)",
org.eclipse.jgit.internal.transport.sshd.proxy;version="[5.9.0,5.10.0)",
org.eclipse.jgit.junit;version="[5.9.0,5.10.0)",

+ 29
- 0
org.eclipse.jgit.ssh.apache.test/tst/org/eclipse/jgit/transport/sshd/ApacheSshTest.java View File

@@ -21,6 +21,8 @@ import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.sshd.client.config.hosts.KnownHostEntry;
import org.apache.sshd.server.ServerFactoryManager;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.TransportException;
import org.eclipse.jgit.junit.ssh.SshTestBase;
import org.eclipse.jgit.lib.Constants;
@@ -175,4 +177,31 @@ public class ApacheSshTest extends SshTestBase {
defaultCloneDir, null,
"IdentityFile " + privateKey1.getAbsolutePath());
}

/**
* Test for SSHD-1028. If the server doesn't close sessions, the second
* fetch will fail. Occurs on sshd 2.5.[01].
*
* @throws Exception
* on errors
* @see <a href=
* "https://issues.apache.org/jira/projects/SSHD/issues/SSHD-1028">SSHD-1028</a>
*/
@Test
public void testPushWithSessionLimit() throws Exception {
server.getProperties().put(ServerFactoryManager.MAX_CONCURRENT_SESSIONS,
Integer.valueOf(2));
File localClone = cloneWith("ssh://localhost/doesntmatter",
defaultCloneDir, null, //
"Host localhost", //
"HostName localhost", //
"Port " + testPort, //
"User " + TEST_USER, //
"IdentityFile " + privateKey1.getAbsolutePath());
// Fetch a couple of times
try (Git git = Git.open(localClone)) {
git.fetch().call();
git.fetch().call();
}
}
}

Loading…
Cancel
Save