1919
2020package org .elasticsearch .search ;
2121
22+ import org .elasticsearch .Version ;
2223import org .elasticsearch .action .ActionRequestValidationException ;
2324import org .elasticsearch .action .search .SearchRequest ;
2425import org .elasticsearch .action .search .SearchType ;
2526import org .elasticsearch .action .support .IndicesOptions ;
26- import org .elasticsearch .common .io .stream .BytesStreamOutput ;
27- import org .elasticsearch .common .io .stream .NamedWriteableAwareStreamInput ;
28- import org .elasticsearch .common .io .stream .StreamInput ;
2927import org .elasticsearch .common .unit .TimeValue ;
3028import org .elasticsearch .common .util .ArrayUtils ;
3129import org .elasticsearch .index .query .QueryBuilders ;
3230import org .elasticsearch .search .builder .SearchSourceBuilder ;
3331import org .elasticsearch .search .rescore .QueryRescorerBuilder ;
32+ import org .elasticsearch .test .ESTestCase ;
3433
3534import java .io .IOException ;
3635import java .util .ArrayList ;
@@ -42,16 +41,10 @@ public class SearchRequestTests extends AbstractSearchTestCase {
4241
4342 public void testSerialization () throws Exception {
4443 SearchRequest searchRequest = createSearchRequest ();
45- try (BytesStreamOutput output = new BytesStreamOutput ()) {
46- searchRequest .writeTo (output );
47- try (StreamInput in = new NamedWriteableAwareStreamInput (output .bytes ().streamInput (), namedWriteableRegistry )) {
48- SearchRequest deserializedRequest = new SearchRequest ();
49- deserializedRequest .readFrom (in );
50- assertEquals (deserializedRequest , searchRequest );
51- assertEquals (deserializedRequest .hashCode (), searchRequest .hashCode ());
52- assertNotSame (deserializedRequest , searchRequest );
53- }
54- }
44+ SearchRequest deserializedRequest = copyStreamable (searchRequest , namedWriteableRegistry , SearchRequest ::new , Version .CURRENT );
45+ assertEquals (deserializedRequest , searchRequest );
46+ assertEquals (deserializedRequest .hashCode (), searchRequest .hashCode ());
47+ assertNotSame (deserializedRequest , searchRequest );
5548 }
5649
5750 public void testIllegalArguments () {
@@ -139,11 +132,19 @@ public void testValidate() throws IOException {
139132
140133 }
141134
135+ public void testCopyConstructor () throws IOException {
136+ SearchRequest searchRequest = createSearchRequest ();
137+ SearchRequest deserializedRequest = copyStreamable (searchRequest , namedWriteableRegistry , SearchRequest ::new , Version .CURRENT );
138+ assertEquals (deserializedRequest , searchRequest );
139+ assertEquals (deserializedRequest .hashCode (), searchRequest .hashCode ());
140+ assertNotSame (deserializedRequest , searchRequest );
141+ }
142+
142143 public void testEqualsAndHashcode () throws IOException {
143144 checkEqualsAndHashCode (createSearchRequest (), SearchRequestTests ::copyRequest , this ::mutate );
144145 }
145146
146- private SearchRequest mutate (SearchRequest searchRequest ) throws IOException {
147+ private SearchRequest mutate (SearchRequest searchRequest ) {
147148 SearchRequest mutation = copyRequest (searchRequest );
148149 List <Runnable > mutators = new ArrayList <>();
149150 mutators .add (() -> mutation .indices (ArrayUtils .concat (searchRequest .indices (), new String [] { randomAlphaOfLength (10 ) })));
@@ -152,7 +153,7 @@ private SearchRequest mutate(SearchRequest searchRequest) throws IOException {
152153 mutators .add (() -> mutation .types (ArrayUtils .concat (searchRequest .types (), new String [] { randomAlphaOfLength (10 ) })));
153154 mutators .add (() -> mutation .preference (randomValueOtherThan (searchRequest .preference (), () -> randomAlphaOfLengthBetween (3 , 10 ))));
154155 mutators .add (() -> mutation .routing (randomValueOtherThan (searchRequest .routing (), () -> randomAlphaOfLengthBetween (3 , 10 ))));
155- mutators .add (() -> mutation .requestCache ((randomValueOtherThan (searchRequest .requestCache (), () -> randomBoolean () ))));
156+ mutators .add (() -> mutation .requestCache ((randomValueOtherThan (searchRequest .requestCache (), ESTestCase :: randomBoolean ))));
156157 mutators .add (() -> mutation
157158 .scroll (randomValueOtherThan (searchRequest .scroll (), () -> new Scroll (new TimeValue (randomNonNegativeLong () % 100000 )))));
158159 mutators .add (() -> mutation .searchType (randomValueOtherThan (searchRequest .searchType (),
@@ -162,20 +163,7 @@ private SearchRequest mutate(SearchRequest searchRequest) throws IOException {
162163 return mutation ;
163164 }
164165
165- private static SearchRequest copyRequest (SearchRequest searchRequest ) throws IOException {
166- SearchRequest result = new SearchRequest ();
167- result .indices (searchRequest .indices ());
168- result .indicesOptions (searchRequest .indicesOptions ());
169- result .types (searchRequest .types ());
170- result .searchType (searchRequest .searchType ());
171- result .preference (searchRequest .preference ());
172- result .routing (searchRequest .routing ());
173- result .requestCache (searchRequest .requestCache ());
174- result .allowPartialSearchResults (searchRequest .allowPartialSearchResults ());
175- result .scroll (searchRequest .scroll ());
176- if (searchRequest .source () != null ) {
177- result .source (searchRequest .source ());
178- }
179- return result ;
166+ private static SearchRequest copyRequest (SearchRequest searchRequest ) {
167+ return new SearchRequest (searchRequest );
180168 }
181169}
0 commit comments