Browse Source

Added total, successful shard info to search related asserts in ElasticsearchAssertions

Rewrote SimpleSearchTests assertion to use that.
Boaz Leskes 12 years ago
parent
commit
c70b8fbd7b

+ 30 - 20
src/test/java/org/elasticsearch/test/hamcrest/ElasticsearchAssertions.java

@@ -48,56 +48,66 @@ import static org.junit.Assert.fail;
  *
  */
 public class ElasticsearchAssertions {
-    
-    
+
+
     public static void assertAcked(DeleteIndexRequestBuilder builder) {
         assertAcked(builder.get());
     }
-    
+
     public static void assertAcked(CreateIndexRequestBuilder builder) {
         assertAcked(builder.get());
     }
-    
+
     public static void assertAcked(DeleteIndexResponse response) {
         assertThat("Delete Index failed - not acked", response.isAcknowledged(), equalTo(true));
     }
-    
+
     public static void assertAcked(CreateIndexResponse response) {
         assertThat("Create Index failed - not acked", response.isAcknowledged(), equalTo(true));
     }
 
+    public static String formatShardStatus(BroadcastOperationResponse response) {
+        String msg = " Total shards: " + response.getTotalShards() + " Successful shards: " + response.getSuccessfulShards() +
+                " & " + response.getFailedShards() + " shard failures:";
+        for (ShardOperationFailedException failure : response.getShardFailures()) {
+            msg += "\n " + failure.toString();
+        }
+        return msg;
+    }
+
+    public static String formatShardStatus(SearchResponse response) {
+        String msg = " Total shards: " + response.getTotalShards() + " Successful shards: " + response.getSuccessfulShards() +
+                " & " + response.getFailedShards() + " shard failures:";
+        for (ShardSearchFailure failure : response.getShardFailures()) {
+            msg += "\n " + failure.toString();
+        }
+        return msg;
+    }
+
     /*
      * assertions
      */
     public static void assertHitCount(SearchResponse searchResponse, long expectedHitCount) {
         if (searchResponse.getHits().totalHits() != expectedHitCount) {
-            String msg = "Hit count is " + searchResponse.getHits().totalHits() + " but " + expectedHitCount + " was expected. " +
-                    searchResponse.getFailedShards() + " shard failures:";
-            for (ShardSearchFailure failure : searchResponse.getShardFailures()) {
-                msg += "\n " + failure.toString();
-            }
-            fail(msg);
+            fail("Hit count is " + searchResponse.getHits().totalHits() + " but " + expectedHitCount + " was expected. " + formatShardStatus(searchResponse));
         }
     }
 
     public static void assertSearchHits(SearchResponse searchResponse, String... ids) {
-        assertThat("Expected different hit count", searchResponse.getHits().hits().length, equalTo(ids.length));
+        String shardStatus = formatShardStatus(searchResponse);
+        assertThat("Expected different hit count. " + shardStatus, searchResponse.getHits().hits().length, equalTo(ids.length));
 
         Set<String> idsSet = new HashSet<String>(Arrays.asList(ids));
         for (SearchHit hit : searchResponse.getHits()) {
-            assertThat("Expected id: " + hit.getId() + " in the result but wasn't", idsSet.remove(hit.getId()), equalTo(true));
+            assertThat("Expected id: " + hit.getId() + " in the result but wasn't." + shardStatus, idsSet.remove(hit.getId()), equalTo(true));
         }
-        assertThat("Expected ids: " + Arrays.toString(idsSet.toArray(new String[0])) + " in the result - result size differs", idsSet.size(), equalTo(0));
+        assertThat("Expected ids: " + Arrays.toString(idsSet.toArray(new String[0])) + " in the result - result size differs." + shardStatus, idsSet.size(), equalTo(0));
     }
 
     public static void assertHitCount(CountResponse countResponse, long expectedHitCount) {
         if (countResponse.getCount() != expectedHitCount) {
-            String msg = "Count is " + countResponse.getCount() + " but " + expectedHitCount + " was expected. " +
-                    countResponse.getFailedShards() + " shard failures:";
-            for (ShardOperationFailedException failure : countResponse.getShardFailures()) {
-                msg += "\n " + failure.toString();
-            }
-            fail(msg);
+            fail("Count is " + countResponse.getCount() + " but " + expectedHitCount + " was expected. " +
+                    formatShardStatus(countResponse));
         }
     }
 

+ 28 - 25
src/test/java/org/elasticsearch/test/integration/search/simple/SimpleSearchTests.java

@@ -32,8 +32,8 @@ import java.util.concurrent.ExecutionException;
 import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
 import static org.elasticsearch.index.query.QueryBuilders.boolQuery;
 import static org.elasticsearch.index.query.QueryBuilders.rangeQuery;
+import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount;
 import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures;
-import static org.hamcrest.Matchers.equalTo;
 
 public class SimpleSearchTests extends AbstractSharedClusterTest {
 
@@ -53,23 +53,24 @@ public class SimpleSearchTests extends AbstractSharedClusterTest {
 
         }
     }
-    
+
     @Test
     public void testSearchRandomPreference() throws InterruptedException, ExecutionException {
-        client().admin().indices().prepareCreate("test").setSettings(ImmutableSettings.settingsBuilder().put("index.number_of_shards", between(1,3))).get();
-        indexRandom("test", true, 
-        client().prepareIndex("test", "type", "1").setSource("field", "value"),
-        client().prepareIndex("test", "type", "2").setSource("field", "value"),
-        client().prepareIndex("test", "type", "3").setSource("field", "value"),
-        client().prepareIndex("test", "type", "4").setSource("field", "value"),
-        client().prepareIndex("test", "type", "5").setSource("field", "value"),
-        client().prepareIndex("test", "type", "6").setSource("field", "value"));
-        
+        client().admin().indices().prepareCreate("test").setSettings(ImmutableSettings.settingsBuilder().put("index.number_of_shards", between(1, 3))).get();
+        indexRandom("test", true,
+                client().prepareIndex("test", "type", "1").setSource("field", "value"),
+                client().prepareIndex("test", "type", "2").setSource("field", "value"),
+                client().prepareIndex("test", "type", "3").setSource("field", "value"),
+                client().prepareIndex("test", "type", "4").setSource("field", "value"),
+                client().prepareIndex("test", "type", "5").setSource("field", "value"),
+                client().prepareIndex("test", "type", "6").setSource("field", "value"));
+
         int iters = atLeast(10);
         for (int i = 0; i < iters; i++) {
             // id is not indexed, but lets see that we automatically convert to
             SearchResponse searchResponse = client().prepareSearch().setQuery(QueryBuilders.matchAllQuery()).setPreference(randomUnicodeOfLengthBetween(0, 4)).get();
-            assertThat(searchResponse.getHits().totalHits(), equalTo(6l));
+            assertHitCount(searchResponse, 6l);
+
         }
     }
 
@@ -90,7 +91,7 @@ public class SimpleSearchTests extends AbstractSharedClusterTest {
                 .setQuery(boolQuery().must(rangeQuery("from").lt("192.168.0.7")).must(rangeQuery("to").gt("192.168.0.7")))
                 .execute().actionGet();
 
-        assertThat(search.getHits().totalHits(), equalTo(1l));
+        assertHitCount(search, 1l);
     }
 
     @Test
@@ -100,17 +101,17 @@ public class SimpleSearchTests extends AbstractSharedClusterTest {
         client().prepareIndex("test", "type", "XXX1").setSource("field", "value").setRefresh(true).execute().actionGet();
         // id is not indexed, but lets see that we automatically convert to
         SearchResponse searchResponse = client().prepareSearch().setQuery(QueryBuilders.termQuery("_id", "XXX1")).execute().actionGet();
-        assertThat(searchResponse.getHits().totalHits(), equalTo(1l));
+        assertHitCount(searchResponse, 1l);
 
         searchResponse = client().prepareSearch().setQuery(QueryBuilders.queryString("_id:XXX1")).execute().actionGet();
-        assertThat(searchResponse.getHits().totalHits(), equalTo(1l));
+        assertHitCount(searchResponse, 1l);
 
         // id is not index, but we can automatically support prefix as well
         searchResponse = client().prepareSearch().setQuery(QueryBuilders.prefixQuery("_id", "XXX")).execute().actionGet();
-        assertThat(searchResponse.getHits().totalHits(), equalTo(1l));
+        assertHitCount(searchResponse, 1l);
 
         searchResponse = client().prepareSearch().setQuery(QueryBuilders.queryString("_id:XXX*").lowercaseExpandedTerms(false)).execute().actionGet();
-        assertThat(searchResponse.getHits().totalHits(), equalTo(1l));
+        assertHitCount(searchResponse, 1l);
     }
 
     @Test
@@ -122,9 +123,9 @@ public class SimpleSearchTests extends AbstractSharedClusterTest {
 
         // test include upper on ranges to include the full day on the upper bound
         SearchResponse searchResponse = client().prepareSearch("test").setQuery(QueryBuilders.rangeQuery("field").gte("2010-01-05").lte("2010-01-06")).execute().actionGet();
-        assertThat(searchResponse.getHits().totalHits(), equalTo(2l));
+        assertHitCount(searchResponse, 2l);
         searchResponse = client().prepareSearch("test").setQuery(QueryBuilders.rangeQuery("field").gte("2010-01-05").lt("2010-01-06")).execute().actionGet();
-        assertThat(searchResponse.getHits().totalHits(), equalTo(1l));
+        assertHitCount(searchResponse, 1l);
     }
 
     @Test
@@ -137,9 +138,9 @@ public class SimpleSearchTests extends AbstractSharedClusterTest {
         // test include upper on ranges to include the full day on the upper bound (disabled here though...)
         SearchResponse searchResponse = client().prepareSearch("test").setQuery(QueryBuilders.rangeQuery("field").gte("2010-01-05").lte("2010-01-06")).execute().actionGet();
         assertNoFailures(searchResponse);
-        assertThat(searchResponse.getHits().totalHits(), equalTo(1l));
+        assertHitCount(searchResponse, 1l);
         searchResponse = client().prepareSearch("test").setQuery(QueryBuilders.rangeQuery("field").gte("2010-01-05").lt("2010-01-06")).execute().actionGet();
-        assertThat(searchResponse.getHits().totalHits(), equalTo(1l));
+        assertHitCount(searchResponse, 1l);
     }
 
     @Test
@@ -151,10 +152,10 @@ public class SimpleSearchTests extends AbstractSharedClusterTest {
         refresh();
         SearchResponse searchResponse = client().prepareSearch("test").setQuery(QueryBuilders.rangeQuery("field").gte("2010-01-03||+2d").lte("2010-01-04||+2d")).execute().actionGet();
         assertNoFailures(searchResponse);
-        assertThat(searchResponse.getHits().totalHits(), equalTo(2l));
+        assertHitCount(searchResponse, 2l);
 
         searchResponse = client().prepareSearch("test").setQuery(QueryBuilders.queryString("field:[2010-01-03||+2d TO 2010-01-04||+2d]")).execute().actionGet();
-        assertThat(searchResponse.getHits().totalHits(), equalTo(2l));
+        assertHitCount(searchResponse, 2l);
     }
 
     @Test
@@ -184,12 +185,14 @@ public class SimpleSearchTests extends AbstractSharedClusterTest {
             SearchResponse searchResponse = client().prepareSearch("test")
                     .setQuery(QueryBuilders.rangeQuery("date_field").gte("Di, 05 Dez 2000 02:55:00 -0800").lte("Do, 07 Dez 2000 00:00:00 -0800"))
                     .execute().actionGet();
-            assertThat(searchResponse.getHits().totalHits(), equalTo(10l));
+            assertHitCount(searchResponse, 10l);
+
 
             searchResponse = client().prepareSearch("test")
                     .setQuery(QueryBuilders.rangeQuery("date_field").gte("Di, 05 Dez 2000 02:55:00 -0800").lte("Fr, 08 Dez 2000 00:00:00 -0800"))
                     .execute().actionGet();
-            assertThat(searchResponse.getHits().totalHits(), equalTo(20l));
+            assertHitCount(searchResponse, 20l);
+
         }
     }
 }