aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorn.christian@seime.no>2019-01-24 11:01:50 +0100
committerGitHub <noreply@github.com>2019-01-24 11:01:50 +0100
commitee29f449256f4d9d21abe8e1c461399b2cb303ca (patch)
treeffec96950a75d6963072c2c927c42956faf02a4c
parentb744edad9851fbfe26faa1809ca85ebba92f07c1 (diff)
parente7a2b1be18fa1b9238ec863f8b99cb73183c3afd (diff)
Merge pull request #8187 from vespa-engine/bjorncs/jrt-transport-metrics
bjorncs/jrt transport metrics
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/JRTConnectionPool.java7
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java18
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java10
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java21
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java16
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/FileDistributionFactory.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistryTest.java3
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/SimpleJrtFactory.java18
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/FileDistributionStatusTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileServerTest.java5
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java3
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/TenantHandlerTest.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/MockRpc.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java5
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/MockFileDistributionFactory.java3
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/jrt/DefaultJrtFactory.java35
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/jrt/JrtFactory.java15
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/jrt/JrtMetricsUpdater.java70
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/jrt/package-info.java8
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/JrtMetrics.java35
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java3
-rw-r--r--jrt/src/com/yahoo/jrt/CryptoEngine.java2
-rw-r--r--jrt/src/com/yahoo/jrt/MaybeTlsCryptoEngine.java8
-rw-r--r--jrt/src/com/yahoo/jrt/MaybeTlsCryptoSocket.java13
-rw-r--r--jrt/src/com/yahoo/jrt/NullCryptoEngine.java4
-rw-r--r--jrt/src/com/yahoo/jrt/NullCryptoSocket.java15
-rw-r--r--jrt/src/com/yahoo/jrt/TlsCryptoEngine.java4
-rw-r--r--jrt/src/com/yahoo/jrt/TlsCryptoSocket.java5
-rw-r--r--jrt/src/com/yahoo/jrt/Transport.java4
-rw-r--r--jrt/src/com/yahoo/jrt/TransportMetrics.java74
-rw-r--r--jrt/src/com/yahoo/jrt/XorCryptoEngine.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/EchoTest.java32
41 files changed, 204 insertions, 294 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
index a6de284f4b7..7a10a97f4da 100755
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
@@ -26,7 +26,6 @@ import com.yahoo.container.handler.ThreadpoolConfig;
import com.yahoo.container.jdisc.ContainerMbusConfig;
import com.yahoo.container.jdisc.JdiscBindingsConfig;
import com.yahoo.container.jdisc.config.HealthMonitorConfig;
-import com.yahoo.container.jdisc.jrt.DefaultJrtFactory;
import com.yahoo.container.jdisc.messagebus.MbusServerProvider;
import com.yahoo.container.jdisc.state.StateHandler;
import com.yahoo.container.logging.AccessLog;
@@ -232,7 +231,6 @@ public final class ContainerCluster
addSimpleComponent("com.yahoo.container.jdisc.ContainerThreadFactory");
addSimpleComponent("com.yahoo.container.handler.VipStatus");
addSimpleComponent(com.yahoo.container.handler.ClustersStatus.class.getName());
- addSimpleComponent(DefaultJrtFactory.class);
addJaxProviders();
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/JRTConnectionPool.java b/config/src/main/java/com/yahoo/vespa/config/JRTConnectionPool.java
index 82306276617..efeaacf225b 100644
--- a/config/src/main/java/com/yahoo/vespa/config/JRTConnectionPool.java
+++ b/config/src/main/java/com/yahoo/vespa/config/JRTConnectionPool.java
@@ -28,7 +28,7 @@ public class JRTConnectionPool implements ConnectionPool {
private static final Logger log = Logger.getLogger(JRTConnectionPool.class.getName());
- private final Supervisor supervisor;
+ private final Supervisor supervisor = new Supervisor(new Transport());
private final Map<String, JRTConnection> connections = new LinkedHashMap<>();
// The config sources used by this connection pool.
@@ -38,11 +38,6 @@ public class JRTConnectionPool implements ConnectionPool {
private volatile JRTConnection currentConnection;
public JRTConnectionPool(ConfigSourceSet sourceSet) {
- this(new Supervisor(new Transport()), sourceSet);
- }
-
- public JRTConnectionPool(Supervisor supervisor, ConfigSourceSet sourceSet) {
- this.supervisor = supervisor;
addSources(sourceSet);
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
index 0161cc242f5..16244dd62f3 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
@@ -21,7 +21,6 @@ import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
import com.yahoo.container.jdisc.HttpResponse;
-import com.yahoo.container.jdisc.jrt.JrtFactory;
import com.yahoo.io.IOUtils;
import com.yahoo.log.LogLevel;
import com.yahoo.path.Path;
@@ -102,22 +101,20 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
public ApplicationRepository(TenantRepository tenantRepository,
HostProvisionerProvider hostProvisionerProvider,
ConfigConvergenceChecker configConvergenceChecker,
- HttpProxy httpProxy,
+ HttpProxy httpProxy,
ConfigserverConfig configserverConfig,
- Orchestrator orchestrator,
- JrtFactory jrtFactory) {
+ Orchestrator orchestrator) {
this(tenantRepository, hostProvisionerProvider.getHostProvisioner(),
configConvergenceChecker, httpProxy, configserverConfig, orchestrator,
- Clock.systemUTC(), new FileDistributionStatus(jrtFactory));
+ Clock.systemUTC(), new FileDistributionStatus());
}
// For testing
public ApplicationRepository(TenantRepository tenantRepository,
Provisioner hostProvisioner,
Orchestrator orchestrator,
- Clock clock,
- JrtFactory jrtFactory) {
- this(tenantRepository, hostProvisioner, orchestrator, clock, new ConfigserverConfig(new ConfigserverConfig.Builder()), jrtFactory);
+ Clock clock) {
+ this(tenantRepository, hostProvisioner, orchestrator, clock, new ConfigserverConfig(new ConfigserverConfig.Builder()));
}
// For testing
@@ -125,10 +122,9 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
Provisioner hostProvisioner,
Orchestrator orchestrator,
Clock clock,
- ConfigserverConfig configserverConfig,
- JrtFactory jrtFactory) {
+ ConfigserverConfig configserverConfig) {
this(tenantRepository, Optional.of(hostProvisioner), new ConfigConvergenceChecker(), new HttpProxy(new SimpleHttpFetcher()),
- configserverConfig, orchestrator, clock, new FileDistributionStatus(jrtFactory));
+ configserverConfig, orchestrator, clock, new FileDistributionStatus());
}
private ApplicationRepository(TenantRepository tenantRepository,
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java
index 08767467fe6..f37225a7e7b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java
@@ -1,16 +1,15 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
-import com.google.inject.Inject;
import com.yahoo.component.AbstractComponent;
import com.yahoo.concurrent.DaemonThreadFactory;
import com.yahoo.config.model.api.PortInfo;
import com.yahoo.config.model.api.ServiceInfo;
-import com.yahoo.container.jdisc.jrt.JrtFactory;
import com.yahoo.jrt.Request;
import com.yahoo.jrt.Spec;
import com.yahoo.jrt.Supervisor;
import com.yahoo.jrt.Target;
+import com.yahoo.jrt.Transport;
import com.yahoo.log.LogLevel;
import com.yahoo.slime.Cursor;
import com.yahoo.vespa.config.server.http.JSONResponse;
@@ -40,12 +39,7 @@ public class FileDistributionStatus extends AbstractComponent {
enum Status {UNKNOWN, FINISHED, IN_PROGRESS}
private final ExecutorService rpcExecutor = Executors.newCachedThreadPool(new DaemonThreadFactory("filedistribution status"));
- private final Supervisor supervisor;
-
- @Inject
- public FileDistributionStatus(JrtFactory jrtFactory) {
- this.supervisor = jrtFactory.createSupervisor();
- }
+ private final Supervisor supervisor = new Supervisor(new Transport());
public StatusAllHosts status(Application application, Duration timeout) {
List<HostStatus> hostStatuses = new ArrayList<>();
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
index 44b103967d7..16aaef048b5 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
@@ -5,7 +5,6 @@ import com.google.inject.Inject;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.FileReference;
import com.yahoo.config.subscription.ConfigSourceSet;
-import com.yahoo.container.jdisc.jrt.JrtFactory;
import com.yahoo.jrt.Int32Value;
import com.yahoo.jrt.Request;
import com.yahoo.jrt.StringValue;
@@ -74,13 +73,13 @@ public class FileServer {
@SuppressWarnings("WeakerAccess") // Created by dependency injection
@Inject
- public FileServer(ConfigserverConfig configserverConfig, JrtFactory jrtFactory) {
- this(createConnectionPool(configserverConfig, jrtFactory), new File(Defaults.getDefaults().underVespaHome(configserverConfig.fileReferencesDir())));
+ public FileServer(ConfigserverConfig configserverConfig) {
+ this(createConnectionPool(configserverConfig), new File(Defaults.getDefaults().underVespaHome(configserverConfig.fileReferencesDir())));
}
// For testing only
- public FileServer(File rootDir, JrtFactory jrtFactory) {
- this(new EmptyConnectionPool(jrtFactory), rootDir);
+ public FileServer(File rootDir) {
+ this(new EmptyConnectionPool(), rootDir);
}
private FileServer(ConnectionPool connectionPool, File rootDir) {
@@ -197,24 +196,18 @@ public class FileServer {
}
// Connection pool with all config servers except this one (might be an empty pool if there is only one config server)
- private static ConnectionPool createConnectionPool(ConfigserverConfig configserverConfig, JrtFactory jrtFactory) {
+ private static ConnectionPool createConnectionPool(ConfigserverConfig configserverConfig) {
List<String> configServers = ConfigServerSpec.fromConfig(configserverConfig)
.stream()
.filter(spec -> !spec.getHostName().equals(HostName.getLocalhost()))
.map(spec -> "tcp/" + spec.getHostName() + ":" + spec.getConfigServerPort())
.collect(Collectors.toList());
- return configServers.size() > 0 ? new JRTConnectionPool(jrtFactory.createSupervisor(), new ConfigSourceSet(configServers)) : new EmptyConnectionPool(jrtFactory);
+ return configServers.size() > 0 ? new JRTConnectionPool(new ConfigSourceSet(configServers)) : new EmptyConnectionPool();
}
private static class EmptyConnectionPool implements ConnectionPool {
- final JrtFactory jrtFactory;
-
- EmptyConnectionPool(JrtFactory jrtFactory) {
- this.jrtFactory = jrtFactory;
- }
-
@Override
public void close() {}
@@ -231,6 +224,6 @@ public class FileServer {
public int getSize() { return 0; }
@Override
- public Supervisor getSupervisor() { return jrtFactory.createSupervisor(); }
+ public Supervisor getSupervisor() { return new Supervisor(new Transport()); }
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
index 0bc2c70d166..1ce90fad465 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
@@ -3,13 +3,12 @@ package com.yahoo.vespa.config.server.rpc;
import com.google.inject.Inject;
import com.yahoo.cloud.config.ConfigserverConfig;
-import com.yahoo.component.Version;
import com.yahoo.concurrent.ThreadFactoryFactory;
import com.yahoo.config.FileReference;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.HostLivenessTracker;
import com.yahoo.config.provision.TenantName;
-import com.yahoo.container.jdisc.jrt.JrtFactory;
+import com.yahoo.component.Version;
import com.yahoo.jrt.Acceptor;
import com.yahoo.jrt.DataValue;
import com.yahoo.jrt.Int32Value;
@@ -21,6 +20,7 @@ import com.yahoo.jrt.Spec;
import com.yahoo.jrt.StringValue;
import com.yahoo.jrt.Supervisor;
import com.yahoo.jrt.Target;
+import com.yahoo.jrt.Transport;
import com.yahoo.log.LogLevel;
import com.yahoo.vespa.config.ErrorCode;
import com.yahoo.vespa.config.JRTMethods;
@@ -28,14 +28,14 @@ import com.yahoo.vespa.config.protocol.ConfigResponse;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequest;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequestV3;
import com.yahoo.vespa.config.protocol.Trace;
-import com.yahoo.vespa.config.server.GetConfigContext;
-import com.yahoo.vespa.config.server.ReloadListener;
-import com.yahoo.vespa.config.server.RequestHandler;
import com.yahoo.vespa.config.server.SuperModelRequestHandler;
import com.yahoo.vespa.config.server.application.ApplicationSet;
+import com.yahoo.vespa.config.server.GetConfigContext;
import com.yahoo.vespa.config.server.filedistribution.FileServer;
import com.yahoo.vespa.config.server.host.HostRegistries;
import com.yahoo.vespa.config.server.host.HostRegistry;
+import com.yahoo.vespa.config.server.ReloadListener;
+import com.yahoo.vespa.config.server.RequestHandler;
import com.yahoo.vespa.config.server.monitoring.MetricUpdater;
import com.yahoo.vespa.config.server.monitoring.MetricUpdaterFactory;
import com.yahoo.vespa.config.server.tenant.TenantHandlerProvider;
@@ -80,7 +80,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
private static final String THREADPOOL_NAME = "rpcserver worker pool";
private static final long SHUTDOWN_TIMEOUT = 60;
- private final Supervisor supervisor;
+ private final Supervisor supervisor = new Supervisor(new Transport());
private Spec spec;
private final boolean useRequestVersion;
private final boolean hostedVespa;
@@ -119,10 +119,8 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
@Inject
public RpcServer(ConfigserverConfig config, SuperModelRequestHandler superModelRequestHandler,
MetricUpdaterFactory metrics, HostRegistries hostRegistries,
- HostLivenessTracker hostLivenessTracker, FileServer fileServer,
- JrtFactory jrtFactory) {
+ HostLivenessTracker hostLivenessTracker, FileServer fileServer) {
this.superModelRequestHandler = superModelRequestHandler;
- this.supervisor = jrtFactory.createSupervisor();
metricUpdaterFactory = metrics;
supervisor.setMaxOutputBufferSize(config.maxoutputbuffersize());
this.metrics = metrics.getOrCreateMetricUpdater(Collections.emptyMap());
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/FileDistributionFactory.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/FileDistributionFactory.java
index a38386b84a0..15bc3c1fb46 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/FileDistributionFactory.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/FileDistributionFactory.java
@@ -3,8 +3,8 @@ package com.yahoo.vespa.config.server.session;
import com.google.inject.Inject;
import com.yahoo.cloud.config.ConfigserverConfig;
-import com.yahoo.container.jdisc.jrt.JrtFactory;
import com.yahoo.jrt.Supervisor;
+import com.yahoo.jrt.Transport;
import com.yahoo.vespa.config.server.filedistribution.FileDistributionImpl;
import com.yahoo.vespa.config.server.filedistribution.FileDistributionProvider;
@@ -19,12 +19,11 @@ import java.io.File;
public class FileDistributionFactory {
private final ConfigserverConfig configserverConfig;
- private final Supervisor supervisor;
+ private final Supervisor supervisor = new Supervisor(new Transport());
@Inject
- public FileDistributionFactory(ConfigserverConfig configserverConfig, JrtFactory jrtFactory) {
+ public FileDistributionFactory(ConfigserverConfig configserverConfig) {
this.configserverConfig = configserverConfig;
- this.supervisor = jrtFactory.createSupervisor();
}
public FileDistributionProvider createProvider(File applicationPackage) {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
index fe19a2e7f9c..467f4cc84e8 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
@@ -94,7 +94,7 @@ public class ApplicationRepositoryTest {
tenantRepository.addTenant(tenant3);
orchestrator = new OrchestratorMock();
provisioner = new SessionHandlerTest.MockProvisioner();
- applicationRepository = new ApplicationRepository(tenantRepository, provisioner, orchestrator, clock, new SimpleJrtFactory());
+ applicationRepository = new ApplicationRepository(tenantRepository, provisioner, orchestrator, clock);
timeoutBudget = new TimeoutBudget(clock, Duration.ofSeconds(60));
}
@@ -204,7 +204,7 @@ public class ApplicationRepositoryTest {
tenantRepository.addTenant(tenant1);
Provisioner provisioner = new SessionHandlerTest.MockProvisioner();
- applicationRepository = new ApplicationRepository(tenantRepository, provisioner, orchestrator, clock, new SimpleJrtFactory());
+ applicationRepository = new ApplicationRepository(tenantRepository, provisioner, orchestrator, clock);
timeoutBudget = new TimeoutBudget(clock, Duration.ofSeconds(60));
// TODO: Deploy an app with a bundle or file that will be a file reference, too much missing in test setup to get this working now
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistryTest.java
index 518ad836219..b2e911c47a4 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistryTest.java
@@ -64,9 +64,8 @@ public class InjectedGlobalComponentRegistryTest {
.configServerDBDir(temporaryFolder.newFolder("serverdb").getAbsolutePath())
.configDefinitionsDir(temporaryFolder.newFolder("configdefinitions").getAbsolutePath()));
sessionPreparer = new SessionTest.MockSessionPreparer();
- SimpleJrtFactory jrtFactory = new SimpleJrtFactory();
rpcServer = new RpcServer(configserverConfig, null, Metrics.createTestMetrics(),
- new HostRegistries(), new ConfigRequestHostLivenessTracker(), new FileServer(temporaryFolder.newFolder("filereferences"), jrtFactory), jrtFactory);
+ new HostRegistries(), new ConfigRequestHostLivenessTracker(), new FileServer(temporaryFolder.newFolder("filereferences")));
generationCounter = new SuperModelGenerationCounter(curator);
defRepo = new StaticConfigDefinitionRepo();
permanentApplicationPackage = new PermanentApplicationPackage(configserverConfig);
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/SimpleJrtFactory.java b/configserver/src/test/java/com/yahoo/vespa/config/server/SimpleJrtFactory.java
deleted file mode 100644
index 92555400dff..00000000000
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/SimpleJrtFactory.java
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.config.server;
-
-import com.yahoo.container.jdisc.jrt.JrtFactory;
-import com.yahoo.jrt.Supervisor;
-import com.yahoo.jrt.Transport;
-
-/**
- * @author bjorncs
- */
-public class SimpleJrtFactory implements JrtFactory {
-
- @Override
- public Supervisor createSupervisor() {
- return new Supervisor(new Transport());
- }
-
-}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/FileDistributionStatusTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/FileDistributionStatusTest.java
index 87b85eab1a7..0c27066dd6b 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/FileDistributionStatusTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/FileDistributionStatusTest.java
@@ -10,7 +10,6 @@ import com.yahoo.component.Version;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.vespa.config.server.ServerCache;
import com.yahoo.vespa.config.server.http.SessionHandlerTest;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.monitoring.MetricUpdater;
import org.junit.Rule;
import org.junit.Test;
@@ -186,7 +185,6 @@ public class FileDistributionStatusTest {
// host status per host to be returned in getHostStatus()
MockStatus(Set<HostStatus> status) {
- super(new SimpleJrtFactory());
status.forEach(s -> statuses.put(s.hostname(), s));
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
index 8ad6638cdfd..c96113b9462 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
@@ -31,7 +31,6 @@ import com.yahoo.vespa.config.server.TestComponentRegistry;
import com.yahoo.vespa.config.server.TimeoutBudget;
import com.yahoo.vespa.config.server.application.OrchestratorMock;
import com.yahoo.vespa.config.server.http.v2.PrepareResult;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.session.LocalSession;
@@ -128,8 +127,7 @@ public class DeployTester {
new ProvisionerAdapter(provisioner),
new OrchestratorMock(),
clock,
- configserverConfig,
- new SimpleJrtFactory());
+ configserverConfig);
}
public Tenant tenant() {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileServerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileServerTest.java
index a2fe391d4e1..43f5d135e45 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileServerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileServerTest.java
@@ -4,7 +4,6 @@ package com.yahoo.vespa.config.server.filedistribution;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.io.IOUtils;
import com.yahoo.net.HostName;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.filedistribution.FileReferenceData;
import org.junit.Before;
import org.junit.Rule;
@@ -32,7 +31,7 @@ public class FileServerTest {
@Before
public void setup() throws IOException {
File rootDir = new File(temporaryFolder.newFolder("fileserver-root").getAbsolutePath());
- fileServer = new FileServer(rootDir, new SimpleJrtFactory());
+ fileServer = new FileServer(rootDir);
}
@Test
@@ -97,7 +96,7 @@ public class FileServerTest {
private FileServer createFileServer(ConfigserverConfig.Builder configBuilder) throws IOException {
File fileReferencesDir = temporaryFolder.newFolder();
configBuilder.fileReferencesDir(fileReferencesDir.getAbsolutePath());
- return new FileServer(new ConfigserverConfig(configBuilder), new SimpleJrtFactory());
+ return new FileServer(new ConfigserverConfig(configBuilder));
}
private static class FileReceiver implements FileServer.Receiver {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java
index 61e2b04539e..b0bb3bf244f 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java
@@ -12,7 +12,6 @@ import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.TestComponentRegistry;
import com.yahoo.vespa.config.server.application.OrchestratorMock;
import com.yahoo.vespa.config.server.http.ContentHandlerTestBase;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.session.Session;
import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.config.server.tenant.TenantBuilder;
@@ -69,8 +68,7 @@ public class ApplicationContentHandlerTest extends ContentHandlerTestBase {
new ApplicationRepository(tenantRepository,
new MockProvisioner(),
new OrchestratorMock(),
- clock,
- new SimpleJrtFactory()));
+ clock));
pathPrefix = createPath(idTenant1, Zone.defaultZone());
baseUrl = baseServer + pathPrefix;
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
index b14db906c86..2c84e2d8ad4 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
@@ -21,7 +21,6 @@ import com.yahoo.vespa.config.server.http.HandlerTest;
import com.yahoo.vespa.config.server.http.HttpErrorResponse;
import com.yahoo.vespa.config.server.http.StaticResponse;
import com.yahoo.vespa.config.server.http.SessionHandlerTest;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.session.PrepareParams;
import com.yahoo.vespa.config.server.tenant.Tenant;
@@ -79,8 +78,7 @@ public class ApplicationHandlerTest {
applicationRepository = new ApplicationRepository(tenantRepository,
provisioner,
orchestrator,
- Clock.systemUTC(),
- new SimpleJrtFactory());
+ Clock.systemUTC());
listApplicationsHandler = new ListApplicationsHandler(ListApplicationsHandler.testOnlyContext(),
tenantRepository,
Zone.defaultZone());
@@ -167,8 +165,7 @@ public class ApplicationHandlerTest {
new ConfigConvergenceChecker(stateApiFactory),
mockHttpProxy,
new ConfigserverConfig(new ConfigserverConfig.Builder()),
- new OrchestratorMock(),
- new SimpleJrtFactory());
+ new OrchestratorMock());
ApplicationHandler mockHandler = createApplicationHandler(applicationRepository);
when(mockHttpProxy.get(any(), eq(host), eq("container-clustercontroller"), eq("clustercontroller-status/v1/clusterName1")))
.thenReturn(new StaticResponse(200, "text/html", "<html>...</html>"));
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java
index a7efa09a281..f384fda8796 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java
@@ -32,7 +32,6 @@ import com.yahoo.vespa.config.server.http.HandlerTest;
import com.yahoo.vespa.config.server.http.HttpErrorResponse;
import com.yahoo.vespa.config.server.http.SessionHandler;
import com.yahoo.vespa.config.server.http.SessionHandlerTest;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.session.LocalSession;
import com.yahoo.vespa.config.server.session.LocalSessionRepo;
@@ -368,8 +367,7 @@ public class SessionActiveHandlerTest extends SessionHandlerTest {
new ApplicationRepository(tenantRepository,
hostProvisioner,
new OrchestratorMock(),
- clock,
- new SimpleJrtFactory()),
+ clock),
tenantRepository,
Zone.defaultZone());
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java
index 75105e5e338..42b3fadc0de 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java
@@ -13,7 +13,6 @@ import com.yahoo.vespa.config.server.TestComponentRegistry;
import com.yahoo.vespa.config.server.application.OrchestratorMock;
import com.yahoo.vespa.config.server.http.ContentHandlerTestBase;
import com.yahoo.vespa.config.server.http.SessionHandlerTest;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.tenant.TenantBuilder;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import org.apache.commons.io.FileUtils;
@@ -174,7 +173,7 @@ public class SessionContentHandlerTest extends ContentHandlerTestBase {
new ApplicationRepository(tenantRepository,
new SessionHandlerTest.MockProvisioner(),
new OrchestratorMock(),
- clock, new SimpleJrtFactory()),
+ clock),
tenantRepository);
}
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java
index 52f2b099828..803a87ada1c 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java
@@ -15,7 +15,6 @@ import com.yahoo.vespa.config.server.http.CompressedApplicationInputStreamTest;
import com.yahoo.vespa.config.server.http.HandlerTest;
import com.yahoo.vespa.config.server.http.HttpErrorResponse;
import com.yahoo.vespa.config.server.http.SessionHandlerTest;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.session.LocalSessionRepo;
import com.yahoo.vespa.config.server.tenant.TenantBuilder;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
@@ -230,8 +229,7 @@ public class SessionCreateHandlerTest extends SessionHandlerTest {
new ApplicationRepository(tenantRepository,
new SessionHandlerTest.MockProvisioner(),
new OrchestratorMock(),
- clock,
- new SimpleJrtFactory()),
+ clock),
tenantRepository,
componentRegistry.getConfigserverConfig());
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java
index 9007ef1abad..330d6592a2d 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java
@@ -28,7 +28,6 @@ import com.yahoo.vespa.config.server.configchange.ConfigChangeActions;
import com.yahoo.vespa.config.server.configchange.MockRefeedAction;
import com.yahoo.vespa.config.server.configchange.MockRestartAction;
import com.yahoo.vespa.config.server.http.*;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.session.*;
import com.yahoo.vespa.config.server.tenant.TenantBuilder;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
@@ -387,8 +386,7 @@ public class SessionPrepareHandlerTest extends SessionHandlerTest {
new ApplicationRepository(tenantRepository,
new MockProvisioner(),
new OrchestratorMock(),
- clock,
- new SimpleJrtFactory()),
+ clock),
tenantRepository,
componentRegistry.getConfigserverConfig());
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/TenantHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/TenantHandlerTest.java
index e0f8b225a4a..6effa3359b1 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/TenantHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/TenantHandlerTest.java
@@ -17,7 +17,6 @@ import com.yahoo.vespa.config.server.TestComponentRegistry;
import com.yahoo.vespa.config.server.application.OrchestratorMock;
import com.yahoo.vespa.config.server.http.SessionHandlerTest;
import com.yahoo.vespa.config.server.http.SessionResponse;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.curator.mock.MockCurator;
@@ -43,8 +42,7 @@ public class TenantHandlerTest {
new ApplicationRepository(tenantRepository,
new SessionHandlerTest.MockProvisioner(),
new OrchestratorMock(),
- Clock.systemUTC(),
- new SimpleJrtFactory());
+ Clock.systemUTC());
handler = new TenantHandler(TenantHandler.testOnlyContext(), tenantRepository, applicationRepository);
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java
index c4e7e4d34e1..659baf5a184 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java
@@ -6,7 +6,6 @@ import com.yahoo.vespa.config.server.GlobalComponentRegistry;
import com.yahoo.vespa.config.server.TestComponentRegistry;
import com.yahoo.vespa.config.server.application.OrchestratorMock;
import com.yahoo.vespa.config.server.http.SessionHandlerTest;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
@@ -26,8 +25,7 @@ class MaintainerTester {
applicationRepository = new ApplicationRepository(tenantRepository,
new SessionHandlerTest.MockProvisioner(),
new OrchestratorMock(),
- Clock.systemUTC(),
- new SimpleJrtFactory());
+ Clock.systemUTC());
}
Curator curator() { return curator; }
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/MockRpc.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/MockRpc.java
index f771a5499da..0f8bfa5068c 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/MockRpc.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/MockRpc.java
@@ -4,14 +4,12 @@ package com.yahoo.vespa.config.server.rpc;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.provision.TenantName;
import com.yahoo.component.Version;
-import com.yahoo.container.jdisc.jrt.JrtFactory;
import com.yahoo.vespa.config.protocol.ConfigResponse;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequest;
import com.yahoo.vespa.config.server.GetConfigContext;
import com.yahoo.vespa.config.server.filedistribution.FileServer;
import com.yahoo.vespa.config.server.host.ConfigRequestHostLivenessTracker;
import com.yahoo.vespa.config.server.host.HostRegistries;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.tenant.MockTenantProvider;
@@ -38,16 +36,16 @@ public class MockRpc extends RpcServer {
public volatile JRTServerConfigRequest latestRequest = null;
- public MockRpc(int port, boolean createDefaultTenant, boolean pretendToHaveLoadedAnyApplication, File tempDir, JrtFactory jrtFactory) {
- super(createConfig(port), null, Metrics.createTestMetrics(),
- new HostRegistries(), new ConfigRequestHostLivenessTracker(), new FileServer(tempDir, jrtFactory), jrtFactory);
+ public MockRpc(int port, boolean createDefaultTenant, boolean pretendToHaveLoadedAnyApplication, File tempDir) {
+ super(createConfig(port), null, Metrics.createTestMetrics(),
+ new HostRegistries(), new ConfigRequestHostLivenessTracker(), new FileServer(tempDir));
if (createDefaultTenant) {
onTenantCreate(TenantName.from("default"), new MockTenantProvider(pretendToHaveLoadedAnyApplication));
}
}
public MockRpc(int port, boolean createDefaultTenant, File tempDir) {
- this(port, createDefaultTenant, true, tempDir, new SimpleJrtFactory());
+ this(port, createDefaultTenant, true, tempDir);
}
public MockRpc(int port, File tempDir) {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
index 733e414823d..3849fc899de 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
@@ -15,7 +15,6 @@ import com.yahoo.vespa.config.server.*;
import com.yahoo.vespa.config.server.filedistribution.FileServer;
import com.yahoo.vespa.config.server.host.ConfigRequestHostLivenessTracker;
import com.yahoo.vespa.config.server.host.HostRegistries;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.tenant.MockTenantProvider;
import com.yahoo.vespa.config.server.tenant.TenantHandlerProvider;
@@ -83,7 +82,6 @@ public class RpcTester implements AutoCloseable {
void createAndStartRpcServer() throws IOException {
ConfigserverConfig configserverConfig = new ConfigserverConfig(new ConfigserverConfig.Builder());
- SimpleJrtFactory jrtFactory = new SimpleJrtFactory();
rpcServer = new RpcServer(new ConfigserverConfig(new ConfigserverConfig.Builder()
.rpcport(port)
.numRpcThreads(1)
@@ -95,8 +93,7 @@ public class RpcTester implements AutoCloseable {
emptyNodeFlavors(),
generationCounter)),
Metrics.createTestMetrics(), new HostRegistries(),
- hostLivenessTracker, new FileServer(temporaryFolder.newFolder(), jrtFactory),
- jrtFactory);
+ hostLivenessTracker, new FileServer(temporaryFolder.newFolder()));
rpcServer.onTenantCreate(TenantName.from("default"), tenantProvider);
t = new Thread(rpcServer);
t.start();
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/MockFileDistributionFactory.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/MockFileDistributionFactory.java
index dc734ac789c..e1874c622c2 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/MockFileDistributionFactory.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/MockFileDistributionFactory.java
@@ -4,7 +4,6 @@ package com.yahoo.vespa.config.server.session;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.vespa.config.server.filedistribution.FileDistributionProvider;
import com.yahoo.vespa.config.server.filedistribution.MockFileDistributionProvider;
-import com.yahoo.vespa.config.server.SimpleJrtFactory;
import java.io.File;
@@ -16,7 +15,7 @@ public class MockFileDistributionFactory extends FileDistributionFactory {
public final MockFileDistributionProvider mockFileDistributionProvider;
public MockFileDistributionFactory(ConfigserverConfig configserverConfig) {
- super(configserverConfig, new SimpleJrtFactory());
+ super(configserverConfig);
mockFileDistributionProvider = new MockFileDistributionProvider(new File(configserverConfig.fileReferencesDir()));
}
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/DefaultJrtFactory.java b/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/DefaultJrtFactory.java
deleted file mode 100644
index 93a72e200e0..00000000000
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/DefaultJrtFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.jdisc.jrt;
-
-import com.google.inject.Inject;
-import com.yahoo.component.AbstractComponent;
-import com.yahoo.jdisc.Metric;
-import com.yahoo.jrt.Supervisor;
-import com.yahoo.jrt.Transport;
-
-/**
- * The default factory for JRT {@link Supervisor}. Tracks jrt metrics.
- *
- * @author bjorncs
- */
-public class DefaultJrtFactory extends AbstractComponent implements JrtFactory {
-
- private final JrtMetricsUpdater metricsUpdater;
-
- @Inject
- public DefaultJrtFactory(Metric metric) {
- this.metricsUpdater = new JrtMetricsUpdater(metric);
- }
-
- @Override
- public Supervisor createSupervisor() {
- Supervisor supervisor = new Supervisor(new Transport());
- metricsUpdater.register(supervisor);
- return supervisor;
- }
-
- @Override
- public void deconstruct() {
- metricsUpdater.stop();
- }
-}
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/JrtFactory.java b/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/JrtFactory.java
deleted file mode 100644
index 052aaad1bd7..00000000000
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/JrtFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.jdisc.jrt;
-
-import com.yahoo.jrt.Supervisor;
-
-/**
- * A factory for JRT {@link Supervisor}
- *
- * @author bjorncs
- */
-public interface JrtFactory {
-
- Supervisor createSupervisor();
-
-}
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/JrtMetricsUpdater.java b/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/JrtMetricsUpdater.java
deleted file mode 100644
index ede0f060ec9..00000000000
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/JrtMetricsUpdater.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.jdisc.jrt;
-
-import com.google.inject.Inject;
-import com.yahoo.jdisc.Metric;
-import com.yahoo.jrt.Supervisor;
-import com.yahoo.jrt.TransportMetrics;
-
-import java.util.Map;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.WeakHashMap;
-
-/**
- * Propagates JRT metric values ({@link TransportMetrics} to {@link Metric}.
- *
- * @author bjorncs
- */
-public class JrtMetricsUpdater {
-
- private final Object monitor = new Object();
- private final Timer timer = new Timer("jrt-metrics-updater", true);
- private final Map<TransportMetrics, Metric.Context> transportMetricsInstances = new WeakHashMap<>();
- private final Metric metric;
-
- @Inject
- public JrtMetricsUpdater(Metric metric) {
- this.metric = metric;
- timer.scheduleAtFixedRate(new UpdaterTask(), /*delay ms*/0, /*period ms*/10_000);
- }
-
- public void register(Supervisor supervisor) {
- register(supervisor, null);
- }
-
- public void register(Supervisor supervisor, Map<String, ?> dimensions) {
- synchronized (monitor) {
- this.transportMetricsInstances.put(supervisor.transport().metrics(), metric.createContext(dimensions));
- }
- }
-
- public void deregister(Supervisor supervisor) {
- synchronized (monitor) {
- this.transportMetricsInstances.remove(supervisor.transport().metrics());
- }
- }
-
- public void stop() {
- timer.cancel();
- synchronized (monitor) {
- this.transportMetricsInstances.clear();
- }
- }
-
- private class UpdaterTask extends TimerTask {
- @Override
- public void run() {
- synchronized (monitor) {
- transportMetricsInstances.forEach((instance, context) -> {
- metric.add("jrt.transport.tls-certificate-verification-failures", instance.tlsCertificateVerificationFailures(), context);
- metric.add("jrt.transport.peer-authorization-failures", instance.peerAuthorizationFailures(), context);
- metric.add("jrt.transport.server.tls-connections-established", instance.serverTlsConnectionsEstablished(), context);
- metric.add("jrt.transport.client.tls-connections-established", instance.clientTlsConnectionsEstablished(), context);
- metric.add("jrt.transport.server.unencrypted-connections-established", instance.serverUnencryptedConnectionsEstablished(), context);
- metric.add("jrt.transport.client.unencrypted-connections-established", instance.clientUnencryptedConnectionsEstablished(), context);
- });
- }
- }
- }
-}
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/package-info.java b/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/package-info.java
deleted file mode 100644
index a584a9b4fb7..00000000000
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/jrt/package-info.java
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-/**
- * @author bjorncs
- */
-@ExportPackage
-package com.yahoo.container.jdisc.jrt;
-
-import com.yahoo.osgi.annotation.ExportPackage; \ No newline at end of file
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/JrtMetrics.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/JrtMetrics.java
new file mode 100644
index 00000000000..1fff1b2ab33
--- /dev/null
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/JrtMetrics.java
@@ -0,0 +1,35 @@
+// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.container.jdisc.metric;
+
+import com.yahoo.jdisc.Metric;
+import com.yahoo.jrt.TransportMetrics;
+
+import static com.yahoo.jrt.TransportMetrics.Snapshot;
+
+/**
+ * Emits jrt metrics
+ *
+ * @author bjorncs
+ */
+class JrtMetrics {
+
+ private final TransportMetrics transportMetrics = TransportMetrics.getInstance();
+ private final Metric metric;
+ private Snapshot previousSnapshot = transportMetrics.snapshot();
+
+ JrtMetrics(Metric metric) {
+ this.metric = metric;
+ }
+
+ void emitMetrics() {
+ Snapshot snapshot = transportMetrics.snapshot();
+ Snapshot changesSincePrevious = snapshot.changesSince(previousSnapshot);
+ metric.add("jrt.transport.tls-certificate-verification-failures", changesSincePrevious.tlsCertificateVerificationFailures(), null);
+ metric.add("jrt.transport.peer-authorization-failures", changesSincePrevious.peerAuthorizationFailures(), null);
+ metric.add("jrt.transport.server.tls-connections-established", changesSincePrevious.serverTlsConnectionsEstablished(), null);
+ metric.add("jrt.transport.client.tls-connections-established", changesSincePrevious.clientTlsConnectionsEstablished(), null);
+ metric.add("jrt.transport.server.unencrypted-connections-established", changesSincePrevious.serverUnencryptedConnectionsEstablished(), null);
+ metric.add("jrt.transport.client.unencrypted-connections-established", changesSincePrevious.clientUnencryptedConnectionsEstablished(), null);
+ previousSnapshot = snapshot;
+ }
+}
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java
index 98787eaeeeb..e11622b1fa3 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java
@@ -88,11 +88,13 @@ public class MetricUpdater extends AbstractComponent {
private final Metric metric;
private final ContainerWatchdogMetrics containerWatchdogMetrics;
private final GarbageCollectionMetrics garbageCollectionMetrics;
+ private final JrtMetrics jrtMetrics;
public UpdaterTask(Metric metric, ContainerWatchdogMetrics containerWatchdogMetrics) {
this.metric = metric;
this.containerWatchdogMetrics = containerWatchdogMetrics;
this.garbageCollectionMetrics = new GarbageCollectionMetrics(Clock.systemUTC());
+ this.jrtMetrics = new JrtMetrics(metric);
}
@SuppressWarnings("deprecation")
@@ -109,6 +111,7 @@ public class MetricUpdater extends AbstractComponent {
containerWatchdogMetrics.emitMetrics(metric);
garbageCollectionMetrics.emitMetrics(metric);
+ jrtMetrics.emitMetrics();
}
}
diff --git a/jrt/src/com/yahoo/jrt/CryptoEngine.java b/jrt/src/com/yahoo/jrt/CryptoEngine.java
index 41a567a83f2..81bf10be187 100644
--- a/jrt/src/com/yahoo/jrt/CryptoEngine.java
+++ b/jrt/src/com/yahoo/jrt/CryptoEngine.java
@@ -18,7 +18,7 @@ import java.nio.channels.SocketChannel;
* encryption.
**/
public interface CryptoEngine extends AutoCloseable {
- CryptoSocket createCryptoSocket(TransportMetrics metrics, SocketChannel channel, boolean isServer);
+ CryptoSocket createCryptoSocket(SocketChannel channel, boolean isServer);
static CryptoEngine createDefault() {
if (!TransportSecurityUtils.isTransportSecurityEnabled()) {
return new NullCryptoEngine();
diff --git a/jrt/src/com/yahoo/jrt/MaybeTlsCryptoEngine.java b/jrt/src/com/yahoo/jrt/MaybeTlsCryptoEngine.java
index a0d56281744..801f2075c4e 100644
--- a/jrt/src/com/yahoo/jrt/MaybeTlsCryptoEngine.java
+++ b/jrt/src/com/yahoo/jrt/MaybeTlsCryptoEngine.java
@@ -21,13 +21,13 @@ public class MaybeTlsCryptoEngine implements CryptoEngine {
}
@Override
- public CryptoSocket createCryptoSocket(TransportMetrics metrics, SocketChannel channel, boolean isServer) {
+ public CryptoSocket createCryptoSocket(SocketChannel channel, boolean isServer) {
if (isServer) {
- return new MaybeTlsCryptoSocket(metrics, channel, tlsEngine, isServer);
+ return new MaybeTlsCryptoSocket(channel, tlsEngine, isServer);
} else if (useTlsWhenClient) {
- return tlsEngine.createCryptoSocket(metrics, channel, false);
+ return tlsEngine.createCryptoSocket(channel, false);
} else {
- return new NullCryptoSocket(metrics, channel, isServer);
+ return new NullCryptoSocket(channel, isServer);
}
}
diff --git a/jrt/src/com/yahoo/jrt/MaybeTlsCryptoSocket.java b/jrt/src/com/yahoo/jrt/MaybeTlsCryptoSocket.java
index ba34bed11c0..2e0d41b28d1 100644
--- a/jrt/src/com/yahoo/jrt/MaybeTlsCryptoSocket.java
+++ b/jrt/src/com/yahoo/jrt/MaybeTlsCryptoSocket.java
@@ -56,13 +56,12 @@ public class MaybeTlsCryptoSocket implements CryptoSocket {
private class MyCryptoSocket extends NullCryptoSocket {
- private final TransportMetrics metrics;
+ private final TransportMetrics metrics = TransportMetrics.getInstance();
private TlsCryptoEngine factory;
private Buffer buffer;
- MyCryptoSocket(TransportMetrics metrics, SocketChannel channel, TlsCryptoEngine factory, boolean isServer) {
- super(metrics, channel, isServer);
- this.metrics = metrics;
+ MyCryptoSocket(SocketChannel channel, TlsCryptoEngine factory, boolean isServer) {
+ super(channel, isServer);
this.factory = factory;
this.buffer = new Buffer(4096);
}
@@ -81,7 +80,7 @@ public class MaybeTlsCryptoSocket implements CryptoSocket {
data[i] = src.get(i);
}
if (looksLikeTlsToMe(data)) {
- TlsCryptoSocket tlsSocket = factory.createCryptoSocket(metrics, channel(), true);
+ TlsCryptoSocket tlsSocket = factory.createCryptoSocket(channel(), true);
tlsSocket.injectReadData(buffer);
socket = tlsSocket;
return socket.handshake();
@@ -117,8 +116,8 @@ public class MaybeTlsCryptoSocket implements CryptoSocket {
}
}
- public MaybeTlsCryptoSocket(TransportMetrics metrics, SocketChannel channel, TlsCryptoEngine factory, boolean isServer) {
- this.socket = new MyCryptoSocket(metrics, channel, factory, isServer);
+ public MaybeTlsCryptoSocket(SocketChannel channel, TlsCryptoEngine factory, boolean isServer) {
+ this.socket = new MyCryptoSocket(channel, factory, isServer);
}
@Override public SocketChannel channel() { return socket.channel(); }
diff --git a/jrt/src/com/yahoo/jrt/NullCryptoEngine.java b/jrt/src/com/yahoo/jrt/NullCryptoEngine.java
index 7a7773ed855..b5a53accf92 100644
--- a/jrt/src/com/yahoo/jrt/NullCryptoEngine.java
+++ b/jrt/src/com/yahoo/jrt/NullCryptoEngine.java
@@ -9,7 +9,7 @@ import java.nio.channels.SocketChannel;
* CryptoEngine implementation that performs no encryption.
**/
public class NullCryptoEngine implements CryptoEngine {
- @Override public CryptoSocket createCryptoSocket(TransportMetrics metrics, SocketChannel channel, boolean isServer) {
- return new NullCryptoSocket(metrics, channel, isServer);
+ @Override public CryptoSocket createCryptoSocket(SocketChannel channel, boolean isServer) {
+ return new NullCryptoSocket(channel, isServer);
}
}
diff --git a/jrt/src/com/yahoo/jrt/NullCryptoSocket.java b/jrt/src/com/yahoo/jrt/NullCryptoSocket.java
index 1473f288306..0d7b83f1c7d 100644
--- a/jrt/src/com/yahoo/jrt/NullCryptoSocket.java
+++ b/jrt/src/com/yahoo/jrt/NullCryptoSocket.java
@@ -13,17 +13,14 @@ import java.nio.channels.SocketChannel;
public class NullCryptoSocket implements CryptoSocket {
private final boolean isServer;
private SocketChannel channel;
- private TransportMetrics metrics;
- public NullCryptoSocket(TransportMetrics metrics, SocketChannel channel, boolean isServer) { this.metrics = metrics; this.channel = channel; this.isServer = isServer; }
+ private final TransportMetrics metrics = TransportMetrics.getInstance();
+ public NullCryptoSocket(SocketChannel channel, boolean isServer) { this.channel = channel; this.isServer = isServer; }
@Override public SocketChannel channel() { return channel; }
@Override public HandshakeResult handshake() throws IOException {
- if (metrics != null) {
- if (isServer) {
- metrics.incrementServerUnencryptedConnectionsEstablished();
- } else {
- metrics.incrementClientUnencryptedConnectionsEstablished();
- }
- metrics = null;
+ if (isServer) {
+ metrics.incrementServerUnencryptedConnectionsEstablished();
+ } else {
+ metrics.incrementClientUnencryptedConnectionsEstablished();
}
return HandshakeResult.DONE;
}
diff --git a/jrt/src/com/yahoo/jrt/TlsCryptoEngine.java b/jrt/src/com/yahoo/jrt/TlsCryptoEngine.java
index 7e5e6fd9dc4..41302a4c725 100644
--- a/jrt/src/com/yahoo/jrt/TlsCryptoEngine.java
+++ b/jrt/src/com/yahoo/jrt/TlsCryptoEngine.java
@@ -20,11 +20,11 @@ public class TlsCryptoEngine implements CryptoEngine {
}
@Override
- public TlsCryptoSocket createCryptoSocket(TransportMetrics metrics, SocketChannel channel, boolean isServer) {
+ public TlsCryptoSocket createCryptoSocket(SocketChannel channel, boolean isServer) {
SSLEngine sslEngine = tlsContext.createSslEngine();
sslEngine.setNeedClientAuth(true);
sslEngine.setUseClientMode(!isServer);
- return new TlsCryptoSocket(metrics, channel, sslEngine);
+ return new TlsCryptoSocket(channel, sslEngine);
}
@Override
diff --git a/jrt/src/com/yahoo/jrt/TlsCryptoSocket.java b/jrt/src/com/yahoo/jrt/TlsCryptoSocket.java
index 184b8824877..f25a45169a8 100644
--- a/jrt/src/com/yahoo/jrt/TlsCryptoSocket.java
+++ b/jrt/src/com/yahoo/jrt/TlsCryptoSocket.java
@@ -31,7 +31,7 @@ public class TlsCryptoSocket implements CryptoSocket {
private enum HandshakeState { NOT_STARTED, NEED_READ, NEED_WRITE, COMPLETED }
- private final TransportMetrics metrics;
+ private final TransportMetrics metrics = TransportMetrics.getInstance();
private final SocketChannel channel;
private final SSLEngine sslEngine;
private final Buffer wrapBuffer;
@@ -42,8 +42,7 @@ public class TlsCryptoSocket implements CryptoSocket {
private HandshakeState handshakeState;
private AuthorizationResult authorizationResult;
- public TlsCryptoSocket(TransportMetrics metrics, SocketChannel channel, SSLEngine sslEngine) {
- this.metrics = metrics;
+ public TlsCryptoSocket(SocketChannel channel, SSLEngine sslEngine) {
this.channel = channel;
this.sslEngine = sslEngine;
SSLSession nullSession = sslEngine.getSession();
diff --git a/jrt/src/com/yahoo/jrt/Transport.java b/jrt/src/com/yahoo/jrt/Transport.java
index 717c39d403b..8da4c737f79 100644
--- a/jrt/src/com/yahoo/jrt/Transport.java
+++ b/jrt/src/com/yahoo/jrt/Transport.java
@@ -77,7 +77,7 @@ public class Transport {
private Scheduler scheduler;
private int state;
private Selector selector;
- private final TransportMetrics metrics = new TransportMetrics();
+ private final TransportMetrics metrics = TransportMetrics.getInstance();
private void handleAddConnection(Connection conn) {
if (conn.isClosed()) {
@@ -197,7 +197,7 @@ public class Transport {
* @param isServer flag indicating which end of the connection we are
**/
CryptoSocket createCryptoSocket(SocketChannel channel, boolean isServer) {
- return cryptoEngine.createCryptoSocket(metrics, channel, isServer);
+ return cryptoEngine.createCryptoSocket(channel, isServer);
}
/**
diff --git a/jrt/src/com/yahoo/jrt/TransportMetrics.java b/jrt/src/com/yahoo/jrt/TransportMetrics.java
index e0afbc495e7..507a925572f 100644
--- a/jrt/src/com/yahoo/jrt/TransportMetrics.java
+++ b/jrt/src/com/yahoo/jrt/TransportMetrics.java
@@ -2,6 +2,7 @@
package com.yahoo.jrt;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.ToLongFunction;
/**
* Metric values produced by {@link Transport}.
@@ -10,6 +11,8 @@ import java.util.concurrent.atomic.AtomicLong;
*/
public class TransportMetrics {
+ private static final TransportMetrics instance = new TransportMetrics();
+
private final AtomicLong tlsCertificateVerificationFailures = new AtomicLong(0);
private final AtomicLong peerAuthorizationFailures = new AtomicLong(0);
private final AtomicLong serverTlsConnectionsEstablished = new AtomicLong(0);
@@ -17,6 +20,10 @@ public class TransportMetrics {
private final AtomicLong serverUnencryptedConnectionsEstablished = new AtomicLong(0);
private final AtomicLong clientUnencryptedConnectionsEstablished = new AtomicLong(0);
+ private TransportMetrics() {}
+
+ public static TransportMetrics getInstance() { return instance; }
+
public long tlsCertificateVerificationFailures() {
return tlsCertificateVerificationFailures.get();
}
@@ -41,6 +48,8 @@ public class TransportMetrics {
return clientUnencryptedConnectionsEstablished.get();
}
+ public Snapshot snapshot() { return new Snapshot(this); }
+
void incrementTlsCertificateVerificationFailures() {
tlsCertificateVerificationFailures.incrementAndGet();
}
@@ -76,4 +85,69 @@ public class TransportMetrics {
", clientUnencryptedConnectionsEstablished=" + clientUnencryptedConnectionsEstablished +
'}';
}
+
+ public static class Snapshot {
+ private final long tlsCertificateVerificationFailures;
+ private final long peerAuthorizationFailures;
+ private final long serverTlsConnectionsEstablished;
+ private final long clientTlsConnectionsEstablished;
+ private final long serverUnencryptedConnectionsEstablished;
+ private final long clientUnencryptedConnectionsEstablished;
+
+ private Snapshot(TransportMetrics metrics) {
+ this(metrics.tlsCertificateVerificationFailures.get(),
+ metrics.peerAuthorizationFailures.get(),
+ metrics.serverTlsConnectionsEstablished.get(),
+ metrics.clientTlsConnectionsEstablished.get(),
+ metrics.serverUnencryptedConnectionsEstablished.get(),
+ metrics.clientUnencryptedConnectionsEstablished.get());
+ }
+
+ private Snapshot(long tlsCertificateVerificationFailures,
+ long peerAuthorizationFailures,
+ long serverTlsConnectionsEstablished,
+ long clientTlsConnectionsEstablished,
+ long serverUnencryptedConnectionsEstablished,
+ long clientUnencryptedConnectionsEstablished) {
+ this.tlsCertificateVerificationFailures = tlsCertificateVerificationFailures;
+ this.peerAuthorizationFailures = peerAuthorizationFailures;
+ this.serverTlsConnectionsEstablished = serverTlsConnectionsEstablished;
+ this.clientTlsConnectionsEstablished = clientTlsConnectionsEstablished;
+ this.serverUnencryptedConnectionsEstablished = serverUnencryptedConnectionsEstablished;
+ this.clientUnencryptedConnectionsEstablished = clientUnencryptedConnectionsEstablished;
+ }
+
+ public long tlsCertificateVerificationFailures() { return tlsCertificateVerificationFailures; }
+ public long peerAuthorizationFailures() { return peerAuthorizationFailures; }
+ public long serverTlsConnectionsEstablished() { return serverTlsConnectionsEstablished; }
+ public long clientTlsConnectionsEstablished() { return clientTlsConnectionsEstablished; }
+ public long serverUnencryptedConnectionsEstablished() { return serverUnencryptedConnectionsEstablished; }
+ public long clientUnencryptedConnectionsEstablished() { return clientUnencryptedConnectionsEstablished; }
+
+ public Snapshot changesSince(Snapshot base) {
+ return new Snapshot(
+ changesSince(base, Snapshot::tlsCertificateVerificationFailures),
+ changesSince(base, Snapshot::peerAuthorizationFailures),
+ changesSince(base, Snapshot::serverTlsConnectionsEstablished),
+ changesSince(base, Snapshot::clientTlsConnectionsEstablished),
+ changesSince(base, Snapshot::serverUnencryptedConnectionsEstablished),
+ changesSince(base, Snapshot::clientUnencryptedConnectionsEstablished));
+ }
+
+ private long changesSince(Snapshot base, ToLongFunction<Snapshot> metricProperty) {
+ return metricProperty.applyAsLong(this) - metricProperty.applyAsLong(base);
+ }
+
+ @Override
+ public String toString() {
+ return "Snapshot{" +
+ "tlsCertificateVerificationFailures=" + tlsCertificateVerificationFailures +
+ ", peerAuthorizationFailures=" + peerAuthorizationFailures +
+ ", serverTlsConnectionsEstablished=" + serverTlsConnectionsEstablished +
+ ", clientTlsConnectionsEstablished=" + clientTlsConnectionsEstablished +
+ ", serverUnencryptedConnectionsEstablished=" + serverUnencryptedConnectionsEstablished +
+ ", clientUnencryptedConnectionsEstablished=" + clientUnencryptedConnectionsEstablished +
+ '}';
+ }
+ }
}
diff --git a/jrt/src/com/yahoo/jrt/XorCryptoEngine.java b/jrt/src/com/yahoo/jrt/XorCryptoEngine.java
index 6912a58e394..4ba6d00faa4 100644
--- a/jrt/src/com/yahoo/jrt/XorCryptoEngine.java
+++ b/jrt/src/com/yahoo/jrt/XorCryptoEngine.java
@@ -11,7 +11,7 @@ import java.nio.channels.SocketChannel;
* from TLS.
**/
public class XorCryptoEngine implements CryptoEngine {
- @Override public CryptoSocket createCryptoSocket(TransportMetrics metrics, SocketChannel channel, boolean isServer) {
+ @Override public CryptoSocket createCryptoSocket(SocketChannel channel, boolean isServer) {
return new XorCryptoSocket(channel, isServer);
}
}
diff --git a/jrt/tests/com/yahoo/jrt/EchoTest.java b/jrt/tests/com/yahoo/jrt/EchoTest.java
index 1c600e0918c..8fe98ff3510 100644
--- a/jrt/tests/com/yahoo/jrt/EchoTest.java
+++ b/jrt/tests/com/yahoo/jrt/EchoTest.java
@@ -16,6 +16,8 @@ import static org.junit.Assert.assertTrue;
@RunWith(Parameterized.class)
public class EchoTest {
+ TransportMetrics metrics;
+ TransportMetrics.Snapshot startSnapshot;
Supervisor server;
Acceptor acceptor;
Supervisor client;
@@ -23,7 +25,7 @@ public class EchoTest {
Values refValues;
private interface MetricsAssertions {
- void assertMetrics(TransportMetrics serverMetrics, TransportMetrics clientMetrics) throws AssertionError;
+ void assertMetrics(TransportMetrics.Snapshot snapshot) throws AssertionError;
}
@Parameter(value = 0) public CryptoEngine crypto;
@@ -34,33 +36,35 @@ public class EchoTest {
return new Object[][] {
{
new NullCryptoEngine(),
- (MetricsAssertions) (serverMetrics, clientMetrics) -> {
- assertEquals(1, serverMetrics.serverUnencryptedConnectionsEstablished());
- assertEquals(1, clientMetrics.clientUnencryptedConnectionsEstablished());
+ (MetricsAssertions) metrics -> {
+ assertEquals(1, metrics.serverUnencryptedConnectionsEstablished());
+ assertEquals(1, metrics.clientUnencryptedConnectionsEstablished());
}},
{new XorCryptoEngine(), null},
{
new TlsCryptoEngine(createTestTlsContext()),
- (MetricsAssertions) (serverMetrics, clientMetrics) -> {
- assertEquals(1, serverMetrics.serverTlsConnectionsEstablished());
- assertEquals(1, clientMetrics.clientTlsConnectionsEstablished());
+ (MetricsAssertions) metrics -> {
+ assertEquals(1, metrics.serverTlsConnectionsEstablished());
+ assertEquals(1, metrics.clientTlsConnectionsEstablished());
}},
{
new MaybeTlsCryptoEngine(new TlsCryptoEngine(createTestTlsContext()), false),
- (MetricsAssertions) (serverMetrics, clientMetrics) -> {
- assertEquals(1, serverMetrics.serverUnencryptedConnectionsEstablished());
- assertEquals(1, clientMetrics.clientUnencryptedConnectionsEstablished());
+ (MetricsAssertions) metrics -> {
+ assertEquals(1, metrics.serverUnencryptedConnectionsEstablished());
+ assertEquals(1, metrics.clientUnencryptedConnectionsEstablished());
}},
{
new MaybeTlsCryptoEngine(new TlsCryptoEngine(createTestTlsContext()), true),
- (MetricsAssertions) (serverMetrics, clientMetrics) -> {
- assertEquals(1, serverMetrics.serverTlsConnectionsEstablished());
- assertEquals(1, clientMetrics.clientTlsConnectionsEstablished());
+ (MetricsAssertions) metrics -> {
+ assertEquals(1, metrics.serverTlsConnectionsEstablished());
+ assertEquals(1, metrics.clientTlsConnectionsEstablished());
}}};
}
@Before
public void setUp() throws ListenFailedException {
+ metrics = TransportMetrics.getInstance();
+ startSnapshot = metrics.snapshot();
server = new Supervisor(new Transport(crypto));
client = new Supervisor(new Transport(crypto));
acceptor = server.listen(new Spec(0));
@@ -131,7 +135,7 @@ public class EchoTest {
assertTrue(Test.equals(req.returnValues(), refValues));
assertTrue(Test.equals(req.parameters(), refValues));
if (metricsAssertions != null) {
- metricsAssertions.assertMetrics(server.transport().metrics(), client.transport().metrics());
+ metricsAssertions.assertMetrics(metrics.snapshot().changesSince(startSnapshot));
}
}
}