aboutsummaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-08-23 13:52:44 +0200
committerHarald Musum <musum@verizonmedia.com>2020-08-23 13:52:44 +0200
commit0335e2699eb2d7633884e0fe74bce05d44293fa3 (patch)
tree7b5627d16e1ba0bdfc44d767c15fe28b6127641d /configserver
parent81e7965cf9d52869a6d524cc6ebf4ae3f7687906 (diff)
Add Builder to ApplicationRepository
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java154
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java60
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java24
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java11
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java11
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java42
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandlerTest.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandlerTest.java11
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java8
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java20
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/TenantHandlerTest.java9
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java20
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java10
18 files changed, 228 insertions, 212 deletions
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 467b541d24f..137d0f1889e 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
@@ -125,7 +125,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
private final Clock clock;
private final DeployLogger logger = new SilentDeployLogger();
private final ConfigserverConfig configserverConfig;
- private final FileDistributionStatus fileDistributionStatus;
+ private final FileDistributionStatus fileDistributionStatus = new FileDistributionStatus();
private final Orchestrator orchestrator;
private final LogRetriever logRetriever;
private final TesterClient testerClient;
@@ -151,54 +151,12 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
configserverConfig,
orchestrator,
new LogRetriever(),
- new FileDistributionStatus(),
Clock.systemUTC(),
testerClient,
metric,
flagSource);
}
- // For testing
- public ApplicationRepository(TenantRepository tenantRepository,
- Provisioner hostProvisioner,
- Orchestrator orchestrator,
- Clock clock) {
- this(tenantRepository,
- hostProvisioner,
- orchestrator,
- new ConfigserverConfig(new ConfigserverConfig.Builder()),
- new LogRetriever(),
- clock,
- new TesterClient(),
- new NullMetric(),
- new InMemoryFlagSource());
- }
-
- // For testing
- public ApplicationRepository(TenantRepository tenantRepository,
- Provisioner hostProvisioner,
- Orchestrator orchestrator,
- ConfigserverConfig configserverConfig,
- LogRetriever logRetriever,
- Clock clock,
- TesterClient testerClient,
- Metric metric,
- FlagSource flagSource) {
- this(tenantRepository,
- Optional.of(hostProvisioner),
- Optional.empty(),
- new ConfigConvergenceChecker(),
- new HttpProxy(new SimpleHttpFetcher()),
- configserverConfig,
- orchestrator,
- logRetriever,
- new FileDistributionStatus(),
- clock,
- testerClient,
- metric,
- flagSource);
- }
-
private ApplicationRepository(TenantRepository tenantRepository,
Optional<Provisioner> hostProvisioner,
Optional<InfraDeployer> infraDeployer,
@@ -207,26 +165,110 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
ConfigserverConfig configserverConfig,
Orchestrator orchestrator,
LogRetriever logRetriever,
- FileDistributionStatus fileDistributionStatus,
Clock clock,
TesterClient testerClient,
Metric metric,
FlagSource flagSource) {
- this.tenantRepository = tenantRepository;
- this.hostProvisioner = hostProvisioner;
- this.infraDeployer = infraDeployer;
- this.convergeChecker = configConvergenceChecker;
- this.httpProxy = httpProxy;
- this.configserverConfig = configserverConfig;
- this.orchestrator = orchestrator;
- this.logRetriever = logRetriever;
- this.fileDistributionStatus = fileDistributionStatus;
- this.clock = clock;
- this.testerClient = testerClient;
- this.metric = metric;
+ this.tenantRepository = Objects.requireNonNull(tenantRepository);
+ this.hostProvisioner = Objects.requireNonNull(hostProvisioner);
+ this.infraDeployer = Objects.requireNonNull(infraDeployer);
+ this.convergeChecker = Objects.requireNonNull(configConvergenceChecker);
+ this.httpProxy = Objects.requireNonNull(httpProxy);
+ this.configserverConfig = Objects.requireNonNull(configserverConfig);
+ this.orchestrator = Objects.requireNonNull(orchestrator);
+ this.logRetriever = Objects.requireNonNull(logRetriever);
+ this.clock = Objects.requireNonNull(clock);
+ this.testerClient = Objects.requireNonNull(testerClient);
+ this.metric = Objects.requireNonNull(metric);
this.useTenantMetaData = Flags.USE_TENANT_META_DATA.bindTo(flagSource);
}
+ public static class Builder {
+ private TenantRepository tenantRepository;
+ private Optional<Provisioner> hostProvisioner;
+ private HttpProxy httpProxy = new HttpProxy(new SimpleHttpFetcher());
+ private Clock clock = Clock.systemUTC();
+ private ConfigserverConfig configserverConfig = new ConfigserverConfig.Builder().build();
+ private Orchestrator orchestrator;
+ private LogRetriever logRetriever = new LogRetriever();
+ private TesterClient testerClient = new TesterClient();
+ private Metric metric = new NullMetric();
+ private FlagSource flagSource = new InMemoryFlagSource();
+
+ public Builder withTenantRepository(TenantRepository tenantRepository) {
+ this.tenantRepository = tenantRepository;
+ return this;
+ }
+
+ public Builder withClock(Clock clock) {
+ this.clock = clock;
+ return this;
+ }
+
+ public Builder withProvisioner(Provisioner provisioner) {
+ if (this.hostProvisioner != null) throw new IllegalArgumentException("provisioner already set in builder");
+ this.hostProvisioner = Optional.ofNullable(provisioner);
+ return this;
+ }
+
+ public Builder withHostProvisionerProvider(HostProvisionerProvider hostProvisionerProvider) {
+ if (this.hostProvisioner != null) throw new IllegalArgumentException("provisioner already set in builder");
+ this.hostProvisioner = hostProvisionerProvider.getHostProvisioner();
+ return this;
+ }
+
+ public Builder withHttpProxy(HttpProxy httpProxy) {
+ this.httpProxy = httpProxy;
+ return this;
+ }
+
+ public Builder withConfigserverConfig(ConfigserverConfig configserverConfig) {
+ this.configserverConfig = configserverConfig;
+ return this;
+ }
+
+ public Builder withOrchestrator(Orchestrator orchestrator) {
+ this.orchestrator = orchestrator;
+ return this;
+ }
+
+ public Builder withLogRetriever(LogRetriever logRetriever) {
+ this.logRetriever = logRetriever;
+ return this;
+ }
+
+ public Builder withTesterClient(TesterClient testerClient) {
+ this.testerClient = testerClient;
+ return this;
+ }
+
+ public Builder withFlagSource(FlagSource flagSource) {
+ this.flagSource = flagSource;
+ return this;
+ }
+
+ public Builder withMetric(Metric metric) {
+ this.metric = metric;
+ return this;
+ }
+
+ public ApplicationRepository build() {
+ return new ApplicationRepository(tenantRepository,
+ hostProvisioner,
+ InfraDeployerProvider.empty().getInfraDeployer(),
+ new ConfigConvergenceChecker(),
+ httpProxy,
+ configserverConfig,
+ orchestrator,
+ logRetriever,
+ clock,
+ testerClient,
+ metric,
+ flagSource);
+ }
+
+ }
+
public Metric metric() {
return metric;
}
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 239f103332c..beac308cf77 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
@@ -17,10 +17,8 @@ import com.yahoo.config.provision.Deployment;
import com.yahoo.config.provision.HostSpec;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.NetworkPorts;
-import com.yahoo.config.provision.Provisioner;
import com.yahoo.config.provision.TenantName;
import com.yahoo.container.jdisc.HttpResponse;
-import com.yahoo.docproc.jdisc.metric.NullMetric;
import com.yahoo.io.IOUtils;
import com.yahoo.jdisc.Metric;
import com.yahoo.test.ManualClock;
@@ -106,7 +104,7 @@ public class ApplicationRepositoryTest {
private ApplicationRepository applicationRepository;
private TenantRepository tenantRepository;
- private SessionHandlerTest.MockProvisioner provisioner;
+ private SessionHandlerTest.MockProvisioner provisioner;
private OrchestratorMock orchestrator;
private TimeoutBudget timeoutBudget;
private Curator curator;
@@ -145,15 +143,15 @@ public class ApplicationRepositoryTest {
tenantRepository.addTenant(tenant3);
orchestrator = new OrchestratorMock();
provisioner = new SessionHandlerTest.MockProvisioner();
- applicationRepository = new ApplicationRepository(tenantRepository,
- provisioner,
- orchestrator,
- configserverConfig,
- new MockLogRetriever(),
- clock,
- new MockTesterClient(),
- new NullMetric(),
- flagSource);
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(provisioner)
+ .withConfigserverConfig(configserverConfig)
+ .withOrchestrator(orchestrator)
+ .withFlagSource(flagSource)
+ .withLogRetriever(new MockLogRetriever())
+ .withClock(clock)
+ .build();
timeoutBudget = new TimeoutBudget(clock, Duration.ofSeconds(60));
}
@@ -251,7 +249,6 @@ public class ApplicationRepositoryTest {
@Test
public void getLogs() {
- applicationRepository = createApplicationRepository();
deployApp(testAppLogServerWithContainer);
HttpResponse response = applicationRepository.getLogs(applicationId(), Optional.empty(), "");
assertEquals(200, response.getStatus());
@@ -259,7 +256,6 @@ public class ApplicationRepositoryTest {
@Test
public void getLogsForHostname() {
- applicationRepository = createApplicationRepository();
ApplicationId applicationId = ApplicationId.from("hosted-vespa", "tenant-host", "default");
deployApp(testAppLogServerWithContainer, new PrepareParams.Builder().applicationId(applicationId).build());
HttpResponse response = applicationRepository.getLogs(applicationId, Optional.of("localhost"), "");
@@ -276,8 +272,12 @@ public class ApplicationRepositoryTest {
File filereferenceDir2 = createFilereferenceOnDisk(new File(fileReferencesDir, "baz"), Instant.now());
tenantRepository.addTenant(tenant1);
- Provisioner provisioner = new SessionHandlerTest.MockProvisioner();
- applicationRepository = new ApplicationRepository(tenantRepository, provisioner, orchestrator, clock);
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(provisioner)
+ .withOrchestrator(orchestrator)
+ .withClock(clock)
+ .build();
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
@@ -451,15 +451,13 @@ public class ApplicationRepositoryTest {
@Test
public void testMetrics() {
MockMetric actual = new MockMetric();
- applicationRepository = new ApplicationRepository(tenantRepository,
- provisioner,
- orchestrator,
- new ConfigserverConfig(new ConfigserverConfig.Builder()),
- new MockLogRetriever(),
- new ManualClock(),
- new MockTesterClient(),
- actual,
- new InMemoryFlagSource());
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(provisioner)
+ .withOrchestrator(orchestrator)
+ .withMetric(actual)
+ .withClock(new ManualClock())
+ .build();
deployApp(testAppLogServerWithContainer);
Map<String, ?> context = Map.of("applicationId", "test1.testapp.default",
"tenantName", "test1",
@@ -701,18 +699,6 @@ public class ApplicationRepositoryTest {
applicationRepository.deploy(app1, prepareParams());
}
- private ApplicationRepository createApplicationRepository() {
- return new ApplicationRepository(tenantRepository,
- provisioner,
- orchestrator,
- new ConfigserverConfig(new ConfigserverConfig.Builder()),
- new MockLogRetriever(),
- clock,
- new MockTesterClient(),
- new NullMetric(),
- new InMemoryFlagSource());
- }
-
private PrepareResult prepareAndActivate(File application) {
return applicationRepository.deploy(application, prepareParams(), false, Instant.now());
}
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 2b7c1c3a6dc..e69fe21dd92 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
@@ -2,6 +2,7 @@
package com.yahoo.vespa.config.server.deploy;
import com.yahoo.cloud.config.ConfigserverConfig;
+import com.yahoo.component.Version;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.ConfigModelRegistry;
import com.yahoo.config.model.NullConfigModelRegistry;
@@ -15,25 +16,21 @@ import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.test.HostedConfigModelRegistry;
import com.yahoo.config.model.test.MockApplicationPackage;
+import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.HostFilter;
import com.yahoo.config.provision.HostSpec;
-import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ProvisionLogger;
import com.yahoo.config.provision.Provisioner;
import com.yahoo.config.provision.TenantName;
-import com.yahoo.component.Version;
import com.yahoo.config.provision.Zone;
-import com.yahoo.docproc.jdisc.metric.NullMetric;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.config.server.ApplicationRepository;
-import com.yahoo.vespa.config.server.MockTesterClient;
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.LogRetriever;
import com.yahoo.vespa.config.server.http.v2.PrepareResult;
import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.monitoring.Metrics;
@@ -43,7 +40,6 @@ import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
-import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.VespaModelFactory;
@@ -127,15 +123,13 @@ public class DeployTester {
catch (Exception e) {
throw new IllegalArgumentException(e);
}
- applicationRepository = new ApplicationRepository(tenantRepository,
- new ProvisionerAdapter(provisioner),
- new OrchestratorMock(),
- configserverConfig,
- new LogRetriever(),
- clock,
- new MockTesterClient(),
- new NullMetric(),
- new InMemoryFlagSource());
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new ProvisionerAdapter(provisioner))
+ .withConfigserverConfig(configserverConfig)
+ .withOrchestrator(new OrchestratorMock())
+ .withClock(clock)
+ .build();
}
public Tenant tenant() {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java
index 237a6547057..40aee72e71c 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java
@@ -19,7 +19,6 @@ import org.junit.rules.TemporaryFolder;
import java.io.File;
import java.io.IOException;
-import java.time.Clock;
import java.util.Collections;
import static com.yahoo.jdisc.http.HttpRequest.Method.GET;
@@ -58,11 +57,11 @@ public class HttpGetConfigHandlerTest {
.build();
TenantRepository tenantRepository = new TenantRepository(componentRegistry);
tenantRepository.addTenant(tenant);
- ApplicationRepository applicationRepository =
- new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- Clock.systemUTC());
+ ApplicationRepository applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .build();
handler = new HttpGetConfigHandler(HttpGetConfigHandler.testOnlyContext(), tenantRepository);
applicationRepository.deploy(testApp, prepareParams());
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java
index 86ea4309839..906716125c2 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java
@@ -21,7 +21,6 @@ import org.junit.rules.TemporaryFolder;
import java.io.File;
import java.io.IOException;
-import java.time.Clock;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
@@ -63,11 +62,11 @@ public class HttpListConfigsHandlerTest {
.build();
TenantRepository tenantRepository = new TenantRepository(componentRegistry);
tenantRepository.addTenant(tenant);
- ApplicationRepository applicationRepository =
- new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- Clock.systemUTC());
+ ApplicationRepository applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .build();
applicationRepository.deploy(testApp, prepareParams());
HttpListConfigsHandler.Context ctx = HttpListConfigsHandler.testOnlyContext();
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 0db6aea312d..469168cedd4 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
@@ -54,10 +54,12 @@ public class ApplicationContentHandlerTest extends ContentHandlerTestBase {
tenantRepository.addTenant(tenantName1);
tenantRepository.addTenant(tenantName2);
- applicationRepository = new ApplicationRepository(tenantRepository,
- new MockProvisioner(),
- new OrchestratorMock(),
- clock);
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .withClock(clock)
+ .build();
applicationRepository.deploy(testApp, prepareParams(appId1));
applicationRepository.deploy(testApp2, prepareParams(appId2));
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 9f8eb95a348..f43154242fb 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
@@ -2,7 +2,6 @@
package com.yahoo.vespa.config.server.http.v2;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.component.Version;
import com.yahoo.config.model.api.ModelFactory;
import com.yahoo.config.provision.ApplicationId;
@@ -12,7 +11,6 @@ import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
-import com.yahoo.docproc.jdisc.metric.NullMetric;
import com.yahoo.jdisc.Response;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.MockLogRetriever;
@@ -22,7 +20,6 @@ import com.yahoo.vespa.config.server.application.ConfigConvergenceChecker;
import com.yahoo.vespa.config.server.application.HttpProxy;
import com.yahoo.vespa.config.server.application.OrchestratorMock;
import com.yahoo.vespa.config.server.deploy.DeployTester;
-import com.yahoo.vespa.config.server.deploy.InfraDeployerProvider;
import com.yahoo.vespa.config.server.http.HandlerTest;
import com.yahoo.vespa.config.server.http.HttpErrorResponse;
import com.yahoo.vespa.config.server.http.SessionHandlerTest;
@@ -32,7 +29,6 @@ import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.session.PrepareParams;
import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
-import com.yahoo.vespa.flags.InMemoryFlagSource;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -44,7 +40,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.nio.charset.StandardCharsets;
-import java.time.Clock;
import java.util.List;
import static com.yahoo.config.model.api.container.ContainerServiceType.CLUSTERCONTROLLER_CONTAINER;
@@ -70,15 +65,12 @@ public class ApplicationHandlerTest {
private final static ApplicationId myTenantApplicationId = ApplicationId.from(mytenantName, ApplicationName.defaultName(), InstanceName.defaultName());
private final static ApplicationId applicationId = ApplicationId.from(TenantName.defaultName(), ApplicationName.defaultName(), InstanceName.defaultName());
private final static MockTesterClient testerClient = new MockTesterClient();
- private final static NullMetric metric = new NullMetric();
- private final static ConfigserverConfig configserverConfig = new ConfigserverConfig(new ConfigserverConfig.Builder());
private static final MockLogRetriever logRetriever = new MockLogRetriever();
private static final Version vespaVersion = Version.fromString("7.8.9");
private TenantRepository tenantRepository;
private ApplicationRepository applicationRepository;
private SessionHandlerTest.MockProvisioner provisioner;
- private final MockStateApiFactory stateApiFactory = new MockStateApiFactory();
private OrchestratorMock orchestrator;
@Before
@@ -92,15 +84,14 @@ public class ApplicationHandlerTest {
tenantRepository.addTenant(mytenantName);
provisioner = new SessionHandlerTest.MockProvisioner();
orchestrator = new OrchestratorMock();
- applicationRepository = new ApplicationRepository(tenantRepository,
- provisioner,
- orchestrator,
- configserverConfig,
- logRetriever,
- Clock.systemUTC(),
- testerClient,
- metric,
- new InMemoryFlagSource());
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(provisioner)
+ .withOrchestrator(orchestrator)
+ .withClock(componentRegistry.getClock())
+ .withTesterClient(testerClient)
+ .withLogRetriever(logRetriever)
+ .build();
}
@After
@@ -201,16 +192,13 @@ public class ApplicationHandlerTest {
String host = "foo.yahoo.com";
String url = toUrlPath(applicationId, Zone.defaultZone(), true) + "/clustercontroller/" + host + "/status/v1/clusterName1";
HttpProxy mockHttpProxy = mock(HttpProxy.class);
- ApplicationRepository applicationRepository = new ApplicationRepository(tenantRepository,
- HostProvisionerProvider.withProvisioner(provisioner),
- InfraDeployerProvider.empty(),
- new ConfigConvergenceChecker(stateApiFactory),
- mockHttpProxy,
- configserverConfig,
- orchestrator,
- testerClient,
- metric,
- new InMemoryFlagSource());
+ ApplicationRepository applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withHostProvisionerProvider(HostProvisionerProvider.empty())
+ .withOrchestrator(orchestrator)
+ .withTesterClient(testerClient)
+ .withHttpProxy(mockHttpProxy)
+ .build();
ApplicationHandler mockHandler = createApplicationHandler(applicationRepository);
when(mockHttpProxy.get(any(), eq(host), eq(CLUSTERCONTROLLER_CONTAINER.serviceName),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/HostHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java
index 5bf5e1f2229..4d64721f7dd 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java
@@ -23,7 +23,6 @@ import org.junit.Test;
import java.io.File;
import java.io.IOException;
-import java.time.Clock;
import static com.yahoo.jdisc.http.HttpRequest.Method;
import static com.yahoo.vespa.config.server.http.HandlerTest.assertHttpStatusCodeErrorCodeAndMessage;
@@ -48,10 +47,11 @@ public class HostHandlerTest {
.build();
TenantRepository tenantRepository = new TenantRepository(componentRegistry);
tenantRepository.addTenant(mytenant);
- applicationRepository = new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- Clock.systemUTC());
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .build();
handler = new HostHandler(HostHandler.testOnlyContext(), applicationRepository);
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandlerTest.java
index a1ec73c44dc..14d7a0743a5 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandlerTest.java
@@ -66,11 +66,11 @@ public class HttpGetConfigHandlerTest {
.build();
TenantRepository tenantRepository = new TenantRepository(componentRegistry);
tenantRepository.addTenant(tenant);
- ApplicationRepository applicationRepository =
- new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- Clock.systemUTC());
+ ApplicationRepository applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .build();
handler = new HttpGetConfigHandler(HttpGetConfigHandler.testOnlyContext(), tenantRepository);
applicationRepository.deploy(testApp, prepareParams());
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandlerTest.java
index 64fc1d118c2..785c9977fd2 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandlerTest.java
@@ -27,7 +27,6 @@ import org.junit.rules.TemporaryFolder;
import java.io.File;
import java.io.IOException;
-import java.time.Clock;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
@@ -71,11 +70,11 @@ public class HttpListConfigsHandlerTest {
.build();
TenantRepository tenantRepository = new TenantRepository(componentRegistry);
tenantRepository.addTenant(tenant);
- ApplicationRepository applicationRepository =
- new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- Clock.systemUTC());
+ ApplicationRepository applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .build();
applicationRepository.deploy(testApp, prepareParams());
handler = new HttpListConfigsHandler(HttpListConfigsHandler.testOnlyContext(),
tenantRepository,
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 e48752afaf6..135a5ef45c4 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
@@ -74,8 +74,12 @@ public class SessionActiveHandlerTest {
.build();
TenantRepository tenantRepository = new TenantRepository(componentRegistry, false);
tenantRepository.addTenant(tenantName);
- applicationRepository = new ApplicationRepository(tenantRepository, hostProvisioner,
- new OrchestratorMock(), componentRegistry.getClock());
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(hostProvisioner)
+ .withOrchestrator(new OrchestratorMock())
+ .withClock(componentRegistry.getClock())
+ .build();
handler = createHandler();
}
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 cda62361256..f0362db3b8a 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
@@ -25,7 +25,6 @@ import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.time.Clock;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertNotNull;
@@ -49,10 +48,11 @@ public class SessionContentHandlerTest extends ContentHandlerTestBase {
tenantRepository = new TenantRepository(componentRegistry, false);
tenantRepository.addTenant(tenantName);
- ApplicationRepository applicationRepository = new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- Clock.systemUTC());
+ ApplicationRepository applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .build();
applicationRepository.deploy(testApp, new PrepareParams.Builder().applicationId(applicationId()).build());
Tenant tenant = applicationRepository.getTenant(applicationId());
sessionId = applicationRepository.getActiveLocalSession(tenant, applicationId()).getSessionId();
@@ -171,10 +171,12 @@ public class SessionContentHandlerTest extends ContentHandlerTestBase {
private SessionContentHandler createHandler() {
return new SessionContentHandler(
SessionContentHandler.testOnlyContext(),
- new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- componentRegistry.getClock())
+ new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .withClock(componentRegistry.getClock())
+ .build()
);
}
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 c6d241ee534..0f1b1543c83 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
@@ -62,10 +62,12 @@ public class SessionCreateHandlerTest extends SessionHandlerTest {
@Before
public void setupRepo() {
TenantRepository tenantRepository = new TenantRepository(componentRegistry, false);
- applicationRepository = new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- componentRegistry.getClock());
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .withClock(componentRegistry.getClock())
+ .build();
tenantRepository.addTenant(tenant);
pathPrefix = "/application/v2/tenant/" + tenant + "/session/";
createdMessage = " for tenant '" + tenant + "' created.\"";
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 2f591ece8c4..297fee94e5b 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
@@ -67,10 +67,12 @@ public class SessionPrepareHandlerTest extends SessionHandlerTest {
public void setupRepo() {
tenantRepository = new TenantRepository(componentRegistry, false);
tenantRepository.addTenant(tenant);
- applicationRepository = new ApplicationRepository(tenantRepository,
- new MockProvisioner(),
- new OrchestratorMock(),
- clock);
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .withClock(clock)
+ .build();
pathPrefix = "/application/v2/tenant/" + tenant + "/session/";
preparedMessage = " for tenant '" + tenant + "' prepared.\"";
tenantMessage = ",\"tenant\":\"" + tenant + "\"";
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 3d143bb8f92..ecab121e547 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
@@ -44,10 +44,11 @@ public class TenantHandlerTest {
@Before
public void setup() {
tenantRepository = new TenantRepository(new TestComponentRegistry.Builder().curator(new MockCurator()).build());
- applicationRepository = new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- Clock.systemUTC());
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .build();
handler = new TenantHandler(TenantHandler.testOnlyContext(), 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 e32ffeb47e1..9566daf70f4 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
@@ -1,12 +1,9 @@
// 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.maintenance;
-import com.yahoo.cloud.config.ConfigserverConfig;
-import com.yahoo.docproc.jdisc.metric.NullMetric;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.GlobalComponentRegistry;
import com.yahoo.vespa.config.server.MockLogRetriever;
-import com.yahoo.vespa.config.server.MockTesterClient;
import com.yahoo.vespa.config.server.TestComponentRegistry;
import com.yahoo.vespa.config.server.application.OrchestratorMock;
import com.yahoo.vespa.config.server.http.SessionHandlerTest;
@@ -30,15 +27,14 @@ class MaintainerTester {
.clock(clock)
.build();
tenantRepository = new TenantRepository(componentRegistry, false);
- applicationRepository = new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- new ConfigserverConfig.Builder().build(),
- new MockLogRetriever(),
- clock,
- new MockTesterClient(),
- new NullMetric(),
- flagSource);
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .withLogRetriever(new MockLogRetriever())
+ .withFlagSource(flagSource)
+ .withClock(clock)
+ .build();
}
Curator curator() { return curator; }
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 868846674df..0f087e3f006 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
@@ -34,7 +34,6 @@ import org.junit.After;
import org.junit.rules.TemporaryFolder;
import java.io.IOException;
-import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
@@ -91,10 +90,11 @@ public class RpcTester implements AutoCloseable {
.build();
tenantRepository = new TenantRepository(componentRegistry, false);
tenantRepository.addTenant(tenantName);
- applicationRepository = new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- Clock.systemUTC());
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .build();
generationCounter = new MemoryGenerationCounter();
createAndStartRpcServer();
assertFalse(hostLivenessTracker.lastRequestFrom(myHostname).isPresent());
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
index fb7b5280b1e..bb87233f979 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
@@ -22,7 +22,6 @@ import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import java.io.File;
-import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
import java.util.function.LongPredicate;
@@ -68,10 +67,11 @@ public class SessionRepositoryTest {
.build();
tenantRepository = new TenantRepository(globalComponentRegistry, false);
tenantRepository.addTenant(SessionRepositoryTest.tenantName);
- applicationRepository = new ApplicationRepository(tenantRepository,
- new SessionHandlerTest.MockProvisioner(),
- new OrchestratorMock(),
- Clock.systemUTC());
+ applicationRepository = new ApplicationRepository.Builder()
+ .withTenantRepository(tenantRepository)
+ .withProvisioner(new SessionHandlerTest.MockProvisioner())
+ .withOrchestrator(new OrchestratorMock())
+ .build();
sessionRepository = tenantRepository.getTenant(tenantName).getSessionRepository();
}