|
@@ -10,16 +10,19 @@ package org.elasticsearch.test;
|
|
|
|
|
|
import org.apache.logging.log4j.LogManager;
|
|
|
import org.apache.logging.log4j.Logger;
|
|
|
+import org.elasticsearch.core.Nullable;
|
|
|
import org.elasticsearch.tasks.CancellableTask;
|
|
|
import org.elasticsearch.tasks.Task;
|
|
|
import org.elasticsearch.tasks.TaskInfo;
|
|
|
-import org.elasticsearch.tasks.TaskManager;
|
|
|
import org.elasticsearch.transport.TransportService;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static junit.framework.TestCase.assertFalse;
|
|
|
import static junit.framework.TestCase.assertTrue;
|
|
|
import static junit.framework.TestCase.fail;
|
|
|
import static org.elasticsearch.test.ESIntegTestCase.client;
|
|
@@ -59,30 +62,28 @@ public class TaskAssertions {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- public static void assertAllCancellableTasksAreCancelled(String actionPrefix) throws Exception {
|
|
|
+ public static void assertAllCancellableTasksAreCancelled(String actionPrefix, @Nullable String opaqueId) throws Exception {
|
|
|
logger.info("--> checking that all tasks with prefix {} are marked as cancelled", actionPrefix);
|
|
|
|
|
|
assertBusy(() -> {
|
|
|
- boolean foundTask = false;
|
|
|
+ var tasks = new ArrayList<CancellableTask>();
|
|
|
for (TransportService transportService : internalCluster().getInstances(TransportService.class)) {
|
|
|
- final TaskManager taskManager = transportService.getTaskManager();
|
|
|
+ var taskManager = transportService.getTaskManager();
|
|
|
assertTrue(taskManager.assertCancellableTaskConsistency());
|
|
|
- for (CancellableTask cancellableTask : taskManager.getCancellableTasks().values()) {
|
|
|
- if (cancellableTask.getAction().startsWith(actionPrefix)) {
|
|
|
- logger.trace("--> found task with prefix [{}]: [{}]", actionPrefix, cancellableTask);
|
|
|
- foundTask = true;
|
|
|
- assertTrue(
|
|
|
- "task " + cancellableTask.getId() + "/" + cancellableTask.getAction() + " not cancelled",
|
|
|
- cancellableTask.isCancelled()
|
|
|
- );
|
|
|
- logger.trace("--> Task with prefix [{}] is marked as cancelled: [{}]", actionPrefix, cancellableTask);
|
|
|
- }
|
|
|
- }
|
|
|
+ taskManager.getCancellableTasks().values().stream().filter(t -> t.getAction().startsWith(actionPrefix)).forEach(tasks::add);
|
|
|
}
|
|
|
- assertTrue("found no cancellable tasks", foundTask);
|
|
|
+ assertFalse("no tasks found for action: " + actionPrefix, tasks.isEmpty());
|
|
|
+ assertTrue(
|
|
|
+ tasks.toString(),
|
|
|
+ tasks.stream().allMatch(t -> t.isCancelled() && Objects.equals(t.getHeader(Task.X_OPAQUE_ID_HTTP_HEADER), opaqueId))
|
|
|
+ );
|
|
|
}, 30, TimeUnit.SECONDS);
|
|
|
}
|
|
|
|
|
|
+ public static void assertAllCancellableTasksAreCancelled(String actionPrefix) throws Exception {
|
|
|
+ assertAllCancellableTasksAreCancelled(actionPrefix, null);
|
|
|
+ }
|
|
|
+
|
|
|
public static void assertAllTasksHaveFinished(String actionPrefix) throws Exception {
|
|
|
logger.info("--> checking that all tasks with prefix {} have finished", actionPrefix);
|
|
|
assertBusy(() -> {
|