martinweiler commented on code in PR #4164:
URL: 
https://github.com/apache/incubator-kie-kogito-runtimes/pull/4164#discussion_r2737907551


##########
quarkus/integration-tests/integration-tests-quarkus-wshumantasks/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java:
##########
@@ -206,7 +206,291 @@ public void testSuspendAndResumeTransition() {
 
         complete(taskId, user);
 
-        isProcessCompleted(processId);
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilWithDuration() throws InterruptedException {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "manager_multiple_users";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspendWithDurationOrTimestamp(taskId, user, "PT5S");
+        Thread.sleep(10000);
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilWithTimestamp() throws InterruptedException {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "manager_multiple_users";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        claim(taskId, user);
+
+        suspendWithDurationOrTimestamp(taskId, user, 
ZonedDateTime.now().plusSeconds(5).toString());
+        Thread.sleep(10000);
+        verifyTaskStatus(taskId, user, "Reserved");
+
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilWithInvalidDurationOrTimestamp() {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "manager_multiple_users";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspendWithInvalidDurationOrTimestamp(taskId, user, "INVALID");
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilWithNegativeDuration() {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "manager_multiple_users";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspendWithInvalidDurationOrTimestamp(taskId, user, "PT-1H");
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilMultipleStatesWithDuration() throws 
InterruptedException {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "manager_multiple_users";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspendWithDurationOrTimestamp(taskId, user, "PT5S");
+        Thread.sleep(10000);
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        suspendWithDurationOrTimestamp(taskId, user, "PT5S");
+        Thread.sleep(10000);
+        verifyTaskStatus(taskId, user, "Reserved");
+
+        start(taskId, user);
+        suspendWithDurationOrTimestamp(taskId, user, "PT5S");
+        Thread.sleep(10000);
+        verifyTaskStatus(taskId, user, "InProgress");
+
+        complete(taskId, user);
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilInProcessDefinition() throws 
InterruptedException {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "suspend_until";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspend(taskId, user);
+        Thread.sleep(8000);
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilInProcessDefinitionWithVariableNotation() 
throws InterruptedException {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "suspend_until_variable";
+        var pid = startProcessInstanceWithVariables(processId, 
Map.of("resumeAt", "PT4S"));
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspend(taskId, user);
+        Thread.sleep(8000);
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilWithZeroDuration() {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "manager_multiple_users";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspendWithInvalidDurationOrTimestamp(taskId, user, "PT0S");
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilWithEmptyValue() {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "manager_multiple_users";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspendWithInvalidDurationOrTimestamp(taskId, user, "  ");
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilWithPastTimestamp() {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "manager_multiple_users";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspendWithInvalidDurationOrTimestamp(taskId, user, 
ZonedDateTime.now().minusHours(1).toString());
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilWithSimpleDurationFormat() throws 
InterruptedException {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "manager_multiple_users";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspendWithDurationOrTimestamp(taskId, user, "5s");
+        Thread.sleep(10000);
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilWithInvalidRepeatTimerFormat() {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "manager_multiple_users";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspendWithInvalidDurationOrTimestamp(taskId, user, "R3/PT5S");
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilManualResumeBeforeAutoResume() throws 
InterruptedException {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "manager_multiple_users";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspendWithDurationOrTimestamp(taskId, user, "PT5S");
+        resume(taskId, user, "Ready");
+
+        Thread.sleep(10000);
+        verifyTaskStatus(taskId, user, "Ready");
+
+        claim(taskId, user);
+        start(taskId, user);
+        complete(taskId, user);
+
+        isProcessCompleted(processId, pid);
+    }
+
+    @Test
+    public void testSuspendUntilOverridingProcessDefinitionValue() throws 
InterruptedException {
+        var user = "dave";
+        var potentialUsers = new String[] { "john", "dave" };
+        var processId = "suspend_until";
+        var pid = startProcessInstance(processId);
+        var taskId = getTaskId(user, pid);
+        verifyTask(processId, pid, taskId, user, "Ready", potentialUsers);
+
+        suspendWithDurationOrTimestamp(taskId, user, "PT2S");
+        Thread.sleep(4000);

Review Comment:
   Shouldn't this be 3 seconds only? Waiting 4 seconds could still mean either 
of the two suspendUntil values were used. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to