51
51
import org .elasticsearch .transport .TransportStats ;
52
52
53
53
import java .io .IOException ;
54
- import java .net .UnknownHostException ;
55
54
import java .util .ArrayList ;
56
55
import java .util .Collection ;
57
56
import java .util .Collections ;
66
65
67
66
import static org .apache .lucene .util .LuceneTestCase .rarely ;
68
67
69
- /** A transport class that doesn't send anything but rather captures all requests for inspection from tests */
68
+ /**
69
+ * A transport class that doesn't send anything but rather captures all requests for inspection from tests
70
+ */
70
71
public class CapturingTransport implements Transport {
71
72
72
73
private volatile Map <String , RequestHandlerRegistry > requestHandlers = Collections .emptyMap ();
73
- final Object requestHandlerMutex = new Object ();
74
+ private final Object requestHandlerMutex = new Object ();
74
75
private final ResponseHandlers responseHandlers = new ResponseHandlers ();
75
76
private TransportMessageListener listener ;
76
77
@@ -80,7 +81,7 @@ public static class CapturedRequest {
80
81
public final String action ;
81
82
public final TransportRequest request ;
82
83
83
- public CapturedRequest (DiscoveryNode node , long requestId , String action , TransportRequest request ) {
84
+ CapturedRequest (DiscoveryNode node , long requestId , String action , TransportRequest request ) {
84
85
this .node = node ;
85
86
this .requestId = requestId ;
86
87
this .action = action ;
@@ -96,41 +97,15 @@ public TransportService createCapturingTransportService(Settings settings, Threa
96
97
@ Nullable ClusterSettings clusterSettings , Set <String > taskHeaders ) {
97
98
StubbableConnectionManager connectionManager = new StubbableConnectionManager (new ConnectionManager (settings , this , threadPool ),
98
99
settings , this , threadPool );
99
- connectionManager .setDefaultNodeConnectedBehavior ((cm , discoveryNode ) -> true );
100
- connectionManager .setDefaultConnectBehavior ((cm , discoveryNode ) -> new Connection () {
101
- @ Override
102
- public DiscoveryNode getNode () {
103
- return discoveryNode ;
104
- }
105
-
106
- @ Override
107
- public void sendRequest (long requestId , String action , TransportRequest request , TransportRequestOptions options )
108
- throws TransportException {
109
- requests .put (requestId , Tuple .tuple (discoveryNode , action ));
110
- capturedRequests .add (new CapturedRequest (discoveryNode , requestId , action , request ));
111
- }
112
-
113
- @ Override
114
- public void addCloseListener (ActionListener <Void > listener ) {
115
-
116
- }
117
-
118
- @ Override
119
- public boolean isClosed () {
120
- return false ;
121
- }
122
-
123
- @ Override
124
- public void close () {
125
-
126
- }
127
- });
100
+ connectionManager .setDefaultNodeConnectedBehavior ((cm , discoveryNode ) -> nodeConnected (discoveryNode ));
101
+ connectionManager .setDefaultConnectBehavior ((cm , discoveryNode ) -> openConnection (discoveryNode , null ));
128
102
return new TransportService (settings , this , threadPool , interceptor , localNodeFactory , clusterSettings , taskHeaders ,
129
103
connectionManager );
130
-
131
104
}
132
105
133
- /** returns all requests captured so far. Doesn't clear the captured request list. See {@link #clear()} */
106
+ /**
107
+ * returns all requests captured so far. Doesn't clear the captured request list. See {@link #clear()}
108
+ */
134
109
public CapturedRequest [] capturedRequests () {
135
110
return capturedRequests .toArray (new CapturedRequest [0 ]);
136
111
}
@@ -178,12 +153,16 @@ public Map<String, List<CapturedRequest>> getCapturedRequestsByTargetNodeAndClea
178
153
return groupRequestsByTargetNode (requests );
179
154
}
180
155
181
- /** clears captured requests */
156
+ /**
157
+ * clears captured requests
158
+ */
182
159
public void clear () {
183
160
capturedRequests .clear ();
184
161
}
185
162
186
- /** simulate a response for the given requestId */
163
+ /**
164
+ * simulate a response for the given requestId
165
+ */
187
166
public void handleResponse (final long requestId , final TransportResponse response ) {
188
167
responseHandlers .onResponseReceived (requestId , listener ).handleResponse (response );
189
168
}
@@ -194,7 +173,7 @@ public void handleResponse(final long requestId, final TransportResponse respons
194
173
*
195
174
* @param requestId the id corresponding to the captured send
196
175
* request
197
- * @param t the failure to wrap
176
+ * @param t the failure to wrap
198
177
*/
199
178
public void handleLocalError (final long requestId , final Throwable t ) {
200
179
Tuple <DiscoveryNode , String > request = requests .get (requestId );
@@ -208,7 +187,7 @@ public void handleLocalError(final long requestId, final Throwable t) {
208
187
*
209
188
* @param requestId the id corresponding to the captured send
210
189
* request
211
- * @param t the failure to wrap
190
+ * @param t the failure to wrap
212
191
*/
213
192
public void handleRemoteError (final long requestId , final Throwable t ) {
214
193
final RemoteTransportException remoteException ;
@@ -234,7 +213,7 @@ public void handleRemoteError(final long requestId, final Throwable t) {
234
213
*
235
214
* @param requestId the id corresponding to the captured send
236
215
* request
237
- * @param e the failure
216
+ * @param e the failure
238
217
*/
239
218
public void handleError (final long requestId , final TransportException e ) {
240
219
responseHandlers .onResponseReceived (requestId , listener ).handleException (e );
@@ -251,13 +230,11 @@ public DiscoveryNode getNode() {
251
230
@ Override
252
231
public void sendRequest (long requestId , String action , TransportRequest request , TransportRequestOptions options )
253
232
throws TransportException {
254
- requests .put (requestId , Tuple .tuple (node , action ));
255
- capturedRequests .add (new CapturedRequest (node , requestId , action , request ));
233
+ onSendRequest (requestId , action , request , node );
256
234
}
257
235
258
236
@ Override
259
237
public void addCloseListener (ActionListener <Void > listener ) {
260
-
261
238
}
262
239
263
240
@ Override
@@ -267,11 +244,19 @@ public boolean isClosed() {
267
244
268
245
@ Override
269
246
public void close () {
270
-
271
247
}
272
248
};
273
249
}
274
250
251
+ protected void onSendRequest (long requestId , String action , TransportRequest request , DiscoveryNode node ) {
252
+ requests .put (requestId , Tuple .tuple (node , action ));
253
+ capturedRequests .add (new CapturedRequest (node , requestId , action , request ));
254
+ }
255
+
256
+ protected boolean nodeConnected (DiscoveryNode discoveryNode ) {
257
+ return true ;
258
+ }
259
+
275
260
@ Override
276
261
public TransportStats getStats () {
277
262
throw new UnsupportedOperationException ();
@@ -288,7 +273,7 @@ public Map<String, BoundTransportAddress> profileBoundAddresses() {
288
273
}
289
274
290
275
@ Override
291
- public TransportAddress [] addressesFromString (String address , int perAddressLimit ) throws UnknownHostException {
276
+ public TransportAddress [] addressesFromString (String address , int perAddressLimit ) {
292
277
return new TransportAddress [0 ];
293
278
}
294
279
@@ -299,22 +284,23 @@ public Lifecycle.State lifecycleState() {
299
284
300
285
@ Override
301
286
public void addLifecycleListener (LifecycleListener listener ) {
302
-
303
287
}
304
288
305
289
@ Override
306
290
public void removeLifecycleListener (LifecycleListener listener ) {
307
-
308
291
}
309
292
310
293
@ Override
311
- public void start () {}
294
+ public void start () {
295
+ }
312
296
313
297
@ Override
314
- public void stop () {}
298
+ public void stop () {
299
+ }
315
300
316
301
@ Override
317
- public void close () {}
302
+ public void close () {
303
+ }
318
304
319
305
@ Override
320
306
public List <String > getLocalAddresses () {
@@ -330,6 +316,7 @@ public <Request extends TransportRequest> void registerRequestHandler(RequestHan
330
316
requestHandlers = MapBuilder .newMapBuilder (requestHandlers ).put (reg .getAction (), reg ).immutableMap ();
331
317
}
332
318
}
319
+
333
320
@ Override
334
321
public ResponseHandlers getResponseHandlers () {
335
322
return responseHandlers ;
0 commit comments