@Override public Boolean call() throws Exception { return isProcessRunning(baseDir) && isInstanceRunning(clusterName, client); } }
@Override public Boolean call() throws Exception { return isClusterRunning(clusterName, nodesCount, client); } }
@Override public void execute(ClusterConfiguration config) { // the instances have already started; // waiting just 10 seconds for them to form the cluster int timeout = 10; ElasticsearchClient client = new ElasticsearchClient.Builder() .withInstanceConfiguration(config.getInstanceConfigurationList().get(0)) .withHostname("localhost") .build(); Monitor monitor = new Monitor(client, config.getLog()); monitor.waitToStartCluster( config.getClusterName(), config.getInstanceConfigurationList().size(), timeout); } }
/** * Check whether the cluster with the given name exists in the ES running on the given port. * @param clusterName the ES cluster name * @param httpPort the HTTP port to connect to ES * @return true if the instance is running, false otherwise */ public static boolean isInstanceRunning(String clusterName, int httpPort) { Log log = Mockito.mock(Log.class); ElasticsearchClient client = new ElasticsearchClient.Builder() .withLog(log) .withHostname("localhost") .withPort(httpPort) .withSocketTimeout(5000) .build(); return isInstanceRunning(clusterName, client); }
@Override public void execute(InstanceConfiguration config) { int timeout = config.getClusterConfiguration().getTimeout(); ElasticsearchClient client = new ElasticsearchClient.Builder() .withInstanceConfiguration(config) .withHostname("localhost") .build(); Monitor monitor = new Monitor(client, config.getClusterConfiguration().getLog()); monitor.waitToStartInstance( config.getBaseDir(), config.getClusterConfiguration().getClusterName(), timeout); } }
/** * Verify that the ES instance in the Elasticsearch base directory is not running * * @param httpPort * @throws IllegalStateException */ public void verifyInstanceNotRunning(String clusterName, int httpPort) throws IllegalStateException { String path = esBaseDir.getAbsolutePath(); if (Monitor.isProcessRunning(path)) { throw new IllegalStateException(String.format( "The ES process in %s appears to be running", path)); } if (Monitor.isInstanceRunning(clusterName, httpPort)) { throw new IllegalStateException(String.format( "ES responded with valid response to GET / request on port %d", httpPort)); } }
/** * Verify that the cluster name and the number of nodes in the cluster, * as reported by the ES node, is as expected. * @param clusterName the ES cluster name * @param instanceCount the number of ES nodes in the cluster * @param httpPort the HTTP port to connect to ES * @return true if the cluster is running, false otherwise */ public static boolean isClusterRunning(String clusterName, int instanceCount, int httpPort) { Log log = Mockito.mock(Log.class); ElasticsearchClient client = new ElasticsearchClient.Builder() .withLog(log) .withHostname("localhost") .withPort(httpPort) .withSocketTimeout(5000) .build(); return isClusterRunning(clusterName, instanceCount, client); } }
/** * Verify that the ES instance in the Elasticsearch base directory is running * * @param httpPort * @param clusterName * @throws IllegalStateException */ public void verifyInstanceRunning(String clusterName, int httpPort) throws IllegalStateException { String path = esBaseDir.getAbsolutePath(); if (Monitor.isProcessRunning(path) == false) { throw new IllegalStateException(String.format( "The ES process in %s is not running", path)); } if (Monitor.isInstanceRunning(clusterName, httpPort) == false) { throw new IllegalStateException(String.format( "ES did not respond as expected to GET / request on port %d", httpPort)); } }