Skip to content

Commit

Permalink
Making SearchRequest in PutWarmerRequest mandatory & validated
Browse files Browse the repository at this point in the history
The search request inside of a put warmer request was nullable, but actually we have to have that request in the transport action.
Validation and appropriate test added.

Closes #4196
  • Loading branch information
spinscale committed Nov 19, 2013
1 parent 6acf519 commit 7ee9d29
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
Expand Up @@ -24,7 +24,6 @@
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.support.master.AcknowledgedRequest;
import org.elasticsearch.common.Nullable;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;

Expand Down Expand Up @@ -81,14 +80,18 @@ public PutWarmerRequest searchRequest(SearchRequestBuilder searchRequest) {
return this;
}

@Nullable
SearchRequest searchRequest() {
return this.searchRequest;
}

@Override
public ActionRequestValidationException validate() {
ActionRequestValidationException validationException = searchRequest.validate();
ActionRequestValidationException validationException = null;
if (searchRequest == null) {
validationException = addValidationError("search request is missing", validationException);
} else {
validationException = searchRequest.validate();
}
if (name == null) {
validationException = addValidationError("name is missing", validationException);
}
Expand Down
Expand Up @@ -19,6 +19,7 @@
package org.elasticsearch.action.admin.indices.warmer.put;

import org.elasticsearch.Version;
import org.elasticsearch.action.ActionRequestValidationException;
import org.elasticsearch.common.io.stream.InputStreamStreamInput;
import org.elasticsearch.common.io.stream.OutputStreamStreamOutput;
import org.elasticsearch.common.unit.TimeValue;
Expand All @@ -28,7 +29,10 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;

public class PutWarmerRequestTests extends ElasticsearchTestCase {

Expand Down Expand Up @@ -73,4 +77,12 @@ public void testPutWarmerTimeoutBwComp_Post0906Format() throws Exception {
//timeout is default as we don't read it from the received buffer
assertThat(inRequest.timeout().millis(), equalTo(outRequest.timeout().millis()));
}

@Test // issue 4196
public void testThatValidationWithoutSpecifyingSearchRequestFails() {
PutWarmerRequest putWarmerRequest = new PutWarmerRequest("foo");
ActionRequestValidationException validationException = putWarmerRequest.validate();
assertThat(validationException.validationErrors(), hasSize(1));
assertThat(validationException.getMessage(), containsString("search request is missing"));
}
}

0 comments on commit 7ee9d29

Please sign in to comment.