summaryrefslogtreecommitdiffstats
path: root/service-monitor/src/test/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'service-monitor/src/test/java/com')
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/health/HealthMonitorManagerTest.java73
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImplTest.java7
2 files changed, 78 insertions, 2 deletions
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 5195bf218b6..f420f5c1284 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
@@ -2,33 +2,51 @@
package com.yahoo.vespa.service.health;
import com.yahoo.config.model.api.ApplicationInfo;
+import com.yahoo.config.provision.HostName;
import com.yahoo.vespa.applicationmodel.ClusterId;
import com.yahoo.vespa.applicationmodel.ConfigId;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
import com.yahoo.vespa.applicationmodel.ServiceType;
+import com.yahoo.vespa.flags.FeatureFlag;
import com.yahoo.vespa.service.duper.ConfigServerApplication;
+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.ZoneApplication;
import com.yahoo.vespa.service.monitor.ConfigserverUtil;
import org.junit.Before;
import org.junit.Test;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class HealthMonitorManagerTest {
private final ConfigServerApplication configServerApplication = new ConfigServerApplication();
private final DuperModelManager duperModel = mock(DuperModelManager.class);
- private final HealthMonitorManager manager = new HealthMonitorManager(duperModel);
+ private final FeatureFlag monitorInfra = mock(FeatureFlag.class);
+ private final ApplicationHealthMonitor monitor = mock(ApplicationHealthMonitor.class);
+ private final ApplicationHealthMonitorFactory monitorFactory = mock(ApplicationHealthMonitorFactory.class);
+ private final HealthMonitorManager manager = new HealthMonitorManager(duperModel, monitorInfra, monitorFactory);
@Before
public void setUp() {
when(duperModel.getConfigServerApplication()).thenReturn(configServerApplication);
+ when(monitorFactory.create(any())).thenReturn(monitor);
}
@Test
public void addRemove() {
+ when(monitorInfra.value()).thenReturn(false);
ApplicationInfo applicationInfo = ConfigserverUtil.makeExampleConfigServer();
manager.applicationActivated(applicationInfo);
manager.applicationRemoved(applicationInfo.getApplicationId());
@@ -36,6 +54,7 @@ public class HealthMonitorManagerTest {
@Test
public void withHostAdmin() {
+ when(monitorInfra.value()).thenReturn(false);
ServiceStatus status = manager.getStatus(
ZoneApplication.ZONE_APPLICATION_ID,
ClusterId.NODE_ADMIN,
@@ -43,4 +62,56 @@ public class HealthMonitorManagerTest {
new ConfigId("config-id-1"));
assertEquals(ServiceStatus.UP, status);
}
+
+ @Test
+ public void infrastructureApplication() {
+ when(monitorInfra.value()).thenReturn(false);
+
+ ProxyHostApplication proxyHostApplication = new ProxyHostApplication();
+ when(duperModel.isSupportedInfraApplication(proxyHostApplication.getApplicationId())).thenReturn(true);
+ List<HostName> hostnames = Stream.of("proxyhost1", "proxyhost2").map(HostName::from).collect(Collectors.toList());
+ ApplicationInfo proxyHostApplicationInfo = proxyHostApplication.makeApplicationInfo(hostnames);
+
+ manager.applicationActivated(proxyHostApplicationInfo);
+ verify(monitorFactory, never()).create(proxyHostApplicationInfo);
+
+ assertStatus(ServiceStatus.NOT_CHECKED, 0, proxyHostApplication, "proxyhost1");
+ }
+
+ @Test
+ public void infrastructureApplicationWithMonitoring() {
+ when(monitorInfra.value()).thenReturn(true);
+
+ ProxyHostApplication proxyHostApplication = new ProxyHostApplication();
+ when(duperModel.isSupportedInfraApplication(proxyHostApplication.getApplicationId())).thenReturn(true);
+ List<HostName> hostnames = Stream.of("proxyhost1", "proxyhost2").map(HostName::from).collect(Collectors.toList());
+ ApplicationInfo proxyHostApplicationInfo = proxyHostApplication.makeApplicationInfo(hostnames);
+
+ manager.applicationActivated(proxyHostApplicationInfo);
+ verify(monitorFactory, times(1)).create(proxyHostApplicationInfo);
+
+ when(monitor.getStatus(any(), any(), any(), any())).thenReturn(ServiceStatus.UP);
+ assertStatus(ServiceStatus.UP, 1, proxyHostApplication, "proxyhost1");
+
+ ControllerHostApplication controllerHostApplication = new ControllerHostApplication();
+ when(duperModel.isSupportedInfraApplication(controllerHostApplication.getApplicationId())).thenReturn(true);
+ assertStatus(ServiceStatus.NOT_CHECKED, 0, controllerHostApplication, "controllerhost1");
+ }
+
+ private void assertStatus(ServiceStatus expected, int verifyTimes, InfraApplication infraApplication, String hostname) {
+ ServiceStatus actual = manager.getStatus(
+ infraApplication.getApplicationId(),
+ infraApplication.getClusterId(),
+ infraApplication.getServiceType(),
+ infraApplication.configIdFor(HostName.from(hostname)));
+
+ assertEquals(expected, actual);
+
+ verify(monitor, times(verifyTimes)).getStatus(
+ infraApplication.getApplicationId(),
+ infraApplication.getClusterId(),
+ infraApplication.getServiceType(),
+ infraApplication.configIdFor(HostName.from(hostname)));
+
+ }
} \ No newline at end of file
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImplTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImplTest.java
index c3ee1d078bf..bc6bff6fba8 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImplTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImplTest.java
@@ -7,6 +7,8 @@ import com.yahoo.vespa.applicationmodel.ClusterId;
import com.yahoo.vespa.applicationmodel.ConfigId;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
import com.yahoo.vespa.applicationmodel.ServiceType;
+import com.yahoo.vespa.service.duper.ConfigServerApplication;
+import com.yahoo.vespa.service.duper.DuperModelManager;
import org.junit.Before;
import org.junit.Test;
@@ -25,8 +27,10 @@ public class SlobrokMonitorManagerImplTest {
@SuppressWarnings("unchecked")
private final Supplier<SlobrokMonitor> slobrokMonitorFactory = mock(Supplier.class);
+ private final ConfigServerApplication configServerApplication = new ConfigServerApplication();
+ private final DuperModelManager duperModelManager = mock(DuperModelManager.class);
private final SlobrokMonitorManagerImpl slobrokMonitorManager =
- new SlobrokMonitorManagerImpl(slobrokMonitorFactory);
+ new SlobrokMonitorManagerImpl(slobrokMonitorFactory, duperModelManager);
private final SlobrokMonitor slobrokMonitor = mock(SlobrokMonitor.class);
private final ApplicationId applicationId = ApplicationId.from("tenant", "app", "instance");
private final ApplicationInfo application = mock(ApplicationInfo.class);
@@ -34,6 +38,7 @@ public class SlobrokMonitorManagerImplTest {
@Before
public void setup() {
+ when(duperModelManager.getConfigServerApplication()).thenReturn(configServerApplication);
when(slobrokMonitorFactory.get()).thenReturn(slobrokMonitor);
when(application.getApplicationId()).thenReturn(applicationId);
}