package org.xbib.elasticsearch.plugin.knapsack;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.common.unit.ByteSizeValue;
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.File;
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.assertTrue;
public class KnapsackSplitTests extends NodeTestUtils {
private final static Logger logger = LogManager.getLogger(KnapsackSplitTests.class);
@Test
public void testSplit() {
try {
File exportFile = File.createTempFile("split-import-", ".bulk");
Path exportPath = Paths.get(URI.create("file:" + exportFile.getAbsolutePath()));
for (int i = 0; i < 100; i++) {
client("1").index(new IndexRequest().index("index1").type("test1").id("doc" + i)
.source("content", "Hello World " + i).refresh(true)).actionGet();
}
// 275 bytes = ~10 docs per archive
KnapsackExportRequestBuilder requestBuilder = new KnapsackExportRequestBuilder(client("1"))
.setArchivePath(exportPath)
.setBytesToTransfer(ByteSizeValue.parseBytesSizeValue("275b", ""));
KnapsackExportResponse knapsackExportResponse = requestBuilder.execute().actionGet();
assertTrue(knapsackExportResponse.isRunning());
KnapsackStateRequestBuilder knapsackStateRequestBuilder =
new KnapsackStateRequestBuilder(client("2"));
KnapsackStateResponse knapsackStateResponse = knapsackStateRequestBuilder.execute().actionGet();
// assertTrue(knapsackStateResponse.isExportActive(exportPath)); // why does this fail???
Thread.sleep(2000L);
// delete index
client("1").admin().indices().delete(new DeleteIndexRequest("index1")).actionGet();
KnapsackImportRequestBuilder knapsackImportRequestBuilder = new KnapsackImportRequestBuilder(client("1"))
.setArchivePath(exportPath)
.setMaxActionsPerBulkRequest(100);
KnapsackImportResponse knapsackImportResponse = knapsackImportRequestBuilder.execute().actionGet();
Thread.sleep(2000L);
// count
long count = client("1").prepareCount("index1").setQuery(QueryBuilders.matchAllQuery()).execute().actionGet().getCount();
assertEquals(10L, count);
} catch (Throwable t) {
logger.error(t.getMessage(), t);
}
}
}