Don't generate SSH keys if not using SSH

Generating keys is expensive for DSA and RSA (about 50-200ms per key),
so avoid the overhead if it's not necessary.

Change-Id: I5db740b0f4311a91a9437f0c7028a8f22b0ce072
This commit is contained in:
Han-Wen Nienhuys
2017-12-21 15:20:46 +01:00
parent f03af6cfd0
commit efbae2426f
4 changed files with 18 additions and 5 deletions

View File

@@ -348,6 +348,11 @@ public abstract class AbstractDaemonTest {
GerritServer.Description methodDesc =
GerritServer.Description.forTestMethod(description, configName);
testRequiresSsh = classDesc.useSshAnnotation() || methodDesc.useSshAnnotation();
if (!testRequiresSsh) {
baseConfig.setString("sshd", null, "listenAddress", "off");
}
baseConfig.setInt("receive", null, "changeUpdateThreads", 4);
if (classDesc.equals(methodDesc) && !classDesc.sandboxed() && !methodDesc.sandboxed()) {
if (commonServer == null) {
@@ -388,7 +393,6 @@ public abstract class AbstractDaemonTest {
adminRestSession = new RestSession(server, admin);
userRestSession = new RestSession(server, user);
testRequiresSsh = classDesc.useSshAnnotation() || methodDesc.useSshAnnotation();
if (testRequiresSsh
&& SshMode.useSsh()
&& (adminSshSession == null || userSshSession == null)) {

View File

@@ -26,6 +26,7 @@ import com.google.gerrit.extensions.config.FactoryModule;
import com.google.gerrit.lucene.LuceneIndexModule;
import com.google.gerrit.pgm.Daemon;
import com.google.gerrit.pgm.Init;
import com.google.gerrit.pgm.init.InitSshd;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.git.receive.AsyncReceiveCommits;
import com.google.gerrit.server.ssh.NoSshModule;
@@ -376,7 +377,10 @@ public class GerritServer implements AutoCloseable {
String url = "http://" + forceEphemeralPort + "/";
cfg.setString("gerrit", null, "canonicalWebUrl", url);
cfg.setString("httpd", null, "listenUrl", url);
cfg.setString("sshd", null, "listenAddress", forceEphemeralPort);
if (cfg.getString("sshd", null, "listenAddress") == null) {
cfg.setString("sshd", null, "listenAddress", forceEphemeralPort);
}
cfg.setBoolean("sshd", null, "testUseInsecureRandom", true);
cfg.unset("cache", null, "directory");
cfg.setString("gerrit", null, "basePath", "git");
@@ -452,7 +456,10 @@ public class GerritServer implements AutoCloseable {
url = cfg.getString("gerrit", null, "canonicalWebUrl");
URI uri = URI.create(url);
sshdAddress = SocketUtil.resolve(cfg.getString("sshd", null, "listenAddress"), 0);
String addr = cfg.getString("sshd", null, "listenAddress");
if (!InitSshd.isOff(addr)) {
sshdAddress = SocketUtil.resolve(cfg.getString("sshd", null, "listenAddress"), 0);
}
httpAddress = new InetSocketAddress(uri.getHost(), uri.getPort());
}

View File

@@ -31,7 +31,7 @@ import java.net.InetSocketAddress;
/** Initialize the {@code sshd} configuration section. */
@Singleton
class InitSshd implements InitStep {
public class InitSshd implements InitStep {
private final ConsoleUI ui;
private final SitePaths site;
private final Section sshd;
@@ -73,7 +73,7 @@ class InitSshd implements InitStep {
remover.remove("bc(pg|pkix|prov)-.*[.]jar");
}
private static boolean isOff(String listenHostname) {
public static boolean isOff(String listenHostname) {
return "off".equalsIgnoreCase(listenHostname)
|| "none".equalsIgnoreCase(listenHostname)
|| "no".equalsIgnoreCase(listenHostname);

View File

@@ -20,6 +20,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.GerritConfig;
import com.google.gerrit.acceptance.NoHttpd;
import com.google.gerrit.acceptance.UseSsh;
import com.google.gerrit.common.RawInputUtil;
import com.google.gerrit.extensions.client.AccountFieldName;
import com.google.gerrit.extensions.client.AuthType;
@@ -32,6 +33,7 @@ import com.google.gerrit.server.config.AnonymousCowardNameProvider;
import org.junit.Test;
@NoHttpd
@UseSsh
public class ServerInfoIT extends AbstractDaemonTest {
private static final byte[] JS_PLUGIN_CONTENT =
"Gerrit.install(function(self){});\n".getBytes(UTF_8);