diff options
Diffstat (limited to 'service-monitor/src/test/java/com/yahoo')
5 files changed, 6 insertions, 250 deletions
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/duper/TestZoneApplication.java b/service-monitor/src/test/java/com/yahoo/vespa/service/duper/TestZoneApplication.java deleted file mode 100644 index 773643c1d09..00000000000 --- a/service-monitor/src/test/java/com/yahoo/vespa/service/duper/TestZoneApplication.java +++ /dev/null @@ -1,90 +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.vespa.service.duper; - -import com.yahoo.config.model.api.ApplicationInfo; -import com.yahoo.config.model.api.HostInfo; -import com.yahoo.config.provision.HostName; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -/** - * @author hakonhall - */ -public class TestZoneApplication { - - private final List<HostName> nodeAdminHostnames; - private final List<HostName> routingHostnames; - - private TestZoneApplication(List<HostName> nodeAdminHostnames, List<HostName> routingHostnames) { - this.nodeAdminHostnames = nodeAdminHostnames; - this.routingHostnames = routingHostnames; - } - - public ApplicationInfo makeApplicationInfo() { - // Make a test ApplicationInfo by: - // 1. Make an ApplicationInfo as-if the node-admin cluster of the zone application were the only cluster. - // Make sure to get the correct tenant name, application name, cluster id, service type, hostnames, - // services, and ports. This should be easy with the help of InfraApplication. - ApplicationInfo nodeAdminPart = new NodeAdminPartOfZoneApplication().makeApplicationInfo(nodeAdminHostnames); - - // 2. Make an ApplicationInfo as-if the routing cluster of the zone application were the only cluster. - // Don't care if the application is not perfect. - ApplicationInfo routingPart = new RoutingPartOfZoneApplication().makeApplicationInfo(routingHostnames); - - // 3. Take HostInfo from (1) and (2) to make a single ApplicationInfo. - List<HostInfo> allHostInfos = new ArrayList<>(); - allHostInfos.addAll(nodeAdminPart.getModel().getHosts()); - allHostInfos.addAll(routingPart.getModel().getHosts()); - - return new ApplicationInfo(nodeAdminPart.getApplicationId(), 0, new HostsModel(allHostInfos)); - } - - public static class Builder { - private List<HostName> nodeAdminHostnames = null; - private List<HostName> routingHostnames = null; - - public Builder addNodeAdminCluster(String... hostnames) { - this.nodeAdminHostnames = Stream.of(hostnames).map(HostName::from).collect(Collectors.toList()); - return this; - } - - public Builder addRoutingCluster(String... hostnames) { - this.routingHostnames = Stream.of(hostnames).map(HostName::from).collect(Collectors.toList()); - return this; - } - - public TestZoneApplication build() { - return new TestZoneApplication(Objects.requireNonNull(nodeAdminHostnames), Objects.requireNonNull(routingHostnames)); - } - } - - private static class NodeAdminPartOfZoneApplication extends InfraApplication { - public NodeAdminPartOfZoneApplication() { - super(ZoneApplication.getApplicationName().value(), - ZoneApplication.getNodeAdminNodeType(), - ZoneApplication.getNodeAdminClusterSpecType(), - ZoneApplication.getNodeAdminClusterSpecId(), - ZoneApplication.getNodeAdminServiceType(), - ZoneApplication.getNodeAdminHealthPort()); - } - } - - /** - * This InfraApplication is bogus (containing host admin instead of jdisc container), but the tests are - * not supposed to explore this cluster. - */ - private static class RoutingPartOfZoneApplication extends InfraApplication { - public RoutingPartOfZoneApplication() { - super(ZoneApplication.getApplicationName().value(), - ZoneApplication.getRoutingNodeType(), - ZoneApplication.getRoutingClusterSpecType(), - ZoneApplication.getRoutingClusterSpecId(), - ZoneApplication.getRoutingServiceType(), - ZoneApplication.getRoutingHealthPort()); - } - } -} diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/health/HealthMonitorManagerTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/health/HealthMonitorManagerTest.java index 89bcda05074..008a271f905 100644 --- a/service-monitor/src/test/java/com/yahoo/vespa/service/health/HealthMonitorManagerTest.java +++ b/service-monitor/src/test/java/com/yahoo/vespa/service/health/HealthMonitorManagerTest.java @@ -3,15 +3,12 @@ package com.yahoo.vespa.service.health; import com.yahoo.config.model.api.ApplicationInfo; import com.yahoo.config.provision.HostName; -import com.yahoo.vespa.applicationmodel.ConfigId; import com.yahoo.vespa.applicationmodel.ServiceStatus; import com.yahoo.vespa.applicationmodel.ServiceStatusInfo; import com.yahoo.vespa.service.duper.ControllerHostApplication; import com.yahoo.vespa.service.duper.DuperModelManager; import com.yahoo.vespa.service.duper.InfraApplication; import com.yahoo.vespa.service.duper.ProxyHostApplication; -import com.yahoo.vespa.service.duper.TestZoneApplication; -import com.yahoo.vespa.service.duper.ZoneApplication; import com.yahoo.vespa.service.monitor.ConfigserverUtil; import org.junit.Before; import org.junit.Test; @@ -22,7 +19,6 @@ import java.util.stream.Stream; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -49,62 +45,6 @@ public class HealthMonitorManagerTest { } @Test - public void verifyZoneApplicationIsMonitored() { - ApplicationInfo zoneApplicationInfo = new TestZoneApplication.Builder() - .addNodeAdminCluster("h1", "h2") - .addRoutingCluster("r1") - .build() - .makeApplicationInfo(); - - verify(monitorFactory, times(0)).create(zoneApplicationInfo.getApplicationId()); - verify(monitor, times(0)).monitor(any()); - manager.applicationActivated(zoneApplicationInfo); - verify(monitorFactory).create(zoneApplicationInfo.getApplicationId()); - verify(monitor).monitor(any()); - - when(monitor.getStatus(any(), any(), any(), any())).thenReturn(new ServiceStatusInfo(ServiceStatus.DOWN)); - verifyNodeAdminGetStatus(0); - assertEquals(ServiceStatus.DOWN, getNodeAdminStatus()); - verifyNodeAdminGetStatus(1); - - verifyRoutingGetStatus(0); - assertEquals(ServiceStatus.NOT_CHECKED, getRoutingStatus()); - verifyRoutingGetStatus(0); - } - - private void verifyNodeAdminGetStatus(int invocations) { - verify(monitor, times(invocations)).getStatus( - eq(ZoneApplication.getApplicationId()), - eq(ZoneApplication.getNodeAdminClusterId()), - any(), - any()); - } - - private void verifyRoutingGetStatus(int invocations) { - verify(monitor, times(invocations)).getStatus( - eq(ZoneApplication.getApplicationId()), - eq(ZoneApplication.getRoutingClusterId()), - any(), - any()); - } - - private ServiceStatus getNodeAdminStatus() { - return manager.getStatus( - ZoneApplication.getApplicationId(), - ZoneApplication.getNodeAdminClusterId(), - ZoneApplication.getNodeAdminServiceType(), - new ConfigId("foo")).serviceStatus(); - } - - private ServiceStatus getRoutingStatus() { - return manager.getStatus( - ZoneApplication.getApplicationId(), - ZoneApplication.getRoutingClusterId(), - ZoneApplication.getRoutingServiceType(), - new ConfigId("bar")).serviceStatus(); - } - - @Test public void infrastructureApplication() { ProxyHostApplication proxyHostApplication = new ProxyHostApplication(); when(duperModel.isSupportedInfraApplication(proxyHostApplication.getApplicationId())).thenReturn(true); diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java index 3fce1cca899..a7f632a2084 100644 --- a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java +++ b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java @@ -10,8 +10,6 @@ import com.yahoo.vespa.applicationmodel.ConfigId; import com.yahoo.vespa.applicationmodel.ServiceStatus; import com.yahoo.vespa.applicationmodel.ServiceType; import com.yahoo.vespa.service.duper.ProxyHostApplication; -import com.yahoo.vespa.service.duper.TestZoneApplication; -import com.yahoo.vespa.service.duper.ZoneApplication; import com.yahoo.vespa.service.executor.Cancellable; import com.yahoo.vespa.service.executor.RunletExecutor; import com.yahoo.vespa.service.monitor.ServiceId; @@ -71,24 +69,6 @@ public class StateV1HealthModelTest { } @Test - public void testMonitoringTenantHostHealth() { - ApplicationInfo zoneApplicationInfo = new TestZoneApplication.Builder() - .addNodeAdminCluster("h1") - .addRoutingCluster("r1") - .build() - .makeApplicationInfo(); - - Map<ServiceId, HealthEndpoint> endpoints = model.extractHealthEndpoints(zoneApplicationInfo); - assertEquals(1, endpoints.size()); - HealthEndpoint endpoint = endpoints.values().iterator().next(); - assertEquals("http://h1:8080/state/v1/health", endpoint.description()); - ServiceId serviceId = endpoint.getServiceId(); - assertEquals(ZoneApplication.getApplicationId(), serviceId.getApplicationId()); - assertEquals(ZoneApplication.getNodeAdminClusterId(), serviceId.getClusterId()); - assertEquals(ZoneApplication.getNodeAdminServiceType(), serviceId.getServiceType()); - } - - @Test public void caseInsensitiveTagMatching() { PortInfo portInfo = mock(PortInfo.class); when(portInfo.getTags()).thenReturn(List.of("http", "STATE", "foo")); diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/manager/UnionMonitorManagerTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/manager/UnionMonitorManagerTest.java index 5cfe70fae5f..f6ef3977a56 100644 --- a/service-monitor/src/test/java/com/yahoo/vespa/service/manager/UnionMonitorManagerTest.java +++ b/service-monitor/src/test/java/com/yahoo/vespa/service/manager/UnionMonitorManagerTest.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.service.manager; import com.yahoo.vespa.applicationmodel.ConfigId; import com.yahoo.vespa.applicationmodel.ServiceStatus; import com.yahoo.vespa.applicationmodel.ServiceStatusInfo; -import com.yahoo.vespa.service.duper.ZoneApplication; +import com.yahoo.vespa.service.duper.ConfigServerHostApplication; import com.yahoo.vespa.service.health.HealthMonitorManager; import com.yahoo.vespa.service.slobrok.SlobrokMonitorManagerImpl; import org.junit.Test; @@ -18,6 +18,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class UnionMonitorManagerTest { + private final ConfigServerHostApplication application = new ConfigServerHostApplication(); private final SlobrokMonitorManagerImpl slobrokMonitorManager = mock(SlobrokMonitorManagerImpl.class); private final HealthMonitorManager healthMonitorManager = mock(HealthMonitorManager.class); @@ -38,9 +39,9 @@ public class UnionMonitorManagerTest { when(healthMonitorManager.getStatus(any(), any(), any(), any())).thenReturn(new ServiceStatusInfo(healthStatus)); when(slobrokMonitorManager.getStatus(any(), any(), any(), any())).thenReturn(new ServiceStatusInfo(slobrokStatus)); ServiceStatus status = manager.getStatus( - ZoneApplication.getApplicationId(), - ZoneApplication.getNodeAdminClusterId(), - ZoneApplication.getNodeAdminServiceType(), new ConfigId("config-id")).serviceStatus(); + application.getApplicationId(), + application.getClusterId(), + application.getServiceType(), new ConfigId("config-id")).serviceStatus(); assertSame(expectedStatus, status); } }
\ No newline at end of file diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ApplicationInstanceGeneratorTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ApplicationInstanceGeneratorTest.java index e182c9d6468..4810f29b28f 100644 --- a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ApplicationInstanceGeneratorTest.java +++ b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ApplicationInstanceGeneratorTest.java @@ -2,32 +2,19 @@ package com.yahoo.vespa.service.model; import com.yahoo.config.model.api.ApplicationInfo; -import com.yahoo.config.model.api.HostInfo; -import com.yahoo.config.model.api.Model; -import com.yahoo.config.model.api.ServiceInfo; -import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.HostName; -import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.Zone; import com.yahoo.vespa.applicationmodel.ApplicationInstance; -import com.yahoo.vespa.applicationmodel.ClusterId; -import com.yahoo.vespa.applicationmodel.ServiceCluster; import com.yahoo.vespa.applicationmodel.ServiceStatus; import com.yahoo.vespa.applicationmodel.ServiceStatusInfo; import com.yahoo.vespa.service.duper.ConfigServerApplication; -import com.yahoo.vespa.service.duper.ZoneApplication; import com.yahoo.vespa.service.monitor.ServiceStatusProvider; import org.junit.Test; import java.util.List; -import java.util.Map; -import java.util.Set; import java.util.stream.Collectors; -import java.util.stream.Stream; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; @@ -37,10 +24,7 @@ public class ApplicationInstanceGeneratorTest { private static final String configServer1 = "cfg1.yahoo.com"; private static final String configServer2 = "cfg2.yahoo.com"; private static final String configServer3 = "cfg3.yahoo.com"; - private static final List<String> configServerList = Stream.of( - configServer1, - configServer2, - configServer3).collect(Collectors.toList()); + private static final List<String> configServerList = List.of(configServer1, configServer2, configServer3); private static final ConfigServerApplication configServerApplication = new ConfigServerApplication(); private final ServiceStatusProvider statusProvider = mock(ServiceStatusProvider.class); @@ -84,63 +68,4 @@ public class ApplicationInstanceGeneratorTest { .hostName() .toString())); } - - @Test - public void verifyOnlyNodeAdminServiceIsLeft() { - when(statusProvider.getStatus(any(), any(), any(), any())).thenReturn(new ServiceStatusInfo(ServiceStatus.NOT_CHECKED)); - - String host1 = "host1"; - String host2 = "host2"; - - List<ServiceInfo> serviceInfos1 = List.of( - makeServiceInfo("metrics", "metricsproxy-container", host1) - ); - - List<ServiceInfo> serviceInfos2 = List.of( - makeServiceInfo("metrics", "metricsproxy-container", host2), - makeServiceInfo(ZoneApplication.getNodeAdminClusterId().s(), - ZoneApplication.getNodeAdminServiceType().s(), host2) - ); - - List<HostInfo> hostInfos = List.of( - new HostInfo(host1, serviceInfos1), - new HostInfo(host2, serviceInfos2) - ); - - Model model = mock(Model.class); - when(model.getHosts()).thenReturn(hostInfos); - - ApplicationInfo applicationInfo = new ApplicationInfo(ZoneApplication.getApplicationId(), 0, model); - - Zone zone = mock(Zone.class); - when(zone.environment()).thenReturn(Environment.prod); - when(zone.region()).thenReturn(RegionName.from("us-east-1")); - - ApplicationInstanceGenerator generator = new ApplicationInstanceGenerator(applicationInfo, zone); - ApplicationInstance applicationInstance = generator.makeApplicationInstance(statusProvider); - - Map<ClusterId, List<ServiceCluster>> serviceClusters = - applicationInstance.serviceClusters().stream().collect(Collectors.groupingBy(ServiceCluster::clusterId)); - assertEquals(2, serviceClusters.size()); - List<ServiceCluster> nodeAdminClusters = serviceClusters.get(ZoneApplication.getNodeAdminClusterId()); - assertNotNull(nodeAdminClusters); - assertEquals(1, nodeAdminClusters.size()); - ServiceCluster nodeAdminCluster = nodeAdminClusters.iterator().next(); - assertEquals(1, nodeAdminCluster.serviceInstances().size()); - assertEquals(host2, nodeAdminCluster.serviceInstances().iterator().next().hostName().s()); - - List<ServiceCluster> metricsClusters = serviceClusters.get(new ClusterId("metrics")); - assertNotNull(metricsClusters); - assertEquals(1, metricsClusters.size()); - ServiceCluster metricsCluster = metricsClusters.iterator().next(); - - // The metrics service on the node admin host is ignored - assertEquals(1, metricsCluster.serviceInstances().size()); - assertEquals(host1, metricsCluster.serviceInstances().iterator().next().hostName().s()); - } - - private ServiceInfo makeServiceInfo(String clusterId, String serviceType, String hostname) { - var properties = Map.of(ApplicationInstanceGenerator.CLUSTER_ID_PROPERTY_NAME, clusterId); - return new ServiceInfo("servicename", serviceType, List.of(), properties, "configid", hostname); - } }
\ No newline at end of file |