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;
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.
*
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)",
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;
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();
+ }
+ }
}