package org.xbib.elasticsearch.plugin.knapsack.tar;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.common.logging.ESLogger;
import org.elasticsearch.common.logging.ESLoggerFactory;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
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.File;
import java.net.URI;
import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class KnapsackTarTests extends NodeTestUtils {
private final static ESLogger logger = ESLoggerFactory.getLogger(KnapsackTarTests.class.getName());
@Test
public void testTar() throws Exception {
File exportFile = File.createTempFile("knapsack-tar-", ".tar");
Path exportPath = Paths.get(URI.create("file:" + exportFile.getAbsolutePath()));
client("1").index(new IndexRequest().index("index1").type("test1").id("doc1").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().delete(new DeleteIndexRequest("index1")).actionGet();
KnapsackImportRequestBuilder knapsackImportRequestBuilder = new KnapsackImportRequestBuilder(client("1"))
.setArchivePath(exportPath);
KnapsackImportResponse knapsackImportResponse = knapsackImportRequestBuilder.execute().actionGet();
if (!knapsackImportResponse.isRunning()) {
logger.error(knapsackImportResponse.getReason());
}
assertTrue(knapsackImportResponse.isRunning());
Thread.sleep(2000L);
// count
long count = client("1").prepareCount("index1").setQuery(QueryBuilders.matchAllQuery()).execute().actionGet().getCount();
assertEquals(1L, count);
}
@Test
public void testTarGz() throws Exception {
File exportFile = File.createTempFile("knapsack-tar-", ".tar.gz");
Path exportPath = Paths.get(URI.create("file:" + exportFile.getAbsolutePath()));
client("1").index(new IndexRequest().index("index1").type("test1").id("doc1").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().delete(new DeleteIndexRequest("index1")).actionGet();
KnapsackImportRequestBuilder knapsackImportRequestBuilder = new KnapsackImportRequestBuilder(client("1"))
.setArchivePath(exportPath);
KnapsackImportResponse knapsackImportResponse = knapsackImportRequestBuilder.execute().actionGet();
if (!knapsackImportResponse.isRunning()) {
logger.error(knapsackImportResponse.getReason());
}
assertTrue(knapsackImportResponse.isRunning());
Thread.sleep(2000L);
// count
long count = client("1").prepareCount("index1").setQuery(QueryBuilders.matchAllQuery()).execute().actionGet().getCount();
assertEquals(1L, count);
}
@Test
public void testTarBz2() throws Exception {
File exportFile = File.createTempFile("knapsack-tar-", ".tar.bz2");
Path exportPath = Paths.get(URI.create("file:" + exportFile.getAbsolutePath()));
client("1").index(new IndexRequest().index("index1").type("test1").id("doc1").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().delete(new DeleteIndexRequest("index1")).actionGet();
KnapsackImportRequestBuilder knapsackImportRequestBuilder = new KnapsackImportRequestBuilder(client("1"))
.setArchivePath(exportPath);
KnapsackImportResponse knapsackImportResponse = knapsackImportRequestBuilder.execute().actionGet();
if (!knapsackImportResponse.isRunning()) {
logger.error(knapsackImportResponse.getReason());
}
assertTrue(knapsackImportResponse.isRunning());
Thread.sleep(2000L);
// count
long count = client("1").prepareCount("index1").setQuery(QueryBuilders.matchAllQuery()).execute().actionGet().getCount();
assertEquals(1L, count);
}
@Test
public void testTarXz() throws Exception {
File exportFile = File.createTempFile("knapsack-tar-", ".tar.xz");
Path exportPath = Paths.get(URI.create("file:" + exportFile.getAbsolutePath()));
client("1").index(new IndexRequest().index("index1").type("test1").id("doc1").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().delete(new DeleteIndexRequest("index1")).actionGet();
KnapsackImportRequestBuilder knapsackImportRequestBuilder = new KnapsackImportRequestBuilder(client("1"))
.setArchivePath(exportPath);
KnapsackImportResponse knapsackImportResponse = knapsackImportRequestBuilder.execute().actionGet();
if (!knapsackImportResponse.isRunning()) {
logger.error(knapsackImportResponse.getReason());
}
assertTrue(knapsackImportResponse.isRunning());
Thread.sleep(2000L);
// count
long count = client("1").prepareCount("index1").setQuery(QueryBuilders.matchAllQuery()).execute().actionGet().getCount();
assertEquals(1L, count);
}
/**
* This test checks if a tar created from Max OS X tar can be processed.
* @throws Exception
*/
public void testAlienTar() throws Exception {
// delete index
try {
client("1").admin().indices().delete(new DeleteIndexRequest("index1")).actionGet();
} catch (Exception e) {
// ignore
}
URL testTar = getClass().getResource("/macosx-knapsack-tar-test.tar.gz");
Path path = Paths.get(testTar.toURI());
KnapsackImportRequestBuilder knapsackImportRequestBuilder = new KnapsackImportRequestBuilder(client("1"))
.setArchivePath(path);
KnapsackImportResponse knapsackImportResponse = knapsackImportRequestBuilder.execute().actionGet();
if (!knapsackImportResponse.isRunning()) {
logger.error(knapsackImportResponse.getReason());
}
assertTrue(knapsackImportResponse.isRunning());
Thread.sleep(2000L);
// count
long count = client("1").prepareCount("index1").setQuery(QueryBuilders.matchAllQuery()).execute().actionGet().getCount();
assertEquals(1L, count);
}
@Test
public void testLongName() throws Exception {
File exportFile = File.createTempFile("knapsack-long-tar-", ".tar.bz2");
Path exportPath = Paths.get(URI.create("file:" + exportFile.getAbsolutePath()));
client("1").index(new IndexRequest()
.index("index1")
.type("test1")
.id("veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryverylong")
.source("content", "Hello World").refresh(true)).actionGet();
client("1").index(new IndexRequest()
.index("index1")
.type("test1")
.id("anotherveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryverylong")
.source("content", "foo bar").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().delete(new DeleteIndexRequest("index1")).actionGet();
KnapsackImportRequestBuilder knapsackImportRequestBuilder = new KnapsackImportRequestBuilder(client("1"))
.setArchivePath(exportPath);
KnapsackImportResponse knapsackImportResponse = knapsackImportRequestBuilder.execute().actionGet();
if (!knapsackImportResponse.isRunning()) {
logger.error(knapsackImportResponse.getReason());
}
assertTrue(knapsackImportResponse.isRunning());
Thread.sleep(2000L);
// count
SearchResponse response = client("1").prepareSearch("index1").setQuery(QueryBuilders.matchAllQuery()).execute().actionGet();
assertEquals(2L, response.getHits().getTotalHits());
for (SearchHit hit : response.getHits().getHits()) {
logger.info("{}/{}/{}", hit.getIndex(), hit.getType(), hit.getId());
assertTrue(hit.getIndex().length() + hit.getType().length() + hit.getId().length() > 100);
}
}
}