From 3af25b94d60a82634ac43c6605545315bd5d5a49 Mon Sep 17 00:00:00 2001 From: Punit Darira Date: Mon, 2 Sep 2024 00:57:34 -0400 Subject: [PATCH] feat(engine): Tests related to #4205 --- .../HistoryServiceAsyncOperationsTest.java | 17 +++++++++ .../ModificationExecutionAsyncTest.java | 7 ++++ .../RuntimeServiceAsyncOperationsTest.java | 21 +++++++++++ .../migration/batch/BatchMigrationTest.java | 35 +++++++++++++++++++ 4 files changed, 80 insertions(+) diff --git a/engine/src/test/java/org/camunda/bpm/engine/test/api/history/HistoryServiceAsyncOperationsTest.java b/engine/src/test/java/org/camunda/bpm/engine/test/api/history/HistoryServiceAsyncOperationsTest.java index 30ba61fcc5b..3455c273c75 100644 --- a/engine/src/test/java/org/camunda/bpm/engine/test/api/history/HistoryServiceAsyncOperationsTest.java +++ b/engine/src/test/java/org/camunda/bpm/engine/test/api/history/HistoryServiceAsyncOperationsTest.java @@ -16,6 +16,8 @@ */ package org.camunda.bpm.engine.test.api.history; +import static org.assertj.core.api.Assertions.assertThat; + import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.hamcrest.CoreMatchers.anyOf; import static org.hamcrest.CoreMatchers.not; @@ -109,6 +111,21 @@ public void testDeleteHistoryProcessInstancesAsyncWithList() throws Exception { assertAllHistoricProcessInstancesAreDeleted(); } + @Test + public void testDeleteHistoryProcessInstances_shouldCreateProcessInstanceRelatedBatchJobsForSingleInvocations() { + //when + Batch batch = historyService.deleteHistoricProcessInstancesAsync(historicProcessInstances, TEST_REASON); + + completeSeedJobs(batch); + List executionJobs = managementService.createJobQuery().jobDefinitionId(batch.getBatchJobDefinitionId()).list(); + + // then + //Making sure that processInstanceId is set in execution jobs #4205 + assertThat(executionJobs) + .extracting("processInstanceId") + .containsExactlyInAnyOrder(historicProcessInstances.toArray()); + } + @Test public void testDeleteHistoryProcessInstancesAsyncWithListForDeletedDeployment() throws Exception { // given a second deployment diff --git a/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/ModificationExecutionAsyncTest.java b/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/ModificationExecutionAsyncTest.java index 702ff0bbd03..53162f65674 100644 --- a/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/ModificationExecutionAsyncTest.java +++ b/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/ModificationExecutionAsyncTest.java @@ -167,6 +167,13 @@ public void createBatchModification() { Batch batch = runtimeService.createModification(processDefinition.getId()).startAfterActivity("user2").processInstanceIds(processInstanceIds).executeAsync(); assertBatchCreated(batch, 2); + + //Making sure that processInstanceId is set in execution jobs #4205 + helper.executeSeedJob(batch); + List executionJobs = helper.getExecutionJobs(batch); + assertThat(executionJobs) + .extracting("processInstanceId") + .containsExactlyInAnyOrder(processInstanceIds.toArray()); } @Test diff --git a/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/RuntimeServiceAsyncOperationsTest.java b/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/RuntimeServiceAsyncOperationsTest.java index fc8d6e5dbe1..e1a05f3fe2a 100644 --- a/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/RuntimeServiceAsyncOperationsTest.java +++ b/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/RuntimeServiceAsyncOperationsTest.java @@ -93,6 +93,27 @@ public void testDeleteProcessInstancesAsyncWithList() throws Exception { assertProcessInstancesAreDeleted(); } + @Deployment(resources = { + "org/camunda/bpm/engine/test/api/oneTaskProcess.bpmn20.xml"}) + @Test + public void testDeleteProcessInstances_shouldCreateProcessInstanceRelatedBatchJobsForSingleInvocations() { + // given + List processIds = startTestProcesses(2); + + // when + Batch batch = runtimeService.deleteProcessInstancesAsync(processIds, null, TESTING_INSTANCE_DELETE); + completeSeedJobs(batch); + + List executionJobs = managementService.createJobQuery().jobDefinitionId(batch.getBatchJobDefinitionId()).list(); + + // then + //Making sure that processInstanceId is set in execution jobs #4205 + assertThat(executionJobs) + .extracting("processInstanceId") + .containsExactlyInAnyOrder(processIds.toArray()); + } + + @Deployment(resources = { "org/camunda/bpm/engine/test/api/oneTaskProcess.bpmn20.xml"}) @Test diff --git a/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/migration/batch/BatchMigrationTest.java b/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/migration/batch/BatchMigrationTest.java index 4ee6b63fa6e..cd0b40a684a 100644 --- a/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/migration/batch/BatchMigrationTest.java +++ b/engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/migration/batch/BatchMigrationTest.java @@ -944,6 +944,41 @@ public void shouldSetExecutionStartTimeInBatchAndHistory() { Assertions.assertThat(historicBatch.getExecutionStartTime()).isEqualToIgnoringMillis(TEST_DATE); } + @Test + public void shouldCreateProcessInstanceRelatedBatchJobsForSingleInvocations() { + RuntimeService runtimeService = engineRule.getRuntimeService(); + int processInstanceCount = 2; + + ProcessDefinition sourceProcessDefinition = migrationRule.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); + ProcessDefinition targetProcessDefinition = migrationRule.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); + + List processInstanceIds = new ArrayList<>(); + for (int i = 0; i < processInstanceCount; i++) { + processInstanceIds.add( + runtimeService.startProcessInstanceById(sourceProcessDefinition.getId()).getId() + ); + } + + MigrationPlan migrationPlan = engineRule.getRuntimeService() + .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) + .mapEqualActivities() + .build(); + + // when + Batch batch = runtimeService.newMigration(migrationPlan) + .processInstanceIds(processInstanceIds) + .executeAsync(); + + helper.executeSeedJob(batch); + List executionJobs = helper.getExecutionJobs(batch); + + // then + //Making sure that processInstanceId is set in execution jobs #4205 + assertThat(executionJobs) + .extracting("processInstanceId") + .containsExactlyInAnyOrder(processInstanceIds.toArray()); + } + protected void assertBatchCreated(Batch batch, int processInstanceCount) { assertNotNull(batch); assertNotNull(batch.getId());