diff options
author | Harald Musum <musum@yahoo-inc.com> | 2016-11-08 14:49:39 +0100 |
---|---|---|
committer | Harald Musum <musum@yahoo-inc.com> | 2016-11-08 14:49:39 +0100 |
commit | 695abcec92498e52d162bcb61d9e73260c341dbf (patch) | |
tree | 596d06a9eaf97249f6a9dcd868a8afe88224b417 /node-admin | |
parent | 52d90e4b6d3c4a06b188df16d9b44e4460a7e422 (diff) |
Minor refactorings
* Wait longer on config server coming up
* Minor refactoring of deployment
* Wait until container is up and responds in test
Diffstat (limited to 'node-admin')
-rw-r--r-- | node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/LocalZoneUtils.java | 29 | ||||
-rw-r--r-- | node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/RunVespaLocal.java | 22 |
2 files changed, 38 insertions, 13 deletions
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/LocalZoneUtils.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/LocalZoneUtils.java index 7f2292f3b84..8655806c3d7 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/LocalZoneUtils.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/LocalZoneUtils.java @@ -42,6 +42,7 @@ public class LocalZoneUtils { Collections.singleton(CONFIG_SERVER_HOSTNAME)); private static final String APP_HOSTNAME_PREFIX = "cnode-"; private static final String TENANT_NAME = "localtenant"; + private static final String APPLICATION_NAME = "default"; public static boolean startConfigServerIfNeeded(Docker docker, Environment environment) throws UnknownHostException { Optional<Container> container = docker.getContainer(CONFIG_SERVER_HOSTNAME); @@ -65,8 +66,11 @@ public class LocalZoneUtils { docker.startContainer(CONFIG_SERVER_CONTAINER_NAME); - for (int i = 0; i < 500; i++) { + int maxRetries = 2000; + for (int i = 0; i < maxRetries; i++) { try { + if (i % 100 == 0) System.out.println("Check if config server is up, try " + i + " of " + maxRetries); + URL url = new URL("http://" + CONFIG_SERVER_HOSTNAME + ":" + CONFIG_SERVER_WEB_SERVICE_PORT + "/state/v1/health"); Thread.sleep(100); @@ -132,37 +136,44 @@ public class LocalZoneUtils { } public static void deployApp(Docker docker, Path pathToApp) { + deployApp(docker, pathToApp, TENANT_NAME, APPLICATION_NAME); + } + + public static void deployApp(Docker docker, Path pathToApp, String tenantName, String applicationName) { Path pathToAppOnConfigServer = Paths.get("/tmp"); docker.copyArchiveToContainer(pathToApp.toAbsolutePath().toString(), CONFIG_SERVER_CONTAINER_NAME, pathToAppOnConfigServer.toString()); try { // Add tenant, ignore exception if tenant already exists - requestExecutor.put("/application/v2/tenant/" + TENANT_NAME, CONFIG_SERVER_WEB_SERVICE_PORT, Optional.empty(), Map.class); + requestExecutor.put("/application/v2/tenant/" + tenantName, CONFIG_SERVER_WEB_SERVICE_PORT, Optional.empty(), Map.class); } catch (RuntimeException e) { - if (! e.getMessage().contains("There already exists a tenant '" + TENANT_NAME)) { + if (! e.getMessage().contains("There already exists a tenant '" + tenantName)) { throw e; } } - + System.out.println("prepare " + applicationName); final String deployPath = Defaults.getDefaults().underVespaHome("bin/deploy"); ProcessResult copyProcess = docker.executeInContainer(CONFIG_SERVER_CONTAINER_NAME, deployPath, "-e", - TENANT_NAME, "prepare", pathToAppOnConfigServer.resolve(pathToApp.getFileName()).toString()); + tenantName, "-a", applicationName, "prepare", pathToAppOnConfigServer.resolve(pathToApp.getFileName()).toString()); if (! copyProcess.isSuccess()) { throw new RuntimeException("Could not prepare " + pathToApp + " on " + CONFIG_SERVER_CONTAINER_NAME.asString() + "\n" + copyProcess.getOutput() + "\n" + copyProcess.getErrors()); } + System.out.println("activate " + applicationName); ProcessResult execProcess = docker.executeInContainer(CONFIG_SERVER_CONTAINER_NAME, deployPath, "-e", - TENANT_NAME, "activate"); + tenantName, "-a", applicationName, "activate"); if (! execProcess.isSuccess()) { throw new RuntimeException("Could not activate application\n" + copyProcess.getOutput() + "\n" + copyProcess.getErrors()); } } - public static void undeployApp() { - final String appName = "default"; + public static void deleteApplication() { + deleteApplication(TENANT_NAME, APPLICATION_NAME); + } - requestExecutor.delete("/application/v2/tenant/" + TENANT_NAME + "/application/" + appName, + public static void deleteApplication(String tenantName, String appName) { + requestExecutor.delete("/application/v2/tenant/" + tenantName + "/application/" + appName, CONFIG_SERVER_WEB_SERVICE_PORT, Map.class); } } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/RunVespaLocal.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/RunVespaLocal.java index 1e93db42489..a34dc626ecf 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/RunVespaLocal.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/RunVespaLocal.java @@ -20,7 +20,10 @@ import org.junit.Before; import org.junit.Test; import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; import java.nio.file.Paths; +import java.time.Instant; import java.util.Collections; import java.util.Set; import java.util.concurrent.ExecutionException; @@ -56,7 +59,7 @@ import static org.mockito.Mockito.when; */ public class RunVespaLocal { private static final DockerImage VESPA_BASE_IMAGE = new DockerImage( - System.getenv("VESPA_DOCKER_REGISTRY") + "/vespa/ci:6.38.151"); + System.getenv("VESPA_DOCKER_REGISTRY") + "/vespa/ci:6.43.9"); private static final Environment environment = new Environment( Collections.singleton(LocalZoneUtils.CONFIG_SERVER_HOSTNAME), "prod", "vespa-local", HostName.getLocalhost(), new InetAddressResolver()); @@ -110,9 +113,20 @@ public class RunVespaLocal { environment).getNodeAdminStateUpdater(); logger.info("Ready"); - while (true) { - Thread.sleep(1000); - } + // TODO: Automatically find correct node to send request to + URL url = new URL("http://cnode-1:" + System.getenv("VESPA_WEB_SERVICE_PORT") + "/"); + Instant start = Instant.now(); + System.out.println(start); + boolean okResponse = false; + do { + try { + HttpURLConnection http = (HttpURLConnection) url.openConnection(); + if (http != null && http.getResponseCode() == 200) okResponse = true; + } catch (IOException e) { + Thread.sleep(100); + } + } while (! okResponse || Instant.now().isBefore(start.plusSeconds(120))); + assertTrue(okResponse); // LocalZoneUtils.undeployApp(); // nodeAdminStateUpdater.deconstruct(); |