diff --git a/nflow-tests/src/test/java/io/nflow/tests/AbstractNflowTest.java b/nflow-tests/src/test/java/io/nflow/tests/AbstractNflowTest.java index 0a075a8d3..b6f68429d 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/AbstractNflowTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/AbstractNflowTest.java @@ -49,11 +49,11 @@ @ExtendWith({ NflowServerExtension.class, SpringExtension.class, SkipTestMethodsAfterFirstFailureExtension.class }) @ContextConfiguration(classes = { RestClientConfiguration.class, PropertiesConfiguration.class }) public abstract class AbstractNflowTest { - protected WebClient workflowInstanceResource; - protected WebClient workflowInstanceIdResource; - protected WebClient workflowDefinitionResource; - protected WebClient statisticsResource; - protected WebClient maintenanceResource; + private WebClient workflowInstanceResource; + private WebClient workflowInstanceIdResource; + private WebClient workflowDefinitionResource; + private WebClient statisticsResource; + private WebClient maintenanceResource; private final NflowServerConfig server; @@ -109,24 +109,24 @@ protected SetSignalResponse setSignal(long instanceId, int signal, String reason return getInstanceResource(instanceId).path("signal").put(request, SetSignalResponse.class); } - private WebClient getInstanceResource(long instanceId) { - WebClient client = fromClient(workflowInstanceResource, true).path(Long.toString(instanceId)); - return client; + protected WebClient getInstanceResource() { + return fromClient(workflowInstanceResource, true); + } + + protected WebClient getInstanceResource(long instanceId) { + return getInstanceResource().path(Long.toString(instanceId)); } protected WebClient getInstanceIdResource(long instanceId) { - WebClient client = fromClient(workflowInstanceIdResource, true).path(Long.toString(instanceId)); - return client; + return fromClient(workflowInstanceIdResource, true).path(Long.toString(instanceId)); } protected ListWorkflowDefinitionResponse[] getWorkflowDefinitions() { - WebClient client = fromClient(workflowDefinitionResource, true); - return client.get(ListWorkflowDefinitionResponse[].class); + return fromClient(workflowDefinitionResource, true).get(ListWorkflowDefinitionResponse[].class); } public StatisticsResponse getStatistics() { - WebClient client = fromClient(statisticsResource, true); - return client.get(StatisticsResponse.class); + return fromClient(statisticsResource, true).get(StatisticsResponse.class); } public WorkflowDefinitionStatisticsResponse getDefinitionStatistics(String definitionType) { @@ -173,7 +173,7 @@ public void validate(ListWorkflowInstanceResponse workflowInstance) { } protected CreateWorkflowInstanceResponse createWorkflowInstance(CreateWorkflowInstanceRequest request) { - return makeWorkflowInstanceQuery(request, CreateWorkflowInstanceResponse.class); + return fromClient(workflowInstanceResource, true).put(request, CreateWorkflowInstanceResponse.class); } protected ObjectMapper nflowObjectMapper() { @@ -183,33 +183,21 @@ protected ObjectMapper nflowObjectMapper() { return mapper; } - protected MaintenanceResponse archiveAllFinishedWorkflows() { - MaintenanceRequest req = new MaintenanceRequest(); - req.archiveWorkflows = new MaintenanceRequestItem(); - req.archiveWorkflows.olderThanPeriod = seconds(0); - return assertTimeoutPreemptively(ofSeconds(15), - () -> fromClient(maintenanceResource).type(APPLICATION_JSON_TYPE).post(req, MaintenanceResponse.class)); - } - protected MaintenanceResponse deleteAllFinishedWorkflows() { MaintenanceRequest req = new MaintenanceRequest(); req.deleteWorkflows = new MaintenanceRequestItem(); req.deleteWorkflows.olderThanPeriod = seconds(0); req.deleteArchivedWorkflows = req.deleteWorkflows; - return assertTimeoutPreemptively(ofSeconds(15), - () -> fromClient(maintenanceResource).type(APPLICATION_JSON_TYPE).post(req, MaintenanceResponse.class)); - } - - protected long insertWorkflow(CreateWorkflowInstanceRequest req) { - return fromClient(workflowInstanceResource, true).put(req, CreateWorkflowInstanceResponse.class).id; + return doMaintenance(req); } - protected String updateWorkflowInstance(long instanceId, UpdateWorkflowInstanceRequest request) { - return getInstanceIdResource(instanceId).put(request, String.class); + protected MaintenanceResponse doMaintenance(MaintenanceRequest req) { + return assertTimeoutPreemptively(ofSeconds(15), + () -> fromClient(maintenanceResource).type(APPLICATION_JSON_TYPE).post(req, MaintenanceResponse.class)); } - private T makeWorkflowInstanceQuery(CreateWorkflowInstanceRequest request, Class responseClass) { - return fromClient(workflowInstanceResource, true).put(request, responseClass); + protected T updateWorkflowInstance(long instanceId, UpdateWorkflowInstanceRequest request, Class responseClass) { + return getInstanceIdResource(instanceId).put(request, responseClass); } public interface WorkflowInstanceValidator { diff --git a/nflow-tests/src/test/java/io/nflow/tests/BulkWorkflowTest.java b/nflow-tests/src/test/java/io/nflow/tests/BulkWorkflowTest.java index 53404fd77..1ad1597d0 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/BulkWorkflowTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/BulkWorkflowTest.java @@ -7,7 +7,6 @@ import static java.time.Duration.ofSeconds; import static java.util.Comparator.naturalOrder; import static java.util.stream.Collectors.toList; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.lessThan; @@ -61,8 +60,7 @@ public void t01_startDemoBulkWorkflow() { req.stateVariables.put(BulkWorkflow.VAR_CONCURRENCY, 3); List childData = IntStream.rangeClosed(1, CHILDREN_COUNT).boxed().collect(toList()); req.stateVariables.put(BulkWorkflow.VAR_CHILD_DATA, nflowObjectMapper().valueToTree(childData)); - CreateWorkflowInstanceResponse resp = fromClient(workflowInstanceResource, true).put(req, - CreateWorkflowInstanceResponse.class); + CreateWorkflowInstanceResponse resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); workflowId = resp.id; } @@ -80,8 +78,7 @@ public void t11_createBulkWorkflow() { req.type = BULK_WORKFLOW_TYPE; req.stateVariables.put(BulkWorkflow.VAR_CONCURRENCY, 3); req.activate = false; - CreateWorkflowInstanceResponse resp = fromClient(workflowInstanceResource, true).put(req, - CreateWorkflowInstanceResponse.class); + CreateWorkflowInstanceResponse resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); workflowId = resp.id; @@ -90,7 +87,7 @@ public void t11_createBulkWorkflow() { child.type = DEMO_WORKFLOW_TYPE; child.activate = false; child.parentWorkflowId = workflowId; - resp = fromClient(workflowInstanceResource, true).put(child, CreateWorkflowInstanceResponse.class); + resp = createWorkflowInstance(child); assertThat(resp.id, notNullValue()); } } @@ -100,7 +97,7 @@ public void t11_createBulkWorkflow() { public void t12_startBulkWorkflow() { UpdateWorkflowInstanceRequest req = new UpdateWorkflowInstanceRequest(); req.nextActivationTime = now(); - try (Response resp = fromClient(workflowInstanceResource, true).path("id").path(workflowId).put(req, Response.class)) { + try (Response resp = updateWorkflowInstance(workflowId, req, Response.class)) { assertThat(resp.getStatus(), equalTo(204)); } } diff --git a/nflow-tests/src/test/java/io/nflow/tests/ChildWorkflowTest.java b/nflow-tests/src/test/java/io/nflow/tests/ChildWorkflowTest.java index 55bc4d586..29a72b86e 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/ChildWorkflowTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/ChildWorkflowTest.java @@ -1,20 +1,20 @@ package io.nflow.tests; -import io.nflow.rest.v1.msg.CreateWorkflowInstanceRequest; -import io.nflow.rest.v1.msg.CreateWorkflowInstanceResponse; -import io.nflow.rest.v1.msg.ListWorkflowInstanceResponse; -import io.nflow.tests.demo.workflow.FibonacciWorkflow; -import io.nflow.tests.extension.NflowServerConfig; +import static java.time.Duration.ofSeconds; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.hasEntry; +import static org.hamcrest.Matchers.notNullValue; + import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; -import static java.time.Duration.ofSeconds; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasEntry; -import static org.hamcrest.Matchers.notNullValue; +import io.nflow.rest.v1.msg.CreateWorkflowInstanceRequest; +import io.nflow.rest.v1.msg.CreateWorkflowInstanceResponse; +import io.nflow.rest.v1.msg.ListWorkflowInstanceResponse; +import io.nflow.tests.demo.workflow.FibonacciWorkflow; +import io.nflow.tests.extension.NflowServerConfig; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class ChildWorkflowTest extends AbstractNflowTest { @@ -32,8 +32,7 @@ public void startFibonacciWorkflow() { CreateWorkflowInstanceRequest req = new CreateWorkflowInstanceRequest(); req.type = "fibonacci"; req.stateVariables.put("requestData", nflowObjectMapper().valueToTree(new FibonacciWorkflow.FiboData(5))); - CreateWorkflowInstanceResponse resp = fromClient(workflowInstanceResource, true).put(req, - CreateWorkflowInstanceResponse.class); + CreateWorkflowInstanceResponse resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); workflowId = resp.id; } diff --git a/nflow-tests/src/test/java/io/nflow/tests/CreditApplicationWorkflowTest.java b/nflow-tests/src/test/java/io/nflow/tests/CreditApplicationWorkflowTest.java index 3534ac1ca..a2f2f0edc 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/CreditApplicationWorkflowTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/CreditApplicationWorkflowTest.java @@ -4,7 +4,6 @@ import static java.time.Duration.ofSeconds; import static java.util.Arrays.asList; import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.notNullValue; @@ -52,7 +51,7 @@ public void createCreditApplicationWorkflow() { req.stateVariables.put("requestData", (new ObjectMapper()).valueToTree( new CreditApplicationWorkflow.CreditApplication("CUST123", new BigDecimal(100l)))); req.externalId = UUID.randomUUID().toString(); - resp = fromClient(workflowInstanceResource, true).put(req, CreateWorkflowInstanceResponse.class); + resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); } @@ -68,7 +67,7 @@ public void moveToGrantLoanState() { UpdateWorkflowInstanceRequest ureq = new UpdateWorkflowInstanceRequest(); ureq.nextActivationTime = now(); ureq.state = "grantLoan"; - fromClient(workflowInstanceIdResource, true).path(resp.id).put(ureq); + updateWorkflowInstance(resp.id, ureq, String.class); } @Test @@ -77,7 +76,7 @@ public void moveToInvalidStateFails() { UpdateWorkflowInstanceRequest ureq = new UpdateWorkflowInstanceRequest(); ureq.nextActivationTime = now(); ureq.state = "invalid"; - try (Response response = fromClient(workflowInstanceIdResource, true).path(resp.id).put(ureq)) { + try (Response response = updateWorkflowInstance(resp.id, ureq, Response.class)) { assertThat(response.getStatus(), is(Response.Status.BAD_REQUEST.getStatusCode())); assertThat(response.getMediaType(), is(APPLICATION_JSON_TYPE)); assertThat(response.readEntity(ErrorResponse.class).error, startsWith("No state 'invalid'")); diff --git a/nflow-tests/src/test/java/io/nflow/tests/CronWorkflowTest.java b/nflow-tests/src/test/java/io/nflow/tests/CronWorkflowTest.java index 475bb817c..2a0ce7b4d 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/CronWorkflowTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/CronWorkflowTest.java @@ -4,7 +4,6 @@ import static io.nflow.tests.demo.workflow.TestCronWorkflow.TYPE; import static java.util.Collections.singletonMap; import static java.util.concurrent.TimeUnit.SECONDS; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.greaterThanOrEqualTo; @@ -49,7 +48,7 @@ public void startCronWorkflow() { CreateWorkflowInstanceRequest req = new CreateWorkflowInstanceRequest(); req.type = TYPE; req.stateVariables = singletonMap("cron", "*/3 * * * * *"); - resp = fromClient(workflowInstanceResource, true).put(req, CreateWorkflowInstanceResponse.class); + resp = createWorkflowInstance(req); assertNotNull(resp.id); } @@ -74,6 +73,6 @@ public void stopMaintenanceWorkflow() { UpdateWorkflowInstanceRequest request = new UpdateWorkflowInstanceRequest(); request.nextActivationTime = null; request.state = failed.name(); - updateWorkflowInstance(resp.id, request); + updateWorkflowInstance(resp.id, request, String.class); } } diff --git a/nflow-tests/src/test/java/io/nflow/tests/DeleteHistoryTest.java b/nflow-tests/src/test/java/io/nflow/tests/DeleteHistoryTest.java index 3a13616d1..8eeaffb5c 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/DeleteHistoryTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/DeleteHistoryTest.java @@ -1,7 +1,6 @@ package io.nflow.tests; import static java.time.Duration.ofSeconds; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; @@ -43,7 +42,7 @@ static class DeleteHistoryConfiguration { public void createWorkflowInstance() { CreateWorkflowInstanceRequest req = new CreateWorkflowInstanceRequest(); req.type = DeleteHistoryWorkflow.TYPE; - resp = fromClient(workflowInstanceResource, true).put(req, CreateWorkflowInstanceResponse.class); + resp = createWorkflowInstance(req); assertThat(resp.id, is(notNullValue())); } diff --git a/nflow-tests/src/test/java/io/nflow/tests/DemoWorkflowTest.java b/nflow-tests/src/test/java/io/nflow/tests/DemoWorkflowTest.java index 71f2d1f26..7aabc384e 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/DemoWorkflowTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/DemoWorkflowTest.java @@ -5,7 +5,6 @@ import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE; import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static javax.ws.rs.core.Response.Status.NO_CONTENT; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.empty; import static org.hamcrest.Matchers.greaterThanOrEqualTo; @@ -53,7 +52,7 @@ public void startDemoWorkflow() { CreateWorkflowInstanceRequest req = new CreateWorkflowInstanceRequest(); req.type = "demo"; req.businessKey = "1"; - resp = fromClient(workflowInstanceResource, true).put(req, CreateWorkflowInstanceResponse.class); + resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); } @@ -64,8 +63,8 @@ public void queryDemoWorkflowHistory() { ListWorkflowInstanceResponse wf = null; do { sleep(200); - ListWorkflowInstanceResponse[] instances = fromClient(workflowInstanceResource, true).query("type", "demo") - .query("include", "actions").get(ListWorkflowInstanceResponse[].class); + ListWorkflowInstanceResponse[] instances = getInstanceResource().query("type", "demo").query("include", "actions") + .get(ListWorkflowInstanceResponse[].class); assertThat(instances.length, greaterThanOrEqualTo(1)); for (ListWorkflowInstanceResponse instance : instances) { if (instance.id == resp.id && "done".equals(instance.state) && instance.nextActivation == null) { @@ -82,8 +81,8 @@ public void queryDemoWorkflowHistory() { @Test @Order(3) public void queryDemoWorkflowWithMultipleStatuses() { - ListWorkflowInstanceResponse[] instances = fromClient(workflowInstanceResource, true).query("type", "demo") - .query("status", "finished").query("status", "manual").get(ListWorkflowInstanceResponse[].class); + ListWorkflowInstanceResponse[] instances = getInstanceResource().query("type", "demo").query("status", "finished") + .query("status", "manual").get(ListWorkflowInstanceResponse[].class); assertThat(instances.length, greaterThanOrEqualTo(1)); } @@ -103,8 +102,7 @@ public void queryWorkflowWithActionsReturnsEmptyActions() { @Test @Order(5) public void queryWorkflowWithoutActionsReturnsNullActions() { - ListWorkflowInstanceResponse instance = fromClient(workflowInstanceIdResource, true).path(Long.toString(resp.id)) - .get(ListWorkflowInstanceResponse.class); + ListWorkflowInstanceResponse instance = getInstanceIdResource(resp.id).get(ListWorkflowInstanceResponse.class); assertThat(instance.actions, is(nullValue())); } @@ -115,7 +113,7 @@ public void updateWorkflowReturnsNoContentWhenInstanceIsUpdated() { UpdateWorkflowInstanceRequest req = new UpdateWorkflowInstanceRequest(); req.nextActivationTime = now().plusDays(1); - try (Response response = getInstanceIdResource(resp.id).put(req)) { + try (Response response = updateWorkflowInstance(resp.id, req, Response.class)) { assertThat(response.getStatus(), is(NO_CONTENT.getStatusCode())); assertThat(response.readEntity(String.class), is("")); } @@ -127,7 +125,7 @@ public void updateWorkflowReturnsNotFoundWhenInstanceIsNotFound() { UpdateWorkflowInstanceRequest req = new UpdateWorkflowInstanceRequest(); req.nextActivationTime = now().plusDays(2); - try (Response response = getInstanceIdResource(-1).put(req)) { + try (Response response = updateWorkflowInstance(-1, req, Response.class)) { assertThat(response.getStatus(), is(NOT_FOUND.getStatusCode())); assertThat(response.getMediaType(), is(APPLICATION_JSON_TYPE)); assertThat(response.readEntity(ErrorResponse.class).error, is("Workflow instance -1 not found")); diff --git a/nflow-tests/src/test/java/io/nflow/tests/ExecutorRecoveryTest.java b/nflow-tests/src/test/java/io/nflow/tests/ExecutorRecoveryTest.java index b56be3ffe..8e7122325 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/ExecutorRecoveryTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/ExecutorRecoveryTest.java @@ -2,24 +2,23 @@ import static io.nflow.tests.demo.workflow.SlowWorkflow.SLOW_WORKFLOW_TYPE; import static java.lang.Thread.sleep; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; import static org.junit.jupiter.api.Assertions.fail; -import io.nflow.tests.extension.NflowServerConfig; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; import io.nflow.rest.v1.msg.Action; import io.nflow.rest.v1.msg.CreateWorkflowInstanceRequest; import io.nflow.rest.v1.msg.CreateWorkflowInstanceResponse; import io.nflow.rest.v1.msg.ListWorkflowInstanceResponse; import io.nflow.tests.demo.workflow.SlowWorkflow; -import org.junit.jupiter.api.MethodOrderer; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; +import io.nflow.tests.extension.NflowServerConfig; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class ExecutorRecoveryTest extends AbstractNflowTest { @@ -42,7 +41,7 @@ public ExecutorRecoveryTest() { public void submitSlowWorkflow() { CreateWorkflowInstanceRequest req = new CreateWorkflowInstanceRequest(); req.type = SLOW_WORKFLOW_TYPE; - resp = fromClient(workflowInstanceResource, true).put(req, CreateWorkflowInstanceResponse.class); + resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); } diff --git a/nflow-tests/src/test/java/io/nflow/tests/FutureWorkflowTest.java b/nflow-tests/src/test/java/io/nflow/tests/FutureWorkflowTest.java index 347eb2c85..f1f784fbe 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/FutureWorkflowTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/FutureWorkflowTest.java @@ -3,7 +3,6 @@ import static io.nflow.engine.config.Profiles.MYSQL; import static java.util.Arrays.asList; import static java.util.concurrent.TimeUnit.SECONDS; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; @@ -13,7 +12,6 @@ import javax.inject.Inject; -import io.nflow.tests.extension.NflowServerConfig; import org.joda.time.DateTime; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Order; @@ -27,6 +25,7 @@ import io.nflow.rest.v1.msg.ListWorkflowInstanceResponse; import io.nflow.rest.v1.msg.UpdateWorkflowInstanceRequest; import io.nflow.tests.demo.workflow.DemoWorkflow; +import io.nflow.tests.extension.NflowServerConfig; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class FutureWorkflowTest extends AbstractNflowTest { @@ -59,7 +58,7 @@ public void scheduleDemoWorkflowToTomorrow() { req.type = "demo"; req.businessKey = "1"; req.activationTime = FUTURE; - resp = fromClient(workflowInstanceResource, true).put(req, CreateWorkflowInstanceResponse.class); + resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); } @@ -74,7 +73,7 @@ public void verifyStatusNotStarted() throws InterruptedException { @Order(3) public void testNonUpdate() { UpdateWorkflowInstanceRequest req = new UpdateWorkflowInstanceRequest(); - updateWorkflowInstance(resp.id, req); + updateWorkflowInstance(resp.id, req, String.class); verifyWorkflowNotStarted(); } @@ -90,7 +89,7 @@ private void verifyWorkflowNotStarted() { public void scheduleToNow() { UpdateWorkflowInstanceRequest req = new UpdateWorkflowInstanceRequest(); req.nextActivationTime = now(); - updateWorkflowInstance(resp.id, req); + updateWorkflowInstance(resp.id, req, String.class); } @Test diff --git a/nflow-tests/src/test/java/io/nflow/tests/IdempotencyTest.java b/nflow-tests/src/test/java/io/nflow/tests/IdempotencyTest.java index db7a2e2f1..a306bbcbb 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/IdempotencyTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/IdempotencyTest.java @@ -2,6 +2,7 @@ import static io.nflow.tests.demo.workflow.SimpleWorkflow.SIMPLE_WORKFLOW_TYPE; import static java.util.UUID.randomUUID; +import static org.joda.time.Period.seconds; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; @@ -11,6 +12,9 @@ import org.junit.jupiter.api.TestMethodOrder; import io.nflow.rest.v1.msg.CreateWorkflowInstanceRequest; +import io.nflow.rest.v1.msg.MaintenanceRequest; +import io.nflow.rest.v1.msg.MaintenanceRequest.MaintenanceRequestItem; +import io.nflow.rest.v1.msg.MaintenanceResponse; import io.nflow.tests.demo.workflow.SimpleWorkflow; import io.nflow.tests.extension.NflowServerConfig; @@ -35,13 +39,13 @@ public void cleanupExistingStuff() { @Test @Order(2) public void createFirstWorkflow() { - firstWorkflowId = insertWorkflow(request); + firstWorkflowId = createWorkflowInstance(request).id; } @Test @Order(3) public void createFirstWorkflowAgainReturnsSameId() { - long workflowId = insertWorkflow(request); + long workflowId = createWorkflowInstance(request).id; assertEquals(firstWorkflowId, workflowId); } @@ -56,14 +60,14 @@ public void firstWorkflowIsArchived() { @Test @Order(5) public void createSameWorkflowAgainsReturnsNewId() { - secondWorkflowId = insertWorkflow(request); + secondWorkflowId = createWorkflowInstance(request).id; assertNotEquals(firstWorkflowId, secondWorkflowId); } @Test @Order(6) public void createSecondWorkflowAgainReturnsSameId() { - long workflowId = insertWorkflow(request); + long workflowId = createWorkflowInstance(request).id; assertEquals(secondWorkflowId, workflowId); } @@ -78,7 +82,7 @@ public void secondWorkflowIsArchived() { @Test @Order(8) public void createSameWorkflowAgainsReturnsNewIdAgain() { - long workflowId = insertWorkflow(request); + long workflowId = createWorkflowInstance(request).id; assertNotEquals(secondWorkflowId, workflowId); } @@ -88,4 +92,11 @@ private static CreateWorkflowInstanceRequest createWorkflowInstanceRequest() { req.externalId = randomUUID().toString(); return req; } + + private MaintenanceResponse archiveAllFinishedWorkflows() { + MaintenanceRequest req = new MaintenanceRequest(); + req.archiveWorkflows = new MaintenanceRequestItem(); + req.archiveWorkflows.olderThanPeriod = seconds(0); + return doMaintenance(req); + } } diff --git a/nflow-tests/src/test/java/io/nflow/tests/MaintenanceTest.java b/nflow-tests/src/test/java/io/nflow/tests/MaintenanceTest.java index 2f922d948..287155a38 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/MaintenanceTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/MaintenanceTest.java @@ -3,15 +3,12 @@ import static java.lang.Thread.sleep; import static java.time.Duration.ofSeconds; import static java.util.concurrent.TimeUnit.SECONDS; -import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.notNullValue; import static org.joda.time.DateTime.now; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTimeoutPreemptively; -import java.time.Duration; import java.util.ArrayList; import java.util.List; @@ -26,7 +23,6 @@ import io.nflow.rest.v1.msg.CreateWorkflowInstanceResponse; import io.nflow.rest.v1.msg.MaintenanceRequest; import io.nflow.rest.v1.msg.MaintenanceRequest.MaintenanceRequestItem; -import io.nflow.rest.v1.msg.MaintenanceResponse; import io.nflow.tests.demo.workflow.FibonacciWorkflow; import io.nflow.tests.extension.NflowServerConfig; @@ -35,7 +31,6 @@ public class MaintenanceTest extends AbstractNflowTest { private static final int STEP_1_WORKFLOWS = 4; private static final int STEP_2_WORKFLOWS = 7; private static final int STEP_3_WORKFLOWS = 4; - private static final Duration ARCHIVE_TIMEOUT = ofSeconds(15); public static NflowServerConfig server = new NflowServerConfig.Builder().prop("nflow.dispatcher.sleep.ms", 25).build(); @@ -153,8 +148,7 @@ private long createWorkflow() { CreateWorkflowInstanceRequest req = new CreateWorkflowInstanceRequest(); req.type = FibonacciWorkflow.WORKFLOW_TYPE; req.stateVariables.put("requestData", nflowObjectMapper().valueToTree(new FibonacciWorkflow.FiboData(3))); - CreateWorkflowInstanceResponse resp = fromClient(workflowInstanceResource, true).put(req, - CreateWorkflowInstanceResponse.class); + CreateWorkflowInstanceResponse resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); return resp.id; } @@ -163,16 +157,14 @@ private int archiveOlderThan(DateTime olderThan) { MaintenanceRequest req = new MaintenanceRequest(); req.archiveWorkflows = new MaintenanceRequestItem(); req.archiveWorkflows.olderThanPeriod = new Period(olderThan, now()); - return assertTimeoutPreemptively(ARCHIVE_TIMEOUT, - () -> fromClient(maintenanceResource).type(APPLICATION_JSON_TYPE).post(req, MaintenanceResponse.class)).archivedWorkflows; + return doMaintenance(req).archivedWorkflows; } private int deleteOlderThan(DateTime olderThan) { MaintenanceRequest req = new MaintenanceRequest(); req.deleteArchivedWorkflows = new MaintenanceRequestItem(); req.deleteArchivedWorkflows.olderThanPeriod = new Period(olderThan, now()); - return assertTimeoutPreemptively(ARCHIVE_TIMEOUT, () -> fromClient(maintenanceResource).type(APPLICATION_JSON_TYPE).post(req, - MaintenanceResponse.class)).deletedArchivedWorkflows; + return doMaintenance(req).deletedArchivedWorkflows; } private void waitUntilWorkflowsFinished(List workflowIds) { diff --git a/nflow-tests/src/test/java/io/nflow/tests/MaintenanceWorkflowTest.java b/nflow-tests/src/test/java/io/nflow/tests/MaintenanceWorkflowTest.java index 3b3f38ee4..85c816083 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/MaintenanceWorkflowTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/MaintenanceWorkflowTest.java @@ -7,7 +7,6 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.stream.Collectors.toList; import static java.util.stream.Stream.generate; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasEntry; import static org.hamcrest.Matchers.hasSize; @@ -57,7 +56,7 @@ public void cleanupExistingStuff() { @Order(2) public void verifyThatMaintenanceWorkflowIsRunning() throws InterruptedException { SECONDS.sleep(1); - ListWorkflowInstanceResponse[] instances = fromClient(workflowInstanceResource, true) // + ListWorkflowInstanceResponse[] instances = getInstanceResource() // .query("type", MAINTENANCE_WORKFLOW_TYPE) // .query("externalId", MAINTENANCE_WORKFLOW_DEFAULT_EXTERNAL_ID) // .query("include", "currentStateVariables") // @@ -90,7 +89,7 @@ public void stopMaintenanceWorkflow() { UpdateWorkflowInstanceRequest request = new UpdateWorkflowInstanceRequest(); request.nextActivationTime = null; request.state = failed.name(); - updateWorkflowInstance(maintenanceWorkflowId, request); + updateWorkflowInstance(maintenanceWorkflowId, request, String.class); } private List createWorkflows(int count) { @@ -101,8 +100,7 @@ private long createWorkflow() { CreateWorkflowInstanceRequest req = new CreateWorkflowInstanceRequest(); req.type = FibonacciWorkflow.WORKFLOW_TYPE; req.stateVariables.put("requestData", nflowObjectMapper().valueToTree(new FibonacciWorkflow.FiboData(3))); - CreateWorkflowInstanceResponse resp = fromClient(workflowInstanceResource, true).put(req, - CreateWorkflowInstanceResponse.class); + CreateWorkflowInstanceResponse resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); return resp.id; } diff --git a/nflow-tests/src/test/java/io/nflow/tests/PreviewCreditApplicationWorkflowTest.java b/nflow-tests/src/test/java/io/nflow/tests/PreviewCreditApplicationWorkflowTest.java index ff1d7de8c..713b33901 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/PreviewCreditApplicationWorkflowTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/PreviewCreditApplicationWorkflowTest.java @@ -3,7 +3,6 @@ import static io.nflow.engine.workflow.instance.WorkflowInstanceAction.WorkflowActionType.stateExecution; import static java.time.Duration.ofSeconds; import static java.util.Arrays.asList; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; @@ -55,7 +54,7 @@ public void createCreditApplicationWorkflow() { req.stateVariables.put("requestData", (new ObjectMapper()).valueToTree( new CreditApplicationWorkflow.CreditApplication("CUST123", new BigDecimal(100l)))); req.externalId = UUID.randomUUID().toString(); - resp = fromClient(workflowInstanceResource, true).put(req, CreateWorkflowInstanceResponse.class); + resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); } @@ -73,7 +72,7 @@ public void moveToGrantLoanState() { UpdateWorkflowInstanceRequest ureq = new UpdateWorkflowInstanceRequest(); ureq.nextActivationTime = now(); ureq.state = "grantLoan"; - try (Response response = fromClient(workflowInstanceIdResource, true).path(resp.id).put(ureq)) { + try (Response response = updateWorkflowInstance(resp.id, ureq, Response.class)) { assertThat(response.getStatusInfo().getFamily(), is(Family.SUCCESSFUL)); } } diff --git a/nflow-tests/src/test/java/io/nflow/tests/SignalWorkflowTest.java b/nflow-tests/src/test/java/io/nflow/tests/SignalWorkflowTest.java index 4b4eea049..e913c26d2 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/SignalWorkflowTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/SignalWorkflowTest.java @@ -2,7 +2,6 @@ import static io.nflow.tests.demo.workflow.SlowWorkflow.SLOW_WORKFLOW_TYPE; import static java.lang.Thread.sleep; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; @@ -46,7 +45,7 @@ public void startSlowWorkflow() { CreateWorkflowInstanceRequest req = new CreateWorkflowInstanceRequest(); req.type = SLOW_WORKFLOW_TYPE; req.businessKey = "1"; - resp = fromClient(workflowInstanceResource, true).put(req, CreateWorkflowInstanceResponse.class); + resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); } diff --git a/nflow-tests/src/test/java/io/nflow/tests/StateVariablesTest.java b/nflow-tests/src/test/java/io/nflow/tests/StateVariablesTest.java index ee0850156..dae27bbea 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/StateVariablesTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/StateVariablesTest.java @@ -5,7 +5,6 @@ import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE; import static javax.ws.rs.core.Response.Status.BAD_REQUEST; import static org.apache.commons.lang3.StringUtils.repeat; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; @@ -95,7 +94,7 @@ public void updateStateVariable() { UpdateWorkflowInstanceRequest req = new UpdateWorkflowInstanceRequest(); req.stateVariables.put("testUpdate", "testValue"); - updateWorkflowInstance(createResponse.id, req); + updateWorkflowInstance(createResponse.id, req, String.class); ListWorkflowInstanceResponse response = getWorkflowInstance(createResponse.id); assertEquals(7, response.actions.size()); @@ -108,7 +107,7 @@ public void updateWorkflowWithTooLongStateVariableValueReturnsBadRequest() { UpdateWorkflowInstanceRequest req = new UpdateWorkflowInstanceRequest(); req.stateVariables.put("testUpdate", repeat('a', 8001)); - try (Response response = getInstanceIdResource(createResponse.id).put(req)) { + try (Response response = updateWorkflowInstance(createResponse.id, req, Response.class)) { assertThat(response.getStatus(), is(BAD_REQUEST.getStatusCode())); assertThat(response.getMediaType(), is(APPLICATION_JSON_TYPE)); assertThat(response.readEntity(ErrorResponse.class).error, startsWith("Too long value")); @@ -123,7 +122,7 @@ public void insertWorkflowWithTooLongStateVariableValueReturnsBadRequest() { createRequest.externalId = UUID.randomUUID().toString(); createRequest.stateVariables.put("requestData", repeat('a', 8001)); - try (Response response = fromClient(workflowInstanceResource, true).put(createRequest)) { + try (Response response = getInstanceResource().put(createRequest)) { assertThat(response.getStatus(), is(BAD_REQUEST.getStatusCode())); assertThat(response.getMediaType(), is(APPLICATION_JSON_TYPE)); assertThat(response.readEntity(ErrorResponse.class).error, startsWith("Too long value")); diff --git a/nflow-tests/src/test/java/io/nflow/tests/StatisticsTest.java b/nflow-tests/src/test/java/io/nflow/tests/StatisticsTest.java index 68fd857ef..a07e7bf2a 100644 --- a/nflow-tests/src/test/java/io/nflow/tests/StatisticsTest.java +++ b/nflow-tests/src/test/java/io/nflow/tests/StatisticsTest.java @@ -3,18 +3,18 @@ import static io.nflow.tests.demo.workflow.DemoWorkflow.DEMO_WORKFLOW_TYPE; import static java.lang.System.clearProperty; import static java.lang.System.setProperty; -import static org.apache.cxf.jaxrs.client.WebClient.fromClient; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; import static org.joda.time.DateTime.now; import static org.junit.jupiter.api.Assertions.assertEquals; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status.Family; - -import io.nflow.tests.extension.NflowServerConfig; import org.joda.time.DateTime; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; import io.nflow.rest.v1.msg.CreateWorkflowInstanceRequest; import io.nflow.rest.v1.msg.CreateWorkflowInstanceResponse; @@ -23,7 +23,7 @@ import io.nflow.rest.v1.msg.WorkflowDefinitionStatisticsResponse; import io.nflow.rest.v1.msg.WorkflowDefinitionStatisticsResponse.StateStatistics; import io.nflow.tests.DemoWorkflowTest.DemoConfiguration; -import org.junit.jupiter.api.*; +import io.nflow.tests.extension.NflowServerConfig; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class StatisticsTest extends AbstractNflowTest { @@ -55,7 +55,7 @@ public void submitWorkflow() { req.type = DEMO_WORKFLOW_TYPE; req.businessKey = "1"; req.activationTime = FUTURE; - resp = fromClient(workflowInstanceResource, true).put(req, CreateWorkflowInstanceResponse.class); + resp = createWorkflowInstance(req); assertThat(resp.id, notNullValue()); } @@ -97,9 +97,7 @@ public void restartServer() throws Exception { public void updateNextActivationToPast() { UpdateWorkflowInstanceRequest req = new UpdateWorkflowInstanceRequest(); req.nextActivationTime = now().minusMinutes(5); - try (Response response = fromClient(workflowInstanceIdResource, true).path(resp.id).put(req)) { - assertThat(response.getStatusInfo().getFamily(), is(Family.SUCCESSFUL)); - } + updateWorkflowInstance(resp.id, req, String.class); } @Test