@@ -253,10 +253,7 @@ static RestClient twoClients(RestClient localClient, RestClient remoteClient) th
253253 return bulkClient .performRequest (request );
254254 } else {
255255 Request [] clones = cloneRequests (request , 2 );
256- Response resp1 = remoteClient .performRequest (clones [0 ]);
257- Response resp2 = localClient .performRequest (clones [1 ]);
258- assertEquals (resp1 .getStatusLine ().getStatusCode (), resp2 .getStatusLine ().getStatusCode ());
259- return resp2 ;
256+ return runInParallel (localClient , remoteClient , clones );
260257 }
261258 });
262259 doAnswer (invocation -> {
@@ -291,6 +288,44 @@ static Request[] cloneRequests(Request orig, int numClones) throws IOException {
291288 return clones ;
292289 }
293290
291+ /**
292+ * Run {@link #cloneRequests cloned} requests in parallel.
293+ */
294+ static Response runInParallel (RestClient localClient , RestClient remoteClient , Request [] clones ) throws Throwable {
295+ CompletableFuture <Response > remoteResponse = new CompletableFuture <>();
296+ CompletableFuture <Response > localResponse = new CompletableFuture <>();
297+ remoteClient .performRequestAsync (clones [0 ], new ResponseListener () {
298+ @ Override
299+ public void onSuccess (Response response ) {
300+ remoteResponse .complete (response );
301+ }
302+
303+ @ Override
304+ public void onFailure (Exception exception ) {
305+ remoteResponse .completeExceptionally (exception );
306+ }
307+ });
308+ localClient .performRequestAsync (clones [1 ], new ResponseListener () {
309+ @ Override
310+ public void onSuccess (Response response ) {
311+ localResponse .complete (response );
312+ }
313+
314+ @ Override
315+ public void onFailure (Exception exception ) {
316+ localResponse .completeExceptionally (exception );
317+ }
318+ });
319+ try {
320+ Response remote = remoteResponse .get ();
321+ Response local = localResponse .get ();
322+ assertEquals (remote .getStatusLine ().getStatusCode (), local .getStatusLine ().getStatusCode ());
323+ return local ;
324+ } catch (ExecutionException e ) {
325+ throw e .getCause ();
326+ }
327+ }
328+
294329 /**
295330 * Convert FROM employees ... => FROM *:employees,employees
296331 */
0 commit comments