summaryrefslogtreecommitdiff
path: root/core/src/test/java/org/elasticsearch/action/ingest
diff options
context:
space:
mode:
authorDavid Pilato <david@pilato.fr>2016-07-28 13:28:24 +0200
committerDavid Pilato <david@pilato.fr>2016-07-28 13:28:24 +0200
commitd406b88857a299f7995ac829abf17020d2353069 (patch)
treedbc5bfd2e02cb136a90cdbd577ad616bc328f5ce /core/src/test/java/org/elasticsearch/action/ingest
parent9fa33b6d0714bec9eb7f7889d07673ff1dd261f3 (diff)
Fix NPE when simulating a pipeline with no id
When you simulate a pipeline without specifying an id against a node where the request is redirected to a master node, the request and the response is throwing a NPE: ``` java.lang.NullPointerException at __randomizedtesting.SeedInfo.seed([3B9536AC6AA23C06:DD62280CF765DA1F]:0) at org.elasticsearch.common.io.stream.StreamOutput.writeString(StreamOutput.java:300) at org.elasticsearch.action.ingest.SimulatePipelineRequest.writeTo(SimulatePipelineRequest.java:92) at org.elasticsearch.transport.local.LocalTransport.sendRequest(LocalTransport.java:222) at org.elasticsearch.test.transport.AssertingLocalTransport.sendRequest(AssertingLocalTransport.java:95) at org.elasticsearch.transport.TransportService.sendRequest(TransportService.java:470) at org.elasticsearch.action.TransportActionNodeProxy.execute(TransportActionNodeProxy.java:51) at org.elasticsearch.client.transport.support.TransportProxyClient.lambda$execute$441(TransportProxyClient.java:63) at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:233) at org.elasticsearch.client.transport.support.TransportProxyClient.execute(TransportProxyClient.java:63) at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:309) at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:403) at org.elasticsearch.client.FilterClient.doExecute(FilterClient.java:67) at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:403) at org.elasticsearch.client.support.AbstractClient$ClusterAdmin.execute(AbstractClient.java:710) at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80) at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54) at org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:62) at org.elasticsearch.ingest.bano.BanoProcessorIntegrationTest.testSimulateProcessorConfigTarget(BanoProcessorIntegrationTest.java:139) ``` This patch fixes this and adds some random tests.
Diffstat (limited to 'core/src/test/java/org/elasticsearch/action/ingest')
-rw-r--r--core/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineRequestTests.java63
-rw-r--r--core/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineResponseTests.java3
2 files changed, 65 insertions, 1 deletions
diff --git a/core/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineRequestTests.java b/core/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineRequestTests.java
new file mode 100644
index 0000000000..2c2506308a
--- /dev/null
+++ b/core/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineRequestTests.java
@@ -0,0 +1,63 @@
+/*
+ * 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.ingest;
+
+import org.elasticsearch.common.bytes.BytesArray;
+import org.elasticsearch.common.bytes.BytesReference;
+import org.elasticsearch.common.io.stream.BytesStreamOutput;
+import org.elasticsearch.common.io.stream.StreamInput;
+import org.elasticsearch.ingest.IngestDocument;
+import org.elasticsearch.ingest.RandomDocumentPicks;
+import org.elasticsearch.test.ESTestCase;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import static org.elasticsearch.ingest.IngestDocumentTests.assertIngestDocument;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.nullValue;
+
+public class SimulatePipelineRequestTests extends ESTestCase {
+
+ public void testSerialization() throws IOException {
+ SimulatePipelineRequest request = new SimulatePipelineRequest(new BytesArray(""));
+ // Sometimes we set an id
+ if (randomBoolean()) {
+ request.setId(randomAsciiOfLengthBetween(1, 10));
+ }
+
+ // Sometimes we explicitly set a boolean (with whatever value)
+ if (randomBoolean()) {
+ request.setVerbose(randomBoolean());
+ }
+
+ BytesStreamOutput out = new BytesStreamOutput();
+ request.writeTo(out);
+ StreamInput streamInput = out.bytes().streamInput();
+ SimulatePipelineRequest otherRequest = new SimulatePipelineRequest();
+ otherRequest.readFrom(streamInput);
+
+ assertThat(otherRequest.getId(), equalTo(request.getId()));
+ assertThat(otherRequest.isVerbose(), equalTo(request.isVerbose()));
+ }
+}
diff --git a/core/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineResponseTests.java b/core/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineResponseTests.java
index 576e8e0172..485dc8934c 100644
--- a/core/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineResponseTests.java
+++ b/core/src/test/java/org/elasticsearch/action/ingest/SimulatePipelineResponseTests.java
@@ -39,6 +39,7 @@ public class SimulatePipelineResponseTests extends ESTestCase {
public void testSerialization() throws IOException {
boolean isVerbose = randomBoolean();
+ String id = randomBoolean() ? randomAsciiOfLengthBetween(1, 10) : null;
int numResults = randomIntBetween(1, 10);
List<SimulateDocumentResult> results = new ArrayList<>(numResults);
for (int i = 0; i < numResults; i++) {
@@ -70,7 +71,7 @@ public class SimulatePipelineResponseTests extends ESTestCase {
}
}
- SimulatePipelineResponse response = new SimulatePipelineResponse(randomAsciiOfLengthBetween(1, 10), isVerbose, results);
+ SimulatePipelineResponse response = new SimulatePipelineResponse(id, isVerbose, results);
BytesStreamOutput out = new BytesStreamOutput();
response.writeTo(out);
StreamInput streamInput = out.bytes().streamInput();