package org.xbib.elasticsearch.plugin.knapsack; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.logging.ESLoggerFactory; 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.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.io.IOException; 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 KnapsackExportTests extends NodeTestUtils { private final static ESLogger logger = ESLoggerFactory.getLogger(KnapsackExportTests.class.getName()); @Test public void testMinimalExport() throws Exception { File exportFile = File.createTempFile("minimal-export-", ".bulk"); 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(); logger.info("waiting for recovery"); logger.info("recovered"); KnapsackExportRequestBuilder requestBuilder = new KnapsackExportRequestBuilder(client("1")) .setArchivePath(exportPath) .setOverwriteAllowed(true); KnapsackExportResponse knapsackExportResponse = requestBuilder.execute().actionGet(); if (!knapsackExportResponse.isRunning()) { logger.error(knapsackExportResponse.getReason()); throw new IOException("knapsack export not running"); } assertTrue(knapsackExportResponse.isRunning()); Thread.sleep(2000L); KnapsackStateRequestBuilder knapsackStateRequestBuilder = new KnapsackStateRequestBuilder(client("1")); KnapsackStateResponse knapsackStateResponse = knapsackStateRequestBuilder.execute().actionGet(); logger.info("response={}", knapsackStateResponse); assertFalse(knapsackStateResponse.isExportActive(exportPath)); BufferedReader reader = new BufferedReader(new FileReader(exportFile)); assertEquals("{\"index\":{\"_index\":\"index1\",\"_type\":\"test1\",\"_id\":\"doc1\"}", reader.readLine()); assertEquals("{\"content\":\"Hello World\"}", reader.readLine()); reader.close(); logger.info("done"); } }