diff options
author | Håkon Hallingstad <hakon@yahoo-inc.com> | 2017-02-09 08:53:25 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@yahoo-inc.com> | 2017-02-09 08:53:25 +0100 |
commit | 084ac886ddd29eef26798c5d3854c4647bf5eb73 (patch) | |
tree | fd08f63030ab05db52ad8211e8c22890da1d69e9 /configserver/src/test/java | |
parent | 27ddf647d881ab58ae69dd629599b52ee7c9d320 (diff) |
Adds Config Server application handler for Cluster Controller status page
Diffstat (limited to 'configserver/src/test/java')
7 files changed, 98 insertions, 36 deletions
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 659d82379da..07fb3cd51c7 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 @@ -29,7 +29,9 @@ import com.yahoo.vespa.config.server.ApplicationRepository; import com.yahoo.vespa.config.server.TestComponentRegistry; import com.yahoo.vespa.config.server.TimeoutBudget; import com.yahoo.vespa.config.server.application.ApplicationConvergenceChecker; +import com.yahoo.vespa.config.server.application.HttpProxy; import com.yahoo.vespa.config.server.application.LogServerLogGrabber; +import com.yahoo.vespa.config.server.http.SimpleHttpFetcher; import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry; import com.yahoo.vespa.config.server.monitoring.Metrics; import com.yahoo.vespa.config.server.provision.HostProvisionerProvider; @@ -149,7 +151,8 @@ public class DeployTester { HostProvisionerProvider.withProvisioner(createHostProvisioner()), curator, new LogServerLogGrabber(), - new ApplicationConvergenceChecker()); + new ApplicationConvergenceChecker(), + new HttpProxy(new SimpleHttpFetcher())); return applicationRepository.deployFromLocalActive(id, Duration.ofSeconds(60)); } 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 81ade07fd5a..6eb730d11dc 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 @@ -11,8 +11,10 @@ import com.yahoo.jdisc.Response; import com.yahoo.config.provision.ApplicationId; import com.yahoo.vespa.config.server.ApplicationRepository; import com.yahoo.vespa.config.server.application.ApplicationConvergenceChecker; +import com.yahoo.vespa.config.server.application.HttpProxy; import com.yahoo.vespa.config.server.application.LogServerLogGrabber; import com.yahoo.vespa.config.server.http.ContentHandlerTestBase; +import com.yahoo.vespa.config.server.http.SimpleHttpFetcher; import com.yahoo.vespa.config.server.provision.HostProvisionerProvider; import com.yahoo.vespa.config.server.session.Session; import com.yahoo.vespa.curator.mock.MockCurator; @@ -62,7 +64,8 @@ public class ApplicationContentHandlerTest extends ContentHandlerTestBase { HostProvisionerProvider.empty(), new MockCurator(), new LogServerLogGrabber(), - new ApplicationConvergenceChecker())); + new ApplicationConvergenceChecker(), + new HttpProxy(new SimpleHttpFetcher()))); 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 d7fd292c07e..f695c533b0f 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 @@ -12,6 +12,7 @@ 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.container.jdisc.LiteralResponse; import com.yahoo.container.logging.AccessLog; import com.yahoo.jdisc.Response; import com.yahoo.path.Path; @@ -19,25 +20,27 @@ import com.yahoo.vespa.config.server.ApplicationRepository; import com.yahoo.vespa.config.server.GlobalComponentRegistry; import com.yahoo.vespa.config.server.MockReloadHandler; import com.yahoo.vespa.config.server.SuperModelGenerationCounter; +import com.yahoo.vespa.config.server.TestComponentRegistry; +import com.yahoo.vespa.config.server.application.ApplicationConvergenceChecker; +import com.yahoo.vespa.config.server.application.HttpProxy; +import com.yahoo.vespa.config.server.application.LogServerLogGrabber; import com.yahoo.vespa.config.server.application.TenantApplications; import com.yahoo.vespa.config.server.application.ZKTenantApplications; +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.http.SimpleHttpFetcher; import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry; import com.yahoo.vespa.config.server.monitoring.Metrics; +import com.yahoo.vespa.config.server.provision.HostProvisionerProvider; import com.yahoo.vespa.config.server.session.LocalSession; +import com.yahoo.vespa.config.server.session.MockSessionZKClient; +import com.yahoo.vespa.config.server.session.RemoteSession; import com.yahoo.vespa.config.server.session.SessionContext; import com.yahoo.vespa.config.server.session.SessionZooKeeperClient; import com.yahoo.vespa.config.server.tenant.Tenant; import com.yahoo.vespa.config.server.tenant.TenantBuilder; import com.yahoo.vespa.config.server.tenant.Tenants; -import com.yahoo.vespa.config.server.TestComponentRegistry; -import com.yahoo.vespa.config.server.application.ApplicationConvergenceChecker; -import com.yahoo.vespa.config.server.application.LogServerLogGrabber; -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.provision.HostProvisionerProvider; -import com.yahoo.vespa.config.server.session.MockSessionZKClient; -import com.yahoo.vespa.config.server.session.RemoteSession; import com.yahoo.vespa.curator.mock.MockCurator; import com.yahoo.vespa.model.VespaModelFactory; import org.junit.Assert; @@ -54,10 +57,14 @@ import java.util.Collections; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; /** * @author hmusum @@ -74,6 +81,7 @@ public class ApplicationHandlerTest { private Tenants tenants; private SessionActiveHandlerTest.MockProvisioner provisioner; private MockStateApiFactory stateApiFactory = new MockStateApiFactory(); + private final HttpProxy mockHttpProxy = mock(HttpProxy.class); @Before public void setup() throws Exception { @@ -84,7 +92,10 @@ public class ApplicationHandlerTest { tenants = testBuilder.createTenants(); provisioner = new SessionActiveHandlerTest.MockProvisioner(); mockHandler = createMockApplicationHandler( - provisioner, new ApplicationConvergenceChecker(stateApiFactory), new LogServerLogGrabber()); + provisioner, + new ApplicationConvergenceChecker(stateApiFactory), + mockHttpProxy, + new LogServerLogGrabber()); listApplicationsHandler = new ListApplicationsHandler( Runnable::run, AccessLog.voidAccessLog(), tenants, Zone.defaultZone()); } @@ -92,6 +103,7 @@ public class ApplicationHandlerTest { private ApplicationHandler createMockApplicationHandler( Provisioner provisioner, ApplicationConvergenceChecker convergeChecker, + HttpProxy httpProxy, LogServerLogGrabber logServerLogGrabber) { return new ApplicationHandler( Runnable::run, @@ -101,7 +113,8 @@ public class ApplicationHandlerTest { HostProvisionerProvider.withProvisioner(provisioner), new MockCurator(), logServerLogGrabber, - convergeChecker)); + convergeChecker, + httpProxy)); } private ApplicationHandler createApplicationHandler(Tenants tenants) { @@ -113,7 +126,8 @@ public class ApplicationHandlerTest { HostProvisionerProvider.withProvisioner(provisioner), new MockCurator(), new LogServerLogGrabber(), - new ApplicationConvergenceChecker(stateApiFactory))); + new ApplicationConvergenceChecker(stateApiFactory), + new HttpProxy(new SimpleHttpFetcher()))); } @Test @@ -205,6 +219,21 @@ public class ApplicationHandlerTest { } @Test + public void testClusterControllerStatus() throws Exception { + long sessionId = 1; + ApplicationId application = new ApplicationId.Builder().applicationName(ApplicationName.defaultName()).tenant(mytenantName).build(); + addMockApplication(tenants.getTenant(mytenantName), application, sessionId); + String host = "foo.yahoo.com"; + String url = toUrlPath(application, Zone.defaultZone(), true) + "/clustercontroller/" + host + "/status/v1/clusterName1"; + + when(mockHttpProxy.get(any(), eq(host), eq("container-clustercontroller"), eq("clustercontroller-status/v1/clusterName1"))) + .thenReturn(new LiteralResponse(200, "<html>...</html>")); + + HttpResponse response = mockHandler.handle(HttpRequest.createTestRequest(url, com.yahoo.jdisc.http.HttpRequest.Method.GET)); + HandlerTest.assertHttpStatusCodeAndMessage(response, 200, "<html>...</html>"); + } + + @Test public void testPutIsIllegal() throws IOException { assertNotAllowed(com.yahoo.jdisc.http.HttpRequest.Method.PUT); } @@ -214,7 +243,10 @@ public class ApplicationHandlerTest { public void testFailingProvisioner() throws Exception { provisioner = new SessionActiveHandlerTest.FailingMockProvisioner(); mockHandler = createMockApplicationHandler( - provisioner, new ApplicationConvergenceChecker(stateApiFactory), new LogServerLogGrabber()); + provisioner, + new ApplicationConvergenceChecker(stateApiFactory), + new HttpProxy(new SimpleHttpFetcher()), + new LogServerLogGrabber()); final ApplicationId applicationId = ApplicationId.defaultId(); addMockApplication(tenants.getTenant(mytenantName), applicationId, 1); assertApplicationExists(mytenantName, applicationId, Zone.defaultZone()); 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 dda5ecb897e..2d76e9aa2cc 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 @@ -1,23 +1,35 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.server.http.v2; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.Collection; -import java.util.List; - -import com.yahoo.config.provision.*; +import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.ApplicationName; +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.InstanceName; +import com.yahoo.config.provision.ProvisionLogger; +import com.yahoo.config.provision.Provisioner; +import com.yahoo.config.provision.TenantName; +import com.yahoo.config.provision.Zone; import com.yahoo.container.jdisc.HttpResponse; import com.yahoo.container.logging.AccessLog; import com.yahoo.jdisc.Response; import com.yahoo.jdisc.http.HttpRequest; +import com.yahoo.path.Path; import com.yahoo.slime.JsonFormat; import com.yahoo.transaction.NestedTransaction; -import com.yahoo.vespa.config.server.*; +import com.yahoo.vespa.config.server.ApplicationRepository; +import com.yahoo.vespa.config.server.PathProvider; import com.yahoo.vespa.config.server.application.ApplicationConvergenceChecker; +import com.yahoo.vespa.config.server.application.HttpProxy; import com.yahoo.vespa.config.server.application.LogServerLogGrabber; +import com.yahoo.vespa.config.server.application.MemoryTenantApplications; import com.yahoo.vespa.config.server.http.HttpErrorResponse; +import com.yahoo.vespa.config.server.http.SessionActiveHandlerTestBase; +import com.yahoo.vespa.config.server.http.SessionHandler; import com.yahoo.vespa.config.server.http.SessionHandlerTest; +import com.yahoo.vespa.config.server.http.SimpleHttpFetcher; import com.yahoo.vespa.config.server.provision.HostProvisionerProvider; import com.yahoo.vespa.config.server.session.LocalSessionRepo; import com.yahoo.vespa.config.server.session.RemoteSession; @@ -25,20 +37,23 @@ import com.yahoo.vespa.config.server.session.RemoteSessionRepo; import com.yahoo.vespa.config.server.session.Session; import com.yahoo.vespa.config.server.session.SessionFactory; import com.yahoo.vespa.config.server.session.SessionZooKeeperClient; - -import com.yahoo.vespa.curator.mock.MockCurator; import com.yahoo.vespa.config.server.zookeeper.ConfigCurator; +import com.yahoo.vespa.curator.mock.MockCurator; +import org.junit.Before; import org.junit.Ignore; import org.junit.Test; -import org.junit.Before; -import static org.hamcrest.CoreMatchers.*; -import static org.junit.Assert.*; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Collection; +import java.util.List; -import com.yahoo.path.Path; -import com.yahoo.vespa.config.server.application.MemoryTenantApplications; -import com.yahoo.vespa.config.server.http.SessionActiveHandlerTestBase; -import com.yahoo.vespa.config.server.http.SessionHandler; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; public class SessionActiveHandlerTest extends SessionActiveHandlerTestBase { @@ -167,7 +182,8 @@ public class SessionActiveHandlerTest extends SessionActiveHandlerTestBase { HostProvisionerProvider.withProvisioner(hostProvisioner), curator, new LogServerLogGrabber(), - new ApplicationConvergenceChecker())); + new ApplicationConvergenceChecker(), + new HttpProxy(new SimpleHttpFetcher()))); } public static class MockProvisioner implements Provisioner { 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 224cd5d28d1..7f5ab96d76a 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 @@ -11,9 +11,11 @@ import com.yahoo.jdisc.http.HttpRequest; import com.yahoo.text.Utf8; import com.yahoo.vespa.config.server.ApplicationRepository; import com.yahoo.vespa.config.server.application.ApplicationConvergenceChecker; +import com.yahoo.vespa.config.server.application.HttpProxy; import com.yahoo.vespa.config.server.application.LogServerLogGrabber; import com.yahoo.vespa.config.server.http.ContentHandlerTestBase; import com.yahoo.vespa.config.server.http.SessionHandlerTest; +import com.yahoo.vespa.config.server.http.SimpleHttpFetcher; import com.yahoo.vespa.config.server.provision.HostProvisionerProvider; import com.yahoo.vespa.curator.mock.MockCurator; import org.apache.commons.io.FileUtils; @@ -175,6 +177,7 @@ public class SessionContentHandlerTest extends ContentHandlerTestBase { HostProvisionerProvider.withProvisioner(new SessionActiveHandlerTest.MockProvisioner()), new MockCurator(), new LogServerLogGrabber(), - new ApplicationConvergenceChecker())); + new ApplicationConvergenceChecker(), + new HttpProxy(new SimpleHttpFetcher()))); } } 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 908f4481a95..107297743e1 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 @@ -10,6 +10,7 @@ import com.yahoo.container.logging.AccessLog; import com.yahoo.config.provision.ApplicationId; import com.yahoo.vespa.config.server.ApplicationRepository; import com.yahoo.vespa.config.server.application.ApplicationConvergenceChecker; +import com.yahoo.vespa.config.server.application.HttpProxy; import com.yahoo.vespa.config.server.application.LogServerLogGrabber; import com.yahoo.vespa.config.server.application.MemoryTenantApplications; import com.yahoo.vespa.config.server.application.TenantApplications; @@ -17,6 +18,7 @@ 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.http.SimpleHttpFetcher; import com.yahoo.vespa.config.server.provision.HostProvisionerProvider; import com.yahoo.vespa.config.server.session.*; import com.yahoo.vespa.config.server.tenant.Tenants; @@ -249,7 +251,8 @@ public class SessionCreateHandlerTest extends SessionHandlerTest { HostProvisionerProvider.withProvisioner(new SessionActiveHandlerTest.MockProvisioner()), new MockCurator(), new LogServerLogGrabber(), - new ApplicationConvergenceChecker())); + new ApplicationConvergenceChecker(), + new HttpProxy(new SimpleHttpFetcher()))); } public HttpRequest post() throws FileNotFoundException { 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 632a1c66ac0..bee1229c093 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 @@ -22,6 +22,7 @@ import com.yahoo.vespa.config.server.PathProvider; import com.yahoo.vespa.config.server.TestComponentRegistry; import com.yahoo.vespa.config.server.application.ApplicationConvergenceChecker; import com.yahoo.vespa.config.server.application.ApplicationSet; +import com.yahoo.vespa.config.server.application.HttpProxy; import com.yahoo.vespa.config.server.application.LogServerLogGrabber; import com.yahoo.vespa.config.server.host.HostRegistry; import com.yahoo.vespa.config.server.application.TenantApplications; @@ -350,7 +351,8 @@ public class SessionPrepareHandlerTest extends SessionHandlerTest { HostProvisionerProvider.withProvisioner(new SessionActiveHandlerTest.MockProvisioner()), new MockCurator(), new LogServerLogGrabber(), - new ApplicationConvergenceChecker())); + new ApplicationConvergenceChecker(), + new HttpProxy(new SimpleHttpFetcher()))); } private TestTenantBuilder addTenant(TenantName tenantName, |