|  | @@ -58,7 +58,7 @@ public class IndexStatsTests extends ElasticsearchIntegrationTest {
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      protected Settings nodeSettings(int nodeOrdinal) {
 | 
	
		
			
				|  |  |          //Filter/Query cache is cleaned periodically, default is 60s, so make sure it runs often. Thread.sleep for 60s is bad
 | 
	
		
			
				|  |  | -        return  ImmutableSettings.settingsBuilder().put(super.nodeSettings(nodeOrdinal))
 | 
	
		
			
				|  |  | +        return ImmutableSettings.settingsBuilder().put(super.nodeSettings(nodeOrdinal))
 | 
	
		
			
				|  |  |                  .put("indices.cache.filter.clean_interval", "1ms")
 | 
	
		
			
				|  |  |                  .put(IndicesQueryCache.INDICES_CACHE_QUERY_CLEAN_INTERVAL, "1ms")
 | 
	
		
			
				|  |  |                  .build();
 | 
	
	
		
			
				|  | @@ -194,16 +194,35 @@ public class IndexStatsTests extends ElasticsearchIntegrationTest {
 | 
	
		
			
				|  |  |          assertAcked(client().admin().indices().prepareCreate("idx").setSettings(IndicesQueryCache.INDEX_CACHE_QUERY_ENABLED, true).get());
 | 
	
		
			
				|  |  |          ensureGreen();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        int numDocs = randomIntBetween(2, 100);
 | 
	
		
			
				|  |  | -        IndexRequestBuilder[] builders = new IndexRequestBuilder[numDocs];
 | 
	
		
			
				|  |  | -        for (int i = 0; i < numDocs; ++i) {
 | 
	
		
			
				|  |  | -            builders[i] = client().prepareIndex("idx", "type", Integer.toString(i)).setSource(jsonBuilder()
 | 
	
		
			
				|  |  | -                    .startObject()
 | 
	
		
			
				|  |  | -                    .field("common", "field")
 | 
	
		
			
				|  |  | -                    .field("str_value", "s" + i)
 | 
	
		
			
				|  |  | -                    .endObject());
 | 
	
		
			
				|  |  | +        // index docs until we have at least one doc on each shard, otherwise, our tests will not work
 | 
	
		
			
				|  |  | +        // since refresh will not refresh anything on a shard that has 0 docs and its search response get cached
 | 
	
		
			
				|  |  | +        int pageDocs = randomIntBetween(2, 100);
 | 
	
		
			
				|  |  | +        int numDocs = 0;
 | 
	
		
			
				|  |  | +        int counter = 0;
 | 
	
		
			
				|  |  | +        while (true) {
 | 
	
		
			
				|  |  | +            IndexRequestBuilder[] builders = new IndexRequestBuilder[pageDocs];
 | 
	
		
			
				|  |  | +            for (int i = 0; i < pageDocs; ++i) {
 | 
	
		
			
				|  |  | +                builders[i] = client().prepareIndex("idx", "type", Integer.toString(counter++)).setSource(jsonBuilder()
 | 
	
		
			
				|  |  | +                        .startObject()
 | 
	
		
			
				|  |  | +                        .field("common", "field")
 | 
	
		
			
				|  |  | +                        .field("str_value", "s" + i)
 | 
	
		
			
				|  |  | +                        .endObject());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            indexRandom(true, builders);
 | 
	
		
			
				|  |  | +            numDocs += pageDocs;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            boolean allHaveDocs = true;
 | 
	
		
			
				|  |  | +            for (ShardStats stats : client().admin().indices().prepareStats("idx").setDocs(true).get().getShards()) {
 | 
	
		
			
				|  |  | +                if (stats.getStats().getDocs().getCount() == 0) {
 | 
	
		
			
				|  |  | +                    allHaveDocs = false;
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (allHaveDocs) {
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        indexRandom(true, builders);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          assertThat(client().admin().indices().prepareStats("idx").setQueryCache(true).get().getTotal().getQueryCache().getMemorySizeInBytes(), equalTo(0l));
 | 
	
		
			
				|  |  |          for (int i = 0; i < 10; i++) {
 | 
	
	
		
			
				|  | @@ -212,7 +231,7 @@ public class IndexStatsTests extends ElasticsearchIntegrationTest {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // index the data again...
 | 
	
		
			
				|  |  | -        builders = new IndexRequestBuilder[numDocs];
 | 
	
		
			
				|  |  | +        IndexRequestBuilder[] builders = new IndexRequestBuilder[numDocs];
 | 
	
		
			
				|  |  |          for (int i = 0; i < numDocs; ++i) {
 | 
	
		
			
				|  |  |              builders[i] = client().prepareIndex("idx", "type", Integer.toString(i)).setSource(jsonBuilder()
 | 
	
		
			
				|  |  |                      .startObject()
 | 
	
	
		
			
				|  | @@ -417,7 +436,7 @@ public class IndexStatsTests extends ElasticsearchIntegrationTest {
 | 
	
		
			
				|  |  |          stats = client().admin().indices().prepareStats().setSegments(true).get();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          assertThat(stats.getTotal().getSegments(), notNullValue());
 | 
	
		
			
				|  |  | -        assertThat(stats.getTotal().getSegments().getCount(), equalTo((long)test1.totalNumShards));
 | 
	
		
			
				|  |  | +        assertThat(stats.getTotal().getSegments().getCount(), equalTo((long) test1.totalNumShards));
 | 
	
		
			
				|  |  |          assumeTrue(org.elasticsearch.Version.CURRENT.luceneVersion != Version.LUCENE_46);
 | 
	
		
			
				|  |  |          assertThat(stats.getTotal().getSegments().getMemoryInBytes(), greaterThan(0l));
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -681,7 +700,7 @@ public class IndexStatsTests extends ElasticsearchIntegrationTest {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          ensureGreen();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        client().prepareIndex("test1", "bar", Integer.toString(1)).setSource("foo","bar").execute().actionGet();
 | 
	
		
			
				|  |  | +        client().prepareIndex("test1", "bar", Integer.toString(1)).setSource("foo", "bar").execute().actionGet();
 | 
	
		
			
				|  |  |          refresh();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          client().prepareSearch("_all").setStats("bar", "baz").execute().actionGet();
 | 
	
	
		
			
				|  | @@ -718,8 +737,8 @@ public class IndexStatsTests extends ElasticsearchIntegrationTest {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          ensureGreen();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        client().prepareIndex("test1", "bar", Integer.toString(1)).setSource("foo","bar").execute().actionGet();
 | 
	
		
			
				|  |  | -        client().prepareIndex("test2", "baz", Integer.toString(1)).setSource("foo","bar").execute().actionGet();
 | 
	
		
			
				|  |  | +        client().prepareIndex("test1", "bar", Integer.toString(1)).setSource("foo", "bar").execute().actionGet();
 | 
	
		
			
				|  |  | +        client().prepareIndex("test2", "baz", Integer.toString(1)).setSource("foo", "bar").execute().actionGet();
 | 
	
		
			
				|  |  |          refresh();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          IndicesStatsRequestBuilder builder = client().admin().indices().prepareStats();
 |