public static void assertJobPayload(Record<JobRecordValue> event, String expectedPayload) { final byte[] payload = MsgPackUtil.asMsgPackReturnArray(event.getValue().getPayload()); MsgPackUtil.assertEquality(payload, expectedPayload); }
public static void assertJobPayload(Record<JobRecordValue> event, String expectedPayload) { final byte[] payload = MsgPackUtil.asMsgPackReturnArray(event.getValue().getPayload()); MsgPackUtil.assertEquality(payload, expectedPayload); }
@Test public void shouldRejectCompletionIfJobIsCompleted() { // given createJob(JOB_TYPE); apiRule.activateJobs(JOB_TYPE).await(); final Record<JobRecordValue> jobEvent = receiveSingleJobEvent(); testClient.completeJob(jobEvent.getKey(), jobEvent.getValue().getPayload()); // when final ExecuteCommandResponse response = testClient.completeJob(jobEvent.getKey(), jobEvent.getValue().getPayload()); // then assertThat(response.getRecordType()).isEqualTo(RecordType.COMMAND_REJECTION); assertThat(response.getRejectionType()).isEqualTo(RejectionType.NOT_FOUND); assertThat(response.getIntent()).isEqualTo(JobIntent.COMPLETE); }
@Test public void shouldRejectCompletionIfJobIsCompleted() { // given createJob(JOB_TYPE); apiRule.activateJobs(JOB_TYPE).await(); final Record<JobRecordValue> jobEvent = receiveSingleJobEvent(); testClient.completeJob(jobEvent.getKey(), jobEvent.getValue().getPayload()); // when final ExecuteCommandResponse response = testClient.completeJob(jobEvent.getKey(), jobEvent.getValue().getPayload()); // then assertThat(response.getRecordType()).isEqualTo(RecordType.COMMAND_REJECTION); assertThat(response.getRejectionType()).isEqualTo(RejectionType.NOT_FOUND); assertThat(response.getIntent()).isEqualTo(JobIntent.COMPLETE); }
@Test public void shouldRejectFailIfJobCompleted() { // given client.createJob(JOB_TYPE); apiRule.activateJobs(JOB_TYPE).await(); final Record<JobRecordValue> jobEvent = client.receiveFirstJobEvent(JobIntent.ACTIVATED); client.completeJob(jobEvent.getKey(), jobEvent.getValue().getPayload()); // when final ExecuteCommandResponse response = client.failJob(jobEvent.getKey(), 3); // then assertThat(response.getRecordType()).isEqualTo(RecordType.COMMAND_REJECTION); assertThat(response.getRejectionType()).isEqualTo(RejectionType.NOT_FOUND); assertThat(response.getIntent()).isEqualTo(JobIntent.FAIL); } }
@Test public void shouldRejectCompletionIfJobIsFailed() { // given createJob(JOB_TYPE); // when apiRule.activateJobs(JOB_TYPE).await(); final Record<JobRecordValue> jobEvent = receiveSingleJobEvent(); failJob(jobEvent.getKey()); final ExecuteCommandResponse response = testClient.completeJob(jobEvent.getKey(), jobEvent.getValue().getPayload()); // then assertThat(response.getRecordType()).isEqualTo(RecordType.COMMAND_REJECTION); assertThat(response.getRejectionType()).isEqualTo(RejectionType.INVALID_STATE); assertThat(response.getIntent()).isEqualTo(JobIntent.COMPLETE); }
@Test public void shouldRejectCompletionIfJobIsFailed() { // given createJob(JOB_TYPE); // when apiRule.activateJobs(JOB_TYPE).await(); final Record<JobRecordValue> jobEvent = receiveSingleJobEvent(); failJob(jobEvent.getKey()); final ExecuteCommandResponse response = testClient.completeJob(jobEvent.getKey(), jobEvent.getValue().getPayload()); // then assertThat(response.getRecordType()).isEqualTo(RecordType.COMMAND_REJECTION); assertThat(response.getRejectionType()).isEqualTo(RejectionType.INVALID_STATE); assertThat(response.getIntent()).isEqualTo(JobIntent.COMPLETE); }
@Test public void shouldRejectFailIfJobCompleted() { // given client.createJob(JOB_TYPE); apiRule.activateJobs(JOB_TYPE).await(); final Record<JobRecordValue> jobEvent = client.receiveFirstJobEvent(JobIntent.ACTIVATED); client.completeJob(jobEvent.getKey(), jobEvent.getValue().getPayload()); // when final ExecuteCommandResponse response = client.failJob(jobEvent.getKey(), 3); // then assertThat(response.getRecordType()).isEqualTo(RecordType.COMMAND_REJECTION); assertThat(response.getRejectionType()).isEqualTo(RejectionType.NOT_FOUND); assertThat(response.getIntent()).isEqualTo(JobIntent.FAIL); } }
@Test public void shouldCompleteJobWithNoPayload() { // given createJob(JOB_TYPE); apiRule.activateJobs(JOB_TYPE).await(); final Record<JobRecordValue> jobEvent = receiveSingleJobEvent(); // when final ExecuteCommandResponse response = testClient.completeJob(jobEvent.getKey(), jobEvent.getValue().getPayload()); // then assertThat(response.getRecordType()).isEqualTo(RecordType.EVENT); assertThat(response.getIntent()).isEqualTo(JobIntent.COMPLETED); assertThat(response.getValue()).contains(entry("payload", MsgPackHelper.EMTPY_OBJECT)); }
@Test public void shouldCompleteJobWithNoPayload() { // given createJob(JOB_TYPE); apiRule.activateJobs(JOB_TYPE).await(); final Record<JobRecordValue> jobEvent = receiveSingleJobEvent(); // when final ExecuteCommandResponse response = testClient.completeJob(jobEvent.getKey(), jobEvent.getValue().getPayload()); // then assertThat(response.getRecordType()).isEqualTo(RecordType.EVENT); assertThat(response.getIntent()).isEqualTo(JobIntent.COMPLETED); assertThat(response.getValue()).contains(entry("payload", MsgPackHelper.EMTPY_OBJECT)); }
@Test public void shouldCompleteJob() { // given createJob(JOB_TYPE); apiRule.activateJobs(JOB_TYPE).await(); final Record<JobRecordValue> jobEvent = receiveSingleJobEvent(); // when final JobRecordValue jobEventValue = jobEvent.getValue(); final ExecuteCommandResponse response = testClient.completeJob(jobEvent.getKey(), jobEventValue.getPayload()); // then assertThat(response.getRecordType()).isEqualTo(RecordType.EVENT); assertThat(response.getIntent()).isEqualTo(JobIntent.COMPLETED); assertThat(response.getValue()) .contains( entry("worker", jobEventValue.getWorker()), entry("type", jobEventValue.getType()), entry("retries", (long) jobEventValue.getRetries()), entry("deadline", jobEventValue.getDeadline().toEpochMilli())); final Record<JobRecordValue> loggedEvent = RecordingExporter.jobRecords(JobIntent.COMPLETED).getFirst(); assertThat(loggedEvent.getValue().getType()).isEqualTo(JOB_TYPE); }
@Test public void shouldCompleteJob() { // given createJob(JOB_TYPE); apiRule.activateJobs(JOB_TYPE).await(); final Record<JobRecordValue> jobEvent = receiveSingleJobEvent(); // when final JobRecordValue jobEventValue = jobEvent.getValue(); final ExecuteCommandResponse response = testClient.completeJob(jobEvent.getKey(), jobEventValue.getPayload()); // then assertThat(response.getRecordType()).isEqualTo(RecordType.EVENT); assertThat(response.getIntent()).isEqualTo(JobIntent.COMPLETED); assertThat(response.getValue()) .contains( entry("worker", jobEventValue.getWorker()), entry("type", jobEventValue.getType()), entry("retries", (long) jobEventValue.getRetries()), entry("deadline", jobEventValue.getDeadline().toEpochMilli())); final Record<JobRecordValue> loggedEvent = RecordingExporter.jobRecords(JobIntent.COMPLETED).getFirst(); assertThat(loggedEvent.getValue().getType()).isEqualTo(JOB_TYPE); }
@Test public void shouldApplyOutputMappingOnCompleting() { // given testClient.deploy(WITHOUT_BOUNDARY_EVENTS); testClient.createWorkflowInstance(PROCESS_ID, "{ \"foo\": 1, \"boo\": 2 }"); // when final Record<JobRecordValue> jobRecord = testClient.receiveFirstJobEvent(JobIntent.CREATED); testClient.completeJob(jobRecord.getKey(), jobRecord.getValue().getPayload()); // then final Record<WorkflowInstanceRecordValue> record = testClient.receiveElementInState("task", WorkflowInstanceIntent.ELEMENT_COMPLETED); assertThat(record.getValue().getPayloadAsMap()).contains(entry("oof", 1)); }
@Test public void shouldApplyOutputMappingOnCompleting() { // given testClient.deploy(WITHOUT_BOUNDARY_EVENTS); testClient.createWorkflowInstance(PROCESS_ID, "{ \"foo\": 1, \"boo\": 2 }"); // when final Record<JobRecordValue> jobRecord = testClient.receiveFirstJobEvent(JobIntent.CREATED); testClient.completeJob(jobRecord.getKey(), jobRecord.getValue().getPayload()); // then final Record<WorkflowInstanceRecordValue> record = testClient.receiveElementInState("task", WorkflowInstanceIntent.ELEMENT_COMPLETED); assertThat(record.getValue().getPayloadAsMap()).contains(entry("oof", 1)); }
@Test public void shouldUnsubscribeFromBoundaryEventTriggersOnCompleting() { // given testClient.deploy(WITH_BOUNDARY_EVENTS); testClient.createWorkflowInstance(PROCESS_ID); // when final Record<JobRecordValue> job = testClient.receiveFirstJobEvent(JobIntent.CREATED); testClient.completeJob(job.getKey(), job.getValue().getPayload()); testClient.receiveElementInState("task", WorkflowInstanceIntent.ELEMENT_COMPLETED); // then shouldUnsubscribeFromBoundaryEventTrigger( WorkflowInstanceIntent.ELEMENT_COMPLETING, WorkflowInstanceIntent.ELEMENT_COMPLETED); }
@Test public void shouldUnsubscribeFromBoundaryEventTriggersOnCompleting() { // given testClient.deploy(WITH_BOUNDARY_EVENTS); testClient.createWorkflowInstance(PROCESS_ID); // when final Record<JobRecordValue> job = testClient.receiveFirstJobEvent(JobIntent.CREATED); testClient.completeJob(job.getKey(), job.getValue().getPayload()); testClient.receiveElementInState("task", WorkflowInstanceIntent.ELEMENT_COMPLETED); // then shouldUnsubscribeFromBoundaryEventTrigger( WorkflowInstanceIntent.ELEMENT_COMPLETING, WorkflowInstanceIntent.ELEMENT_COMPLETED); }
@Test public void shouldApplyInputMappings() { // given testClient.deploy( Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .serviceTask( "service", builder -> { builder.zeebeTaskType("test"); mappings.accept(builder); }) .endEvent() .done()); // when testClient.createWorkflowInstance(PROCESS_ID, initialPayload); // then final Record<JobRecordValue> jobCreated = RecordingExporter.jobRecords(JobIntent.CREATED).getFirst(); JsonUtil.assertEquality(jobCreated.getValue().getPayload(), expectedPayload); }
@Test public void shouldApplyInputMappings() { // given testClient.deploy( Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .serviceTask( "service", builder -> { builder.zeebeTaskType("test"); mappings.accept(builder); }) .endEvent() .done()); // when testClient.createWorkflowInstance(PROCESS_ID, initialPayload); // then final Record<JobRecordValue> jobCreated = RecordingExporter.jobRecords(JobIntent.CREATED).getFirst(); JsonUtil.assertEquality(jobCreated.getValue().getPayload(), expectedPayload); }
@Test public void shouldCreateJobForServiceTaskInEmbeddedSubprocess() { // given testClient.deploy(ONE_TASK_SUBPROCESS); final byte[] payload = BufferUtil.bufferAsArray(MsgPackUtil.asMsgPack("key", "val")); // when testClient.createWorkflowInstance(PROCESS_ID, payload); // then final Record<JobRecordValue> jobCreatedEvent = testClient.receiveFirstJobEvent(JobIntent.CREATED); MsgPackUtil.assertEquality(payload, jobCreatedEvent.getValue().getPayload()); final Headers headers = jobCreatedEvent.getValue().getHeaders(); Assertions.assertThat(headers).hasElementId("subProcessTask"); }
@Test public void shouldCreateJobForServiceTaskInEmbeddedSubprocess() { // given testClient.deploy(ONE_TASK_SUBPROCESS); final byte[] payload = BufferUtil.bufferAsArray(MsgPackUtil.asMsgPack("key", "val")); // when testClient.createWorkflowInstance(PROCESS_ID, payload); // then final Record<JobRecordValue> jobCreatedEvent = testClient.receiveFirstJobEvent(JobIntent.CREATED); MsgPackUtil.assertEquality(payload, jobCreatedEvent.getValue().getPayload()); final Headers headers = jobCreatedEvent.getValue().getHeaders(); Assertions.assertThat(headers).hasElementId("subProcessTask"); }