package org.xbib.elasticsearch.plugin.knapsack;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.common.logging.ESLogger;
import org.elasticsearch.common.logging.ESLoggerFactory;
import org.elasticsearch.index.query.QueryBuilders;
import org.junit.Test;
import org.xbib.elasticsearch.action.knapsack.exp.KnapsackExportRequestBuilder;
import org.xbib.elasticsearch.action.knapsack.exp.KnapsackExportResponse;
import org.xbib.elasticsearch.action.knapsack.imp.KnapsackImportRequestBuilder;
import org.xbib.elasticsearch.action.knapsack.imp.KnapsackImportResponse;
import org.xbib.elasticsearch.action.knapsack.state.KnapsackStateRequestBuilder;
import org.xbib.elasticsearch.action.knapsack.state.KnapsackStateResponse;
import org.xbib.elasticsearch.util.NodeTestUtils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.net.URI;
import java.nio.file.Path;
import java.nio.file.Paths;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class KnapsackImportTests extends NodeTestUtils {
private final static ESLogger logger = ESLoggerFactory.getLogger(KnapsackImportTests.class.getName());
@Test
public void testMinimalImport() throws Exception {
File exportFile = File.createTempFile("minimal-import-", ".bulk");
Path exportPath = Paths.get(URI.create("file:" + exportFile.getAbsolutePath()));
client("1").index(new IndexRequest().index("index1").type("test1").id("doc1")
.source("content", "Hello Jörg").refresh(true)).actionGet();
KnapsackExportRequestBuilder requestBuilder = new KnapsackExportRequestBuilder(client("1"))
.setArchivePath(exportPath)
.setOverwriteAllowed(true);
KnapsackExportResponse knapsackExportResponse = requestBuilder.execute().actionGet();
if (!knapsackExportResponse.isRunning()) {
logger.error(knapsackExportResponse.getReason());
}
assertTrue(knapsackExportResponse.isRunning());
KnapsackStateRequestBuilder knapsackStateRequestBuilder =
new KnapsackStateRequestBuilder(client("2"));
KnapsackStateResponse knapsackStateResponse = knapsackStateRequestBuilder.execute().actionGet();
knapsackStateResponse.isExportActive(exportPath);
Thread.sleep(2000L);
BufferedReader reader = new BufferedReader(new FileReader(exportFile));
assertEquals("{\"index\":{\"_index\":\"index1\",\"_type\":\"test1\",\"_id\":\"doc1\"}", reader.readLine());
assertEquals("{\"content\":\"Hello Jörg\"}", reader.readLine());
reader.close();
// delete index
client("1").admin().indices().prepareDelete("index1").execute().actionGet();
KnapsackImportRequestBuilder knapsackImportRequestBuilder = new KnapsackImportRequestBuilder(client("1"))
.setArchivePath(exportPath);
KnapsackImportResponse knapsackImportResponse = knapsackImportRequestBuilder.execute().actionGet();
if (!knapsackImportResponse.isRunning()) {
logger.error(knapsackImportResponse.getReason());
}
Thread.sleep(2000L);
// count
long count = client("1").prepareCount("index1").setQuery(QueryBuilders.matchAllQuery()).execute().actionGet().getCount();
logger.info("testMinimalImport count={}", count);
assertEquals(1L, count);
}
@Test
public void testEncodedBulkEntry() throws Exception {
File exportFile = File.createTempFile("test-encoded-", ".bulk");
Path exportPath = Paths.get(URI.create("file:" + exportFile.getAbsolutePath()));
client("1").index(new IndexRequest().index("index1").type("test1").id("https://www.google.de")
.source("content", "Hello Jörg").refresh(true)).actionGet();
KnapsackExportRequestBuilder requestBuilder = new KnapsackExportRequestBuilder(client("1"))
.setArchivePath(exportPath)
.setOverwriteAllowed(true);
KnapsackExportResponse knapsackExportResponse = requestBuilder.execute().actionGet();
if (!knapsackExportResponse.isRunning()) {
logger.error(knapsackExportResponse.getReason());
}
assertTrue(knapsackExportResponse.isRunning());
Thread.sleep(2000L);
KnapsackStateRequestBuilder knapsackStateRequestBuilder =
new KnapsackStateRequestBuilder(client("2"));
KnapsackStateResponse knapsackStateResponse = knapsackStateRequestBuilder.execute().actionGet();
assertFalse(knapsackStateResponse.isExportActive(exportPath));
BufferedReader reader = new BufferedReader(new FileReader(exportFile));
assertEquals("{\"index\":{\"_index\":\"index1\",\"_type\":\"test1\",\"_id\":\"https://www.google.de\"}", reader.readLine());
assertEquals("{\"content\":\"Hello Jörg\"}", reader.readLine());
reader.close();
// delete index
client("1").admin().indices().prepareDelete("index1").execute().actionGet();
KnapsackImportRequestBuilder knapsackImportRequestBuilder = new KnapsackImportRequestBuilder(client("1"))
.setArchivePath(exportPath);
KnapsackImportResponse knapsackImportResponse = knapsackImportRequestBuilder.execute().actionGet();
if (!knapsackImportResponse.isRunning()) {
logger.error(knapsackImportResponse.getReason());
}
Thread.sleep(2000L);
// count
long count = client("1").prepareCount("index1").setQuery(QueryBuilders.matchAllQuery()).execute().actionGet().getCount();
logger.info("testEncodedEntry count={}", count);
assertEquals(1L, count);
}
@Test
public void testEncodedTarEntry() throws Exception {
File exportFile = File.createTempFile("encoded-tar-", ".tar");
Path exportPath = Paths.get(URI.create("file:" + exportFile.getAbsolutePath()));
client("1").index(new IndexRequest().index("index1").type("test1").id("https://www.google.de")
.source("content", "Hello World").refresh(true)).actionGet();
KnapsackExportRequestBuilder requestBuilder = new KnapsackExportRequestBuilder(client("1"))
.setArchivePath(exportPath)
.setOverwriteAllowed(true);
KnapsackExportResponse knapsackExportResponse = requestBuilder.execute().actionGet();
if (!knapsackExportResponse.isRunning()) {
logger.error(knapsackExportResponse.getReason());
}
assertTrue(knapsackExportResponse.isRunning());
Thread.sleep(2000L);
KnapsackStateRequestBuilder knapsackStateRequestBuilder =
new KnapsackStateRequestBuilder(client("2"));
KnapsackStateResponse knapsackStateResponse = knapsackStateRequestBuilder.execute().actionGet();
assertFalse(knapsackStateResponse.isExportActive(exportPath));
Thread.sleep(2000L);
// delete index
client("1").admin().indices().prepareDelete("index1").execute().actionGet();
KnapsackImportRequestBuilder knapsackImportRequestBuilder = new KnapsackImportRequestBuilder(client("1"))
.setArchivePath(exportPath);
KnapsackImportResponse knapsackImportResponse = knapsackImportRequestBuilder.execute().actionGet();
if (!knapsackImportResponse.isRunning()) {
logger.error(knapsackImportResponse.getReason());
}
Thread.sleep(2000L);
// get content
GetResponse getResponse = client("1").prepareGet().setIndex("index1").setType("test1")
.setId("https://www.google.de").execute().actionGet();
assertTrue(getResponse.isExists());
}
@Test
public void testEncodedZipEntry() throws Exception {
File exportFile = File.createTempFile("encoded-zip-", ".zip");
Path exportPath = Paths.get(URI.create("file:" + exportFile.getAbsolutePath()));
client("1").index(new IndexRequest().index("index1").type("test1").id("https://www.google.de")
.source("content", "Hello World").refresh(true)).actionGet();
KnapsackExportRequestBuilder requestBuilder = new KnapsackExportRequestBuilder(client("1"))
.setArchivePath(exportPath)
.setOverwriteAllowed(true);
KnapsackExportResponse knapsackExportResponse = requestBuilder.execute().actionGet();
if (!knapsackExportResponse.isRunning()) {
logger.error(knapsackExportResponse.getReason());
}
assertTrue(knapsackExportResponse.isRunning());
KnapsackStateRequestBuilder knapsackStateRequestBuilder =
new KnapsackStateRequestBuilder(client("2"));
KnapsackStateResponse knapsackStateResponse = knapsackStateRequestBuilder.execute().actionGet();
knapsackStateResponse.isExportActive(exportPath);
Thread.sleep(2000L);
// delete index
client("1").admin().indices().prepareDelete("index1").execute().actionGet();
KnapsackImportRequestBuilder knapsackImportRequestBuilder = new KnapsackImportRequestBuilder(client("1"))
.setArchivePath(exportPath);
KnapsackImportResponse knapsackImportResponse = knapsackImportRequestBuilder.execute().actionGet();
if (!knapsackImportResponse.isRunning()) {
logger.error(knapsackImportResponse.getReason());
}
Thread.sleep(2000L);
// get content
GetResponse getResponse = client("1").prepareGet().setIndex("index1").setType("test1").setId("https://www.google.de").execute().actionGet();
assertTrue(getResponse.isExists());
}
}