fix percolate stats tests failures

This commit is contained in:
Shay Banon 2013-07-21 14:25:26 +02:00
parent 09362f47e9
commit 6a25395c97
2 changed files with 119 additions and 112 deletions

View File

@ -19,11 +19,6 @@
package org.elasticsearch.test.integration.indices.stats;
import java.io.IOException;
import java.util.Arrays;
import java.util.EnumSet;
import java.util.Random;
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
import org.elasticsearch.action.admin.indices.stats.CommonStats;
import org.elasticsearch.action.admin.indices.stats.CommonStatsFlags;
@ -36,12 +31,15 @@ import org.elasticsearch.common.Priority;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.io.stream.BytesStreamInput;
import org.elasticsearch.common.io.stream.BytesStreamOutput;
import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.test.integration.AbstractNodesTests;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.io.IOException;
import java.util.EnumSet;
import java.util.Random;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
@ -155,7 +153,7 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
assertThat(stats.getTotal().getGet().getCount(), equalTo(2l));
assertThat(stats.getTotal().getGet().getExistsCount(), equalTo(1l));
assertThat(stats.getTotal().getGet().getMissingCount(), equalTo(1l));
// clear all
stats = client.admin().indices().prepareStats()
.setDocs(false)
@ -173,7 +171,7 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
assertThat(stats.getTotal().getGet(), nullValue());
assertThat(stats.getTotal().getSearch(), nullValue());
}
@Test
public void testMergeStats() {
client.admin().indices().prepareDelete().execute().actionGet();
@ -182,7 +180,7 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
ClusterHealthResponse clusterHealthResponse = client.admin().cluster().prepareHealth().setWaitForEvents(Priority.LANGUID).setWaitForGreenStatus().execute().actionGet();
assertThat(clusterHealthResponse.isTimedOut(), equalTo(false));
// clear all
IndicesStatsResponse stats = client.admin().indices().prepareStats()
.setDocs(false)
@ -199,7 +197,7 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
assertThat(stats.getTotal().getIndexing(), nullValue());
assertThat(stats.getTotal().getGet(), nullValue());
assertThat(stats.getTotal().getSearch(), nullValue());
for (int i = 0; i < 20; i++) {
client.prepareIndex("test1", "type1", Integer.toString(i)).setSource("field", "value").execute().actionGet();
client.prepareIndex("test1", "type2", Integer.toString(i)).setSource("field", "value").execute().actionGet();
@ -213,7 +211,7 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
assertThat(stats.getTotal().getMerge(), notNullValue());
assertThat(stats.getTotal().getMerge().getTotal(), greaterThan(0l));
}
@Test
public void testAllFlags() throws Exception {
client.admin().indices().prepareDelete().execute().actionGet();
@ -234,13 +232,13 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
for (Flag flag : values) {
set(flag, builder, false);
}
IndicesStatsResponse stats = builder.execute().actionGet();
for (Flag flag : values) {
assertThat(isSet(flag, stats.getPrimaries()), equalTo(false));
assertThat(isSet(flag, stats.getTotal()), equalTo(false));
}
for (Flag flag : values) {
set(flag, builder, true);
}
@ -258,12 +256,12 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
flags.add(flag);
}
}
for (Flag flag : values) {
set(flag, builder, false); // clear all
}
for (Flag flag : flags) { // set the flags
set(flag, builder, true);
}
@ -272,14 +270,14 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
assertThat(isSet(flag, stats.getPrimaries()), equalTo(true));
assertThat(isSet(flag, stats.getTotal()), equalTo(true));
}
for (Flag flag : EnumSet.complementOf(flags)) { // check the complement
assertThat(isSet(flag, stats.getPrimaries()), equalTo(false));
assertThat(isSet(flag, stats.getTotal()), equalTo(false));
}
}
@Test
public void testEncodeDecodeCommonStats() throws IOException {
CommonStatsFlags flags = new CommonStatsFlags();
@ -287,11 +285,11 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
assertThat(flags.anySet(), equalTo(true));
for (Flag flag : values) {
flags.set(flag, false);
flags.set(flag, false);
}
assertThat(flags.anySet(), equalTo(false));
for (Flag flag : values) {
flags.set(flag, true);
flags.set(flag, true);
}
assertThat(flags.anySet(), equalTo(true));
long seed = System.currentTimeMillis();
@ -299,7 +297,7 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
Random random = new Random(seed);
flags.set(values[random.nextInt(values.length)], false);
assertThat(flags.anySet(), equalTo(true));
{
BytesStreamOutput out = new BytesStreamOutput();
flags.writeTo(out);
@ -310,7 +308,7 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
assertThat(flags.isSet(flag), equalTo(readStats.isSet(flag)));
}
}
{
for (Flag flag : values) {
flags.set(flag, random.nextBoolean());
@ -325,92 +323,97 @@ public class SimpleIndexStatsTests extends AbstractNodesTests {
}
}
}
@Test
public void testFlagOrdinalOrder() {
Flag[] flags = new Flag[] { Flag.Store, Flag.Indexing, Flag.Get, Flag.Search, Flag.Merge, Flag.Flush, Flag.Refresh,
Flag.FilterCache, Flag.IdCache, Flag.FieldData, Flag.Docs, Flag.Warmer };
Flag[] flags = new Flag[]{Flag.Store, Flag.Indexing, Flag.Get, Flag.Search, Flag.Merge, Flag.Flush, Flag.Refresh,
Flag.FilterCache, Flag.IdCache, Flag.FieldData, Flag.Docs, Flag.Warmer, Flag.Percolate};
assertThat(flags.length, equalTo(Flag.values().length));
for (int i = 0; i < flags.length; i++) {
assertThat("ordinal has changed - this breaks the wire protocol. Only append to new values", i, equalTo(flags[i].ordinal()));
}
}
private static void set(Flag flag, IndicesStatsRequestBuilder builder, boolean set) {
switch(flag) {
case Docs:
builder.setDocs(set);
break;
case FieldData:
builder.setFieldData(set);
break;
case FilterCache:
builder.setFilterCache(set);
break;
case Flush:
builder.setFlush(set);
break;
case Get:
builder.setGet(set);
break;
case IdCache:
builder.setIdCache(set);
break;
case Indexing:
builder.setIndexing(set);
break;
case Merge:
builder.setMerge(set);
break;
case Refresh:
builder.setRefresh(set);
break;
case Search:
builder.setSearch(set);
break;
case Store:
builder.setStore(set);
break;
case Warmer:
builder.setWarmer(set);
break;
default:
assert false : "new flag? " + flag;
break;
switch (flag) {
case Docs:
builder.setDocs(set);
break;
case FieldData:
builder.setFieldData(set);
break;
case FilterCache:
builder.setFilterCache(set);
break;
case Flush:
builder.setFlush(set);
break;
case Get:
builder.setGet(set);
break;
case IdCache:
builder.setIdCache(set);
break;
case Indexing:
builder.setIndexing(set);
break;
case Merge:
builder.setMerge(set);
break;
case Refresh:
builder.setRefresh(set);
break;
case Search:
builder.setSearch(set);
break;
case Store:
builder.setStore(set);
break;
case Warmer:
builder.setWarmer(set);
break;
case Percolate:
builder.setPercolate(set);
break;
default:
assert false : "new flag? " + flag;
break;
}
}
private static boolean isSet(Flag flag, CommonStats response) {
switch(flag) {
case Docs:
return response.getDocs() != null;
case FieldData:
return response.getFieldData() != null;
case FilterCache:
return response.getFilterCache() != null;
case Flush:
return response.getFlush() != null;
case Get:
return response.getGet() != null;
case IdCache:
return response.getIdCache() != null;
case Indexing:
return response.getIndexing() != null;
case Merge:
return response.getMerge() != null;
case Refresh:
return response.getRefresh() != null;
case Search:
return response.getSearch() != null;
case Store:
return response.getStore() != null;
case Warmer:
return response.getWarmer() != null;
default:
assert false : "new flag? " + flag;
return false;
switch (flag) {
case Docs:
return response.getDocs() != null;
case FieldData:
return response.getFieldData() != null;
case FilterCache:
return response.getFilterCache() != null;
case Flush:
return response.getFlush() != null;
case Get:
return response.getGet() != null;
case IdCache:
return response.getIdCache() != null;
case Indexing:
return response.getIndexing() != null;
case Merge:
return response.getMerge() != null;
case Refresh:
return response.getRefresh() != null;
case Search:
return response.getSearch() != null;
case Store:
return response.getStore() != null;
case Warmer:
return response.getWarmer() != null;
case Percolate:
return response.getPercolate() != null;
default:
assert false : "new flag? " + flag;
return false;
}
}
}

View File

@ -255,7 +255,7 @@ public class SimplePercolatorTests extends AbstractSharedClusterTest {
.setRefresh(true)
.execute().actionGet();
}
@Test
// see #2814
public void percolateCustomAnalyzer() throws Exception {
@ -264,17 +264,17 @@ public class SimplePercolatorTests extends AbstractSharedClusterTest {
builder.putArray("index.analysis.analyzer.lwhitespacecomma.filter", "lowercase");
builder.put("index.analysis.tokenizer.whitespacecomma.type", "pattern");
builder.put("index.analysis.tokenizer.whitespacecomma.pattern", "(,|\\s+)");
XContentBuilder mapping = XContentFactory.jsonBuilder().startObject().startObject("doc")
.startObject("properties")
.startObject("filingcategory").field("type", "string").field("analyzer", "lwhitespacecomma").endObject()
.endObject()
.endObject().endObject();
.startObject("properties")
.startObject("filingcategory").field("type", "string").field("analyzer", "lwhitespacecomma").endObject()
.endObject()
.endObject().endObject();
client().admin().indices().prepareCreate("test")
.addMapping("doc", mapping)
.setSettings(builder.put("index.number_of_shards", 1))
.execute().actionGet();
.addMapping("doc", mapping)
.setSettings(builder.put("index.number_of_shards", 1))
.execute().actionGet();
ensureGreen();
logger.info("--> register a query");
@ -292,7 +292,7 @@ public class SimplePercolatorTests extends AbstractSharedClusterTest {
.endObject())
.execute().actionGet();
assertThat(percolate.getMatches(), arrayWithSize(1));
}
@Test
@ -514,7 +514,8 @@ public class SimplePercolatorTests extends AbstractSharedClusterTest {
IndicesStatsResponse indicesResponse = client().admin().indices().prepareStats("test").execute().actionGet();
assertThat(indicesResponse.getTotal().getPercolate().getCount(), equalTo(5l)); // We have 5 partitions
assertThat(indicesResponse.getTotal().getPercolate().getTimeInMillis(), greaterThan(0l));
// it might be too fast to be counted in milliseconds...
//assertThat(indicesResponse.getTotal().getPercolate().getTimeInMillis(), greaterThan(0l));
assertThat(indicesResponse.getTotal().getPercolate().getCurrent(), equalTo(0l));
NodesStatsResponse nodesResponse = client().admin().cluster().prepareNodesStats().execute().actionGet();
@ -525,7 +526,8 @@ public class SimplePercolatorTests extends AbstractSharedClusterTest {
percolateSumTime += nodeStats.getIndices().getPercolate().getTimeInMillis();
}
assertThat(percolateCount, equalTo(5l)); // We have 5 partitions
assertThat(percolateSumTime, greaterThan(0l));
// it might be too fast to be counted in milliseconds...
//assertThat(percolateSumTime, greaterThan(0l));
logger.info("--> Second percolate request");
response = client().preparePercolate("test", "type")
@ -536,7 +538,8 @@ public class SimplePercolatorTests extends AbstractSharedClusterTest {
indicesResponse = client().admin().indices().prepareStats().setPercolate(true).execute().actionGet();
assertThat(indicesResponse.getTotal().getPercolate().getCount(), equalTo(10l));
assertThat(indicesResponse.getTotal().getPercolate().getTimeInMillis(), greaterThan(0l));
// it might be too fast to be counted in milliseconds...
//assertThat(indicesResponse.getTotal().getPercolate().getTimeInMillis(), greaterThan(0l));
assertThat(indicesResponse.getTotal().getPercolate().getCurrent(), equalTo(0l));
nodesResponse = client().admin().cluster().prepareNodesStats().execute().actionGet();
@ -547,7 +550,8 @@ public class SimplePercolatorTests extends AbstractSharedClusterTest {
percolateSumTime += nodeStats.getIndices().getPercolate().getTimeInMillis();
}
assertThat(percolateCount, equalTo(10l));
assertThat(percolateSumTime, greaterThan(0l));
// it might be too fast to be counted in milliseconds...
//assertThat(percolateSumTime, greaterThan(0l));
}
public static String[] convertFromTextArray(Text[] texts) {