package org.infinispan.tasks; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.CompletableFuture; import org.infinispan.tasks.spi.TaskEngine; public class DummyTaskEngine implements TaskEngine { static enum DummyTaskTypes { SUCCESSFUL_TASK, FAILING_TASK, SLOW_TASK } private final Set<String> tasks; private CompletableFuture<String> slow; public DummyTaskEngine() { tasks = new HashSet<>(); for (DummyTaskTypes type : DummyTaskTypes.values()) { tasks.add(type.toString()); } slow = new CompletableFuture<>(); } @Override public String getName() { return "Dummy"; } @Override public List<Task> getTasks() { List<Task> taskDetails = new ArrayList<>(); tasks.forEach(task -> { taskDetails.add(new DummyTask(task)); }); return taskDetails; } @Override public <T> CompletableFuture<T> runTask(String taskName, TaskContext context) { switch (DummyTaskTypes.valueOf(taskName)) { case SUCCESSFUL_TASK: return (CompletableFuture<T>) CompletableFuture.completedFuture("result"); case FAILING_TASK: CompletableFuture<T> f = new CompletableFuture<>(); f.completeExceptionally(new Exception("exception")); return f; case SLOW_TASK: return (CompletableFuture<T>) slow; } throw new IllegalArgumentException(); } public void setSlowTask(CompletableFuture<String> slow) { this.slow = slow; } public CompletableFuture<String> getSlowTask() { return slow; } @Override public boolean handles(String taskName) { return tasks.contains(taskName); } }