package io.searchbox.indices; import com.google.gson.JsonObject; import io.searchbox.client.JestResult; import io.searchbox.common.AbstractIntegrationTest; import org.elasticsearch.test.ESIntegTestCase; import org.junit.Test; import java.io.IOException; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeoutException; /** * @author cihat keser */ @ESIntegTestCase.ClusterScope(scope = ESIntegTestCase.Scope.SUITE, numDataNodes = 1) public class StatsIntegrationTest extends AbstractIntegrationTest { private static final String INDEX_NAME = "flush_test_index"; private static final String STATS_WITH_OPTIONS_INDEX_NAME = "stats_with_options_index"; @Test public void testDefaultStats() throws InterruptedException, ExecutionException, TimeoutException, IOException { createIndex(INDEX_NAME); ensureSearchable(INDEX_NAME); Stats stats = new Stats.Builder().build(); JestResult result = client.execute(stats); assertTrue(result.getErrorMessage(), result.isSucceeded()); // confirm that response has all the default stats types JsonObject jsonResult = result.getJsonObject(); JsonObject statsJson = jsonResult.getAsJsonObject("indices").getAsJsonObject(INDEX_NAME).getAsJsonObject("total"); assertNotNull(statsJson); assertNotNull(statsJson.getAsJsonObject("docs")); assertNotNull(statsJson.getAsJsonObject("store")); assertNotNull(statsJson.getAsJsonObject("indexing")); assertNotNull(statsJson.getAsJsonObject("get")); assertNotNull(statsJson.getAsJsonObject("search")); } @Test public void testStatsWithOptions() throws InterruptedException, ExecutionException, TimeoutException, IOException { createIndex(STATS_WITH_OPTIONS_INDEX_NAME); ensureSearchable(STATS_WITH_OPTIONS_INDEX_NAME); Stats stats = new Stats.Builder() .flush(true) .indexing(true) .build(); JestResult result = client.execute(stats); assertTrue(result.getErrorMessage(), result.isSucceeded()); // Confirm that response has only flush and indexing stats types JsonObject jsonResult = result.getJsonObject(); JsonObject statsJson = jsonResult.getAsJsonObject("indices").getAsJsonObject(STATS_WITH_OPTIONS_INDEX_NAME).getAsJsonObject("total"); assertNotNull(statsJson); assertNotNull(statsJson.getAsJsonObject("flush")); assertNotNull(statsJson.getAsJsonObject("indexing")); assertEquals("Number of stats received", 2, statsJson.entrySet().size()); } }