|
@@ -39,6 +39,7 @@ import org.junit.Before;
|
|
|
import java.util.Collections;
|
|
|
import java.util.concurrent.atomic.AtomicLong;
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
+import java.util.function.BiConsumer;
|
|
|
import java.util.function.BiFunction;
|
|
|
|
|
|
/**
|
|
@@ -85,11 +86,11 @@ public abstract class RestActionTestCase extends ESTestCase {
|
|
|
* functions, and can be reset to allow reconfiguration partway through a test without having to construct a new object.
|
|
|
*
|
|
|
* By default, will throw {@link AssertionError} when any execution method is called, unless configured otherwise using
|
|
|
- * {@link #setExecuteVerifier(BiFunction)} or {@link #setExecuteLocallyVerifier(BiFunction)}.
|
|
|
+ * {@link #setExecuteVerifier} or {@link #setExecuteLocallyVerifier}.
|
|
|
*/
|
|
|
public static class VerifyingClient extends NoOpNodeClient {
|
|
|
- AtomicReference<BiFunction> executeVerifier = new AtomicReference<>();
|
|
|
- AtomicReference<BiFunction> executeLocallyVerifier = new AtomicReference<>();
|
|
|
+ AtomicReference<BiConsumer<ActionType<?>, ActionRequest>> executeVerifier = new AtomicReference<>();
|
|
|
+ AtomicReference<BiFunction<ActionType<?>, ActionRequest, ActionResponse>> executeLocallyVerifier = new AtomicReference<>();
|
|
|
|
|
|
public VerifyingClient(String testName) {
|
|
|
super(testName);
|
|
@@ -102,8 +103,8 @@ public abstract class RestActionTestCase extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Clears any previously set verifier functions set by {@link #setExecuteVerifier(BiFunction)} and/or
|
|
|
- * {@link #setExecuteLocallyVerifier(BiFunction)}. These functions are replaced with functions which will throw an
|
|
|
+ * Clears any previously set verifier functions set by {@link #setExecuteVerifier} and/or
|
|
|
+ * {@link #setExecuteLocallyVerifier}. These functions are replaced with functions which will throw an
|
|
|
* {@link AssertionError} if called.
|
|
|
*/
|
|
|
public void reset() {
|
|
@@ -120,15 +121,15 @@ public abstract class RestActionTestCase extends ESTestCase {
|
|
|
* function should return either a subclass of {@link ActionResponse} or {@code null}.
|
|
|
* @param verifier A function which is called in place of {@link #doExecute(ActionType, ActionRequest, ActionListener)}
|
|
|
*/
|
|
|
- public <Request extends ActionRequest, Response extends ActionResponse>
|
|
|
- void setExecuteVerifier(BiFunction<ActionType<Response>, Request, Void> verifier) {
|
|
|
+ public void setExecuteVerifier(BiConsumer<ActionType<?>, ActionRequest> verifier) {
|
|
|
executeVerifier.set(verifier);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public <Request extends ActionRequest, Response extends ActionResponse>
|
|
|
void doExecute(ActionType<Response> action, Request request, ActionListener<Response> listener) {
|
|
|
- listener.onResponse((Response) executeVerifier.get().apply(action, request));
|
|
|
+ executeVerifier.get().accept(action, request);
|
|
|
+ listener.onResponse(null);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -136,8 +137,7 @@ public abstract class RestActionTestCase extends ESTestCase {
|
|
|
* function should return either a subclass of {@link ActionResponse} or {@code null}.
|
|
|
* @param verifier A function which is called in place of {@link #executeLocally(ActionType, ActionRequest, TaskListener)}
|
|
|
*/
|
|
|
- public <Request extends ActionRequest, Response extends ActionResponse>
|
|
|
- void setExecuteLocallyVerifier(BiFunction<ActionType<Response>, Request, Response> verifier) {
|
|
|
+ public void setExecuteLocallyVerifier(BiFunction<ActionType<?>, ActionRequest, ActionResponse> verifier) {
|
|
|
executeLocallyVerifier.set(verifier);
|
|
|
}
|
|
|
|
|
@@ -146,7 +146,9 @@ public abstract class RestActionTestCase extends ESTestCase {
|
|
|
@Override
|
|
|
public <Request extends ActionRequest, Response extends ActionResponse>
|
|
|
Task executeLocally(ActionType<Response> action, Request request, ActionListener<Response> listener) {
|
|
|
- listener.onResponse((Response) executeLocallyVerifier.get().apply(action, request));
|
|
|
+ @SuppressWarnings("unchecked") // Callers are responsible for lining this up
|
|
|
+ Response response = (Response) executeLocallyVerifier.get().apply(action, request);
|
|
|
+ listener.onResponse(response);
|
|
|
return new Task(taskIdGenerator.incrementAndGet(), "transport", action.name(), "", request.getParentTask(),
|
|
|
Collections.emptyMap());
|
|
|
}
|
|
@@ -154,7 +156,9 @@ public abstract class RestActionTestCase extends ESTestCase {
|
|
|
@Override
|
|
|
public <Request extends ActionRequest, Response extends ActionResponse>
|
|
|
Task executeLocally(ActionType<Response> action, Request request, TaskListener<Response> listener) {
|
|
|
- listener.onResponse(null, (Response) executeLocallyVerifier.get().apply(action, request));
|
|
|
+ @SuppressWarnings("unchecked") // Callers are responsible for lining this up
|
|
|
+ Response response = (Response) executeLocallyVerifier.get().apply(action, request);
|
|
|
+ listener.onResponse(null, response);
|
|
|
return null;
|
|
|
}
|
|
|
|