//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.resources;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map;
import org.apache.uima.UIMAException;
import org.apache.uima.resource.Parameter;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.impl.CustomResourceSpecifier_impl;
import org.apache.uima.resource.impl.Parameter_impl;
import org.elasticsearch.action.admin.cluster.stats.ClusterStatsRequest;
import org.elasticsearch.action.admin.cluster.stats.ClusterStatsResponse;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.node.Node;
import org.elasticsearch.node.NodeBuilder;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import com.google.common.collect.Maps;
public class SharedElasticsearchResourceTest {
private static Node node;
@BeforeClass
public static void setupClass() throws UIMAException{
Path tmpDir;
try{
tmpDir = Files.createTempDirectory("elasticsearch");
}catch(IOException ioe){
throw new ResourceInitializationException(ioe);
}
Settings settings = Settings.builder()
.put("path.home", tmpDir.toString())
.build();
node = NodeBuilder.nodeBuilder()
.settings(settings)
.data(false)
.local(true)
.client(true)
.node();
}
@AfterClass
public static void destroyClass(){
if (node != null) {
node.close();
}
}
@Test
public void testViaNode() throws ResourceInitializationException {
test("baleen-testing", 9200);
}
private void test(String clusterName, int port) throws ResourceInitializationException {
SharedElasticsearchResource es = new SharedElasticsearchResource();
CustomResourceSpecifier_impl esSpecifier = new CustomResourceSpecifier_impl();
esSpecifier.setParameters(new Parameter[] { new Parameter_impl("elasticsearch.cluster", clusterName),
new Parameter_impl("elasticsearch.port", Integer.toString(port)) });
Map<String, Object> config = Maps.newHashMap();
es.initialize(esSpecifier, config);
assertNotNull(es.getClient());
// Do something simple to check we get a response we can check
ClusterStatsResponse actionGet = es.getClient().admin().cluster().clusterStats(new ClusterStatsRequest())
.actionGet();
assertEquals(clusterName, actionGet.getClusterNameAsString());
es.destroy();
}
}