aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorHarald Musum <musum@yahoo-inc.com>2016-11-08 14:49:39 +0100
committerHarald Musum <musum@yahoo-inc.com>2016-11-08 14:49:39 +0100
commit695abcec92498e52d162bcb61d9e73260c341dbf (patch)
tree596d06a9eaf97249f6a9dcd868a8afe88224b417 /node-admin
parent52d90e4b6d3c4a06b188df16d9b44e4460a7e422 (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.java29
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/RunVespaLocal.java22
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();