summaryrefslogtreecommitdiffstats
path: root/service-monitor/src/test/java/com/yahoo
diff options
context:
space:
mode:
Diffstat (limited to 'service-monitor/src/test/java/com/yahoo')
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/duper/TestZoneApplication.java90
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/health/HealthMonitorManagerTest.java60
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java20
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/manager/UnionMonitorManagerTest.java9
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/model/ApplicationInstanceGeneratorTest.java77
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