private static String formatHealthCheck(final HealthCheck healthCheck) { if (healthCheck == null) { return ""; } String str = String.format("type: %s", String.valueOf(healthCheck.getType())); if (healthCheck instanceof HttpHealthCheck) { final HttpHealthCheck httpHealthCheck = (HttpHealthCheck) healthCheck; str += String.format(", port: %s, path: %s", httpHealthCheck.getPort(), httpHealthCheck.getPath()); } else if (healthCheck instanceof TcpHealthCheck) { final TcpHealthCheck tcpHealthCheck = (TcpHealthCheck) healthCheck; str += String.format(", port: %s", tcpHealthCheck.getPort()); } else if (healthCheck instanceof ExecHealthCheck) { final ExecHealthCheck execHealthCheck = (ExecHealthCheck) healthCheck; str += String.format(", command: %s", Joiner.on(" ").join(execHealthCheck.getCommand())); } return str; }
public HttpHealthCheck build() { if (isNullOrEmpty(path)) { throw new IllegalArgumentException("You must specify a URL path for an HTTP health check."); } if (!path.startsWith("/")) { throw new IllegalArgumentException("The path for an HTTP health check must begin with '/'."); } if (isNullOrEmpty(port)) { throw new IllegalArgumentException("You must specify a port for an HTTP health check."); } return new HttpHealthCheck(this); } }
public static HttpHealthCheck.Builder newHttpHealthCheck() { return HttpHealthCheck.newBuilder(); }
builder.setHealthCheck(HttpHealthCheck.of(parts[0], parts[1])); } else if (!isNullOrEmpty(tcpHealthCheck)) { builder.setHealthCheck(TcpHealthCheck.of(tcpHealthCheck));
final String port; if (healthCheck instanceof HttpHealthCheck) { port = ((HttpHealthCheck) healthCheck).getPort(); } else { port = ((TcpHealthCheck) healthCheck).getPort();
@Test public void testHttp() throws Exception { startDefaultMaster(); final HeliosClient client = defaultClient(); startDefaultAgent(testHost(), "--service-registry=" + registryAddress); awaitHostStatus(client, testHost(), UP, LONG_WAIT_SECONDS, SECONDS); final HealthCheck healthCheck = HttpHealthCheck.of("http", "/"); // start a container that listens on a poke port, and once poked runs a web server final Job job = Job.newBuilder() .setName(testJobName) .setVersion(testJobVersion) .setImage(NGINX) .setCommand(asList("sh", "-c", "nc -l -p 4711 && nginx -g 'daemon off;'")) .addPort("poke", PortMapping.of(4711)) .addPort("http", PortMapping.of(80)) .addRegistration(ServiceEndpoint.of("foo_service", "foo_proto"), ServicePorts.of("http")) .setHealthCheck(healthCheck) .build(); assertContainerRegistersAfterPoke(client, job); }
public TemporaryJobBuilder httpHealthCheck(final String port, final String path) { this.builder.setHealthCheck(HttpHealthCheck.of(port, path)); return this; }
public static HttpHealthCheck of(final String port, final String path) { return newBuilder() .setPort(port) .setPath(path) .build(); }
/** * Get endpoint health check for a given port. * * @param portName The port name * * @return An EndpointHealthCheck or null if no check exists */ private ServiceRegistration.EndpointHealthCheck endpointHealthCheck(String portName) { if (healthCheck() instanceof HttpHealthCheck) { final HttpHealthCheck httpHealthCheck = (HttpHealthCheck) healthCheck(); if (portName.equals(httpHealthCheck.getPort())) { return ServiceRegistration.EndpointHealthCheck.newHttpCheck(httpHealthCheck.getPath()); } } else if (healthCheck() instanceof TcpHealthCheck) { if (portName.equals(((TcpHealthCheck) healthCheck()).getPort())) { return ServiceRegistration.EndpointHealthCheck.newTcpCheck(); } } return null; }
builder.setHealthCheck(HttpHealthCheck.of(parts[0], parts[1])); } else if (!isNullOrEmpty(tcpHealthCheck)) { builder.setHealthCheck(TcpHealthCheck.of(tcpHealthCheck));
@Override public boolean check(final String containerId) throws InterruptedException, DockerException { final Integer port = taskConfig.ports().get(healthCheck.getPort()).getExternalPort(); try { final URL url = new URL("http", dockerHost.address(), port, healthCheck.getPath()); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(CONNECT_TIMEOUT_MILLIS); conn.setReadTimeout((int) READ_TIMEOUT_MILLIS); final int response = conn.getResponseCode(); return response >= 200 && response <= 399; } catch (Exception e) { return false; } } }
private static String formatHealthCheck(final HealthCheck healthCheck) { if (healthCheck == null) { return ""; } String s = String.format("type: %s", String.valueOf(healthCheck.getType())); if (healthCheck instanceof HttpHealthCheck) { final HttpHealthCheck httpHealthCheck = (HttpHealthCheck) healthCheck; s += String.format(", port: %s, path: %s", httpHealthCheck.getPort(), httpHealthCheck.getPath()); } else if (healthCheck instanceof TcpHealthCheck) { final TcpHealthCheck tcpHealthCheck = (TcpHealthCheck) healthCheck; s += String.format(", port: %s", tcpHealthCheck.getPort()); } else if (healthCheck instanceof ExecHealthCheck) { final ExecHealthCheck execHealthCheck = (ExecHealthCheck) healthCheck; s += String.format(", command: %s", Joiner.on(" ").join(execHealthCheck.getCommand())); } return s; }
/** * Get endpoint health check for a given port * @param portName The port name * @return An EndpointHealthCheck or null if no check exists */ private ServiceRegistration.EndpointHealthCheck endpointHealthCheck(String portName) { if (healthCheck() instanceof HttpHealthCheck) { HttpHealthCheck httpHealthCheck = (HttpHealthCheck) healthCheck(); if (portName.equals(httpHealthCheck.getPort())) { return ServiceRegistration.EndpointHealthCheck.newHttpCheck(httpHealthCheck.getPath()); } } else if (healthCheck() instanceof TcpHealthCheck) { if (portName.equals(((TcpHealthCheck) healthCheck()).getPort())) { return ServiceRegistration.EndpointHealthCheck.newTcpCheck(); } } return null; }