/* * Licensed to Elasticsearch under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Elasticsearch licenses this file to you under * the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.elasticsearch.action.percolate; import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.common.collect.MapBuilder; import org.elasticsearch.test.StreamsUtils; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.test.ESTestCase; import org.junit.Test; import java.util.Map; import static org.hamcrest.Matchers.*; /** */ public class MultiPercolatorRequestTests extends ESTestCase { @Test public void testParseBulkRequests() throws Exception { byte[] data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/percolate/mpercolate1.json"); MultiPercolateRequest request = new MultiPercolateRequest().add(data, 0, data.length); assertThat(request.requests().size(), equalTo(8)); PercolateRequest percolateRequest = request.requests().get(0); assertThat(percolateRequest.indices()[0], equalTo("my-index1")); assertThat(percolateRequest.documentType(), equalTo("my-type1")); assertThat(percolateRequest.routing(), equalTo("my-routing-1")); assertThat(percolateRequest.preference(), equalTo("_local")); assertThat(percolateRequest.indicesOptions(), equalTo(IndicesOptions.strictExpandOpenAndForbidClosed())); assertThat(percolateRequest.onlyCount(), equalTo(false)); assertThat(percolateRequest.getRequest(), nullValue()); assertThat(percolateRequest.source(), notNullValue()); Map sourceMap = XContentFactory.xContent(percolateRequest.source()).createParser(percolateRequest.source()).map(); assertThat(sourceMap.get("doc"), equalTo((Object) MapBuilder.newMapBuilder().put("field1", "value1").map())); percolateRequest = request.requests().get(1); assertThat(percolateRequest.indices()[0], equalTo("my-index2")); assertThat(percolateRequest.indices()[1], equalTo("my-index3")); assertThat(percolateRequest.documentType(), equalTo("my-type1")); assertThat(percolateRequest.routing(), equalTo("my-routing-1")); assertThat(percolateRequest.preference(), equalTo("_local")); assertThat(percolateRequest.indicesOptions(), equalTo(IndicesOptions.fromOptions(true, true, true, false, IndicesOptions.strictExpandOpenAndForbidClosed()))); assertThat(percolateRequest.onlyCount(), equalTo(false)); assertThat(percolateRequest.getRequest(), nullValue()); assertThat(percolateRequest.source(), notNullValue()); sourceMap = XContentFactory.xContent(percolateRequest.source()).createParser(percolateRequest.source()).map(); assertThat(sourceMap.get("doc"), equalTo((Object) MapBuilder.newMapBuilder().put("field1", "value2").map())); percolateRequest = request.requests().get(2); assertThat(percolateRequest.indices()[0], equalTo("my-index4")); assertThat(percolateRequest.indices()[1], equalTo("my-index5")); assertThat(percolateRequest.documentType(), equalTo("my-type1")); assertThat(percolateRequest.routing(), equalTo("my-routing-1")); assertThat(percolateRequest.preference(), equalTo("_local")); assertThat(percolateRequest.indicesOptions(), equalTo(IndicesOptions.fromOptions(false, true, true, true, IndicesOptions.strictExpandOpenAndForbidClosed()))); assertThat(percolateRequest.onlyCount(), equalTo(true)); assertThat(percolateRequest.getRequest(), nullValue()); assertThat(percolateRequest.source(), notNullValue()); sourceMap = XContentFactory.xContent(percolateRequest.source()).createParser(percolateRequest.source()).map(); assertThat(sourceMap.get("doc"), equalTo((Object) MapBuilder.newMapBuilder().put("field1", "value3").map())); percolateRequest = request.requests().get(3); assertThat(percolateRequest.indices()[0], equalTo("my-index6")); assertThat(percolateRequest.documentType(), equalTo("my-type1")); assertThat(percolateRequest.routing(), equalTo("my-routing-1")); assertThat(percolateRequest.preference(), equalTo("_local")); assertThat(percolateRequest.indicesOptions(), equalTo(IndicesOptions.fromOptions(false, true, true, true, IndicesOptions.strictExpandOpenAndForbidClosed()))); assertThat(percolateRequest.onlyCount(), equalTo(false)); assertThat(percolateRequest.getRequest(), notNullValue()); assertThat(percolateRequest.getRequest().id(), equalTo("1")); assertThat(percolateRequest.getRequest().type(), equalTo("my-type1")); assertThat(percolateRequest.getRequest().index(), equalTo("my-index6")); assertThat(percolateRequest.getRequest().routing(), equalTo("my-routing-1")); assertThat(percolateRequest.getRequest().preference(), equalTo("_local")); percolateRequest = request.requests().get(4); assertThat(percolateRequest.indices()[0], equalTo("my-index7")); assertThat(percolateRequest.documentType(), equalTo("my-type1")); assertThat(percolateRequest.routing(), equalTo("my-routing-1")); assertThat(percolateRequest.preference(), equalTo("_local")); assertThat(percolateRequest.indicesOptions(), equalTo(IndicesOptions.strictExpandOpenAndForbidClosed())); assertThat(percolateRequest.onlyCount(), equalTo(true)); assertThat(percolateRequest.getRequest(), notNullValue()); assertThat(percolateRequest.getRequest().id(), equalTo("2")); assertThat(percolateRequest.getRequest().type(), equalTo("my-type1")); assertThat(percolateRequest.getRequest().index(), equalTo("my-index7")); assertThat(percolateRequest.getRequest().routing(), equalTo("my-routing-1")); assertThat(percolateRequest.getRequest().preference(), equalTo("_local")); percolateRequest = request.requests().get(5); assertThat(percolateRequest.indices()[0], equalTo("my-index8")); assertThat(percolateRequest.documentType(), equalTo("my-type1")); assertThat(percolateRequest.routing(), equalTo("my-routing-1")); assertThat(percolateRequest.preference(), equalTo("primary")); assertThat(percolateRequest.indicesOptions(), equalTo(IndicesOptions.strictExpandOpenAndForbidClosed())); assertThat(percolateRequest.onlyCount(), equalTo(false)); assertThat(percolateRequest.getRequest(), nullValue()); assertThat(percolateRequest.source(), notNullValue()); sourceMap = XContentFactory.xContent(percolateRequest.source()).createParser(percolateRequest.source()).map(); assertThat(sourceMap.get("doc"), equalTo((Object) MapBuilder.newMapBuilder().put("field1", "value4").map())); percolateRequest = request.requests().get(6); assertThat(percolateRequest.indices()[0], equalTo("percolate-index1")); assertThat(percolateRequest.documentType(), equalTo("other-type")); assertThat(percolateRequest.routing(), equalTo("percolate-routing-1")); assertThat(percolateRequest.preference(), equalTo("_local")); assertThat(percolateRequest.getRequest(), notNullValue()); assertThat(percolateRequest.getRequest().indices()[0], equalTo("my-index9")); assertThat(percolateRequest.getRequest().type(), equalTo("my-type1")); assertThat(percolateRequest.getRequest().routing(), nullValue()); assertThat(percolateRequest.getRequest().preference(), nullValue()); assertThat(percolateRequest.indicesOptions(), equalTo(IndicesOptions.strictExpandOpenAndForbidClosed())); assertThat(percolateRequest.onlyCount(), equalTo(false)); assertThat(percolateRequest.source(), notNullValue()); sourceMap = XContentFactory.xContent(percolateRequest.source()).createParser(percolateRequest.source()).map(); assertThat(sourceMap.get("doc"), nullValue()); percolateRequest = request.requests().get(7); assertThat(percolateRequest.indices()[0], equalTo("my-index10")); assertThat(percolateRequest.documentType(), equalTo("my-type1")); assertThat(percolateRequest.routing(), nullValue()); assertThat(percolateRequest.preference(), nullValue()); assertThat(percolateRequest.getRequest(), notNullValue()); assertThat(percolateRequest.getRequest().indices()[0], equalTo("my-index10")); assertThat(percolateRequest.getRequest().type(), equalTo("my-type1")); assertThat(percolateRequest.getRequest().routing(), nullValue()); assertThat(percolateRequest.getRequest().preference(), nullValue()); assertThat(percolateRequest.indicesOptions(), equalTo(IndicesOptions.fromOptions(false, false, true, false, IndicesOptions.strictExpandOpenAndForbidClosed()))); assertThat(percolateRequest.onlyCount(), equalTo(false)); assertThat(percolateRequest.source(), notNullValue()); sourceMap = XContentFactory.xContent(percolateRequest.source()).createParser(percolateRequest.source()).map(); assertThat(sourceMap.get("doc"), nullValue()); } @Test public void testParseBulkRequests_defaults() throws Exception { byte[] data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/percolate/mpercolate2.json"); MultiPercolateRequest request = new MultiPercolateRequest(); request.indices("my-index1").documentType("my-type1").indicesOptions(IndicesOptions.lenientExpandOpen()); request.add(data, 0, data.length); assertThat(request.requests().size(), equalTo(3)); PercolateRequest percolateRequest = request.requests().get(0); assertThat(percolateRequest.indices()[0], equalTo("my-index1")); assertThat(percolateRequest.documentType(), equalTo("my-type1")); assertThat(percolateRequest.routing(), equalTo("my-routing-1")); assertThat(percolateRequest.preference(), equalTo("_local")); assertThat(percolateRequest.indicesOptions(), equalTo(IndicesOptions.lenientExpandOpen())); assertThat(percolateRequest.onlyCount(), equalTo(false)); assertThat(percolateRequest.getRequest(), nullValue()); assertThat(percolateRequest.source(), notNullValue()); Map sourceMap = XContentFactory.xContent(percolateRequest.source()).createParser(percolateRequest.source()).map(); assertThat(sourceMap.get("doc"), equalTo((Object) MapBuilder.newMapBuilder().put("field1", "value1").map())); percolateRequest = request.requests().get(1); assertThat(percolateRequest.indices()[0], equalTo("my-index1")); assertThat(percolateRequest.documentType(), equalTo("my-type1")); assertThat(percolateRequest.routing(), equalTo("my-routing-1")); assertThat(percolateRequest.preference(), equalTo("_local")); assertThat(percolateRequest.indicesOptions(), equalTo(IndicesOptions.lenientExpandOpen())); assertThat(percolateRequest.onlyCount(), equalTo(false)); assertThat(percolateRequest.getRequest(), nullValue()); assertThat(percolateRequest.source(), notNullValue()); sourceMap = XContentFactory.xContent(percolateRequest.source()).createParser(percolateRequest.source()).map(); assertThat(sourceMap.get("doc"), equalTo((Object) MapBuilder.newMapBuilder().put("field1", "value2").map())); percolateRequest = request.requests().get(2); assertThat(percolateRequest.indices()[0], equalTo("my-index1")); assertThat(percolateRequest.documentType(), equalTo("my-type1")); assertThat(percolateRequest.indicesOptions(), equalTo(IndicesOptions.lenientExpandOpen())); assertThat(percolateRequest.onlyCount(), equalTo(false)); assertThat(percolateRequest.getRequest(), nullValue()); assertThat(percolateRequest.source(), notNullValue()); sourceMap = XContentFactory.xContent(percolateRequest.source()).createParser(percolateRequest.source()).map(); assertThat(sourceMap.get("doc"), equalTo((Object) MapBuilder.newMapBuilder().put("field1", "value3").map())); } }