19
19
20
20
package org .elasticsearch .search ;
21
21
22
+ import org .elasticsearch .Version ;
22
23
import org .elasticsearch .action .ActionRequestValidationException ;
23
24
import org .elasticsearch .action .search .SearchRequest ;
24
25
import org .elasticsearch .action .search .SearchType ;
25
26
import 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 ;
29
27
import org .elasticsearch .common .unit .TimeValue ;
30
28
import org .elasticsearch .common .util .ArrayUtils ;
31
29
import org .elasticsearch .index .query .QueryBuilders ;
32
30
import org .elasticsearch .search .builder .SearchSourceBuilder ;
33
31
import org .elasticsearch .search .rescore .QueryRescorerBuilder ;
32
+ import org .elasticsearch .test .ESTestCase ;
34
33
35
34
import java .io .IOException ;
36
35
import java .util .ArrayList ;
@@ -42,16 +41,10 @@ public class SearchRequestTests extends AbstractSearchTestCase {
42
41
43
42
public void testSerialization () throws Exception {
44
43
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 );
55
48
}
56
49
57
50
public void testIllegalArguments () {
@@ -139,11 +132,19 @@ public void testValidate() throws IOException {
139
132
140
133
}
141
134
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
+
142
143
public void testEqualsAndHashcode () throws IOException {
143
144
checkEqualsAndHashCode (createSearchRequest (), SearchRequestTests ::copyRequest , this ::mutate );
144
145
}
145
146
146
- private SearchRequest mutate (SearchRequest searchRequest ) throws IOException {
147
+ private SearchRequest mutate (SearchRequest searchRequest ) {
147
148
SearchRequest mutation = copyRequest (searchRequest );
148
149
List <Runnable > mutators = new ArrayList <>();
149
150
mutators .add (() -> mutation .indices (ArrayUtils .concat (searchRequest .indices (), new String [] { randomAlphaOfLength (10 ) })));
@@ -152,7 +153,7 @@ private SearchRequest mutate(SearchRequest searchRequest) throws IOException {
152
153
mutators .add (() -> mutation .types (ArrayUtils .concat (searchRequest .types (), new String [] { randomAlphaOfLength (10 ) })));
153
154
mutators .add (() -> mutation .preference (randomValueOtherThan (searchRequest .preference (), () -> randomAlphaOfLengthBetween (3 , 10 ))));
154
155
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 ))));
156
157
mutators .add (() -> mutation
157
158
.scroll (randomValueOtherThan (searchRequest .scroll (), () -> new Scroll (new TimeValue (randomNonNegativeLong () % 100000 )))));
158
159
mutators .add (() -> mutation .searchType (randomValueOtherThan (searchRequest .searchType (),
@@ -162,20 +163,7 @@ private SearchRequest mutate(SearchRequest searchRequest) throws IOException {
162
163
return mutation ;
163
164
}
164
165
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 );
180
168
}
181
169
}
0 commit comments