From 525faf78e4b3bfbdb3aabde40e18f62132652a38 Mon Sep 17 00:00:00 2001 From: HÃ¥kon Hallingstad Date: Fri, 8 Jun 2018 10:04:01 +0200 Subject: Single-tenancy has config server as part of application model --- .../yahoo/vespa/service/monitor/internal/DuperModel.java | 6 +++++- .../application/ApplicationInstanceGeneratorTest.java | 1 + .../vespa/service/monitor/internal/ConfigserverUtil.java | 12 ++++++++++-- .../vespa/service/monitor/internal/DuperModelTest.java | 15 ++++++++++++++- .../service/monitor/internal/ModelGeneratorTest.java | 3 +-- .../monitor/internal/health/HealthMonitorManagerTest.java | 6 +++--- 6 files changed, 34 insertions(+), 9 deletions(-) diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/DuperModel.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/DuperModel.java index d3c6f92312c..80e0bfd2710 100644 --- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/DuperModel.java +++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/internal/DuperModel.java @@ -21,7 +21,11 @@ public class DuperModel { private final List staticApplicationInfos = new ArrayList<>(); public DuperModel(ConfigserverConfig configServerConfig) { - staticApplicationInfos.add(CONFIG_SERVER_APPLICATION.makeApplicationInfo(configServerConfig)); + // Single-tenant applications have the config server as part of the application model. + // TODO: Add health monitoring for config server when part of application model. + if (configServerConfig.multitenant()) { + staticApplicationInfos.add(CONFIG_SERVER_APPLICATION.makeApplicationInfo(configServerConfig)); + } } /** For testing. */ diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/application/ApplicationInstanceGeneratorTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/application/ApplicationInstanceGeneratorTest.java index e1d9b728bf8..899cc59bb34 100644 --- a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/application/ApplicationInstanceGeneratorTest.java +++ b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/application/ApplicationInstanceGeneratorTest.java @@ -36,6 +36,7 @@ public class ApplicationInstanceGeneratorTest { public void toApplicationInstance() { when(statusProvider.getStatus(any(), any(), any(), any())).thenReturn(ServiceStatus.NOT_CHECKED); ConfigserverConfig config = ConfigserverUtil.create( + true, true, configServer1, configServer2, diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ConfigserverUtil.java b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ConfigserverUtil.java index 68a55d41b19..85df02949a6 100644 --- a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ConfigserverUtil.java +++ b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ConfigserverUtil.java @@ -12,19 +12,26 @@ public class ConfigserverUtil { /** Create a ConfigserverConfig with the given settings. */ public static ConfigserverConfig create( boolean nodeAdminInContainer, + boolean multitenant, String configServerHostname1, String configServerHostname2, String configServerHostname3) { return new ConfigserverConfig( new ConfigserverConfig.Builder() .nodeAdminInContainer(nodeAdminInContainer) + .multitenant(multitenant) .zookeeperserver(new ConfigserverConfig.Zookeeperserver.Builder().hostname(configServerHostname1).port(1)) .zookeeperserver(new ConfigserverConfig.Zookeeperserver.Builder().hostname(configServerHostname2).port(2)) .zookeeperserver(new ConfigserverConfig.Zookeeperserver.Builder().hostname(configServerHostname3).port(3))); } - public static ConfigserverConfig createExampleConfigserverConfig(boolean nodeAdminInContainer) { - return create(nodeAdminInContainer, "cfg1", "cfg2", "cfg3"); + public static ConfigserverConfig createExampleConfigserverConfig() { + return create(true, true, "cfg1", "cfg2", "cfg3"); + } + + public static ConfigserverConfig createExampleConfigserverConfig(boolean nodeAdminInContainer, + boolean multitenant) { + return create(nodeAdminInContainer, multitenant, "cfg1", "cfg2", "cfg3"); } public static ApplicationInfo makeConfigServerApplicationInfo( @@ -32,6 +39,7 @@ public class ConfigserverUtil { String configServerHostname2, String configServerHostname3) { return ConfigServerApplication.CONFIG_SERVER_APPLICATION.makeApplicationInfo(create( + true, true, configServerHostname1, configServerHostname2, diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/DuperModelTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/DuperModelTest.java index 0a68b4b0ff7..2385cca8f25 100644 --- a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/DuperModelTest.java +++ b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/DuperModelTest.java @@ -27,7 +27,7 @@ public class DuperModelTest { @Test public void toApplicationInstance() { when(statusProvider.getStatus(any(), any(), any(), any())).thenReturn(ServiceStatus.NOT_CHECKED); - ConfigserverConfig config = ConfigserverUtil.createExampleConfigserverConfig(true); + ConfigserverConfig config = ConfigserverUtil.createExampleConfigserverConfig(); DuperModel duperModel = new DuperModel(config); SuperModel superModel = mock(SuperModel.class); ApplicationInfo superModelApplicationInfo = mock(ApplicationInfo.class); @@ -37,4 +37,17 @@ public class DuperModelTest { assertEquals(ConfigServerApplication.CONFIG_SERVER_APPLICATION.getApplicationId(), applicationInfos.get(0).getApplicationId()); assertSame(superModelApplicationInfo, applicationInfos.get(1)); } + + @Test + public void toApplicationInstanceInSingleTenantMode() { + when(statusProvider.getStatus(any(), any(), any(), any())).thenReturn(ServiceStatus.NOT_CHECKED); + ConfigserverConfig config = ConfigserverUtil.createExampleConfigserverConfig(); + DuperModel duperModel = new DuperModel(config); + SuperModel superModel = mock(SuperModel.class); + ApplicationInfo superModelApplicationInfo = mock(ApplicationInfo.class); + when(superModel.getAllApplicationInfos()).thenReturn(Collections.singletonList(superModelApplicationInfo)); + List applicationInfos = duperModel.getApplicationInfos(superModel); + assertEquals(1, applicationInfos.size()); + assertSame(superModelApplicationInfo, applicationInfos.get(0)); + } } diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ModelGeneratorTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ModelGeneratorTest.java index 07cfa124434..5a57451a298 100644 --- a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ModelGeneratorTest.java +++ b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/ModelGeneratorTest.java @@ -35,8 +35,7 @@ public class ModelGeneratorTest { public void toApplicationModel() throws Exception { SuperModel superModel = ExampleModel.createExampleSuperModelWithOneRpcPort(HOSTNAME, PORT); - ConfigserverConfig config = ConfigserverUtil.create( - true, "cfg1", "cfg2", "cfg3"); + ConfigserverConfig config = ConfigserverUtil.createExampleConfigserverConfig(); DuperModel duperModel = new DuperModel(config); ModelGenerator modelGenerator = new ModelGenerator(); diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/health/HealthMonitorManagerTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/health/HealthMonitorManagerTest.java index 97963393268..b9d25406f9b 100644 --- a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/health/HealthMonitorManagerTest.java +++ b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/internal/health/HealthMonitorManagerTest.java @@ -16,7 +16,7 @@ import static org.junit.Assert.assertEquals; public class HealthMonitorManagerTest { @Test public void addRemove() { - ConfigserverConfig config = ConfigserverUtil.createExampleConfigserverConfig(true); + ConfigserverConfig config = ConfigserverUtil.createExampleConfigserverConfig(); HealthMonitorManager manager = new HealthMonitorManager(config); ApplicationInfo applicationInfo = ConfigserverUtil.makeExampleConfigServer(); manager.applicationActivated(applicationInfo); @@ -25,7 +25,7 @@ public class HealthMonitorManagerTest { @Test public void withNodeAdmin() { - ConfigserverConfig config = ConfigserverUtil.createExampleConfigserverConfig(true); + ConfigserverConfig config = ConfigserverUtil.createExampleConfigserverConfig(); HealthMonitorManager manager = new HealthMonitorManager(config); ServiceStatus status = manager.getStatus( ZoneApplication.ZONE_APPLICATION_ID, @@ -37,7 +37,7 @@ public class HealthMonitorManagerTest { @Test public void withHostAdmin() { - ConfigserverConfig config = ConfigserverUtil.createExampleConfigserverConfig(false); + ConfigserverConfig config = ConfigserverUtil.createExampleConfigserverConfig(false, true); HealthMonitorManager manager = new HealthMonitorManager(config); ServiceStatus status = manager.getStatus( ZoneApplication.ZONE_APPLICATION_ID, -- cgit v1.2.3