001package io.ebean.docker.commands;
002
003import java.io.BufferedReader;
004import java.io.IOException;
005import java.io.InputStreamReader;
006import java.net.URL;
007import java.net.URLConnection;
008import java.util.ArrayList;
009import java.util.List;
010import java.util.Properties;
011
012public class ElasticContainer extends BaseContainer {
013
014  /**
015   * Create the ElasticContainer with configuration via properties.
016   */
017  public static ElasticContainer create(String elasticVersion, Properties properties) {
018    return new ElasticContainer(new ElasticConfig(elasticVersion, properties));
019  }
020
021  public ElasticContainer(ElasticConfig config) {
022    super(config);
023  }
024
025  @Override
026  boolean checkConnectivity() {
027
028    try {
029      URL url = new URL("http://localhost:" + config.getPort() + "/");
030      URLConnection yc = url.openConnection();
031
032      StringBuilder sb = new StringBuilder(300);
033      try (BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()))) {
034        String inputLine;
035        while ((inputLine = in.readLine()) != null)
036          sb.append(inputLine).append("\n");
037      }
038      return sb.toString().contains("docker-cluster");
039
040    } catch (IOException e) {
041      return false;
042    }
043  }
044
045  protected ProcessBuilder runProcess() {
046
047    List<String> args = dockerRun();
048    args.add("-e");
049    args.add("http.host=0.0.0.0");
050    args.add("-e");
051    args.add("transport.host=127.0.0.1");
052    args.add("-e");
053    args.add("xpack.security.enabled=false");
054
055    args.add(config.image);
056    return createProcessBuilder(args);
057  }
058
059}