From 9a14b3ce6f96ffe99dec66c6978cae97e9135c95 Mon Sep 17 00:00:00 2001 From: javanna Date: Fri, 22 Aug 2014 10:11:48 +0200 Subject: [PATCH] [TEST] copied delete bw comp tests to usual intergration tests Added AwaitsFix to testDeletebyQuery and testDeleteRoutingRequired while checking if they fail as usual integration tests. --- .../BasicBackwardsCompatibilityTest.java | 11 ++-- .../deleteByQuery/DeleteByQueryTests.java | 35 ++++++++++++ .../document/DocumentActionsTests.java | 53 ++++++++++++++++++- 3 files changed, 92 insertions(+), 7 deletions(-) diff --git a/src/test/java/org/elasticsearch/bwcompat/BasicBackwardsCompatibilityTest.java b/src/test/java/org/elasticsearch/bwcompat/BasicBackwardsCompatibilityTest.java index 6f0630d41b6..e87c3b82970 100644 --- a/src/test/java/org/elasticsearch/bwcompat/BasicBackwardsCompatibilityTest.java +++ b/src/test/java/org/elasticsearch/bwcompat/BasicBackwardsCompatibilityTest.java @@ -22,6 +22,7 @@ import com.carrotsearch.randomizedtesting.LifecycleScope; import com.carrotsearch.randomizedtesting.generators.RandomPicks; import org.apache.lucene.index.Fields; import org.apache.lucene.util.English; +import org.apache.lucene.util.LuceneTestCase; import org.elasticsearch.ElasticsearchIllegalArgumentException; import org.elasticsearch.Version; import org.elasticsearch.action.admin.cluster.health.ClusterHealthStatus; @@ -559,6 +560,8 @@ public class BasicBackwardsCompatibilityTest extends ElasticsearchBackwardsCompa } @Test + @LuceneTestCase.AwaitsFix(bugUrl = "working on this") + //made this tests a usual integration test to see if it fails in non bw comp mode public void testDeleteByQuery() throws ExecutionException, InterruptedException { createIndex("test"); ensureYellow("test"); @@ -585,12 +588,11 @@ public class BasicBackwardsCompatibilityTest extends ElasticsearchBackwardsCompa refresh(); searchResponse = client().prepareSearch("test").get(); assertNoFailures(searchResponse); - for (SearchHit searchHit : searchResponse.getHits()) { - logger.debug("searchHit {}/{}/{}", searchHit.getIndex(), searchHit.getType(), searchHit.getId()); - } assertThat(searchResponse.getHits().totalHits(), equalTo(1l)); } + @LuceneTestCase.AwaitsFix(bugUrl = "working on this") + //made this tests a usual integration test to see if it fails in non bw comp mode @Test public void testDeleteRoutingRequired() throws ExecutionException, InterruptedException, IOException { assertAcked(prepareCreate("test").addMapping("test", @@ -636,9 +638,6 @@ public class BasicBackwardsCompatibilityTest extends ElasticsearchBackwardsCompa refresh(); searchResponse = client().prepareSearch("test").setSize(numDocs).get(); assertNoFailures(searchResponse); - for (SearchHit searchHit : searchResponse.getHits()) { - logger.debug("searchHit {}/{}/{}", searchHit.getIndex(), searchHit.getType(), searchHit.getId()); - } assertThat(searchResponse.getHits().totalHits(), equalTo((long) numDocs - 2)); } diff --git a/src/test/java/org/elasticsearch/deleteByQuery/DeleteByQueryTests.java b/src/test/java/org/elasticsearch/deleteByQuery/DeleteByQueryTests.java index 3b67f5aa35c..ba9ae8788f7 100644 --- a/src/test/java/org/elasticsearch/deleteByQuery/DeleteByQueryTests.java +++ b/src/test/java/org/elasticsearch/deleteByQuery/DeleteByQueryTests.java @@ -23,6 +23,8 @@ import org.elasticsearch.action.ShardOperationFailedException; import org.elasticsearch.action.admin.indices.alias.Alias; import org.elasticsearch.action.deletebyquery.DeleteByQueryRequestBuilder; import org.elasticsearch.action.deletebyquery.DeleteByQueryResponse; +import org.elasticsearch.action.deletebyquery.IndexDeleteByQueryResponse; +import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.index.query.QueryBuilders; @@ -31,8 +33,11 @@ import org.elasticsearch.rest.RestStatus; import org.elasticsearch.test.ElasticsearchIntegrationTest; import org.junit.Test; +import java.util.concurrent.ExecutionException; + import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount; +import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures; import static org.hamcrest.Matchers.*; public class DeleteByQueryTests extends ElasticsearchIntegrationTest { @@ -156,6 +161,36 @@ public class DeleteByQueryTests extends ElasticsearchIntegrationTest { assertHitCount(client().prepareCount("test").get(), 0); } + @Test + public void testDeleteByTermQuery() throws ExecutionException, InterruptedException { + createIndex("test"); + ensureGreen(); + + int numDocs = iterations(10, 50); + IndexRequestBuilder[] indexRequestBuilders = new IndexRequestBuilder[numDocs + 1]; + for (int i = 0; i < numDocs; i++) { + indexRequestBuilders[i] = client().prepareIndex("test", "test", Integer.toString(i)).setSource("field", "value"); + } + indexRequestBuilders[numDocs] = client().prepareIndex("test", "test", Integer.toString(numDocs)).setSource("field", "other_value"); + indexRandom(true, indexRequestBuilders); + + SearchResponse searchResponse = client().prepareSearch("test").get(); + assertNoFailures(searchResponse); + assertThat(searchResponse.getHits().totalHits(), equalTo((long)numDocs + 1)); + + DeleteByQueryResponse deleteByQueryResponse = client().prepareDeleteByQuery("test").setQuery(QueryBuilders.termQuery("field", "value")).get(); + assertThat(deleteByQueryResponse.getIndices().size(), equalTo(1)); + for (IndexDeleteByQueryResponse indexDeleteByQueryResponse : deleteByQueryResponse) { + assertThat(indexDeleteByQueryResponse.getIndex(), equalTo("test")); + assertThat(indexDeleteByQueryResponse.getFailures().length, equalTo(0)); + } + + refresh(); + searchResponse = client().prepareSearch("test").get(); + assertNoFailures(searchResponse); + assertThat(searchResponse.getHits().totalHits(), equalTo(1l)); + } + private static String indexOrAlias() { return randomBoolean() ? "test" : "alias"; } diff --git a/src/test/java/org/elasticsearch/document/DocumentActionsTests.java b/src/test/java/org/elasticsearch/document/DocumentActionsTests.java index 830bf94146a..f88be7850c6 100644 --- a/src/test/java/org/elasticsearch/document/DocumentActionsTests.java +++ b/src/test/java/org/elasticsearch/document/DocumentActionsTests.java @@ -30,7 +30,9 @@ import org.elasticsearch.action.count.CountResponse; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.deletebyquery.DeleteByQueryResponse; import org.elasticsearch.action.get.GetResponse; +import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.index.IndexResponse; +import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.support.replication.ReplicationType; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; @@ -39,9 +41,11 @@ import org.junit.Test; import java.io.IOException; import java.util.Map; +import java.util.concurrent.ExecutionException; import static org.elasticsearch.client.Requests.*; import static org.elasticsearch.index.query.QueryBuilders.termQuery; +import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.nullValue; @@ -52,7 +56,6 @@ import static org.hamcrest.Matchers.nullValue; public class DocumentActionsTests extends ElasticsearchIntegrationTest { protected void createIndex() { - cluster().wipeIndices(getConcreteIndexName()); createIndex(getConcreteIndexName()); } @@ -267,6 +270,54 @@ public class DocumentActionsTests extends ElasticsearchIntegrationTest { } } + @Test + public void testDeleteRoutingRequired() throws ExecutionException, InterruptedException, IOException { + assertAcked(prepareCreate("test").addMapping("test", + XContentFactory.jsonBuilder().startObject().startObject("test").startObject("_routing").field("required", true).endObject().endObject().endObject())); + ensureGreen(); + + int numDocs = iterations(10, 50); + IndexRequestBuilder[] indexRequestBuilders = new IndexRequestBuilder[numDocs]; + for (int i = 0; i < numDocs - 2; i++) { + indexRequestBuilders[i] = client().prepareIndex("test", "test", Integer.toString(i)) + .setRouting(randomAsciiOfLength(randomIntBetween(1, 10))).setSource("field", "value"); + } + String firstDocId = Integer.toString(numDocs - 2); + indexRequestBuilders[numDocs - 2] = client().prepareIndex("test", "test", firstDocId) + .setRouting("routing").setSource("field", "value"); + String secondDocId = Integer.toString(numDocs - 1); + String secondRouting = randomAsciiOfLength(randomIntBetween(1, 10)); + indexRequestBuilders[numDocs - 1] = client().prepareIndex("test", "test", secondDocId) + .setRouting(secondRouting).setSource("field", "value"); + + indexRandom(true, indexRequestBuilders); + + SearchResponse searchResponse = client().prepareSearch("test").get(); + assertNoFailures(searchResponse); + assertThat(searchResponse.getHits().totalHits(), equalTo((long) numDocs)); + + //use routing + DeleteResponse deleteResponse = client().prepareDelete("test", "test", firstDocId).setRouting("routing").get(); + assertThat(deleteResponse.isFound(), equalTo(true)); + GetResponse getResponse = client().prepareGet("test", "test", firstDocId).setRouting("routing").get(); + assertThat(getResponse.isExists(), equalTo(false)); + refresh(); + searchResponse = client().prepareSearch("test").get(); + assertNoFailures(searchResponse); + assertThat(searchResponse.getHits().totalHits(), equalTo((long) numDocs - 1)); + + //don't use routing and trigger a broadcast delete + deleteResponse = client().prepareDelete("test", "test", secondDocId).get(); + assertThat(deleteResponse.isFound(), equalTo(true)); + + getResponse = client().prepareGet("test", "test", secondDocId).setRouting(secondRouting).get(); + assertThat(getResponse.isExists(), equalTo(false)); + refresh(); + searchResponse = client().prepareSearch("test").setSize(numDocs).get(); + assertNoFailures(searchResponse); + assertThat(searchResponse.getHits().totalHits(), equalTo((long) numDocs - 2)); + } + private XContentBuilder source(String id, String nameValue) throws IOException { return XContentFactory.jsonBuilder().startObject().startObject("type1").field("id", id).field("name", nameValue).endObject().endObject(); }