JAMES-2813 check that AdditionalInformation instances are shared between nodes
diff --git a/server/task/task-api/src/test/java/org/apache/james/task/TaskManagerContract.java b/server/task/task-api/src/test/java/org/apache/james/task/TaskManagerContract.java
index 2420a83..d482eed 100644
--- a/server/task/task-api/src/test/java/org/apache/james/task/TaskManagerContract.java
+++ b/server/task/task-api/src/test/java/org/apache/james/task/TaskManagerContract.java
@@ -275,6 +275,45 @@
}
@Test
+ default void additionalInformationShouldBeUpdatedDuringExecution(CountDownLatch countDownLatch) {
+ TaskManager taskManager = taskManager();
+ TaskId id = taskManager.submit(new MemoryReferenceWithCounterTask((counter) -> {
+ counter.incrementAndGet();
+ countDownLatch.await();
+ return Task.Result.COMPLETED;
+ }));
+
+ awaitUntilTaskHasStatus(id, TaskManager.Status.IN_PROGRESS, taskManager);
+
+ calmlyAwait.atMost(FIVE_SECONDS).untilAsserted(() ->
+ assertThat(getAdditionalInformation(taskManager, id).getCount()).isEqualTo(1L));
+ }
+
+ @Test
+ default void additionalInformationShouldBeAvailableOnAnyTaskManagerDuringExecution(CountDownLatch countDownLatch) {
+ TaskManager taskManager = taskManager();
+ TaskManager otherTaskManager = taskManager();
+ TaskId id = taskManager.submit(new MemoryReferenceWithCounterTask((counter) -> {
+ counter.incrementAndGet();
+ countDownLatch.await();
+ return Task.Result.COMPLETED;
+ }));
+
+ awaitUntilTaskHasStatus(id, TaskManager.Status.IN_PROGRESS, taskManager);
+
+ calmlyAwait.atMost(FIVE_SECONDS).untilAsserted(() ->
+ assertThat(getAdditionalInformation(taskManager, id).getCount()).isEqualTo(1L));
+ assertThat(getAdditionalInformation(otherTaskManager, id).getCount()).isEqualTo(1L);
+ }
+
+ default MemoryReferenceWithCounterTask.AdditionalInformation getAdditionalInformation(TaskManager taskManager, TaskId id) {
+ return (MemoryReferenceWithCounterTask.AdditionalInformation) taskManager
+ .getExecutionDetails(id)
+ .getAdditionalInformation()
+ .get();
+ }
+
+ @Test
default void getStatusShouldReturnFailedWhenRunPartially() {
TaskManager taskManager = taskManager();
TaskId taskId = taskManager.submit(