From 2c1dd52ef08febf36c816b917d773345764042b0 Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Thu, 18 Sep 2025 11:22:43 +0200 Subject: [PATCH 01/14] Modifications applications: split long running transaction before/after the computations This requires to reorganize the code and the transactions the fully load the data, hence the changes in NetworkModificationRepository with the new intermediate methods. Add testInsertCompositeModifications for symmetry with other code paths duplicate/move/ in the switch/case of ModificationController ?action=... --- .../NetworkModificationRepository.java | 60 +++++++++++++++++- .../service/NetworkModificationService.java | 19 ++---- .../server/service/BuildTest.java | 5 ++ .../service/ModificationIndexationTest.java | 63 ++++++++++++++++++- 4 files changed, 132 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java index c560f6438..fdaddc90c 100644 --- a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java +++ b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java @@ -115,6 +115,11 @@ public List saveModifications(UUID groupUuid, List saveModificationInfos(UUID groupUuid, List modifications) { + return saveModificationInfosNonTransactional(groupUuid, modifications); + } + + private List saveModificationInfosNonTransactional(UUID groupUuid, + List modifications) { List entities = modifications.stream().map(ModificationEntity::fromDTO).toList(); return saveModificationsNonTransactional(groupUuid, entities); @@ -165,6 +170,20 @@ private List saveModificationsNonTransactional(UUID groupUui @Transactional // TODO Remove transaction when errors will no longer be sent to the front public List moveModifications(UUID destinationGroupUuid, UUID originGroupUuid, List modificationsToMoveUUID, UUID referenceModificationUuid) { + return moveModificationsNonTransactional(destinationGroupUuid, originGroupUuid, modificationsToMoveUUID, referenceModificationUuid); + } + + @Transactional + public List moveModificationsFullDto(UUID destinationGroupUuid, UUID originGroupUuid, List modificationsToMoveUUID, UUID referenceModificationUuid) { + List movedModifications = moveModificationsNonTransactional(destinationGroupUuid, originGroupUuid, modificationsToMoveUUID, referenceModificationUuid); + // Force load subentities/collections, needed later when the transaction is closed + // to avoid LazyInitialisationException. Maybe better to refactor to return the dto ? + // And refactor to more efficiently load the data (avoid 1+N) ? + movedModifications.forEach(ModificationEntity::toModificationInfos); + return movedModifications; + } + + private List moveModificationsNonTransactional(UUID destinationGroupUuid, UUID originGroupUuid, List modificationsToMoveUUID, UUID referenceModificationUuid) { // read origin group and modifications ModificationGroupEntity originModificationGroupEntity = getModificationGroup(originGroupUuid); List originModificationEntities = originModificationGroupEntity.getModifications() @@ -443,7 +462,7 @@ public ModificationInfos getModificationInfos(ModificationEntity modificationEnt return modificationEntity.toModificationInfos(); } - public List getModificationsEntities(List groupUuids, boolean onlyStashed) { + private List getModificationsEntitiesNonTransactional(List groupUuids, boolean onlyStashed) { Stream entityStream = groupUuids.stream().flatMap(this::getModificationEntityStream); if (onlyStashed) { return entityStream.filter(m -> m.getStashed() == onlyStashed).toList(); @@ -452,6 +471,21 @@ public List getModificationsEntities(List groupUuids, } } + //TODO ? should be @Transactional(readOnly = true) + public List getModificationsEntities(List groupUuids, boolean onlyStashed) { + return getModificationsEntitiesNonTransactional(groupUuids, onlyStashed); + } + + @Transactional(readOnly = true) + public List getModificationsEntitiesFullDto(List groupUuids, boolean onlyStashed) { + List modificationsEntities = getModificationsEntitiesNonTransactional(groupUuids, onlyStashed); + // Force load subentities/collections, needed later when the transaction is closed + // to avoid LazyInitialisationException. Maybe better to refactor to return the dto ? + // And refactor to more efficiently load the data (avoid 1+N) ? + modificationsEntities.forEach(ModificationEntity::toModificationInfos); + return modificationsEntities; + } + @Transactional(readOnly = true) public ModificationInfos getModificationInfo(UUID modificationUuid) { return getModificationInfos(getModificationEntity(modificationUuid)); @@ -525,6 +559,10 @@ public Integer getModificationsCount(@NonNull UUID groupUuid, boolean stashed) { @Transactional(readOnly = true) public List getModificationsInfos(@NonNull List uuids) { + return getModificationsInfosNonTransactional(uuids); + } + + private List getModificationsInfosNonTransactional(List uuids) { // Spring-data findAllById doc says: the order of elements in the result is not guaranteed Map entities = modificationRepository.findAllById(uuids) .stream() @@ -553,6 +591,10 @@ public List getBasicNetworkModificationsFromComposite(@NonNul @Transactional(readOnly = true) public List getCompositeModificationsInfos(@NonNull List uuids) { + return getCompositeModificationsInfosNonTransactional(uuids); + } + + private List getCompositeModificationsInfosNonTransactional(@NonNull List uuids) { List entities = new ArrayList<>(); uuids.forEach(uuid -> { List foundEntities = modificationRepository.findModificationIdsByCompositeModificationId(uuid); @@ -568,6 +610,10 @@ public List getCompositeModificationsInfos(@NonNull List getActiveModificationsInfos(@NonNull UUID groupUuid) { + return getActiveModificationsInfosNonTransactional(groupUuid); + } + + private List getActiveModificationsInfosNonTransactional(UUID groupUuid) { return getModificationEntityStream(groupUuid).filter(m -> !m.getStashed()).map(this::getModificationInfos).toList(); } @@ -812,4 +858,16 @@ private void deleteTabularModificationSubModifications(TabularModificationEntity throw new UnsupportedOperationException(String.format("No sub-modifications deletion for modification type: %s", tabularModificationType)); } } + + @Transactional + public List saveDuplicateModifications(@NonNull UUID targetGroupUuid, UUID originGroupUuid, @NonNull List modificationsUuids) { + List modificationInfos = originGroupUuid != null ? getActiveModificationsInfosNonTransactional(originGroupUuid) : getModificationsInfosNonTransactional(modificationsUuids); + return saveModificationInfosNonTransactional(targetGroupUuid, modificationInfos); + } + + @Transactional + public List saveCompositeModifications(@NonNull UUID targetGroupUuid, @NonNull List modificationsUuids) { + List modificationInfos = getCompositeModificationsInfosNonTransactional(modificationsUuids); + return saveModificationInfosNonTransactional(targetGroupUuid, modificationInfos); + } } diff --git a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java index 8daf4cca9..302ed6175 100644 --- a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java +++ b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java @@ -191,9 +191,6 @@ public void restoreNetworkModifications(UUID groupUuid, @NonNull List modi networkModificationRepository.getModificationsCount(groupUuid, false)); } - // No transactional because we need to save modification in DB also in case of error - // Transaction made in 'saveModifications' method - // TODO Add transaction when errors will no longer be sent to the front public NetworkModificationsResult createNetworkModification(@NonNull UUID groupUuid, @NonNull ModificationInfos modificationInfo, @NonNull List applicationContexts) { List modificationEntities = networkModificationRepository.saveModificationInfos(groupUuid, List.of(modificationInfo)); @@ -237,7 +234,6 @@ public Network cloneNetworkVariant(UUID networkUuid, return network; } - @Transactional public NetworkModificationResult buildVariant(@NonNull UUID networkUuid, @NonNull BuildInfos buildInfos) { // Apply all modifications belonging to the modification groups uuids in buildInfos List modificationGroupsInfos = new ArrayList<>(); @@ -246,7 +242,8 @@ public NetworkModificationResult buildVariant(@NonNull UUID networkUuid, @NonNul Set modificationsToExclude = buildInfos.getModificationUuidsToExclude().get(groupUuid); List modifications = List.of(); try { - modifications = networkModificationRepository.getModificationsEntities(List.of(groupUuid), false) + // FullDto needed for toModificationInfos() after the modifications have been applied + modifications = networkModificationRepository.getModificationsEntitiesFullDto(List.of(groupUuid), false) .stream() .filter(m -> modificationsToExclude == null || !modificationsToExclude.contains(m.getId())) .filter(m -> !m.getStashed()) @@ -287,12 +284,12 @@ public void deleteNetworkModifications(UUID groupUuid, List modificationsU } } - @Transactional public NetworkModificationsResult moveModifications(@NonNull UUID destinationGroupUuid, @NonNull UUID originGroupUuid, UUID beforeModificationUuid, @NonNull List modificationsToMoveUuids, @NonNull List applicationContexts, boolean applyModifications) { // update origin/destinations groups to cut and paste all modificationsToMove - List modificationEntities = networkModificationRepository.moveModifications(destinationGroupUuid, originGroupUuid, modificationsToMoveUuids, beforeModificationUuid); + // FullDto needed for toModificationInfos() after the modifications have been applied + List modificationEntities = networkModificationRepository.moveModificationsFullDto(destinationGroupUuid, originGroupUuid, modificationsToMoveUuids, beforeModificationUuid); List> result = applyModifications && !modificationEntities.isEmpty() ? applyModifications(destinationGroupUuid, modificationEntities, applicationContexts) : List.of(); return new NetworkModificationsResult(modificationEntities.stream().map(ModificationEntity::getId).toList(), result); @@ -333,23 +330,19 @@ private Optional applyModifications(UUID networkUuid, return Optional.empty(); } - @Transactional public NetworkModificationsResult duplicateModifications(@NonNull UUID targetGroupUuid, UUID originGroupUuid, @NonNull List modificationsUuids, @NonNull List applicationContexts) { if (originGroupUuid != null && !modificationsUuids.isEmpty()) { // Duplicate modifications from a group or from a list only throw new NetworkModificationServerException(DUPLICATION_ARGUMENT_INVALID); } - List modificationInfos = originGroupUuid != null ? networkModificationRepository.getActiveModificationsInfos(originGroupUuid) : networkModificationRepository.getModificationsInfos(modificationsUuids); - List duplicateModifications = networkModificationRepository.saveModificationInfos(targetGroupUuid, modificationInfos); + List duplicateModifications = networkModificationRepository.saveDuplicateModifications(targetGroupUuid, originGroupUuid, modificationsUuids); return new NetworkModificationsResult( duplicateModifications.stream().map(ModificationEntity::getId).toList(), applyModifications(targetGroupUuid, duplicateModifications, applicationContexts) ); } - @Transactional public NetworkModificationsResult insertCompositeModifications(@NonNull UUID targetGroupUuid, @NonNull List modificationsUuids, @NonNull List applicationContexts) { - List modificationInfos = networkModificationRepository.getCompositeModificationsInfos(modificationsUuids); - List modificationEntities = networkModificationRepository.saveModificationInfos(targetGroupUuid, modificationInfos); + List modificationEntities = networkModificationRepository.saveCompositeModifications(targetGroupUuid, modificationsUuids); return new NetworkModificationsResult(modificationEntities.stream().map(ModificationEntity::getId).toList(), applyModifications(targetGroupUuid, modificationEntities, applicationContexts)); } diff --git a/src/test/java/org/gridsuite/modification/server/service/BuildTest.java b/src/test/java/org/gridsuite/modification/server/service/BuildTest.java index 3df4d22ff..552ce35d8 100644 --- a/src/test/java/org/gridsuite/modification/server/service/BuildTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/BuildTest.java @@ -362,6 +362,11 @@ void testIndexationAfterBuild(final MockWebServer server) { .couplingDevices(Arrays.asList(CouplingDeviceInfos.builder().busbarSectionId1("vl9_1_1").busbarSectionId2("vl9_2_1").build())) .build())); // add new Load + // Need an entity with a lazyloaded subentity/collection to test that all required + // data has been loaded during the initial completed transaction before applying modifications: + // LoadCreationInfos and other modifications in this test do the job because it has the free properties Collection. + // Is there a good way to add in this test that we have 2 short transactions + // instead of one long idle transaction ? equipmentsToAdd.add(ModificationEntity.fromDTO(LoadCreationInfos.builder() .equipmentId("newLoad") .equipmentName("newLoad") diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java index a5ce01bda..5d844e95e 100644 --- a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java @@ -182,6 +182,11 @@ void testDuplicateModifications() { Create first modification then apply it on group 1 */ String newEquipmentId = "newLoad"; + // Need an entity with a lazyloaded subentity/collection to test that all required + // data has been loaded during the completed transaction before applying modifications: + // LoadCreationInfos does the job because it has the free properties Collection. + // Is there a good way to add in this test that we have 2 short transactions + // instead of one long idle transaction ? LoadCreationInfos loadCreationInfos = createLoadCreationInfos(newEquipmentId); UUID groupUuid1 = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid1, List.of(ModificationEntity.fromDTO(loadCreationInfos))); @@ -225,10 +230,14 @@ void testMoveModifications() { Create first modification then apply it on group 1 */ String newEquipmentId = "newLoad"; + // Need an entity with a lazyloaded subentity/collection to test that all required + // data has been loaded during the completed transaction before applying modifications: + // LoadCreationInfos does the job because it has the free properties Collection. + // Is there a good way to add in this test that we have 2 short transactions + // instead of one long idle transaction ? LoadCreationInfos loadCreationInfos = createLoadCreationInfos(newEquipmentId); UUID groupUuid1 = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid1, List.of(ModificationEntity.fromDTO(loadCreationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); assertNotNull(result); @@ -264,6 +273,58 @@ void testMoveModifications() { modificationApplicationInfos.forEach(applicationInfo -> assertEquals(newEquipmentId, applicationInfo.getCreatedEquipmentIds().iterator().next())); } + @Test + void testInsertCompositeModifications() { + /* + Create first modification then apply it on group 1 + */ + String newEquipmentId = "newLoad"; + // Need an entity with a lazyloaded subentity/collection to test that all required + // data has been loaded during the completed transaction before applying modifications: + // LoadCreationInfos does the job because it has the free properties Collection. + // Is there a good way to add in this test that we have 2 short transactions + // instead of one long idle transaction ? + LoadCreationInfos loadCreationInfos = createLoadCreationInfos(newEquipmentId); + UUID groupUuid1 = UUID.randomUUID(); + List entities = modificationRepository.saveModifications(groupUuid1, List.of(ModificationEntity.fromDTO(loadCreationInfos))); + + NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); + assertNotNull(result); + + // Create the composite modification to pass later to ?action=insert + UUID compositeUuid = networkModificationService.createNetworkCompositeModification( + entities.stream().map(ModificationEntity::getId).toList() + ); + + // Need to remove the listener created in the last modifications application + ((NetworkImpl) networkInfos.getNetwork()).getListeners().clear(); + + /* + Insert as composite this modification to group 2, variant 2 + */ + UUID groupUuid2 = UUID.randomUUID(); + NetworkModificationsResult modificationsResult = networkModificationService.insertCompositeModifications( + groupUuid2, + List.of(compositeUuid), + List.of(new ModificationApplicationContext(networkInfos.getNetworkUuuid(), variant2, UUID.randomUUID(), UUID.randomUUID())) + ); + + /* + check results in database and in elasticsearch + */ + List expectedModificationUuids = List.of(entities.getFirst().getId(), modificationsResult.modificationUuids().getFirst()); + List expectedGroupUuids = List.of(groupUuid1, groupUuid2); + + List modificationApplicationEntities = modificationApplicationRepository.findAll(); + List modificationApplicationInfos = IterableUtils.toList(modificationApplicationInfosRepository.findAll()); + + assertThat(modificationApplicationEntities.stream().map(m -> m.getModification().getId()).toList()).usingRecursiveComparison().isEqualTo(expectedModificationUuids); + assertThat(modificationApplicationInfos.stream().map(ModificationApplicationInfos::getModificationUuid).toList()).usingRecursiveComparison().isEqualTo(expectedModificationUuids); + + assertThat(modificationApplicationInfos.stream().map(ModificationApplicationInfos::getGroupUuid).toList()).usingRecursiveComparison().isEqualTo(expectedGroupUuids); + modificationApplicationInfos.forEach(applicationInfo -> assertEquals(newEquipmentId, applicationInfo.getCreatedEquipmentIds().iterator().next())); + } + @Test void testDeleteModifications() { /* From 621c489faa1e1b12439decb4ae3a9be6974ca29c Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Wed, 24 Sep 2025 12:32:38 +0200 Subject: [PATCH 02/14] Modification flush: use the same thread as for apply (bounded thread pool for large modifications) --- .../NetworkModificationApplicator.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java b/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java index 3c5de611f..dee48847c 100644 --- a/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java +++ b/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java @@ -101,15 +101,18 @@ public NetworkModificationResult applyModifications(ModificationApplicationGroup .orElse(PreloadingStrategy.NONE); NetworkStoreListener listener = NetworkStoreListener.create(networkInfos.getNetwork(), networkInfos.getNetworkUuuid(), networkStoreService, equipmentInfosService, applicationInfosService, collectionThreshold); - ApplicationStatus groupApplicationStatus; if (preloadingStrategy == PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW) { - groupApplicationStatus = largeNetworkModificationExecutionService - .supplyAsync(() -> apply(modificationInfosGroup, listener)) + return largeNetworkModificationExecutionService + .supplyAsync(() -> applyAndFlush(modificationInfosGroup, listener)) .join(); } else { - groupApplicationStatus = apply(modificationInfosGroup, listener); + return applyAndFlush(modificationInfosGroup, listener); } + } + private NetworkModificationResult applyAndFlush(ModificationApplicationGroup modificationInfosGroup, + NetworkStoreListener listener) { + ApplicationStatus groupApplicationStatus = apply(modificationInfosGroup, listener); return flushModificationApplications(groupApplicationStatus, listener); } @@ -142,15 +145,18 @@ public NetworkModificationResult applyModifications(List groupsApplicationStatuses; if (preloadingStrategy == PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW) { - groupsApplicationStatuses = largeNetworkModificationExecutionService - .supplyAsync(() -> apply(modificationInfosGroups, listener)) + return largeNetworkModificationExecutionService + .supplyAsync(() -> applyAndFlush(modificationInfosGroups, listener)) .join(); } else { - groupsApplicationStatuses = apply(modificationInfosGroups, listener); + return applyAndFlush(modificationInfosGroups, listener); } + } + private NetworkModificationResult applyAndFlush(List modificationInfosGroups, + NetworkStoreListener listener) { + List groupsApplicationStatuses = apply(modificationInfosGroups, listener); return flushModificationApplications(groupsApplicationStatuses, listener); } From 79b4b61fe1b54bd324ad495da4e21a31e3a34b00 Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Thu, 25 Sep 2025 11:44:55 +0200 Subject: [PATCH 03/14] No longer block the tomcat thread when waiting for import or export (servlet 3.0+ AsyncContext) Add no timeout configuration to behave like before this change Spring forces us to adapt the tests with boilerplate code (asyncStarted() and asyncDispatch()) as per https://docs.spring.io/spring-framework/reference/testing/mockmvc/hamcrest/async-requests.html to mimic the servlet 3.0 redispatch Add more andReturn and assignement to variables to avoid potential mistakes The two mvc result represent the same request, inside they hold the same request/response objects, but some other fields are different (asyncResult for example) and tests may be unreliable if they use the first one (representing the state before the async split) --- .../server/NetworkModificationController.java | 13 +- .../NetworkModificationApplicator.java | 23 ++-- .../server/service/BuildWorkerService.java | 3 +- .../service/NetworkModificationService.java | 77 +++++++---- src/main/resources/config/application.yaml | 6 + .../server/ModificationControllerTest.java | 128 +++++++++++++++--- .../server/VoltageInitReportTest.java | 2 +- .../AbstractInjectionModificationTest.java | 15 +- .../AbstractNetworkModificationTest.java | 11 +- .../modifications/BalancesAdjustmentTest.java | 4 + .../BatteryCreationInNodeBreakerTest.java | 4 + .../BatteryModificationTest.java | 48 +++++-- .../CompositeModificationsTest.java | 8 +- .../DeleteAttachingLineTest.java | 21 ++- .../DeleteVoltageLevelOnLineTest.java | 15 +- .../EquipmentAttributeModificationTest.java | 29 +++- .../modifications/EquipmentDeletionTest.java | 8 +- .../modifications/GenerationDispatchTest.java | 16 ++- .../GeneratorCreationInNodeBreakerTest.java | 4 + .../GeneratorModificationTest.java | 73 +++++++--- .../modifications/GeneratorScalingTest.java | 17 ++- .../modifications/GroovyScriptTest.java | 26 +++- .../LineAttachToVoltageLevelTest.java | 9 +- .../LineCreationInNodeBreakerTest.java | 4 + .../modifications/LineModificationTest.java | 80 ++++++++--- .../LoadCreationInNodeBreakerTest.java | 4 + .../server/modifications/LoadScalingTest.java | 21 ++- ...tingStatusModificationLockoutLineTest.java | 9 +- .../ShuntCompensatorModificationTest.java | 33 +++-- ...rCompensatorCreationInNodeBreakerTest.java | 4 + ...ingsTransformerCreationBusBreakerTest.java | 4 + ...ngsTransformerCreationNodeBreakerTest.java | 6 + ...woWindingsTransformerModificationTest.java | 111 +++++++++++---- .../VoltageInitModificationTest.java | 9 +- .../VoltageLevelCreationTest.java | 15 +- .../VoltageLevelModificationTest.java | 7 +- .../VoltageLevelTopologyModificationTest.java | 17 ++- .../server/modifications/VscCreationTest.java | 21 ++- .../AbstractModificationByAssignmentTest.java | 4 + .../AbstractByFormulaModificationTest.java | 4 + .../AbstractByFilterDeletionTest.java | 9 +- .../TabularGeneratorCreationsTest.java | 12 +- .../TabularGeneratorModificationsTest.java | 8 +- .../server/service/BuildTest.java | 8 +- .../service/BuildWorkerServiceTest.java | 4 +- .../service/ModificationIndexationTest.java | 28 ++-- .../service/ModificationSearchTest.java | 4 +- .../NetworkModificationApplicatorTest.java | 4 +- .../modification/server/utils/ApiUtils.java | 5 + 49 files changed, 747 insertions(+), 248 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/NetworkModificationController.java b/src/main/java/org/gridsuite/modification/server/NetworkModificationController.java index f9b4de328..7f8005c2e 100644 --- a/src/main/java/org/gridsuite/modification/server/NetworkModificationController.java +++ b/src/main/java/org/gridsuite/modification/server/NetworkModificationController.java @@ -26,6 +26,7 @@ import java.util.Map; import java.util.Set; import java.util.UUID; +import java.util.concurrent.CompletableFuture; /** * @author Franck Lecuyer @@ -88,7 +89,7 @@ public ResponseEntity> duplicateGroup(@RequestParam("groupUuid") @PutMapping(value = "/groups/{groupUuid}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "For a list of network modifications passed in body, Move them before another one or at the end of the list, or Duplicate them at the end of the list, or Insert them (composite) at the end of the list") @ApiResponse(responseCode = "200", description = "The modification list of the group has been updated.") - public ResponseEntity handleNetworkModifications(@Parameter(description = "updated group UUID, where modifications are pasted") @PathVariable("groupUuid") UUID targetGroupUuid, + public CompletableFuture> handleNetworkModifications(@Parameter(description = "updated group UUID, where modifications are pasted") @PathVariable("groupUuid") UUID targetGroupUuid, @Parameter(description = "kind of modification", required = true) @RequestParam(value = "action") GroupModificationAction action, @Parameter(description = "the modification Uuid to move before (MOVE option, empty means moving at the end)") @RequestParam(value = "before", required = false) UUID beforeModificationUuid, @Parameter(description = "origin group UUID, where modifications are copied or cut") @RequestParam(value = "originGroupUuid", required = false) UUID originGroupUuid, @@ -96,16 +97,16 @@ public ResponseEntity handleNetworkModifications(@Pa @RequestBody Pair, List> modificationContextInfos) { return switch (action) { case COPY -> - ResponseEntity.ok().body(networkModificationService.duplicateModifications(targetGroupUuid, originGroupUuid, modificationContextInfos.getFirst(), modificationContextInfos.getSecond())); + networkModificationService.duplicateModifications(targetGroupUuid, originGroupUuid, modificationContextInfos.getFirst(), modificationContextInfos.getSecond()).thenApply(ResponseEntity.ok()::body); case INSERT -> - ResponseEntity.ok().body(networkModificationService.insertCompositeModifications(targetGroupUuid, modificationContextInfos.getFirst(), modificationContextInfos.getSecond())); + networkModificationService.insertCompositeModifications(targetGroupUuid, modificationContextInfos.getFirst(), modificationContextInfos.getSecond()).thenApply(ResponseEntity.ok()::body); case MOVE -> { UUID sourceGroupUuid = originGroupUuid == null ? targetGroupUuid : originGroupUuid; boolean applyModifications = canApply; if (sourceGroupUuid.equals(targetGroupUuid)) { applyModifications = false; } - yield ResponseEntity.ok().body(networkModificationService.moveModifications(targetGroupUuid, sourceGroupUuid, beforeModificationUuid, modificationContextInfos.getFirst(), modificationContextInfos.getSecond(), applyModifications)); + yield networkModificationService.moveModifications(targetGroupUuid, sourceGroupUuid, beforeModificationUuid, modificationContextInfos.getFirst(), modificationContextInfos.getSecond(), applyModifications).thenApply(ResponseEntity.ok()::body); } }; } @@ -131,11 +132,11 @@ public ResponseEntity> getModificationGroups() { @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "The network modification was created"), @ApiResponse(responseCode = "404", description = "The network or equipment was not found")}) - public ResponseEntity createNetworkModification( + public CompletableFuture> createNetworkModification( @Parameter(description = "Group UUID") @RequestParam(name = "groupUuid") UUID groupUuid, @RequestBody Pair> modificationContextInfos) { modificationContextInfos.getFirst().check(); - return ResponseEntity.ok().body(networkModificationService.createNetworkModification(groupUuid, modificationContextInfos.getFirst(), modificationContextInfos.getSecond())); + return networkModificationService.createNetworkModification(groupUuid, modificationContextInfos.getFirst(), modificationContextInfos.getSecond()).thenApply(ResponseEntity.ok()::body); } @PutMapping(value = "/network-modifications/{uuid}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java b/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java index dee48847c..6c495ceca 100644 --- a/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java +++ b/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java @@ -35,6 +35,7 @@ import java.util.List; import java.util.UUID; +import java.util.concurrent.CompletableFuture; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; @@ -92,7 +93,7 @@ public NetworkModificationApplicator(NetworkStoreService networkStoreService, Eq * medium : preloadingStrategy = COLLECTION * large : preloadingStrategy = ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW */ - public NetworkModificationResult applyModifications(ModificationApplicationGroup modificationInfosGroup, NetworkInfos networkInfos) { + public CompletableFuture applyModifications(ModificationApplicationGroup modificationInfosGroup, NetworkInfos networkInfos) { PreloadingStrategy preloadingStrategy = modificationInfosGroup.modifications().stream() .map(ModificationEntity::getType) .map(ModificationType::valueOf) @@ -103,13 +104,16 @@ public NetworkModificationResult applyModifications(ModificationApplicationGroup NetworkStoreListener listener = NetworkStoreListener.create(networkInfos.getNetwork(), networkInfos.getNetworkUuuid(), networkStoreService, equipmentInfosService, applicationInfosService, collectionThreshold); if (preloadingStrategy == PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW) { return largeNetworkModificationExecutionService - .supplyAsync(() -> applyAndFlush(modificationInfosGroup, listener)) - .join(); + .supplyAsync(() -> applyAndFlush(modificationInfosGroup, listener)); } else { - return applyAndFlush(modificationInfosGroup, listener); + return CompletableFuture.completedFuture(applyAndFlush(modificationInfosGroup, listener)); } } + public NetworkModificationResult applyModificationsBlocking(ModificationApplicationGroup modificationInfosGroup, NetworkInfos networkInfos) { + return this.applyModifications(modificationInfosGroup, networkInfos).join(); + } + private NetworkModificationResult applyAndFlush(ModificationApplicationGroup modificationInfosGroup, NetworkStoreListener listener) { ApplicationStatus groupApplicationStatus = apply(modificationInfosGroup, listener); @@ -134,7 +138,7 @@ private NetworkModificationResult flushModificationApplications(ApplicationStatu * Note : it is possible that the rabbitmq consumer threads here will be blocked by modifications applied directly in the other applyModifications method * and no more builds can go through. If this causes problems we should put them in separate rabbitmq queues. */ - public NetworkModificationResult applyModifications(List modificationInfosGroups, NetworkInfos networkInfos) { + public CompletableFuture applyModifications(List modificationInfosGroups, NetworkInfos networkInfos) { PreloadingStrategy preloadingStrategy = modificationInfosGroups.stream() .map(ModificationApplicationGroup::modifications) .flatMap(List::stream) @@ -147,13 +151,16 @@ public NetworkModificationResult applyModifications(List applyAndFlush(modificationInfosGroups, listener)) - .join(); + .supplyAsync(() -> applyAndFlush(modificationInfosGroups, listener)); } else { - return applyAndFlush(modificationInfosGroups, listener); + return CompletableFuture.completedFuture(applyAndFlush(modificationInfosGroups, listener)); } } + public NetworkModificationResult applyModificationsBlocking(List modificationInfosGroups, NetworkInfos networkInfos) { + return this.applyModifications(modificationInfosGroups, networkInfos).join(); + } + private NetworkModificationResult applyAndFlush(List modificationInfosGroups, NetworkStoreListener listener) { List groupsApplicationStatuses = apply(modificationInfosGroups, listener); diff --git a/src/main/java/org/gridsuite/modification/server/service/BuildWorkerService.java b/src/main/java/org/gridsuite/modification/server/service/BuildWorkerService.java index 270120f44..89de083b3 100644 --- a/src/main/java/org/gridsuite/modification/server/service/BuildWorkerService.java +++ b/src/main/java/org/gridsuite/modification/server/service/BuildWorkerService.java @@ -84,7 +84,8 @@ private CompletableFuture execBuildVariant(BuildExecC CompletableFuture future = CompletableFuture.supplyAsync(() -> { LOGGER.info("Starting build on variant : {}", buildInfos.getDestinationVariantId()); - return networkModificationService.buildVariant(networkUuid, buildInfos); + // TODO avoid blocking the forkjoinpool commonpool when we are using our own executor + return networkModificationService.buildVariantBlocking(networkUuid, buildInfos); } ); diff --git a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java index 302ed6175..6dc7f2be0 100644 --- a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java +++ b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java @@ -39,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.function.Function; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -191,26 +192,41 @@ public void restoreNetworkModifications(UUID groupUuid, @NonNull List modi networkModificationRepository.getModificationsCount(groupUuid, false)); } - public NetworkModificationsResult createNetworkModification(@NonNull UUID groupUuid, @NonNull ModificationInfos modificationInfo, @NonNull List applicationContexts) { + public CompletableFuture createNetworkModification(@NonNull UUID groupUuid, @NonNull ModificationInfos modificationInfo, @NonNull List applicationContexts) { List modificationEntities = networkModificationRepository.saveModificationInfos(groupUuid, List.of(modificationInfo)); - - return new NetworkModificationsResult(modificationEntities.stream().map(ModificationEntity::getId).toList(), - applyModifications(groupUuid, modificationEntities, applicationContexts)); + List ids = modificationEntities.stream().map(ModificationEntity::getId).toList(); + return applyModifications(groupUuid, modificationEntities, applicationContexts).thenApply(results -> + new NetworkModificationsResult(ids, results)); } /** * Apply modifications on several networks */ - private List> applyModifications(UUID groupUuid, List modifications, List applicationContexts) { - return applicationContexts.stream().map(modificationApplicationContext -> - applyModifications( - modificationApplicationContext.networkUuid(), - modificationApplicationContext.variantId(), - new ModificationApplicationGroup(groupUuid, - modifications.stream().filter(m -> !modificationApplicationContext.excludedModifications().contains(m.getId())).toList(), - new ReportInfos(modificationApplicationContext.reportUuid(), modificationApplicationContext.reporterId()) - )) - ).toList(); + private CompletableFuture>> applyModifications(UUID groupUuid, List modifications, List applicationContexts) { + // Do we want to do these in parallel (CompletableFuture.allOf) or sequential (sometimes called "Waterfall") ? + // sequentially like before for now + // Is there a library or something to simplify this code ? + List> results = new ArrayList<>(applicationContexts.size()); + CompletableFuture>> chainedFutures = CompletableFuture.completedFuture(results); + for (ModificationApplicationContext modificationApplicationContext : applicationContexts) { + // thencompose, this should add the computation result to the list and + // and schedule the next computation in the same thread as the task + // The list is accessed from different threads but not concurrently and + // with happens-before semantics. + chainedFutures = chainedFutures.thenCompose(accumulatingresults -> { + return applyModifications( + modificationApplicationContext.networkUuid(), + modificationApplicationContext.variantId(), + new ModificationApplicationGroup(groupUuid, + modifications.stream().filter(m -> !modificationApplicationContext.excludedModifications().contains(m.getId())).toList(), + new ReportInfos(modificationApplicationContext.reportUuid(), modificationApplicationContext.reporterId()) + )).thenApply(result -> { + accumulatingresults.add(result); + return accumulatingresults; + }); + }); + } + return chainedFutures; } public Network cloneNetworkVariant(UUID networkUuid, @@ -234,7 +250,7 @@ public Network cloneNetworkVariant(UUID networkUuid, return network; } - public NetworkModificationResult buildVariant(@NonNull UUID networkUuid, @NonNull BuildInfos buildInfos) { + public CompletableFuture buildVariant(@NonNull UUID networkUuid, @NonNull BuildInfos buildInfos) { // Apply all modifications belonging to the modification groups uuids in buildInfos List modificationGroupsInfos = new ArrayList<>(); Streams.forEachPair(buildInfos.getModificationGroupUuids().stream(), buildInfos.getReportsInfos().stream(), @@ -270,6 +286,10 @@ public NetworkModificationResult buildVariant(@NonNull UUID networkUuid, @NonNul return modificationApplicator.applyModifications(modificationGroupsInfos, networkInfos); } + public NetworkModificationResult buildVariantBlocking(@NonNull UUID networkUuid, @NonNull BuildInfos buildInfos) { + return buildVariant(networkUuid, buildInfos).join(); + } + public void buildVariantRequest(UUID networkUuid, BuildInfos buildInfos, String receiver, WorkflowType workflowType, String workflowInfos) { notificationService.emitBuildMessage(new BuildExecContext(networkUuid, buildInfos, receiver, workflowType, workflowInfos).toMessage(objectMapper)); } @@ -284,15 +304,15 @@ public void deleteNetworkModifications(UUID groupUuid, List modificationsU } } - public NetworkModificationsResult moveModifications(@NonNull UUID destinationGroupUuid, @NonNull UUID originGroupUuid, UUID beforeModificationUuid, + public CompletableFuture moveModifications(@NonNull UUID destinationGroupUuid, @NonNull UUID originGroupUuid, UUID beforeModificationUuid, @NonNull List modificationsToMoveUuids, @NonNull List applicationContexts, boolean applyModifications) { // update origin/destinations groups to cut and paste all modificationsToMove // FullDto needed for toModificationInfos() after the modifications have been applied List modificationEntities = networkModificationRepository.moveModificationsFullDto(destinationGroupUuid, originGroupUuid, modificationsToMoveUuids, beforeModificationUuid); - List> result = applyModifications && !modificationEntities.isEmpty() ? applyModifications(destinationGroupUuid, modificationEntities, applicationContexts) : List.of(); - return new NetworkModificationsResult(modificationEntities.stream().map(ModificationEntity::getId).toList(), result); + CompletableFuture>> futureResult = applyModifications && !modificationEntities.isEmpty() ? applyModifications(destinationGroupUuid, modificationEntities, applicationContexts) : CompletableFuture.completedFuture(List.of()); + return futureResult.thenApply(result -> new NetworkModificationsResult(modificationEntities.stream().map(ModificationEntity::getId).toList(), result)); } public Map duplicateGroup(UUID sourceGroupUuid, UUID groupUuid) { @@ -314,7 +334,7 @@ public Map duplicateGroup(UUID sourceGroupUuid, UUID groupUuid) { } } - private Optional applyModifications(UUID networkUuid, String variantId, ModificationApplicationGroup modificationGroupInfos) { + private CompletableFuture> applyModifications(UUID networkUuid, String variantId, ModificationApplicationGroup modificationGroupInfos) { if (!modificationGroupInfos.modifications().isEmpty()) { PreloadingStrategy preloadingStrategy = modificationGroupInfos.modifications().stream() .map(ModificationEntity::getType) @@ -324,26 +344,27 @@ private Optional applyModifications(UUID networkUuid, // try to apply the duplicated modifications (incremental mode) if (networkInfos.isVariantPresent()) { - return Optional.of(modificationApplicator.applyModifications(modificationGroupInfos, networkInfos)); + return modificationApplicator.applyModifications(modificationGroupInfos, networkInfos).thenApply(Optional::of); } } - return Optional.empty(); + return CompletableFuture.completedFuture(Optional.empty()); } - public NetworkModificationsResult duplicateModifications(@NonNull UUID targetGroupUuid, UUID originGroupUuid, @NonNull List modificationsUuids, @NonNull List applicationContexts) { + public CompletableFuture duplicateModifications(@NonNull UUID targetGroupUuid, UUID originGroupUuid, @NonNull List modificationsUuids, @NonNull List applicationContexts) { if (originGroupUuid != null && !modificationsUuids.isEmpty()) { // Duplicate modifications from a group or from a list only throw new NetworkModificationServerException(DUPLICATION_ARGUMENT_INVALID); } List duplicateModifications = networkModificationRepository.saveDuplicateModifications(targetGroupUuid, originGroupUuid, modificationsUuids); - return new NetworkModificationsResult( - duplicateModifications.stream().map(ModificationEntity::getId).toList(), - applyModifications(targetGroupUuid, duplicateModifications, applicationContexts) - ); + List ids = duplicateModifications.stream().map(ModificationEntity::getId).toList(); + return applyModifications(targetGroupUuid, duplicateModifications, applicationContexts).thenApply(result -> + new NetworkModificationsResult(ids, result)); } - public NetworkModificationsResult insertCompositeModifications(@NonNull UUID targetGroupUuid, @NonNull List modificationsUuids, @NonNull List applicationContexts) { + public CompletableFuture insertCompositeModifications(@NonNull UUID targetGroupUuid, @NonNull List modificationsUuids, @NonNull List applicationContexts) { List modificationEntities = networkModificationRepository.saveCompositeModifications(targetGroupUuid, modificationsUuids); - return new NetworkModificationsResult(modificationEntities.stream().map(ModificationEntity::getId).toList(), applyModifications(targetGroupUuid, modificationEntities, applicationContexts)); + List ids = modificationEntities.stream().map(ModificationEntity::getId).toList(); + return applyModifications(targetGroupUuid, modificationEntities, applicationContexts).thenApply(result -> + new NetworkModificationsResult(ids, result)); } @Transactional diff --git a/src/main/resources/config/application.yaml b/src/main/resources/config/application.yaml index d777b549a..a6e750945 100644 --- a/src/main/resources/config/application.yaml +++ b/src/main/resources/config/application.yaml @@ -2,6 +2,12 @@ spring: application: name: network-modification-server + mvc: + async: + # To have the same behavior of no timeouts as regular endpoints for servlet 3.0+ asynccontext endpoints + # Can be removed when set as default in our common ws config + request-timeout: -1 + jpa: properties: hibernate: diff --git a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java index 863dee249..24583f979 100644 --- a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java +++ b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java @@ -79,8 +79,7 @@ import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; /** * @author Franck Lecuyer @@ -219,13 +218,15 @@ void testEquipmentIdNonNull() { @Test void testNetworkNotFound() throws Exception { String body = getJsonBody(LoadCreationInfos.builder().equipmentId("id").build(), NOT_FOUND_NETWORK_ID, NetworkCreation.VARIANT_ID); - mockMvc.perform(post(NETWORK_MODIFICATION_URI) + MvcResult mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI) .content(body) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpectAll( status().isNotFound(), content().string(new NetworkModificationException(NETWORK_NOT_FOUND, NOT_FOUND_NETWORK_ID.toString()).getMessage()) - ); + ).andReturn(); } @Test @@ -255,7 +256,10 @@ void testModificationGroups() throws Exception { resultAsString = mvcResult.getResponse().getContentAsString(); List bsicListResult = mapper.readValue(resultAsString, new TypeReference<>() { }); assertEquals(bsicListResult, List.of()); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -309,7 +313,9 @@ void testRestoreNetworkModifications() throws Exception { .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -337,7 +343,9 @@ void testStashNetworkModifications() throws Exception { .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -365,7 +373,9 @@ void testDisableNetworkModifications() throws Exception { .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -392,7 +402,9 @@ void testDeleteModification() throws Exception { .equipmentId("v1b1") .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -449,7 +461,9 @@ void testNetworkModificationsWithErrorOnNetworkFlush() throws Exception { .build(); String groovyScriptInfosJson = getJsonBody(groovyScriptInfos, TEST_NETWORK_WITH_FLUSH_ERROR_ID, NetworkCreation.VARIANT_ID); - mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().is5xxServerError()); + MvcResult mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().is5xxServerError()).andReturn(); assertEquals(1, modificationRepository.getModifications(TEST_GROUP_ID, true, false).size()); } @@ -462,6 +476,8 @@ void testMultipleModificationsWithError() throws Exception { String groovyScriptInfosJson = getJsonBody(groovyScriptInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); // apply groovy script without error MvcResult mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); assertEquals(1, modificationRepository.getModifications(TEST_GROUP_ID, true, true).size()); @@ -492,6 +508,8 @@ private List createSomeSwitchModifications(UUID groupId, int String bodyJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); mvcResult = mockMvc.perform(post(URI_NETWORK_MODIF_BASE + "?groupUuid=" + groupId) .content(bodyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); } @@ -508,6 +526,8 @@ private ModificationInfos createDeletionModification(UUID groupId, IdentifiableT String bodyJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); MvcResult mvcResult = mockMvc.perform(post(URI_NETWORK_MODIF_BASE + "?groupUuid=" + groupId) .content(bodyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -531,6 +551,8 @@ void testCopyModification() throws Exception { put("/v1/groups/" + TEST_GROUP_ID + "?action=COPY") .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -564,6 +586,8 @@ void testCopyModification() throws Exception { put("/v1/groups/" + otherGroupId + "?action=COPY") .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -582,6 +606,8 @@ void testCopyModification() throws Exception { put("/v1/groups/" + otherGroupId + "?action=COPY" + "&originGroupUuid=" + TEST_GROUP_ID) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -626,6 +652,8 @@ void testCopyModificationOld() throws Exception { put(url) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -661,6 +689,8 @@ void testCopyModificationOld() throws Exception { put(copyUrl) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -679,6 +709,8 @@ void testCopyModificationOld() throws Exception { put("/v1/groups/" + otherGroupId + "?action=COPY" + "&originGroupUuid=" + TEST_GROUP_ID) .content(bodyJson2) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -720,6 +752,8 @@ void createGeneratorWithStartup() throws Exception { String generatorCreationInfosJson = getJsonBody(generatorCreationInfos, TEST_NETWORK_ID, null); MvcResult mvcResult; mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -731,6 +765,8 @@ void createGeneratorWithStartup() throws Exception { generatorCreationInfosJson = getJsonBody(generatorCreationInfosBusBreaker, TEST_NETWORK_BUS_BREAKER_ID, null); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -743,6 +779,8 @@ void createGeneratorWithStartup() throws Exception { generatorCreationInfosJson = getJsonBody(generatorCreationInfos, TEST_NETWORK_ID, null); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); generatorStartup = network.getGenerator("idGenerator21").getExtension(GeneratorStartup.class); @@ -757,6 +795,8 @@ void createGeneratorWithStartup() throws Exception { generatorCreationInfosBusBreaker.setPlannedOutageRate(80.); generatorCreationInfosJson = getJsonBody(generatorCreationInfosBusBreaker, TEST_NETWORK_BUS_BREAKER_ID, null); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); generatorStartup = networkStoreService.getNetwork(TEST_NETWORK_BUS_BREAKER_ID, null).getGenerator("idGenerator3").getExtension(GeneratorStartup.class); @@ -840,6 +880,8 @@ void testNetworkCompositeModification() throws Exception { put("/v1/groups/" + TEST_GROUP_ID + "?action=INSERT") .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -900,6 +942,8 @@ void testNetworkCompositeModificationOld() throws Exception { put("/v1/groups/" + TEST_GROUP_ID + "?action=INSERT") .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -931,6 +975,8 @@ void testMoveModificationBetweenTwoGroups() throws Exception { String url = "/v1/groups/" + TEST_GROUP_ID + "?action=MOVE" + "&originGroupUuid=" + TEST_GROUP2_ID + "&build=true"; MvcResult mvcResult = mockMvc.perform(put(url).content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()) .andReturn(); @@ -988,12 +1034,14 @@ void testDuplicateModificationGroup() throws Exception { MvcResult mvcResult; VoltageLevelCreationInfos vl1 = ModificationCreation.getCreationVoltageLevel("s1", "vl1Id", "vl1Name"); String bodyJson = getJsonBody(vl1, TEST_NETWORK_BUS_BREAKER_ID, null); - mockMvc.perform( + mvcResult = mockMvc.perform( post(NETWORK_MODIFICATION_URI) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()) - .andReturn().getResponse().getContentAsString(); + .andReturn(); // create new line in voltage levels with node/breaker topology // between voltage level "v1" and busbar section "bus1" and @@ -1028,6 +1076,8 @@ void testDuplicateModificationGroup() throws Exception { post(NETWORK_MODIFICATION_URI) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()) .andReturn(); assertApplicationStatusOK(mvcResult); @@ -1051,6 +1101,8 @@ void testDuplicateModificationGroup() throws Exception { post(NETWORK_MODIFICATION_URI) .content(bodyJson2) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -1064,6 +1116,8 @@ void testDuplicateModificationGroup() throws Exception { post(NETWORK_MODIFICATION_URI) .content(bodyJson2) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); //create a generator @@ -1073,6 +1127,8 @@ void testDuplicateModificationGroup() throws Exception { post(NETWORK_MODIFICATION_URI) .content(bodyJson2) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testNetworkModificationsCount(TEST_GROUP_ID, 5); @@ -1114,6 +1170,8 @@ void replaceTeePointByVoltageLevelOnLineDuplicateModificationGroupTest() throws MvcResult mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI) .content(body) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -1143,7 +1201,9 @@ void testGroupDuplication() throws Exception { .connectionName("bottom") .build(); String loadCreationInfosJson = getJsonBody(loadCreationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - MvcResult mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(loadCreationInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + MvcResult mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(loadCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); assertNotNull(network.getLoad("idLoad1")); // load was created testNetworkModificationsCount(TEST_GROUP_ID, 1); @@ -1174,6 +1234,8 @@ void testTombstonedEquipmentInfos() throws Exception { // delete load mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.LOAD, "v1load", "v1b1", "v1d1", "s1"); @@ -1185,6 +1247,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("v3load"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VARIANT_NOT_EXISTING_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); Optional networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertTrue(networkModificationsResult.isPresent()); @@ -1199,6 +1263,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("v2shunt"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.SHUNT_COMPENSATOR, "v2shunt", "v2bshunt", "v2dshunt", "s1"); @@ -1209,6 +1275,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("idGenerator"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.GENERATOR, "idGenerator", "v2bgenerator", "v2dgenerator", "s1"); @@ -1219,7 +1287,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("line2"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()).andReturn(); + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testBranchDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.LINE, "line2", "v1bl2", "v1dl2", "s1", "v3bl2", "v3dl2", "s2"); testNetworkModificationsCount(TEST_GROUP_ID, 5); @@ -1229,6 +1299,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("trf1"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testBranchDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.TWO_WINDINGS_TRANSFORMER, "trf1", "v1btrf1", "v1dtrf1", "s1", "v2btrf1", "v2dtrf1", "s1"); @@ -1239,6 +1311,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("trf6"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); test3WTDeletionImpacts(mvcResult.getResponse().getContentAsString(), "trf6", "v1btrf6", "v1dtrf6", "v2btrf6", "v2dtrf6", "v4btrf6", "v4dtrf6", "s1"); @@ -1249,6 +1323,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("v3Compensator"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.STATIC_VAR_COMPENSATOR, "v3Compensator", "v3bCompensator", "v3dCompensator", "s2"); @@ -1259,6 +1335,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("v3Battery"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.BATTERY, "v3Battery", "v3bBattery", "v3dBattery", "s2"); @@ -1269,6 +1347,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("v2Dangling"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.DANGLING_LINE, "v2Dangling", "v2bdangling", "v2ddangling", "s1"); @@ -1279,6 +1359,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("hvdcLine"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); List expectedImpacts = createMultipleDeletionImpacts( @@ -1298,6 +1380,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("v5"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); expectedImpacts = createMultipleDeletionImpacts( @@ -1316,6 +1400,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("s3"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); expectedImpacts = createMultipleDeletionImpacts( @@ -1335,6 +1421,8 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentId("s2"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); expectedImpacts = new ArrayList<>(); @@ -1724,7 +1812,9 @@ void testDeleteStashedNetworkModifications() throws Exception { .equipmentId("v1load") .build(); String loadModificationInfosJson = getJsonBody(loadModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(loadModificationInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(loadModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); List modifications = modificationRepository.getModifications(TEST_GROUP_ID, true, true); @@ -1942,6 +2032,8 @@ void testSearchModificationInfos() throws Exception { .build(); String substationModificationInfosJson = getJsonBody(substationModificationInfos, TEST_NETWORK_ID, null); MvcResult mvcResult1 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(substationModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult1 = mockMvc.perform(asyncDispatch(mvcResult1)) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult1); @@ -1949,6 +2041,8 @@ void testSearchModificationInfos() throws Exception { GeneratorCreationInfos generatorCreationInfos = ModificationCreation.getCreationGenerator("v2", "idGenerator1", "nameGenerator1", "1B", "v2load", "LOAD", "v1"); String generatorCreationInfosJson = getJsonBody(generatorCreationInfos, TEST_NETWORK_ID, null); MvcResult mvcResult2 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult2 = mockMvc.perform(asyncDispatch(mvcResult2)) .andExpect(status().isOk()).andReturn(); assertNotNull(network.getGenerator("idGenerator1")); assertApplicationStatusOK(mvcResult2); @@ -1959,7 +2053,9 @@ void testSearchModificationInfos() throws Exception { .equipmentId("v5load") .build(); String equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, null); - MvcResult mvcResult3 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + MvcResult mvcResult3 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult3 = mockMvc.perform(asyncDispatch(mvcResult3)).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult3); MvcResult mvcModificationResult; diff --git a/src/test/java/org/gridsuite/modification/server/VoltageInitReportTest.java b/src/test/java/org/gridsuite/modification/server/VoltageInitReportTest.java index df946fac5..3ecb991ec 100644 --- a/src/test/java/org/gridsuite/modification/server/VoltageInitReportTest.java +++ b/src/test/java/org/gridsuite/modification/server/VoltageInitReportTest.java @@ -86,7 +86,7 @@ void testVoltageInitDuplicationLogs(final ApplicationStatus resultStatus, final final UUID networkUuuid = UUID.fromString("11111111-1111-1111-1111-111111111111"); final UUID reportUuid = UUID.fromString("88888888-8888-8888-8888-888888888888"); //simulate PUT /v1/groups/abc?action=COPY with body ModificationApplicationContext(networkUuid=0000, reportUuid=0000, reporterId=0000, variantId=0000, duplicateFrom=0000) - assertThat(networkModificationApplicator.applyModifications( + assertThat(networkModificationApplicator.applyModificationsBlocking( new ModificationApplicationGroup(UUID.randomUUID(), List.of(ModificationEntity.fromDTO(modificationInfos)), new ReportInfos(reportUuid, UUID.fromString("99999999-9999-9999-9999-999999999999"))), new NetworkInfos(network, networkUuuid, true))) .as("network modifications results") diff --git a/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java index 88d38c2c0..85ef87514 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java @@ -12,9 +12,12 @@ import org.gridsuite.modification.dto.OperationType; import org.junit.jupiter.api.Tag; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -41,14 +44,18 @@ protected void assertChangeConnectionState(Injection existingEquipment, Injec assertThat(existingEquipment.getTerminal().isConnected()).isNotEqualTo(expectedState); String modificationInfosJson = getJsonBody(modificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); // connection state has changed as expected assertThat(existingEquipment.getTerminal().isConnected()).isEqualTo(expectedState); // try to modify again => no change on connection state - mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertThat(existingEquipment.getTerminal().isConnected()).isEqualTo(expectedState); } } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java index 30a64efda..717825890 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java @@ -51,6 +51,7 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -135,6 +136,8 @@ public void testCreate() throws Exception { String bodyJson = getJsonBody(modificationToCreate, null); mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(bodyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); @@ -159,6 +162,8 @@ public void testCreateDisabledModification() throws Exception { String modificationToCreateJson = getJsonBody(modificationToCreate, null); mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); @@ -242,10 +247,12 @@ public void testCopy() throws Exception { UUID modificationUuid = saveModification(modificationToCopy); String body = TestUtils.getJsonBody(List.of(modificationUuid), AbstractNetworkModificationTest.TEST_NETWORK_ID, null); - mockMvc.perform(put(URI_NETWORK_MODIF_COPY) + MvcResult mvcResult = mockMvc.perform(put(URI_NETWORK_MODIF_COPY) .content(body) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); List modifications = networkModificationRepository .getModifications(TEST_GROUP_ID, false, true); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java index f73ed15a0..391793f1b 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java @@ -33,7 +33,9 @@ import static org.gridsuite.modification.server.utils.assertions.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -122,6 +124,8 @@ public void testCreate() throws Exception { String bodyJson = getJsonBody(modificationToCreate, null); mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(bodyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java index 710dbe48c..fec4a0181 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java @@ -24,7 +24,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -197,6 +199,8 @@ void testCreateWithErrors() throws Exception { batteryCreationInfos.setBusOrBusbarSectionId("1B"); batteryCreationInfosJson = getJsonBody(batteryCreationInfos, "variant_not_existing"); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(batteryCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(networkModificationsResult); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java index 2ec37a008..d47fda539 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java @@ -30,7 +30,9 @@ import static org.gridsuite.modification.server.utils.assertions.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -144,7 +146,9 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { .add(); String modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); BatteryModificationInfos createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -156,7 +160,9 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { batteryModificationInfos.setMinQ(new AttributeModification<>(-200., OperationType.SET)); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -169,7 +175,9 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { batteryModificationInfos.setMaxQ(new AttributeModification<>(200., OperationType.SET)); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -181,7 +189,9 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { batteryModificationInfos.setMinQ(new AttributeModification<>(-1.1, OperationType.SET)); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -195,7 +205,9 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { batteryModificationInfos.setMinP(null); batteryModificationInfos.setMaxP(null); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); assertThat(createdModification).recursivelyEquals(batteryModificationInfos); @@ -209,7 +221,9 @@ void testDroopUnchanged() throws Exception { batteryModificationInfos.getDroop().setValue(18f); String modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); BatteryModificationInfos createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -220,7 +234,9 @@ void testDroopUnchanged() throws Exception { batteryModificationInfos.setDroop(null); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -233,7 +249,9 @@ void testImpactsAfterActivePowerControlModifications() throws Exception { BatteryModificationInfos batteryModificationInfos = (BatteryModificationInfos) buildModification(); String modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); Battery battery = getNetwork().getBattery("v3Battery"); assertEquals(0.1f, battery.getExtension(ActivePowerControl.class).getDroop()); @@ -241,7 +259,9 @@ void testImpactsAfterActivePowerControlModifications() throws Exception { //modify only droop batteryModificationInfos.setDroop(new AttributeModification<>(0.5f, OperationType.SET)); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); //check impacts String resultAsString = mvcResult.getResponse().getContentAsString(); @@ -253,6 +273,8 @@ void testImpactsAfterActivePowerControlModifications() throws Exception { batteryModificationInfos.setParticipate(new AttributeModification<>(false, OperationType.SET)); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); //check impacts resultAsString = mvcResult.getResponse().getContentAsString(); @@ -277,7 +299,9 @@ void testActivePowerZeroOrBetweenMinAndMaxActivePower() throws Exception { Double activePower = batteryModificationInfos.getTargetP() != null ? batteryModificationInfos.getTargetP().getValue() : battery.getTargetP(); String modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertLogMessage("MODIFY_BATTERY_ERROR : Battery '" + "v3Battery" + "' : Active power " + activePower + " is expected to be equal to 0 or within the range of minimum active power and maximum active power: [" + minActivePower + ", " + maxActivePower + "]", ERROR_MESSAGE_KEY, reportService); @@ -322,7 +346,9 @@ void testMinQGreaterThanMaxQ() throws Exception { }); } String modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertLogMessage("MODIFY_BATTERY_ERROR : Battery '" + "v3Battery" + "' : maximum reactive power " + maxQ.get() + " is expected to be greater than or equal to minimum reactive power " + minQ.get(), ERROR_MESSAGE_KEY, reportService); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/CompositeModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/CompositeModificationsTest.java index 216267640..85e34c3e7 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/CompositeModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/CompositeModificationsTest.java @@ -19,12 +19,12 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; -import org.mockito.stubbing.Answer; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import java.util.List; import java.util.UUID; +import java.util.concurrent.CompletableFuture; import static com.vladmihalcea.sql.SQLStatementCountValidator.assertSelectCount; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -46,13 +46,13 @@ class CompositeModificationsTest extends AbstractNetworkModificationTest { @BeforeEach void specificSetUp() { // Currently we never apply composite modifications (apply mocked) - NetworkModificationResult networkModificationResultMock = NetworkModificationResult.builder() + CompletableFuture networkModificationResultMock = CompletableFuture.completedFuture(NetworkModificationResult.builder() .applicationStatus(NetworkModificationResult.ApplicationStatus.ALL_OK) .lastGroupApplicationStatus(NetworkModificationResult.ApplicationStatus.ALL_OK) .networkImpacts(List.of()) - .build(); + .build()); when(networkModificationApplicator.applyModifications(any(ModificationApplicationGroup.class), any())) - .then((Answer) invocation -> networkModificationResultMock); + .then(invocation -> networkModificationResultMock); } @Override diff --git a/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java b/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java index 72514c98e..636f418c3 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java @@ -15,6 +15,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import java.util.Map; @@ -25,7 +26,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -89,8 +92,10 @@ void createWithInvalidLineIdTest() throws Exception { .build(); var objectWriter = mapper.writer().withDefaultPrettyPrinter(); String json = getJsonBody(deleteAttachingLineInfos, null); - mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(LINE_NOT_FOUND, "ll").getMessage(), ERROR_MESSAGE_KEY, reportService); } @@ -107,8 +112,10 @@ void createWithNoAttachmentPointTest() throws Exception { var objectWriter = mapper.writer().withDefaultPrettyPrinter(); String json = getJsonBody(deleteAttachingLineInfos, null); - mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage("Unable to find the attachment point and the tapped voltage level from lines l1, l3 and l1", ERROR_MESSAGE_KEY, reportService); } @@ -120,8 +127,10 @@ void createNewLineWithExistingIdTest() throws Exception { deleteAttachingLineInfos.setReplacingLine1Id("l2"); String lineAttachToAbsentLineJson = getJsonBody(deleteAttachingLineInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, "l2").getMessage(), ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java b/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java index 4f65af64d..412711a76 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java @@ -15,6 +15,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import java.util.Map; @@ -25,7 +26,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -91,8 +94,10 @@ void createWithInvalidLineIdTest() throws Exception { var objectWriter = mapper.writer().withDefaultPrettyPrinter(); String json = getJsonBody(deleteVoltageLevelOnLineInfos, null); - mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(LINE_NOT_FOUND, "ll").getMessage(), ERROR_MESSAGE_KEY, reportService); } @@ -103,8 +108,10 @@ void createNewLineWithExistingIdTest() throws Exception { DeleteVoltageLevelOnLineInfos deleteVoltageLevelOnLineInfos = (DeleteVoltageLevelOnLineInfos) buildModification(); deleteVoltageLevelOnLineInfos.setReplacingLine1Id("l2"); String lineAttachToAbsentLineJson = getJsonBody(deleteVoltageLevelOnLineInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, "l2").getMessage(), ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java index df4143a21..23071cb7e 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java @@ -29,8 +29,10 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -63,6 +65,8 @@ void testEquipmentAttributeModificationInfos() throws Exception { // switch opening mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -70,6 +74,8 @@ void testEquipmentAttributeModificationInfos() throws Exception { switchStatusModificationInfos.setEquipmentId("break1Variant"); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, NetworkCreation.VARIANT_ID); mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1Variant")); } @@ -93,8 +99,10 @@ private void switchModifications(String extraParams, String switchId1, String sw // switch not existing switchStatusModificationInfos.setEquipmentId(switchNotFoundId); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); - mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(EQUIPMENT_NOT_FOUND, switchNotFoundId).getMessage(), ERROR_MESSAGE_KEY, reportService); @@ -102,27 +110,36 @@ private void switchModifications(String extraParams, String switchId1, String sw switchStatusModificationInfos.setEquipmentId(switchId1); switchStatusModificationInfos.setEquipmentAttributeValue(false); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); testEmptyImpacts(mapper, mvcResult.getResponse().getContentAsString()); // switch opening switchStatusModificationInfos.setEquipmentAttributeValue(true); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), substationsIds); // switch closing switchStatusModificationInfos.setEquipmentId(switchId2); switchStatusModificationInfos.setEquipmentAttributeValue(false); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), substationsIds); // switch opening on another substation switchStatusModificationInfos.setEquipmentId(switchId3); switchStatusModificationInfos.setEquipmentAttributeValue(true); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), otherSubstationsIds); testNetworkModificationsCount(getGroupId(), modificationsCount); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java index 972ab295b..8d83a176c 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java @@ -37,7 +37,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -87,7 +89,9 @@ void testOkWhenRemovingIsolatedEquipment() throws Exception { String equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, null); // delete load with error removing dangling switches, because the load connection node is not linked to any other node - mockMvc.perform(post(getNetworkModificationUri()).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()) .andReturn(); @@ -130,6 +134,8 @@ private void deleteHvdcLineWithShuntCompensator(String shuntNameToBeRemoved, boo String equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, null); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()) .andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java index 1b0ea9058..cff3e9f58 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java @@ -34,7 +34,9 @@ import static org.gridsuite.modification.server.utils.TestUtils.*; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -168,8 +170,10 @@ void testGenerationDispatchWithMultipleEnergySource() throws Exception { setNetwork(Network.read("testGenerationDispatchWithMultipleEnergySource.xiidm", getClass().getResourceAsStream("/testGenerationDispatchWithMultipleEnergySource.xiidm"))); String modificationJson = getJsonBody(modification, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessageWithoutRank("The total demand is : 768.0 MW", "network.modification.TotalDemand", reportService); assertLogMessageWithoutRank("The total amount of fixed supply is : 0.0 MW", "network.modification.TotalAmountFixedSupply", reportService); @@ -491,8 +495,10 @@ void testGenerationDispatchWithSubstationsHierarchy() throws Exception { setNetwork(Network.read("ieee118cdf_testDemGroupe.xiidm", getClass().getResourceAsStream("/ieee118cdf_testDemGroupe.xiidm"))); String modificationJson = getJsonBody(modification, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); // generators modified assertEquals(264, getNetwork().getGenerator("B4-G").getTargetP(), 0.001); @@ -600,6 +606,8 @@ void testGenerationDispatchWithMaxValueLessThanMinP() throws Exception { String modificationJson = getJsonBody(modification, null); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java index 2b2a7a5c4..fb4ea3299 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java @@ -25,7 +25,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -239,6 +241,8 @@ void testCreateWithErrors() throws Exception { generatorCreationInfosJson = getJsonBody(generatorCreationInfos, "variant_not_existing"); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(networkModificationsResult); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java index 98f395c66..3e0f044eb 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java @@ -17,6 +17,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import org.springframework.util.CollectionUtils; import java.util.*; @@ -28,7 +29,9 @@ import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.gridsuite.modification.server.utils.assertions.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -172,7 +175,9 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { .add(); String modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); GeneratorModificationInfos createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -184,7 +189,9 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { generatorModificationInfos.setMinQ(new AttributeModification<>(-200., OperationType.SET)); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -197,7 +204,9 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { generatorModificationInfos.setMaxQ(new AttributeModification<>(200., OperationType.SET)); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -209,7 +218,9 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { generatorModificationInfos.setMinQ(new AttributeModification<>(-1.1, OperationType.SET)); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -225,7 +236,9 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { generatorModificationInfos.setMaxP(null); generatorModificationInfos.setRatedS(null); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); assertThat(createdModification).recursivelyEquals(generatorModificationInfos); @@ -240,7 +253,9 @@ void testGeneratorShortCircuitAttributesModification() throws Exception { generatorModificationInfos.setDirectTransX(null); String modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); GeneratorModificationInfos createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -254,7 +269,9 @@ void testGeneratorShortCircuitAttributesModification() throws Exception { modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -271,7 +288,9 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { generatorModificationInfos.setVoltageRegulationOn(new AttributeModification<>(true, OperationType.SET)); String modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); GeneratorModificationInfos createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -283,7 +302,9 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { generatorModificationInfos.setVoltageRegulationOn(null); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -295,7 +316,9 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { generatorModificationInfos.setVoltageRegulationType(new AttributeModification<>(VoltageRegulationType.LOCAL, OperationType.SET)); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -311,7 +334,9 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { generatorModificationInfos.setParticipate(null); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -397,7 +422,9 @@ void testMinQGreaterThanMaxQ() throws Exception { }); } String modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertLogMessage("MODIFY_GENERATOR_ERROR : Generator '" + "idGenerator" + "' : maximum reactive power " + maxQ.get() + " is expected to be greater than or equal to minimum reactive power " + minQ.get(), ERROR_MESSAGE_KEY, reportService); @@ -418,7 +445,9 @@ void testActivePowerZeroOrBetweenMinAndMaxActivePower() throws Exception { Double activePower = generatorModificationInfos.getTargetP() != null ? generatorModificationInfos.getTargetP().getValue() : generator.getTargetP(); String modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertLogMessage("MODIFY_GENERATOR_ERROR : Generator '" + "idGenerator" + "' : Active power " + activePower + " is expected to be equal to 0 or within the range of minimum active power and maximum active power: [" + minActivePower + ", " + maxActivePower + "]", ERROR_MESSAGE_KEY, reportService); @@ -434,8 +463,10 @@ void testUnsetAttributes() throws Exception { String generatorModificationInfosJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertEquals(Double.NaN, getNetwork().getGenerator("idGenerator").getTargetV()); //Unset TargetQ (voltage regulation needs to be turned on and voltage setpoint to have a value) @@ -443,8 +474,10 @@ void testUnsetAttributes() throws Exception { generatorModificationInfos.setTargetV(new AttributeModification<>(44.0, OperationType.SET)); generatorModificationInfos.setTargetQ(new AttributeModification<>(null, OperationType.UNSET)); generatorModificationInfosJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertEquals(Double.NaN, getNetwork().getGenerator("idGenerator").getTargetQ()); } @@ -461,8 +494,10 @@ void changeGeneratorOnBusBreakerWithoutBusBarSection() throws Exception { .connectionPosition(new AttributeModification<>(1, OperationType.SET)) .build(); String generatorModificationInfosJson = getJsonBody(generatorModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); generatorModificationInfos = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); assertEquals(1, generatorModificationInfos.getConnectionPosition().getValue()); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java index 2975c2b44..86cb76e28 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java @@ -29,6 +29,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import java.nio.file.Paths; import java.time.Instant; @@ -42,7 +43,9 @@ import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -188,8 +191,10 @@ void testVentilationModeWithoutDistributionKey() throws Exception { String modificationToCreateJson = getJsonBody(modificationToCreate, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertEquals(200, getNetwork().getGenerator(GENERATOR_ID_2).getTargetP(), 0.01D); assertEquals(200, getNetwork().getGenerator(GENERATOR_ID_3).getTargetP(), 0.01D); @@ -274,6 +279,8 @@ void testScalingCreationWithWarning() throws Exception { var response = mockMvc.perform(post(getNetworkModificationUri()) .content(modificationToCreateJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + response = mockMvc.perform(asyncDispatch(response)) .andExpect(status().isOk()) .andReturn(); @@ -478,10 +485,12 @@ private void testVariationWithSomeDisconnections(VariationMode variationMode, Li String modificationToCreateJson = getJsonBody(generatorScalingInfo, null); - mockMvc.perform(post(getNetworkModificationUri()) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) .content(modificationToCreateJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); // If we sum the targetP for all expected modified generators, we should have the requested variation value double connectedGeneratorsTargetP = modifiedGenerators diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java index 8f881d04a..f66231231 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java @@ -24,7 +24,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -71,42 +73,54 @@ void testGroovy() throws Exception { .build(); String groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); // apply groovy script with generator target P modification - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); // apply groovy script with load type modification groovyScriptInfos.setScript("network.getLoad('v1load').loadType=com.powsybl.iidm.network.LoadType.FICTITIOUS\n"); groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); // apply groovy script with lcc converter station power factor modification groovyScriptInfos.setScript("network.getLccConverterStation('v1lcc').powerFactor=1\n"); groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); // apply groovy script with line R modification groovyScriptInfos.setScript("network.getLine('line1').r=2\n"); groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1", "s2")); // apply groovy script with two windings transformer ratio tap modification groovyScriptInfos.setScript("network.getTwoWindingsTransformer('trf1').getRatioTapChanger().tapPosition=2\n"); groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); // apply groovy script with three windings transformer phase tap modification groovyScriptInfos.setScript("network.getThreeWindingsTransformer('trf6').getLeg1().getPhaseTapChanger().tapPosition=0\n"); groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java index 5be05f498..8dbe00644 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java @@ -15,6 +15,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import java.util.Arrays; import java.util.Map; @@ -24,8 +25,10 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -126,8 +129,10 @@ protected void assertAfterNetworkModificationDeletion() { private void tryToCreateLineWithExistingId(LineAttachToVoltageLevelInfos tryWithExistingLine, String existingLineId) throws Exception { String tryWithExistingLineJson = getJsonBody(tryWithExistingLine, null); - mockMvc.perform(post(getNetworkModificationUri()).content(tryWithExistingLineJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(tryWithExistingLineJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, existingLineId).getMessage(), ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java index f6c645256..146850fd2 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java @@ -25,7 +25,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -42,6 +44,8 @@ void testCreateWithBadVariant() throws Exception { modificationToCreate.setEquipmentName("nameLine2"); String modificationToCreateJson = getJsonBody(modificationToCreate, "variant_not_existing"); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(networkModificationsResult); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java index c07318612..7e5f93e56 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java @@ -43,7 +43,9 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -248,7 +250,9 @@ void testPermanentLimitUnchanged() throws Exception { lineModificationInfos.getCurrentLimits2().setPermanentLimit(null); String modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -265,7 +269,9 @@ void testCharacteristicsModification() throws Exception { String modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -277,7 +283,9 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setR(new AttributeModification<>(2.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -289,7 +297,9 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setG1(new AttributeModification<>(11.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -301,7 +311,9 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setB1(new AttributeModification<>(12.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -313,7 +325,9 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setG2(new AttributeModification<>(13.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); @@ -325,7 +339,9 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setB2(new AttributeModification<>(14.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(5); @@ -336,7 +352,9 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setB2(null); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(6); @@ -352,8 +370,10 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setB2(new AttributeModification<>(14.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true) @@ -411,7 +431,9 @@ void testTemporaryLimitsModification() throws Exception { .build(); String modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -427,7 +449,9 @@ void testTemporaryLimitsModification() throws Exception { .build(); modificationToCreateJson = getJsonBody(lineModificationInfos1, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -483,15 +507,19 @@ private void changeLineConnectionState(Line existingEquipment, boolean expectedS assertThat(existingEquipment.getTerminal2().isConnected()).isNotEqualTo(expectedState); String modificationInfosJson = getJsonBody(modificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); // connection state has changed as expected assertThat(existingEquipment.getTerminal1().isConnected()).isEqualTo(expectedState); assertThat(existingEquipment.getTerminal2().isConnected()).isEqualTo(expectedState); // try to modify again => no change on connection state - mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertThat(existingEquipment.getTerminal1().isConnected()).isEqualTo(expectedState); assertThat(existingEquipment.getTerminal2().isConnected()).isEqualTo(expectedState); } @@ -510,8 +538,10 @@ void changeLineConnectablePosition() throws Exception { .connectionPosition2(new AttributeModification<>(1, OperationType.SET)) .build(); String modificationInfosJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); assertEquals(1, createdModification.getConnectionPosition1().getValue()); assertEquals(1, createdModification.getConnectionPosition2().getValue()); @@ -527,8 +557,10 @@ void changeLineConnectablePositionWithoutBusBarSection() throws Exception { .connectionName2(new AttributeModification<>("line3", OperationType.SET)) .build(); String modificationInfosJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); assertEquals("line3", createdModification.getConnectionName1().getValue()); assertEquals("line3", createdModification.getConnectionName2().getValue()); @@ -564,8 +596,10 @@ void changeLineWithConnectablePositionOneSide() throws Exception { .build(); String modificationInfosJson = getJsonBody(lineModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); assertEquals("cnLine10", createdModification.getConnectionName1().getValue()); assertEquals(2, createdModification.getConnectionPosition1().getValue()); @@ -600,6 +634,8 @@ void addConnectablePositionExtensionToLine() throws Exception { .build(); String modificationInfosJson = getJsonBody(lineModificationInfos, null); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); Optional networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertTrue(networkModificationsResult.isPresent()); @@ -616,6 +652,8 @@ void addConnectablePositionExtensionToLine() throws Exception { .build(); modificationInfosJson = getJsonBody(lineModificationInfos, null); mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertTrue(networkModificationsResult.isPresent()); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java index 283c20663..5f9338eee 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java @@ -30,7 +30,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -89,6 +91,8 @@ void testCreateWithErrors() throws Exception { loadCreationInfosJson = getJsonBody(loadCreationInfos, "variant_not_existing"); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(loadCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpectAll(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(networkModificationsResult); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java index 3ad984895..58aee3f5b 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java @@ -31,6 +31,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import java.nio.file.Paths; import java.time.Instant; @@ -43,8 +44,10 @@ import static org.gridsuite.modification.server.impacts.TestImpactUtils.createCollectionElementImpact; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -183,8 +186,10 @@ void testVentilationModeWithoutDistributionKey() throws Exception { .build(); String body = getJsonBody(modificationToCreate, null); - mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); wireMockUtils.verifyGetRequest(stubNonDistributionKey, PATH, handleQueryParams(FILTER_NO_DK), false); @@ -270,13 +275,15 @@ void testScalingCreationWithWarning() throws Exception { .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE))).getId(); String body = getJsonBody(loadScalingInfo, null); - mockMvc.perform(post(getNetworkModificationUri()) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) .content(body) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpectAll( status().isOk(), content().string(IsNull.notNullValue()) - ); + ).andReturn(); wireMockUtils.verifyGetRequest(stubMultipleWrongIds, PATH, Map.of("ids", WireMock.matching(".*")), false); assertEquals(600, getNetwork().getLoad(LOAD_ID_9).getP0(), 0.01D); @@ -487,10 +494,12 @@ private void testVariationWithSomeDisconnections(VariationMode variationMode, Li String modificationToCreateJson = getJsonBody(loadScalingInfo, null); - mockMvc.perform(post(getNetworkModificationUri()) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) .content(modificationToCreateJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); // If we sum the P0 for all expected modified loads, we should have the requested variation value double connectedLoadsConstantP = modifiedLoads diff --git a/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java b/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java index 8a3775817..3b7622a65 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java @@ -21,6 +21,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import java.util.Map; import java.util.UUID; @@ -32,8 +33,10 @@ import static org.gridsuite.modification.server.utils.NetworkUtil.createSwitch; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -101,8 +104,10 @@ private void testLockoutLine(String lineID) throws Exception { String modificationJson = getJsonBody(modificationInfos, null); assertNull(getNetwork().getLine(lineID).getExtension(OperatingStatus.class)); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); TestUtils.assertOperatingStatus(getNetwork(), lineID, TARGET_BRANCH_STATUS); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java index a2064772d..f39cfd0df 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java @@ -16,6 +16,7 @@ import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import java.util.List; import java.util.Map; @@ -28,7 +29,9 @@ import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -67,8 +70,10 @@ void testWrongMaximumSectionCount() throws Exception { .build(); String body = getJsonBody(shuntCompensator, null); - mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, String.format("Maximum section count should be greater or equal to 1")).getMessage(), ERROR_MESSAGE_KEY, reportService); @@ -83,8 +88,10 @@ void testWrongSectionCount() throws Exception { .build(); String body = getJsonBody(shuntCompensator, null); - mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, String.format("Section count should be between 0 and Maximum section count (1), actual : 3")).getMessage(), ERROR_MESSAGE_KEY, reportService); @@ -105,8 +112,10 @@ void testWrongSectionCountChangeSectionCount() throws Exception { .build(); String body = getJsonBody(shuntCompensatorModifications, null); - mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, String.format("Section count should be between 0 and Maximum section count (1), actual : 3")).getMessage(), ERROR_MESSAGE_KEY, reportService); @@ -127,8 +136,10 @@ void testWrongSectionCountChangeMaximumSectionCount() throws Exception { .build(); String body = getJsonBody(shuntCompensatorModifications, null); - mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, "Section count should be between 0 and Maximum section count (1), actual : -1").getMessage(), ERROR_MESSAGE_KEY, reportService); @@ -143,8 +154,10 @@ void testNegativeQmaxAtNominalV() throws Exception { .build(); String body = getJsonBody(shuntCompensator, null); - mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, "Qmax at nominal voltage should be greater or equal to 0").getMessage(), ERROR_MESSAGE_KEY, reportService); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java index de0c35fd9..6e479fa40 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java @@ -28,7 +28,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -211,6 +213,8 @@ void testCreateWithErrors() throws Exception { compensatorCreationInfos.setBusOrBusbarSectionId("1B"); compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, "variant_not_existing"); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java index b01a81c8d..ff2fb9fe3 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java @@ -29,7 +29,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -423,6 +425,8 @@ private void testCreateTwoWindingsTransformerInBusBreaker(TwoWindingsTransformer String twoWindingsTransformerCreationInfosJson = getJsonBody(twoWindingsTransformerCreationInfos, null); mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); testBranchCreationImpacts(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); assertNotNull(getNetwork().getTwoWindingsTransformer(transformerId)); // transformer was created diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java index 9750f636e..57b35defa 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java @@ -31,7 +31,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Tag("IntegrationTest") @@ -540,6 +542,8 @@ void testCreateWithErrors() throws Exception { twoWindingsTransformerCreationInfos.setEquipmentName("name2wt3"); twoWindingsTransformerCreationInfosJson = getJsonBody(twoWindingsTransformerCreationInfos, "variant_not_existing"); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(networkModificationsResult); @@ -565,6 +569,8 @@ private void testCreateTwoWindingsTransformerInNodeBreaker(TwoWindingsTransforme String twoWindingsTransformerCreationInfosJson = getJsonBody(twoWindingsTransformerCreationInfos, null); mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); TwoWindingsTransformer twoWindingsTransformer = getNetwork().getTwoWindingsTransformer(transformerId); assertNotNull(twoWindingsTransformer); // transformer was created diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java index d5552b414..216fb30cc 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java @@ -39,7 +39,9 @@ import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.gridsuite.modification.server.utils.assertions.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -335,7 +337,9 @@ void testRatioTapChangerModification() throws Exception { String modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); TwoWindingsTransformerModificationInfos createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -352,7 +356,9 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -366,7 +372,9 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -379,7 +387,9 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -392,7 +402,9 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); @@ -421,7 +433,9 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(5); @@ -433,7 +447,9 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(6); @@ -459,7 +475,9 @@ void testPhaseTapChangerModification() throws Exception { String modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); TwoWindingsTransformerModificationInfos createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -472,7 +490,9 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -485,7 +505,9 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -498,7 +520,9 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -511,7 +535,9 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); @@ -541,7 +567,9 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(5); @@ -555,7 +583,9 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(6); @@ -568,7 +598,9 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(7); @@ -580,7 +612,10 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(8); @@ -642,8 +677,10 @@ void testPhaseTapChangerRegulationModification() throws Exception { String modificationToModifyJson = getJsonBody(phaseTapChangerCreation, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); PhaseTapChanger phaseTapChanger = twt3.getPhaseTapChanger(); @@ -660,8 +697,10 @@ void testPhaseTapChangerRegulationModification() throws Exception { String modificationToModifyJson2 = getJsonBody(phaseTapChangerCreation, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson2).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson2).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); phaseTapChanger = getNetwork().getTwoWindingsTransformer(twtId).getPhaseTapChanger(); // modification 2 assert @@ -676,8 +715,10 @@ void testPhaseTapChangerRegulationModification() throws Exception { phaseTapChangerCreation.getPhaseTapChanger().setRegulating(new AttributeModification<>(true, OperationType.SET)); String modificationToModifyJson3 = getJsonBody(phaseTapChangerCreation, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson3).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson3).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); phaseTapChanger = getNetwork().getTwoWindingsTransformer(twtId).getPhaseTapChanger(); @@ -709,9 +750,11 @@ void testPhaseTapChangerRegulationModification2() throws Exception { String modificationToModifyJson1 = getJsonBody(phaseTapChangerCreation, null); // modification 1 assert - mockMvc.perform(post(getNetworkModificationUri()) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) .content(modificationToModifyJson1).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(MODIFY_TWO_WINDINGS_TRANSFORMER_ERROR, "Regulation value is missing when modifying, phase tap changer can not regulate").getMessage(), ERROR_MESSAGE_KEY, reportService); } @@ -756,6 +799,8 @@ private void changeConnectionState(TwoWindingsTransformer existingEquipment, Two String modificationInfosJson = getJsonBody(modificationInfos, null); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); @@ -771,8 +816,10 @@ private void changeConnectionState(TwoWindingsTransformer existingEquipment, Two assertEquals(NetworkModificationResult.ApplicationStatus.ALL_OK, extractApplicationStatus(networkModificationsResult).getFirst()); // try to modify again => no change on connection state - mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertThat(terminal.isConnected()).isEqualTo(expectedState); } } @@ -935,8 +982,10 @@ void testPhaseTapChangerRegulationCreation() throws Exception { String modificationToModifyJson = getJsonBody(phaseTapChangerCreation, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); PhaseTapChanger phaseTapChanger = twt3.getPhaseTapChanger(); @@ -983,8 +1032,10 @@ void testPhaseTapChangerRegulationCreation() throws Exception { modificationToModifyJson = getJsonBody(phaseTapChangerCreation, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); phaseTapChanger = twt3.getPhaseTapChanger(); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java index f3edee496..88c808918 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java @@ -13,6 +13,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import java.util.List; import java.util.UUID; @@ -21,7 +22,9 @@ import static org.gridsuite.modification.server.utils.NetworkUtil.createSwitch; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -285,8 +288,10 @@ private void testVoltageInitShunt(String shuntCompensatorId, int currentSectionC .build(); String body = getJsonBody(modification, null); - mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); } @Test diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java index 1f3907f99..ff99ee012 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java @@ -19,6 +19,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import java.util.Arrays; import java.util.List; @@ -29,7 +30,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -169,8 +172,10 @@ void testIpMinEqualsIpMax() throws Exception { vli.setIpMin(25.0); vli.setIpMax(25.0); String vliJsonObject = getJsonBody(vli, null); - mockMvc.perform(post(getNetworkModificationUri()).content(vliJsonObject).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(vliJsonObject).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); // VL is created assertNotNull(getNetwork().getVoltageLevel("vl_ok")); } @@ -195,8 +200,10 @@ private void testIccWithError(Double ipMin, Double ipMax, String reportError) th vli.setIpMax(ipMax); String vliJsonObject = getJsonBody(vli, null); - mockMvc.perform(post(getNetworkModificationUri()).content(vliJsonObject).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(vliJsonObject).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); // VL could not have been created assertNull(getNetwork().getVoltageLevel("vl_ko")); assertLogMessage(new NetworkModificationException(CREATE_VOLTAGE_LEVEL_ERROR, reportError).getMessage(), ERROR_MESSAGE_KEY, reportService); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java index 8694be5e6..7461979a5 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java @@ -17,6 +17,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import java.util.List; import java.util.Map; @@ -26,7 +27,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -242,9 +245,11 @@ void testSetIpMaxOnEquipmentWitOnlyIpMaxExtension() throws Exception { private void applyModification(VoltageLevelModificationInfos infos) throws Exception { String body = getJsonBody(infos, null); - mockMvc.perform(post(getNetworkModificationUri()) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) .content(body) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java index a2ea096e0..75453feee 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java @@ -18,11 +18,14 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import java.util.*; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -154,9 +157,12 @@ void testInvalidVoltageLevel() throws Exception { .build(); String body = getJsonBody(infos, null); - mockMvc.perform(post(getNetworkModificationUri()) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) .content(body) - .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); } @Test @@ -196,9 +202,12 @@ void testNonExistentSwitch() throws Exception { .build(); String body = getJsonBody(infos, null); - mockMvc.perform(post(getNetworkModificationUri()) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) .content(body) - .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); } @Override diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java index 116946630..b065c8da3 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java @@ -16,6 +16,7 @@ import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import java.util.List; import java.util.Map; @@ -27,7 +28,9 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -301,8 +304,10 @@ void testCreateAngleDroopPowerControlWithoutEnabling() throws Exception { vscCreationInfos.setAngleDroopActivePowerControl(false); String vscCreationInfosJson = getJsonBody(vscCreationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); HvdcLine hvdcLine = getNetwork().getHvdcLine("vsc1"); assertThat(hvdcLine).isNotNull(); HvdcAngleDroopActivePowerControl activePowerControlExt = hvdcLine.getExtension(HvdcAngleDroopActivePowerControl.class); @@ -319,8 +324,10 @@ void testNotCreateAngleDroopPowerControlWithoutEnabling() throws Exception { vscCreationInfos.setDroop(null); vscCreationInfos.setP0(null); String vscCreationInfosJson = getJsonBody(vscCreationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); HvdcLine hvdcLine = getNetwork().getHvdcLine("vsc1"); assertThat(hvdcLine).isNotNull(); HvdcAngleDroopActivePowerControl activePowerControlExt = hvdcLine.getExtension(HvdcAngleDroopActivePowerControl.class); @@ -361,8 +368,10 @@ private VscCreationInfos buildModificationWithDroopAbsentInfos(boolean isPresent private void checkDroopWithAbsentInfos(VscCreationInfos vscCreationInfos) throws Exception { String vscCreationInfosJson = getJsonBody(vscCreationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(new NetworkModificationException(WRONG_HVDC_ANGLE_DROOP_ACTIVE_POWER_CONTROL, ACTIVE_POWER_CONTROL_DROOP_P0_REQUIRED_ERROR_MSG).getMessage(), ERROR_MESSAGE_KEY, reportService); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java b/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java index 708502e71..97a77875a 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java @@ -43,7 +43,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -191,6 +193,8 @@ protected void checkCreationApplicationStatus(List> String bodyJson = getJsonBody(modificationByAssignmentInfos, null); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(bodyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/byfilter/formula/AbstractByFormulaModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/byfilter/formula/AbstractByFormulaModificationTest.java index 38688e9cd..781523066 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/byfilter/formula/AbstractByFormulaModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/byfilter/formula/AbstractByFormulaModificationTest.java @@ -40,7 +40,9 @@ import static org.gridsuite.modification.server.impacts.TestImpactUtils.createCollectionElementImpact; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -199,6 +201,8 @@ protected void checkCreationApplicationStatus(ByFormulaModificationInfos byFormu String modificationToCreateJson = getJsonBody(byFormulaModificationInfos, null); MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); Optional networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java b/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java index 8a9e9dfd8..8ec4f4c12 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java @@ -15,6 +15,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; import java.util.Date; import java.util.List; @@ -24,7 +25,9 @@ import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; abstract class AbstractByFilterDeletionTest extends AbstractNetworkModificationTest { @@ -126,8 +129,10 @@ void testCreateAllFiltersWrong() throws Exception { .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE))).getId(); String body = getJsonBody(byFilterDeletionInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(status().isOk()).andReturn(); assertLogMessage(byFilterDeletionInfos.getErrorType().name() + ": There is no valid equipment ID among the provided filter(s)", "network.modification.invalidFilters", reportService); wireMockUtils.verifyGetRequest(stubId, PATH, handleQueryParams(filters.stream().map(AbstractFilter::getId).collect(Collectors.toList())), false); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java index 9c3a92604..c28d0cfe4 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java @@ -38,9 +38,11 @@ import static org.gridsuite.modification.server.impacts.TestImpactUtils.createCollectionElementImpact; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -254,8 +256,10 @@ void testAllModificationsHaveSucceeded() throws Exception { .build(); String tabularCreationJson = getJsonBody(creationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertLogMessage("Tabular creation: 2 generators have been created", "network.modification.tabular.creation", reportService); } @@ -303,8 +307,10 @@ void testAllModificationsHaveFailed() throws Exception { .build(); String tabularCreationJson = getJsonBody(creationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertLogMessage("Tabular creation: No generators have been created", "network.modification.tabular.creation.error", reportService); } @@ -343,6 +349,8 @@ void testUnsupportedTabularCreationType() throws Exception { // creation MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult result = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(result); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java index 5d60c034e..1ba03cc44 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java @@ -42,7 +42,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -560,8 +562,10 @@ void testAllModificationsHaveFailed() throws Exception { .build(); String modificationToCreateJson = getJsonBody(modificationInfos, null); - mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson) + MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); assertLogMessage("Tabular modification: No generators have been modified", "network.modification.tabular.modification.error", reportService); } @@ -598,6 +602,8 @@ void testUnsupportedTabularModificationType() throws Exception { // creation MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(tabularModificationJson) .contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult result = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(result); diff --git a/src/test/java/org/gridsuite/modification/server/service/BuildTest.java b/src/test/java/org/gridsuite/modification/server/service/BuildTest.java index 552ce35d8..a6a44cbde 100644 --- a/src/test/java/org/gridsuite/modification/server/service/BuildTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/BuildTest.java @@ -982,7 +982,7 @@ void testApplyModificationWithErrors(final MockWebServer server) { List entities = modificationRepository.saveModifications(groupUuid, List.of(ModificationEntity.fromDTO(loadCreationInfos))); // Building mode : No error send with exception - NetworkModificationResult networkModificationResult = networkModificationApplicator.applyModifications( + NetworkModificationResult networkModificationResult = networkModificationApplicator.applyModificationsBlocking( new ModificationApplicationGroup(groupUuid, entities, new ReportInfos(reportUuid, reporterId)), new NetworkInfos(network, TEST_NETWORK_ID, true)); assertNotNull(networkModificationResult); @@ -991,7 +991,7 @@ void testApplyModificationWithErrors(final MockWebServer server) { // Incremental mode : No error send with exception ModificationApplicationContext applicationContext = new ModificationApplicationContext(TEST_NETWORK_ID, variantId, reportUuid, reporterId); - NetworkModificationsResult networkModificationsResult = networkModificationService.createNetworkModification(groupUuid, loadCreationInfos, List.of(applicationContext)); + NetworkModificationsResult networkModificationsResult = networkModificationService.createNetworkModification(groupUuid, loadCreationInfos, List.of(applicationContext)).join(); assertEquals(1, networkModificationsResult.modificationResults().size()); assertTrue(networkModificationsResult.modificationResults().get(0).isPresent()); testEmptyImpactsWithErrors(networkModificationResult); @@ -1000,7 +1000,7 @@ void testApplyModificationWithErrors(final MockWebServer server) { // Save mode only (variant does not exist) : No log and no error send with exception applicationContext = new ModificationApplicationContext(TEST_NETWORK_ID, UUID.randomUUID().toString(), reportUuid, reporterId); - networkModificationsResult = networkModificationService.createNetworkModification(groupUuid, loadCreationInfos, List.of(applicationContext)); + networkModificationsResult = networkModificationService.createNetworkModification(groupUuid, loadCreationInfos, List.of(applicationContext)).join(); assertEquals(1, networkModificationsResult.modificationResults().size()); assertTrue(networkModificationsResult.modificationResults().get(0).isEmpty()); testNetworkModificationsCount(groupUuid, 3); @@ -1023,7 +1023,7 @@ void testLastGroupModificationStatus(final MockWebServer server) { ); //Global application status should be in error and last application status should be OK - NetworkModificationResult networkModificationResult = networkModificationApplicator.applyModifications(modificationInfosGroups, new NetworkInfos(network, TEST_NETWORK_ID, true)); + NetworkModificationResult networkModificationResult = networkModificationApplicator.applyModificationsBlocking(modificationInfosGroups, new NetworkInfos(network, TEST_NETWORK_ID, true)); assertNotNull(networkModificationResult); testEmptyImpactsWithErrorsLastOK(networkModificationResult); assertTrue(TestUtils.getRequestsDone(2, server).stream().anyMatch(r -> r.matches(String.format("/v1/reports/%s", reportUuid)))); diff --git a/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java b/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java index cab2e4d31..65d668830 100644 --- a/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java @@ -75,12 +75,12 @@ void testConsumeBuildWithWorkflowInfos() throws JsonProcessingException { headers.put(WORKFLOW_INFOS_HEADER, workflowInfos); MessageHeaders messageHeaders = new MessageHeaders(headers); - when(networkModificationService.buildVariant(eq(networkUuid), any(BuildInfos.class))).thenReturn(modificationResult); + when(networkModificationService.buildVariantBlocking(eq(networkUuid), any(BuildInfos.class))).thenReturn(modificationResult); buildWorkerService.consumeBuild().accept(MessageBuilder.createMessage(objectMapper.writeValueAsString(buildInfos), messageHeaders)); ArgumentCaptor buildInfosArgumentCaptor = ArgumentCaptor.forClass(BuildInfos.class); - verify(networkModificationService, times(1)).buildVariant(eq(networkUuid), buildInfosArgumentCaptor.capture()); + verify(networkModificationService, times(1)).buildVariantBlocking(eq(networkUuid), buildInfosArgumentCaptor.capture()); assertThat(buildInfosArgumentCaptor.getValue()).usingRecursiveComparison().isEqualTo(buildInfos); ArgumentCaptor messageArgumentCaptor = ArgumentCaptor.forClass(Message.class); diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java index 5d844e95e..05cee5833 100644 --- a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java @@ -111,7 +111,7 @@ void testApplyCreatingModifications() { UUID groupUuid = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid, List.of(ModificationEntity.fromDTO(loadCreationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); assertNotNull(result); List modificationApplicationEntities = modificationApplicationRepository.findAll(); @@ -136,7 +136,7 @@ void testApplyModifyingModifications() { UUID groupUuid = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid, List.of(ModificationEntity.fromDTO(loadModificationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); assertNotNull(result); List modificationApplicationEntities = modificationApplicationRepository.findAll(); @@ -161,7 +161,7 @@ void testApplyDeletingModifications() { UUID groupUuid = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid, List.of(ModificationEntity.fromDTO(equipmentDeletionInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); assertNotNull(result); List modificationApplicationEntities = modificationApplicationRepository.findAll(); @@ -191,7 +191,7 @@ void testDuplicateModifications() { UUID groupUuid1 = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid1, List.of(ModificationEntity.fromDTO(loadCreationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); assertNotNull(result); // Need to remove the listener created in the last modifications application @@ -206,7 +206,7 @@ void testDuplicateModifications() { null, entities.stream().map(ModificationEntity::getId).toList(), List.of(new ModificationApplicationContext(networkInfos.getNetworkUuuid(), variant2, UUID.randomUUID(), UUID.randomUUID())) - ); + ).join(); /* check results in database and in elasticsearch @@ -238,7 +238,7 @@ void testMoveModifications() { LoadCreationInfos loadCreationInfos = createLoadCreationInfos(newEquipmentId); UUID groupUuid1 = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid1, List.of(ModificationEntity.fromDTO(loadCreationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); assertNotNull(result); // Need to remove the listener created in the last modifications application @@ -255,7 +255,7 @@ void testMoveModifications() { entities.stream().map(ModificationEntity::getId).toList(), List.of(new ModificationApplicationContext(networkInfos.getNetworkUuuid(), variant2, UUID.randomUUID(), UUID.randomUUID())), true - ); + ).join(); /* check results in database and in elasticsearch @@ -288,7 +288,7 @@ void testInsertCompositeModifications() { UUID groupUuid1 = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid1, List.of(ModificationEntity.fromDTO(loadCreationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); assertNotNull(result); // Create the composite modification to pass later to ?action=insert @@ -307,7 +307,7 @@ void testInsertCompositeModifications() { groupUuid2, List.of(compositeUuid), List.of(new ModificationApplicationContext(networkInfos.getNetworkUuuid(), variant2, UUID.randomUUID(), UUID.randomUUID())) - ); + ).join(); /* check results in database and in elasticsearch @@ -334,7 +334,7 @@ void testDeleteModifications() { UUID groupUuid1 = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid1, List.of(ModificationEntity.fromDTO(loadCreationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); assertNotNull(result); /* @@ -362,7 +362,7 @@ void testDeleteModificationGroup() { UUID groupUuid1 = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid1, List.of(ModificationEntity.fromDTO(loadCreationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); assertNotNull(result); /* @@ -420,7 +420,7 @@ void testMultiplePropertiesModificationOnSingleEquipment() { UUID groupUuid = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid, List.of(ModificationEntity.fromDTO(loadModificationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); assertNotNull(result); ModificationApplicationEntity modificationApplicationEntity = modificationApplicationRepository.findAll().getFirst(); @@ -445,7 +445,7 @@ void testSwitchModification() { UUID groupUuid = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid, List.of(ModificationEntity.fromDTO(openSwitchModification))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); assertNotNull(result); assertEquals(1, modificationRepository.getModifications(groupUuid, true, true).size()); @@ -462,7 +462,7 @@ void testUpdateSubstationName() { UUID groupUuid = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid, List.of(ModificationEntity.fromDTO(substationModificationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); assertNotNull(result); ModificationApplicationEntity modificationApplicationEntity = modificationApplicationRepository.findAll().getFirst(); diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationSearchTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationSearchTest.java index f0eea7243..f7ac8cab5 100644 --- a/src/test/java/org/gridsuite/modification/server/service/ModificationSearchTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/ModificationSearchTest.java @@ -126,7 +126,7 @@ void testSearchModificationsWithAccentsAndSpecialChars() { ) ); - NetworkModificationResult result = networkModificationApplicator.applyModifications( + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking( new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos ); @@ -166,7 +166,7 @@ void testSearchModificationsByGroup() { LoadCreationInfos loadCreationInfos = createLoadCreationInfos("newLoadId"); List entities = modificationRepository.saveModifications(groupUuid, List.of(ModificationEntity.fromDTO(substationCreationInfos), ModificationEntity.fromDTO(substationModificationInfos), ModificationEntity.fromDTO(loadCreationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications( + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking( new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos ); diff --git a/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java b/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java index ea34efbe2..4482bc883 100644 --- a/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java @@ -82,7 +82,7 @@ void testApplyModificationsWithAllCollectionsNeededForBusView() { when(modificationInfosList.get(0).getType()).thenReturn(ModificationType.VOLTAGE_INIT_MODIFICATION.name()); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(UUID.randomUUID(), modificationInfosList, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(UUID.randomUUID(), modificationInfosList, reportInfos), networkInfos); assertNotNull(result); verify(largeNetworkModificationExecutionService).supplyAsync(any()); @@ -94,7 +94,7 @@ void testApplyModificationsWithGroupsAndAllCollectionsNeededForBusView() { when(modificationInfosGroups.get(0).modifications().get(0).getType()).thenReturn(ModificationType.VOLTAGE_INIT_MODIFICATION.name()); - NetworkModificationResult result = networkModificationApplicator.applyModifications(modificationInfosGroups, networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(modificationInfosGroups, networkInfos); assertNotNull(result); verify(largeNetworkModificationExecutionService).supplyAsync(any()); diff --git a/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java b/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java index 7c8f68cbb..dcb828f31 100644 --- a/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java +++ b/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java @@ -21,6 +21,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -64,6 +65,8 @@ public static Optional putGroupsDuplications(MockMvc .content(bodyJson) .contentType(MediaType.APPLICATION_JSON) ) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpectAll(status().isOk()) .andReturn(); NetworkModificationsResult result = getObjectMapper().readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); @@ -80,6 +83,8 @@ public static NetworkModificationsResult putGroupsWithCopy(MockMvc mockMvc, UUID .contentType("application/json") .content(body) ) + .andExpect(request().asyncStarted()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) .andExpectAll(status().isOk()) .andReturn(); return getObjectMapper().readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); From 97b96ed9067171e36d80c2ebf001c6c75096996e Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Thu, 25 Sep 2025 13:21:27 +0200 Subject: [PATCH 04/14] Forgot to migrate this test apply to applyBlocking --- .../modification/server/service/ModificationIndexationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java index 05cee5833..328f2de1c 100644 --- a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java @@ -392,7 +392,7 @@ void testReindexAll() { List entities = modificationRepository.saveModifications(groupUuid1, loadCreationInfosList.stream().map(ModificationEntity::fromDTO).toList()); // apply modifications to index them - networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); + networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid1, entities, reportInfos), networkInfos); // assert they are both stored in ES and in postgres assertEquals(3, modificationApplicationRepository.findAll().size()); From 7e90e027bd1542dc0571d292f1186226e6d73733 Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Thu, 25 Sep 2025 13:21:50 +0200 Subject: [PATCH 05/14] BuildVariant, back to synchronous API because not exposed in rest controller, only rabbitmq consume --- .../modifications/NetworkModificationApplicator.java | 11 ++++------- .../server/service/BuildWorkerService.java | 3 +-- .../server/service/NetworkModificationService.java | 6 +----- .../modification/server/service/BuildTest.java | 2 +- .../server/service/BuildWorkerServiceTest.java | 4 ++-- .../service/NetworkModificationApplicatorTest.java | 2 +- 6 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java b/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java index 6c495ceca..590f97e54 100644 --- a/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java +++ b/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java @@ -138,7 +138,7 @@ private NetworkModificationResult flushModificationApplications(ApplicationStatu * Note : it is possible that the rabbitmq consumer threads here will be blocked by modifications applied directly in the other applyModifications method * and no more builds can go through. If this causes problems we should put them in separate rabbitmq queues. */ - public CompletableFuture applyModifications(List modificationInfosGroups, NetworkInfos networkInfos) { + public NetworkModificationResult applyModifications(List modificationInfosGroups, NetworkInfos networkInfos) { PreloadingStrategy preloadingStrategy = modificationInfosGroups.stream() .map(ModificationApplicationGroup::modifications) .flatMap(List::stream) @@ -151,16 +151,13 @@ public CompletableFuture applyModifications(List applyAndFlush(modificationInfosGroups, listener)); + .supplyAsync(() -> applyAndFlush(modificationInfosGroups, listener)) + .join(); } else { - return CompletableFuture.completedFuture(applyAndFlush(modificationInfosGroups, listener)); + return applyAndFlush(modificationInfosGroups, listener); } } - public NetworkModificationResult applyModificationsBlocking(List modificationInfosGroups, NetworkInfos networkInfos) { - return this.applyModifications(modificationInfosGroups, networkInfos).join(); - } - private NetworkModificationResult applyAndFlush(List modificationInfosGroups, NetworkStoreListener listener) { List groupsApplicationStatuses = apply(modificationInfosGroups, listener); diff --git a/src/main/java/org/gridsuite/modification/server/service/BuildWorkerService.java b/src/main/java/org/gridsuite/modification/server/service/BuildWorkerService.java index 89de083b3..270120f44 100644 --- a/src/main/java/org/gridsuite/modification/server/service/BuildWorkerService.java +++ b/src/main/java/org/gridsuite/modification/server/service/BuildWorkerService.java @@ -84,8 +84,7 @@ private CompletableFuture execBuildVariant(BuildExecC CompletableFuture future = CompletableFuture.supplyAsync(() -> { LOGGER.info("Starting build on variant : {}", buildInfos.getDestinationVariantId()); - // TODO avoid blocking the forkjoinpool commonpool when we are using our own executor - return networkModificationService.buildVariantBlocking(networkUuid, buildInfos); + return networkModificationService.buildVariant(networkUuid, buildInfos); } ); diff --git a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java index 6dc7f2be0..9dfebaaa7 100644 --- a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java +++ b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java @@ -250,7 +250,7 @@ public Network cloneNetworkVariant(UUID networkUuid, return network; } - public CompletableFuture buildVariant(@NonNull UUID networkUuid, @NonNull BuildInfos buildInfos) { + public NetworkModificationResult buildVariant(@NonNull UUID networkUuid, @NonNull BuildInfos buildInfos) { // Apply all modifications belonging to the modification groups uuids in buildInfos List modificationGroupsInfos = new ArrayList<>(); Streams.forEachPair(buildInfos.getModificationGroupUuids().stream(), buildInfos.getReportsInfos().stream(), @@ -286,10 +286,6 @@ public CompletableFuture buildVariant(@NonNull UUID n return modificationApplicator.applyModifications(modificationGroupsInfos, networkInfos); } - public NetworkModificationResult buildVariantBlocking(@NonNull UUID networkUuid, @NonNull BuildInfos buildInfos) { - return buildVariant(networkUuid, buildInfos).join(); - } - public void buildVariantRequest(UUID networkUuid, BuildInfos buildInfos, String receiver, WorkflowType workflowType, String workflowInfos) { notificationService.emitBuildMessage(new BuildExecContext(networkUuid, buildInfos, receiver, workflowType, workflowInfos).toMessage(objectMapper)); } diff --git a/src/test/java/org/gridsuite/modification/server/service/BuildTest.java b/src/test/java/org/gridsuite/modification/server/service/BuildTest.java index a6a44cbde..10e7123e5 100644 --- a/src/test/java/org/gridsuite/modification/server/service/BuildTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/BuildTest.java @@ -1023,7 +1023,7 @@ void testLastGroupModificationStatus(final MockWebServer server) { ); //Global application status should be in error and last application status should be OK - NetworkModificationResult networkModificationResult = networkModificationApplicator.applyModificationsBlocking(modificationInfosGroups, new NetworkInfos(network, TEST_NETWORK_ID, true)); + NetworkModificationResult networkModificationResult = networkModificationApplicator.applyModifications(modificationInfosGroups, new NetworkInfos(network, TEST_NETWORK_ID, true)); assertNotNull(networkModificationResult); testEmptyImpactsWithErrorsLastOK(networkModificationResult); assertTrue(TestUtils.getRequestsDone(2, server).stream().anyMatch(r -> r.matches(String.format("/v1/reports/%s", reportUuid)))); diff --git a/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java b/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java index 65d668830..cab2e4d31 100644 --- a/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java @@ -75,12 +75,12 @@ void testConsumeBuildWithWorkflowInfos() throws JsonProcessingException { headers.put(WORKFLOW_INFOS_HEADER, workflowInfos); MessageHeaders messageHeaders = new MessageHeaders(headers); - when(networkModificationService.buildVariantBlocking(eq(networkUuid), any(BuildInfos.class))).thenReturn(modificationResult); + when(networkModificationService.buildVariant(eq(networkUuid), any(BuildInfos.class))).thenReturn(modificationResult); buildWorkerService.consumeBuild().accept(MessageBuilder.createMessage(objectMapper.writeValueAsString(buildInfos), messageHeaders)); ArgumentCaptor buildInfosArgumentCaptor = ArgumentCaptor.forClass(BuildInfos.class); - verify(networkModificationService, times(1)).buildVariantBlocking(eq(networkUuid), buildInfosArgumentCaptor.capture()); + verify(networkModificationService, times(1)).buildVariant(eq(networkUuid), buildInfosArgumentCaptor.capture()); assertThat(buildInfosArgumentCaptor.getValue()).usingRecursiveComparison().isEqualTo(buildInfos); ArgumentCaptor messageArgumentCaptor = ArgumentCaptor.forClass(Message.class); diff --git a/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java b/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java index 4482bc883..0ac9eeae7 100644 --- a/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java @@ -94,7 +94,7 @@ void testApplyModificationsWithGroupsAndAllCollectionsNeededForBusView() { when(modificationInfosGroups.get(0).modifications().get(0).getType()).thenReturn(ModificationType.VOLTAGE_INIT_MODIFICATION.name()); - NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(modificationInfosGroups, networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModifications(modificationInfosGroups, networkInfos); assertNotNull(result); verify(largeNetworkModificationExecutionService).supplyAsync(any()); From fb438ca15e82d5993ed2a56d148064588a65d79a Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Thu, 25 Sep 2025 14:17:51 +0200 Subject: [PATCH 06/14] sonar improve --- .../server/service/NetworkModificationService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java index 9dfebaaa7..5cfe610ae 100644 --- a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java +++ b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java @@ -213,8 +213,8 @@ private CompletableFuture>> applyModifi // and schedule the next computation in the same thread as the task // The list is accessed from different threads but not concurrently and // with happens-before semantics. - chainedFutures = chainedFutures.thenCompose(accumulatingresults -> { - return applyModifications( + chainedFutures = chainedFutures.thenCompose(accumulatingresults -> + applyModifications( modificationApplicationContext.networkUuid(), modificationApplicationContext.variantId(), new ModificationApplicationGroup(groupUuid, @@ -223,8 +223,8 @@ private CompletableFuture>> applyModifi )).thenApply(result -> { accumulatingresults.add(result); return accumulatingresults; - }); - }); + }) + ); } return chainedFutures; } From 155a9f8de6276f98f0ea930f54a9b6bd029c8a49 Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Mon, 13 Oct 2025 15:16:44 +0200 Subject: [PATCH 07/14] no unused variable --- .../server/ModificationControllerTest.java | 25 +-- .../AbstractInjectionModificationTest.java | 14 +- .../AbstractNetworkModificationTest.java | 7 +- .../BatteryModificationTest.java | 85 ++++---- .../DeleteAttachingLineTest.java | 26 +-- .../DeleteVoltageLevelOnLineTest.java | 18 +- .../EquipmentAttributeModificationTest.java | 15 +- .../modifications/EquipmentDeletionTest.java | 10 +- .../modifications/GenerationDispatchTest.java | 17 +- .../GeneratorModificationTest.java | 130 ++++++------ .../modifications/GeneratorScalingTest.java | 18 +- .../LineAttachToVoltageLevelTest.java | 10 +- .../modifications/LineModificationTest.java | 127 ++++++------ .../server/modifications/LoadScalingTest.java | 26 +-- ...tingStatusModificationLockoutLineTest.java | 10 +- .../ShuntCompensatorModificationTest.java | 42 ++-- ...woWindingsTransformerModificationTest.java | 189 +++++++++--------- .../VoltageInitModificationTest.java | 10 +- .../VoltageLevelCreationTest.java | 18 +- .../VoltageLevelModificationTest.java | 10 +- .../VoltageLevelTopologyModificationTest.java | 18 +- .../server/modifications/VscCreationTest.java | 26 +-- .../AbstractByFilterDeletionTest.java | 8 +- .../TabularGeneratorCreationsTest.java | 17 +- .../TabularGeneratorModificationsTest.java | 9 +- 25 files changed, 447 insertions(+), 438 deletions(-) diff --git a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java index 24583f979..ec72edde4 100644 --- a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java +++ b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java @@ -57,6 +57,7 @@ import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; import java.io.IOException; @@ -218,11 +219,11 @@ void testEquipmentIdNonNull() { @Test void testNetworkNotFound() throws Exception { String body = getJsonBody(LoadCreationInfos.builder().equipmentId("id").build(), NOT_FOUND_NETWORK_ID, NetworkCreation.VARIANT_ID); - MvcResult mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI) + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI) .content(body) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpectAll( status().isNotFound(), content().string(new NetworkModificationException(NETWORK_NOT_FOUND, NOT_FOUND_NETWORK_ID.toString()).getMessage()) @@ -256,9 +257,9 @@ void testModificationGroups() throws Exception { resultAsString = mvcResult.getResponse().getContentAsString(); List bsicListResult = mapper.readValue(resultAsString, new TypeReference<>() { }); assertEquals(bsicListResult, List.of()); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -461,9 +462,9 @@ void testNetworkModificationsWithErrorOnNetworkFlush() throws Exception { .build(); String groovyScriptInfosJson = getJsonBody(groovyScriptInfos, TEST_NETWORK_WITH_FLUSH_ERROR_ID, NetworkCreation.VARIANT_ID); - MvcResult mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().is5xxServerError()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().is5xxServerError()).andReturn(); assertEquals(1, modificationRepository.getModifications(TEST_GROUP_ID, true, false).size()); } @@ -1034,12 +1035,12 @@ void testDuplicateModificationGroup() throws Exception { MvcResult mvcResult; VoltageLevelCreationInfos vl1 = ModificationCreation.getCreationVoltageLevel("s1", "vl1Id", "vl1Name"); String bodyJson = getJsonBody(vl1, TEST_NETWORK_BUS_BREAKER_ID, null); - mvcResult = mockMvc.perform( + ResultActions mockMvcResultActions = mockMvc.perform( post(NETWORK_MODIFICATION_URI) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()) .andReturn(); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java index 85ef87514..a760795c6 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java @@ -12,7 +12,7 @@ import org.gridsuite.modification.dto.OperationType; import org.junit.jupiter.api.Tag; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import static org.assertj.core.api.Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; @@ -44,17 +44,17 @@ protected void assertChangeConnectionState(Injection existingEquipment, Injec assertThat(existingEquipment.getTerminal().isConnected()).isNotEqualTo(expectedState); String modificationInfosJson = getJsonBody(modificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); // connection state has changed as expected assertThat(existingEquipment.getTerminal().isConnected()).isEqualTo(expectedState); // try to modify again => no change on connection state - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertThat(existingEquipment.getTerminal().isConnected()).isEqualTo(expectedState); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java index 717825890..f891d4ea8 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java @@ -39,6 +39,7 @@ import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.io.IOException; import java.util.*; @@ -247,11 +248,11 @@ public void testCopy() throws Exception { UUID modificationUuid = saveModification(modificationToCopy); String body = TestUtils.getJsonBody(List.of(modificationUuid), AbstractNetworkModificationTest.TEST_NETWORK_ID, null); - MvcResult mvcResult = mockMvc.perform(put(URI_NETWORK_MODIF_COPY) + ResultActions mockMvcResultActions = mockMvc.perform(put(URI_NETWORK_MODIF_COPY) .content(body) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); List modifications = networkModificationRepository diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java index d47fda539..6381be065 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java @@ -19,6 +19,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import org.springframework.util.CollectionUtils; import java.util.*; @@ -146,10 +147,10 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { .add(); String modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); BatteryModificationInfos createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -160,10 +161,10 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { batteryModificationInfos.setMinQ(new AttributeModification<>(-200., OperationType.SET)); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -175,10 +176,10 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { batteryModificationInfos.setMaxQ(new AttributeModification<>(200., OperationType.SET)); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -189,10 +190,10 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { batteryModificationInfos.setMinQ(new AttributeModification<>(-1.1, OperationType.SET)); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -205,10 +206,10 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { batteryModificationInfos.setMinP(null); batteryModificationInfos.setMaxP(null); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); assertThat(createdModification).recursivelyEquals(batteryModificationInfos); testNetworkModificationsCount(getGroupId(), 5); @@ -221,10 +222,10 @@ void testDroopUnchanged() throws Exception { batteryModificationInfos.getDroop().setValue(18f); String modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); BatteryModificationInfos createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -234,10 +235,10 @@ void testDroopUnchanged() throws Exception { batteryModificationInfos.setDroop(null); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -249,19 +250,19 @@ void testImpactsAfterActivePowerControlModifications() throws Exception { BatteryModificationInfos batteryModificationInfos = (BatteryModificationInfos) buildModification(); String modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); Battery battery = getNetwork().getBattery("v3Battery"); assertEquals(0.1f, battery.getExtension(ActivePowerControl.class).getDroop()); assertTrue(battery.getExtension(ActivePowerControl.class).isParticipate()); //modify only droop batteryModificationInfos.setDroop(new AttributeModification<>(0.5f, OperationType.SET)); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); //check impacts String resultAsString = mvcResult.getResponse().getContentAsString(); @@ -299,10 +300,10 @@ void testActivePowerZeroOrBetweenMinAndMaxActivePower() throws Exception { Double activePower = batteryModificationInfos.getTargetP() != null ? batteryModificationInfos.getTargetP().getValue() : battery.getTargetP(); String modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage("MODIFY_BATTERY_ERROR : Battery '" + "v3Battery" + "' : Active power " + activePower + " is expected to be equal to 0 or within the range of minimum active power and maximum active power: [" + minActivePower + ", " + maxActivePower + "]", ERROR_MESSAGE_KEY, reportService); @@ -346,9 +347,9 @@ void testMinQGreaterThanMaxQ() throws Exception { }); } String modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertLogMessage("MODIFY_BATTERY_ERROR : Battery '" + "v3Battery" + "' : maximum reactive power " + maxQ.get() + " is expected to be greater than or equal to minimum reactive power " + minQ.get(), ERROR_MESSAGE_KEY, reportService); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java b/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java index 636f418c3..78798365b 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/DeleteAttachingLineTest.java @@ -15,7 +15,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import java.util.Map; @@ -92,10 +92,10 @@ void createWithInvalidLineIdTest() throws Exception { .build(); var objectWriter = mapper.writer().withDefaultPrettyPrinter(); String json = getJsonBody(deleteAttachingLineInfos, null); - MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(LINE_NOT_FOUND, "ll").getMessage(), ERROR_MESSAGE_KEY, reportService); } @@ -112,10 +112,10 @@ void createWithNoAttachmentPointTest() throws Exception { var objectWriter = mapper.writer().withDefaultPrettyPrinter(); String json = getJsonBody(deleteAttachingLineInfos, null); - MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage("Unable to find the attachment point and the tapped voltage level from lines l1, l3 and l1", ERROR_MESSAGE_KEY, reportService); } @@ -127,10 +127,10 @@ void createNewLineWithExistingIdTest() throws Exception { deleteAttachingLineInfos.setReplacingLine1Id("l2"); String lineAttachToAbsentLineJson = getJsonBody(deleteAttachingLineInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, "l2").getMessage(), ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java b/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java index 412711a76..d5be334aa 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/DeleteVoltageLevelOnLineTest.java @@ -15,7 +15,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import java.util.Map; @@ -94,10 +94,10 @@ void createWithInvalidLineIdTest() throws Exception { var objectWriter = mapper.writer().withDefaultPrettyPrinter(); String json = getJsonBody(deleteVoltageLevelOnLineInfos, null); - MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(MockMvcRequestBuilders.post(getNetworkModificationUri()).content(json).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(LINE_NOT_FOUND, "ll").getMessage(), ERROR_MESSAGE_KEY, reportService); } @@ -108,10 +108,10 @@ void createNewLineWithExistingIdTest() throws Exception { DeleteVoltageLevelOnLineInfos deleteVoltageLevelOnLineInfos = (DeleteVoltageLevelOnLineInfos) buildModification(); deleteVoltageLevelOnLineInfos.setReplacingLine1Id("l2"); String lineAttachToAbsentLineJson = getJsonBody(deleteVoltageLevelOnLineInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(lineAttachToAbsentLineJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, "l2").getMessage(), ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java index 23071cb7e..22d20735e 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java @@ -17,6 +17,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.time.Instant; import java.util.Map; @@ -99,10 +100,10 @@ private void switchModifications(String extraParams, String switchId1, String sw // switch not existing switchStatusModificationInfos.setEquipmentId(switchNotFoundId); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(EQUIPMENT_NOT_FOUND, switchNotFoundId).getMessage(), ERROR_MESSAGE_KEY, reportService); @@ -110,9 +111,9 @@ private void switchModifications(String extraParams, String switchId1, String sw switchStatusModificationInfos.setEquipmentId(switchId1); switchStatusModificationInfos.setEquipmentAttributeValue(false); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); testEmptyImpacts(mapper, mvcResult.getResponse().getContentAsString()); // switch opening diff --git a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java index 8d83a176c..5262e870e 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java @@ -28,6 +28,7 @@ import org.junit.jupiter.params.provider.CsvSource; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.List; import java.util.Map; @@ -89,11 +90,10 @@ void testOkWhenRemovingIsolatedEquipment() throws Exception { String equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, null); // delete load with error removing dangling switches, because the load connection node is not linked to any other node - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()) - .andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); var v5 = getNetwork().getVoltageLevel("v5"); assertNull(v5.getNodeBreakerView().getTerminal(2)); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java index cff3e9f58..461f58616 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java @@ -26,6 +26,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; @@ -170,10 +171,10 @@ void testGenerationDispatchWithMultipleEnergySource() throws Exception { setNetwork(Network.read("testGenerationDispatchWithMultipleEnergySource.xiidm", getClass().getResourceAsStream("/testGenerationDispatchWithMultipleEnergySource.xiidm"))); String modificationJson = getJsonBody(modification, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessageWithoutRank("The total demand is : 768.0 MW", "network.modification.TotalDemand", reportService); assertLogMessageWithoutRank("The total amount of fixed supply is : 0.0 MW", "network.modification.TotalAmountFixedSupply", reportService); @@ -495,10 +496,10 @@ void testGenerationDispatchWithSubstationsHierarchy() throws Exception { setNetwork(Network.read("ieee118cdf_testDemGroupe.xiidm", getClass().getResourceAsStream("/ieee118cdf_testDemGroupe.xiidm"))); String modificationJson = getJsonBody(modification, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); // generators modified assertEquals(264, getNetwork().getGenerator("B4-G").getTargetP(), 0.001); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java index 3e0f044eb..4c44d64ac 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java @@ -17,7 +17,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import org.springframework.util.CollectionUtils; import java.util.*; @@ -175,10 +175,10 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { .add(); String modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); GeneratorModificationInfos createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -189,10 +189,10 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { generatorModificationInfos.setMinQ(new AttributeModification<>(-200., OperationType.SET)); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -204,10 +204,10 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { generatorModificationInfos.setMaxQ(new AttributeModification<>(200., OperationType.SET)); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -218,10 +218,10 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { generatorModificationInfos.setMinQ(new AttributeModification<>(-1.1, OperationType.SET)); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -236,10 +236,10 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { generatorModificationInfos.setMaxP(null); generatorModificationInfos.setRatedS(null); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); assertThat(createdModification).recursivelyEquals(generatorModificationInfos); testNetworkModificationsCount(getGroupId(), 5); @@ -253,10 +253,10 @@ void testGeneratorShortCircuitAttributesModification() throws Exception { generatorModificationInfos.setDirectTransX(null); String modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); GeneratorModificationInfos createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -269,10 +269,10 @@ void testGeneratorShortCircuitAttributesModification() throws Exception { modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -288,10 +288,10 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { generatorModificationInfos.setVoltageRegulationOn(new AttributeModification<>(true, OperationType.SET)); String modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); GeneratorModificationInfos createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -302,10 +302,10 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { generatorModificationInfos.setVoltageRegulationOn(null); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -316,10 +316,10 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { generatorModificationInfos.setVoltageRegulationType(new AttributeModification<>(VoltageRegulationType.LOCAL, OperationType.SET)); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -334,10 +334,10 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { generatorModificationInfos.setParticipate(null); modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); assertThat(createdModification).recursivelyEquals(generatorModificationInfos); @@ -422,10 +422,10 @@ void testMinQGreaterThanMaxQ() throws Exception { }); } String modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage("MODIFY_GENERATOR_ERROR : Generator '" + "idGenerator" + "' : maximum reactive power " + maxQ.get() + " is expected to be greater than or equal to minimum reactive power " + minQ.get(), ERROR_MESSAGE_KEY, reportService); } @@ -445,10 +445,10 @@ void testActivePowerZeroOrBetweenMinAndMaxActivePower() throws Exception { Double activePower = generatorModificationInfos.getTargetP() != null ? generatorModificationInfos.getTargetP().getValue() : generator.getTargetP(); String modificationToCreateJson = getJsonBody(generatorModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage("MODIFY_GENERATOR_ERROR : Generator '" + "idGenerator" + "' : Active power " + activePower + " is expected to be equal to 0 or within the range of minimum active power and maximum active power: [" + minActivePower + ", " + maxActivePower + "]", ERROR_MESSAGE_KEY, reportService); @@ -463,10 +463,10 @@ void testUnsetAttributes() throws Exception { String generatorModificationInfosJson = getJsonBody(generatorModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertEquals(Double.NaN, getNetwork().getGenerator("idGenerator").getTargetV()); //Unset TargetQ (voltage regulation needs to be turned on and voltage setpoint to have a value) @@ -474,10 +474,10 @@ void testUnsetAttributes() throws Exception { generatorModificationInfos.setTargetV(new AttributeModification<>(44.0, OperationType.SET)); generatorModificationInfos.setTargetQ(new AttributeModification<>(null, OperationType.UNSET)); generatorModificationInfosJson = getJsonBody(generatorModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertEquals(Double.NaN, getNetwork().getGenerator("idGenerator").getTargetQ()); } @@ -494,10 +494,10 @@ void changeGeneratorOnBusBreakerWithoutBusBarSection() throws Exception { .connectionPosition(new AttributeModification<>(1, OperationType.SET)) .build(); String generatorModificationInfosJson = getJsonBody(generatorModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(generatorModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); generatorModificationInfos = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); assertEquals(1, generatorModificationInfos.getConnectionPosition().getValue()); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java index 86cb76e28..bdddc9c73 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java @@ -29,7 +29,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.nio.file.Paths; import java.time.Instant; @@ -191,10 +191,10 @@ void testVentilationModeWithoutDistributionKey() throws Exception { String modificationToCreateJson = getJsonBody(modificationToCreate, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertEquals(200, getNetwork().getGenerator(GENERATOR_ID_2).getTargetP(), 0.01D); assertEquals(200, getNetwork().getGenerator(GENERATOR_ID_3).getTargetP(), 0.01D); @@ -485,12 +485,12 @@ private void testVariationWithSomeDisconnections(VariationMode variationMode, Li String modificationToCreateJson = getJsonBody(generatorScalingInfo, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()) .content(modificationToCreateJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); // If we sum the targetP for all expected modified generators, we should have the requested variation value double connectedGeneratorsTargetP = modifiedGenerators diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java index 8dbe00644..62034ae8b 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineAttachToVoltageLevelTest.java @@ -15,7 +15,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.Arrays; import java.util.Map; @@ -129,10 +129,10 @@ protected void assertAfterNetworkModificationDeletion() { private void tryToCreateLineWithExistingId(LineAttachToVoltageLevelInfos tryWithExistingLine, String existingLineId) throws Exception { String tryWithExistingLineJson = getJsonBody(tryWithExistingLine, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(tryWithExistingLineJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(tryWithExistingLineJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(LINE_ALREADY_EXISTS, existingLineId).getMessage(), ERROR_MESSAGE_KEY, reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java index 7e5f93e56..7c3d8ab94 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java @@ -27,6 +27,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.Collection; import java.util.List; @@ -250,10 +251,10 @@ void testPermanentLimitUnchanged() throws Exception { lineModificationInfos.getCurrentLimits2().setPermanentLimit(null); String modificationToCreateJson = getJsonBody(lineModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -269,10 +270,10 @@ void testCharacteristicsModification() throws Exception { String modificationToCreateJson = getJsonBody(lineModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -283,10 +284,10 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setR(new AttributeModification<>(2.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -297,10 +298,10 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setG1(new AttributeModification<>(11.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -311,10 +312,10 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setB1(new AttributeModification<>(12.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -325,10 +326,10 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setG2(new AttributeModification<>(13.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); @@ -339,10 +340,10 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setB2(new AttributeModification<>(14.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(5); @@ -352,9 +353,9 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setB2(null); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(6); @@ -370,11 +371,11 @@ void testCharacteristicsModification() throws Exception { lineModificationInfos.setB2(new AttributeModification<>(14.0, OperationType.SET)); modificationToCreateJson = getJsonBody(lineModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true) .get(7); @@ -431,10 +432,10 @@ void testTemporaryLimitsModification() throws Exception { .build(); String modificationToCreateJson = getJsonBody(lineModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -449,10 +450,10 @@ void testTemporaryLimitsModification() throws Exception { .build(); modificationToCreateJson = getJsonBody(lineModificationInfos1, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -507,19 +508,19 @@ private void changeLineConnectionState(Line existingEquipment, boolean expectedS assertThat(existingEquipment.getTerminal2().isConnected()).isNotEqualTo(expectedState); String modificationInfosJson = getJsonBody(modificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); // connection state has changed as expected assertThat(existingEquipment.getTerminal1().isConnected()).isEqualTo(expectedState); assertThat(existingEquipment.getTerminal2().isConnected()).isEqualTo(expectedState); // try to modify again => no change on connection state - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertThat(existingEquipment.getTerminal1().isConnected()).isEqualTo(expectedState); assertThat(existingEquipment.getTerminal2().isConnected()).isEqualTo(expectedState); } @@ -538,10 +539,10 @@ void changeLineConnectablePosition() throws Exception { .connectionPosition2(new AttributeModification<>(1, OperationType.SET)) .build(); String modificationInfosJson = getJsonBody(lineModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); assertEquals(1, createdModification.getConnectionPosition1().getValue()); assertEquals(1, createdModification.getConnectionPosition2().getValue()); @@ -557,10 +558,10 @@ void changeLineConnectablePositionWithoutBusBarSection() throws Exception { .connectionName2(new AttributeModification<>("line3", OperationType.SET)) .build(); String modificationInfosJson = getJsonBody(lineModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); assertEquals("line3", createdModification.getConnectionName1().getValue()); assertEquals("line3", createdModification.getConnectionName2().getValue()); @@ -596,10 +597,10 @@ void changeLineWithConnectablePositionOneSide() throws Exception { .build(); String modificationInfosJson = getJsonBody(lineModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); assertEquals("cnLine10", createdModification.getConnectionName1().getValue()); assertEquals(2, createdModification.getConnectionPosition1().getValue()); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java index 58aee3f5b..c9b1b362d 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LoadScalingTest.java @@ -31,7 +31,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.nio.file.Paths; import java.time.Instant; @@ -186,10 +186,10 @@ void testVentilationModeWithoutDistributionKey() throws Exception { .build(); String body = getJsonBody(modificationToCreate, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); wireMockUtils.verifyGetRequest(stubNonDistributionKey, PATH, handleQueryParams(FILTER_NO_DK), false); @@ -275,15 +275,15 @@ void testScalingCreationWithWarning() throws Exception { .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE))).getId(); String body = getJsonBody(loadScalingInfo, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()) .content(body) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpectAll( status().isOk(), content().string(IsNull.notNullValue()) - ).andReturn(); + ); wireMockUtils.verifyGetRequest(stubMultipleWrongIds, PATH, Map.of("ids", WireMock.matching(".*")), false); assertEquals(600, getNetwork().getLoad(LOAD_ID_9).getP0(), 0.01D); @@ -494,12 +494,12 @@ private void testVariationWithSomeDisconnections(VariationMode variationMode, Li String modificationToCreateJson = getJsonBody(loadScalingInfo, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()) .content(modificationToCreateJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); // If we sum the P0 for all expected modified loads, we should have the requested variation value double connectedLoadsConstantP = modifiedLoads diff --git a/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java b/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java index 3b7622a65..5cf00ff40 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/OperatingStatusModificationLockoutLineTest.java @@ -21,7 +21,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.Map; import java.util.UUID; @@ -104,10 +104,10 @@ private void testLockoutLine(String lineID) throws Exception { String modificationJson = getJsonBody(modificationInfos, null); assertNull(getNetwork().getLine(lineID).getExtension(OperatingStatus.class)); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); TestUtils.assertOperatingStatus(getNetwork(), lineID, TARGET_BRANCH_STATUS); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java index f39cfd0df..7143d97e1 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModificationTest.java @@ -16,7 +16,7 @@ import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.List; import java.util.Map; @@ -70,10 +70,10 @@ void testWrongMaximumSectionCount() throws Exception { .build(); String body = getJsonBody(shuntCompensator, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, String.format("Maximum section count should be greater or equal to 1")).getMessage(), ERROR_MESSAGE_KEY, reportService); @@ -88,10 +88,10 @@ void testWrongSectionCount() throws Exception { .build(); String body = getJsonBody(shuntCompensator, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, String.format("Section count should be between 0 and Maximum section count (1), actual : 3")).getMessage(), ERROR_MESSAGE_KEY, reportService); @@ -112,10 +112,10 @@ void testWrongSectionCountChangeSectionCount() throws Exception { .build(); String body = getJsonBody(shuntCompensatorModifications, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, String.format("Section count should be between 0 and Maximum section count (1), actual : 3")).getMessage(), ERROR_MESSAGE_KEY, reportService); @@ -136,10 +136,10 @@ void testWrongSectionCountChangeMaximumSectionCount() throws Exception { .build(); String body = getJsonBody(shuntCompensatorModifications, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, "Section count should be between 0 and Maximum section count (1), actual : -1").getMessage(), ERROR_MESSAGE_KEY, reportService); @@ -154,10 +154,10 @@ void testNegativeQmaxAtNominalV() throws Exception { .build(); String body = getJsonBody(shuntCompensator, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, "Qmax at nominal voltage should be greater or equal to 0").getMessage(), ERROR_MESSAGE_KEY, reportService); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java index 216fb30cc..a90db09c9 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java @@ -28,6 +28,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.*; @@ -337,10 +338,10 @@ void testRatioTapChangerModification() throws Exception { String modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); TwoWindingsTransformerModificationInfos createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -356,10 +357,10 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -372,10 +373,10 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -387,9 +388,9 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -402,10 +403,10 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); @@ -433,10 +434,10 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(5); @@ -447,10 +448,10 @@ void testRatioTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(6); @@ -475,10 +476,10 @@ void testPhaseTapChangerModification() throws Exception { String modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); TwoWindingsTransformerModificationInfos createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -490,10 +491,10 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -505,10 +506,10 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -520,10 +521,10 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -535,10 +536,10 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); @@ -567,10 +568,10 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(5); @@ -583,10 +584,10 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(6); @@ -598,10 +599,10 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(7); @@ -612,10 +613,10 @@ void testPhaseTapChangerModification() throws Exception { modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(8); @@ -677,10 +678,10 @@ void testPhaseTapChangerRegulationModification() throws Exception { String modificationToModifyJson = getJsonBody(phaseTapChangerCreation, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); PhaseTapChanger phaseTapChanger = twt3.getPhaseTapChanger(); @@ -697,10 +698,10 @@ void testPhaseTapChangerRegulationModification() throws Exception { String modificationToModifyJson2 = getJsonBody(phaseTapChangerCreation, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson2).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson2).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); phaseTapChanger = getNetwork().getTwoWindingsTransformer(twtId).getPhaseTapChanger(); // modification 2 assert @@ -715,10 +716,10 @@ void testPhaseTapChangerRegulationModification() throws Exception { phaseTapChangerCreation.getPhaseTapChanger().setRegulating(new AttributeModification<>(true, OperationType.SET)); String modificationToModifyJson3 = getJsonBody(phaseTapChangerCreation, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson3).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson3).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); phaseTapChanger = getNetwork().getTwoWindingsTransformer(twtId).getPhaseTapChanger(); @@ -750,11 +751,11 @@ void testPhaseTapChangerRegulationModification2() throws Exception { String modificationToModifyJson1 = getJsonBody(phaseTapChangerCreation, null); // modification 1 assert - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()) .content(modificationToModifyJson1).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(MODIFY_TWO_WINDINGS_TRANSFORMER_ERROR, "Regulation value is missing when modifying, phase tap changer can not regulate").getMessage(), ERROR_MESSAGE_KEY, reportService); } @@ -798,9 +799,9 @@ private void changeConnectionState(TwoWindingsTransformer existingEquipment, Two .build(); String modificationInfosJson = getJsonBody(modificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); @@ -816,10 +817,10 @@ private void changeConnectionState(TwoWindingsTransformer existingEquipment, Two assertEquals(NetworkModificationResult.ApplicationStatus.ALL_OK, extractApplicationStatus(networkModificationsResult).getFirst()); // try to modify again => no change on connection state - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertThat(terminal.isConnected()).isEqualTo(expectedState); } } @@ -982,10 +983,10 @@ void testPhaseTapChangerRegulationCreation() throws Exception { String modificationToModifyJson = getJsonBody(phaseTapChangerCreation, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); PhaseTapChanger phaseTapChanger = twt3.getPhaseTapChanger(); @@ -1032,10 +1033,10 @@ void testPhaseTapChangerRegulationCreation() throws Exception { modificationToModifyJson = getJsonBody(phaseTapChangerCreation, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); phaseTapChanger = twt3.getPhaseTapChanger(); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java index 88c808918..75190819a 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageInitModificationTest.java @@ -13,7 +13,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.List; import java.util.UUID; @@ -288,10 +288,10 @@ private void testVoltageInitShunt(String shuntCompensatorId, int currentSectionC .build(); String body = getJsonBody(modification, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); } @Test diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java index ff99ee012..7fe831cd4 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelCreationTest.java @@ -19,7 +19,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.Arrays; import java.util.List; @@ -172,10 +172,10 @@ void testIpMinEqualsIpMax() throws Exception { vli.setIpMin(25.0); vli.setIpMax(25.0); String vliJsonObject = getJsonBody(vli, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(vliJsonObject).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(vliJsonObject).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); // VL is created assertNotNull(getNetwork().getVoltageLevel("vl_ok")); } @@ -200,10 +200,10 @@ private void testIccWithError(Double ipMin, Double ipMax, String reportError) th vli.setIpMax(ipMax); String vliJsonObject = getJsonBody(vli, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(vliJsonObject).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(vliJsonObject).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); // VL could not have been created assertNull(getNetwork().getVoltageLevel("vl_ko")); assertLogMessage(new NetworkModificationException(CREATE_VOLTAGE_LEVEL_ERROR, reportError).getMessage(), ERROR_MESSAGE_KEY, reportService); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java index 7461979a5..0922bcd7b 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java @@ -17,7 +17,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.List; import java.util.Map; @@ -245,12 +245,12 @@ void testSetIpMaxOnEquipmentWitOnlyIpMaxExtension() throws Exception { private void applyModification(VoltageLevelModificationInfos infos) throws Exception { String body = getJsonBody(infos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()) .content(body) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); } @Override diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java index 75453feee..16300f165 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java @@ -18,7 +18,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.*; @@ -157,12 +157,12 @@ void testInvalidVoltageLevel() throws Exception { .build(); String body = getJsonBody(infos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()) .content(body) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); } @Test @@ -202,12 +202,12 @@ void testNonExistentSwitch() throws Exception { .build(); String body = getJsonBody(infos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()) .content(body) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); } @Override diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java index b065c8da3..d58048b0d 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VscCreationTest.java @@ -16,7 +16,7 @@ import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.List; import java.util.Map; @@ -304,10 +304,10 @@ void testCreateAngleDroopPowerControlWithoutEnabling() throws Exception { vscCreationInfos.setAngleDroopActivePowerControl(false); String vscCreationInfosJson = getJsonBody(vscCreationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); HvdcLine hvdcLine = getNetwork().getHvdcLine("vsc1"); assertThat(hvdcLine).isNotNull(); HvdcAngleDroopActivePowerControl activePowerControlExt = hvdcLine.getExtension(HvdcAngleDroopActivePowerControl.class); @@ -324,10 +324,10 @@ void testNotCreateAngleDroopPowerControlWithoutEnabling() throws Exception { vscCreationInfos.setDroop(null); vscCreationInfos.setP0(null); String vscCreationInfosJson = getJsonBody(vscCreationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); HvdcLine hvdcLine = getNetwork().getHvdcLine("vsc1"); assertThat(hvdcLine).isNotNull(); HvdcAngleDroopActivePowerControl activePowerControlExt = hvdcLine.getExtension(HvdcAngleDroopActivePowerControl.class); @@ -368,10 +368,10 @@ private VscCreationInfos buildModificationWithDroopAbsentInfos(boolean isPresent private void checkDroopWithAbsentInfos(VscCreationInfos vscCreationInfos) throws Exception { String vscCreationInfosJson = getJsonBody(vscCreationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(vscCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage(new NetworkModificationException(WRONG_HVDC_ANGLE_DROOP_ACTIVE_POWER_CONTROL, ACTIVE_POWER_CONTROL_DROOP_P0_REQUIRED_ERROR_MSG).getMessage(), ERROR_MESSAGE_KEY, reportService); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java b/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java index 8ec4f4c12..fd13365b0 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java @@ -15,7 +15,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.Date; import java.util.List; @@ -129,9 +129,9 @@ void testCreateAllFiltersWrong() throws Exception { .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE))).getId(); String body = getJsonBody(byFilterDeletionInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertLogMessage(byFilterDeletionInfos.getErrorType().name() + ": There is no valid equipment ID among the provided filter(s)", "network.modification.invalidFilters", reportService); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java index c28d0cfe4..d636968a4 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java @@ -27,6 +27,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.List; import java.util.Map; @@ -256,11 +257,11 @@ void testAllModificationsHaveSucceeded() throws Exception { .build(); String tabularCreationJson = getJsonBody(creationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage("Tabular creation: 2 generators have been created", "network.modification.tabular.creation", reportService); } @@ -307,11 +308,11 @@ void testAllModificationsHaveFailed() throws Exception { .build(); String tabularCreationJson = getJsonBody(creationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) + org.springframework.test.web.servlet.ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage("Tabular creation: No generators have been created", "network.modification.tabular.creation.error", reportService); } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java index 1ba03cc44..42796679c 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java @@ -25,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Pair; import java.util.List; @@ -562,11 +563,11 @@ void testAllModificationsHaveFailed() throws Exception { .build(); String modificationToCreateJson = getJsonBody(modificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + .andExpect(request().asyncStarted()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpect(status().isOk()); assertLogMessage("Tabular modification: No generators have been modified", "network.modification.tabular.modification.error", reportService); } From 3e2e66db16489ac2367f77c946b750052f9f6a4a Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Mon, 13 Oct 2025 17:38:30 +0200 Subject: [PATCH 08/14] Same every asyncStart in variable of type ResultActions and minimal diff --- .../server/ModificationControllerTest.java | 271 +++++++++--------- .../AbstractInjectionModificationTest.java | 4 +- .../AbstractNetworkModificationTest.java | 14 +- .../modifications/BalancesAdjustmentTest.java | 7 +- .../BatteryCreationInNodeBreakerTest.java | 7 +- .../BatteryModificationTest.java | 18 +- .../EquipmentAttributeModificationTest.java | 31 +- .../modifications/EquipmentDeletionTest.java | 9 +- .../modifications/GenerationDispatchTest.java | 6 +- .../GeneratorCreationInNodeBreakerTest.java | 7 +- .../GeneratorModificationTest.java | 24 +- .../modifications/GeneratorScalingTest.java | 6 +- .../modifications/GroovyScriptTest.java | 37 +-- .../LineCreationInNodeBreakerTest.java | 7 +- .../modifications/LineModificationTest.java | 32 +-- .../LoadCreationInNodeBreakerTest.java | 7 +- ...rCompensatorCreationInNodeBreakerTest.java | 7 +- ...ingsTransformerCreationBusBreakerTest.java | 7 +- ...ngsTransformerCreationNodeBreakerTest.java | 13 +- ...woWindingsTransformerModificationTest.java | 31 +- .../VoltageLevelModificationTest.java | 2 +- .../VoltageLevelTopologyModificationTest.java | 6 +- .../AbstractModificationByAssignmentTest.java | 7 +- .../AbstractByFormulaModificationTest.java | 7 +- .../AbstractByFilterDeletionTest.java | 2 +- .../TabularGeneratorCreationsTest.java | 12 +- .../TabularGeneratorModificationsTest.java | 8 +- .../modification/server/utils/ApiUtils.java | 13 +- 28 files changed, 305 insertions(+), 297 deletions(-) diff --git a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java index ec72edde4..64fe0d3a5 100644 --- a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java +++ b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java @@ -227,7 +227,7 @@ void testNetworkNotFound() throws Exception { .andExpectAll( status().isNotFound(), content().string(new NetworkModificationException(NETWORK_NOT_FOUND, NOT_FOUND_NETWORK_ID.toString()).getMessage()) - ).andReturn(); + ); } @Test @@ -259,8 +259,7 @@ void testModificationGroups() throws Exception { assertEquals(bsicListResult, List.of()); ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -314,9 +313,9 @@ void testRestoreNetworkModifications() throws Exception { .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -344,9 +343,9 @@ void testStashNetworkModifications() throws Exception { .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -374,9 +373,9 @@ void testDisableNetworkModifications() throws Exception { .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -403,9 +402,9 @@ void testDeleteModification() throws Exception { .equipmentId("v1b1") .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -476,9 +475,9 @@ void testMultipleModificationsWithError() throws Exception { .build(); String groovyScriptInfosJson = getJsonBody(groovyScriptInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); // apply groovy script without error - MvcResult mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); assertEquals(1, modificationRepository.getModifications(TEST_GROUP_ID, true, true).size()); @@ -507,10 +506,10 @@ private List createSomeSwitchModifications(UUID groupId, int for (int i = 0; i < number; i++) { switchStatusModificationInfos.setEquipmentAttributeValue(openStates.get(i % 2)); String bodyJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(URI_NETWORK_MODIF_BASE + "?groupUuid=" + groupId) + ResultActions mockMvcResultActions = mockMvc.perform(post(URI_NETWORK_MODIF_BASE + "?groupUuid=" + groupId) .content(bodyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); } @@ -525,10 +524,10 @@ private ModificationInfos createDeletionModification(UUID groupId, IdentifiableT .equipmentId(equipmentName) .build(); String bodyJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - MvcResult mvcResult = mockMvc.perform(post(URI_NETWORK_MODIF_BASE + "?groupUuid=" + groupId) + ResultActions mockMvcResultActions = mockMvc.perform(post(URI_NETWORK_MODIF_BASE + "?groupUuid=" + groupId) .content(bodyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -548,12 +547,12 @@ void testCopyModification() throws Exception { List badModificationUuidList = List.of(UUID.randomUUID(), UUID.randomUUID()); duplicateModificationUuidList.addAll(badModificationUuidList); String bodyJson = getJsonBody(duplicateModificationUuidList, NetworkCreation.VARIANT_ID); - MvcResult mvcResult = mockMvc.perform( + ResultActions mockMvcResultActions = mockMvc.perform( put("/v1/groups/" + TEST_GROUP_ID + "?action=COPY") .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -583,12 +582,12 @@ void testCopyModification() throws Exception { // Duplicate the same modifications, and append them at the end of this new group modification list. duplicateModificationUuidList = new ArrayList<>(modificationUuidList.subList(0, 2)); bodyJson = getJsonBody(duplicateModificationUuidList, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform( + mockMvcResultActions = mockMvc.perform( put("/v1/groups/" + otherGroupId + "?action=COPY") .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -603,12 +602,12 @@ void testCopyModification() throws Exception { // Duplicate all modifications in TEST_GROUP_ID, and append them at the end of otherGroupId bodyJson = getJsonBody(List.of(), NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform( + mockMvcResultActions = mockMvc.perform( put("/v1/groups/" + otherGroupId + "?action=COPY" + "&originGroupUuid=" + TEST_GROUP_ID) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -649,12 +648,12 @@ void testCopyModificationOld() throws Exception { String bodyJson = getJsonBody(duplicateModificationUuidList, NetworkCreation.VARIANT_ID); String url = "/v1/groups/" + TEST_GROUP_ID + "?action=COPY"; MvcResult mvcResult; - mvcResult = mockMvc.perform( + ResultActions mockMvcResultActions = mockMvc.perform( put(url) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -686,12 +685,12 @@ void testCopyModificationOld() throws Exception { duplicateModificationUuidList = new ArrayList<>(modificationUuidList.subList(0, 2)); String copyUrl = "/v1/groups/" + otherGroupId + "?action=COPY"; bodyJson = getJsonBody(duplicateModificationUuidList, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform( + mockMvcResultActions = mockMvc.perform( put(copyUrl) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -706,12 +705,12 @@ void testCopyModificationOld() throws Exception { // Duplicate all modifications in TEST_GROUP_ID, and append them at the end of otherGroupId String bodyJson2 = getJsonBody(List.of(), NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform( + mockMvcResultActions = mockMvc.perform( put("/v1/groups/" + otherGroupId + "?action=COPY" + "&originGroupUuid=" + TEST_GROUP_ID) .content(bodyJson2) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -752,9 +751,9 @@ void createGeneratorWithStartup() throws Exception { GeneratorCreationInfos generatorCreationInfos = ModificationCreation.getCreationGenerator("v2", "idGenerator1", "nameGenerator1", "1B", "v2load", "LOAD", "v1"); String generatorCreationInfosJson = getJsonBody(generatorCreationInfos, TEST_NETWORK_ID, null); MvcResult mvcResult; - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -765,9 +764,9 @@ void createGeneratorWithStartup() throws Exception { GeneratorCreationInfos generatorCreationInfosBusBreaker = ModificationCreation.getCreationGenerator("v1", "idGenerator2", "nameGenerator2", "bus1", "idGenerator1", "GENERATOR", "v1"); generatorCreationInfosJson = getJsonBody(generatorCreationInfosBusBreaker, TEST_NETWORK_BUS_BREAKER_ID, null); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -779,9 +778,9 @@ void createGeneratorWithStartup() throws Exception { generatorCreationInfos.setMarginalCost(8.); generatorCreationInfosJson = getJsonBody(generatorCreationInfos, TEST_NETWORK_ID, null); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); generatorStartup = network.getGenerator("idGenerator21").getExtension(GeneratorStartup.class); @@ -795,9 +794,9 @@ void createGeneratorWithStartup() throws Exception { generatorCreationInfosBusBreaker.setEquipmentId("idGenerator3"); generatorCreationInfosBusBreaker.setPlannedOutageRate(80.); generatorCreationInfosJson = getJsonBody(generatorCreationInfosBusBreaker, TEST_NETWORK_BUS_BREAKER_ID, null); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); generatorStartup = networkStoreService.getNetwork(TEST_NETWORK_BUS_BREAKER_ID, null).getGenerator("idGenerator3").getExtension(GeneratorStartup.class); @@ -877,12 +876,12 @@ void testNetworkCompositeModification() throws Exception { // Insert the composite modification in the group String bodyJson = getJsonBody(List.of(compositeModificationUuid), NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform( + ResultActions mockMvcResultActions = mockMvc.perform( put("/v1/groups/" + TEST_GROUP_ID + "?action=INSERT") .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -939,12 +938,12 @@ void testNetworkCompositeModificationOld() throws Exception { assertEquals("v1b1", ((EquipmentAttributeModificationInfos) compositeModificationContent.get(0)).getEquipmentId()); String bodyJson = getJsonBody(List.of(compositeModificationUuid), NetworkCreation.VARIANT_ID); // Insert the composite modification in the group - mvcResult = mockMvc.perform( + ResultActions mockMvcResultActions = mockMvc.perform( put("/v1/groups/" + TEST_GROUP_ID + "?action=INSERT") .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -974,10 +973,10 @@ void testMoveModificationBetweenTwoGroups() throws Exception { List movingModificationUuidList = List.of(originSingleModification); String bodyJson = getJsonBody(movingModificationUuidList, NetworkCreation.VARIANT_ID); String url = "/v1/groups/" + TEST_GROUP_ID + "?action=MOVE" + "&originGroupUuid=" + TEST_GROUP2_ID + "&build=true"; - MvcResult mvcResult = mockMvc.perform(put(url).content(bodyJson) + ResultActions mockMvcResultActions = mockMvc.perform(put(url).content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()) .andReturn(); @@ -1042,7 +1041,7 @@ void testDuplicateModificationGroup() throws Exception { .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()) - .andReturn(); + .andReturn().getResponse().getContentAsString(); // create new line in voltage levels with node/breaker topology // between voltage level "v1" and busbar section "bus1" and @@ -1073,12 +1072,12 @@ void testDuplicateModificationGroup() throws Exception { .build(); bodyJson = getJsonBody(lineCreationInfos, TEST_NETWORK_BUS_BREAKER_ID, null); - mvcResult = mockMvc.perform( + mockMvcResultActions = mockMvc.perform( post(NETWORK_MODIFICATION_URI) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()) .andReturn(); assertApplicationStatusOK(mvcResult); @@ -1098,12 +1097,12 @@ void testDuplicateModificationGroup() throws Exception { 10.0, "AttPointId", "attPointName", null, "v4", "1.A", attachmentLine, "nl1", "NewLine1", "nl2", "NewLine2"); String bodyJson2 = getJsonBody(lineAttachToVL, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform( + mockMvcResultActions = mockMvc.perform( post(NETWORK_MODIFICATION_URI) .content(bodyJson2) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -1113,23 +1112,23 @@ void testDuplicateModificationGroup() throws Exception { LineSplitWithVoltageLevelInfos lineSplitWoVL = new LineSplitWithVoltageLevelInfos("line1", 10.0, null, "v4", "1.A", "nl11", "NewLine11", "nl12", "NewLine12"); bodyJson2 = getJsonBody(lineSplitWoVL, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform( + mockMvcResultActions = mockMvc.perform( post(NETWORK_MODIFICATION_URI) .content(bodyJson2) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); //create a generator GeneratorCreationInfos generatorCreationInfos = ModificationCreation.getCreationGenerator("v2", "idGenerator1", "nameGenerator1", "1B", "v2load", "LOAD", "v1"); bodyJson2 = getJsonBody(generatorCreationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform( + mockMvcResultActions = mockMvc.perform( post(NETWORK_MODIFICATION_URI) .content(bodyJson2) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testNetworkModificationsCount(TEST_GROUP_ID, 5); @@ -1168,11 +1167,11 @@ void replaceTeePointByVoltageLevelOnLineDuplicateModificationGroupTest() throws String body = getJsonBody(linesAttachToSplitLinesInfos, TEST_NETWORK_WITH_TEE_POINT_ID, null); - MvcResult mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI) + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI) .content(body) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); @@ -1202,9 +1201,9 @@ void testGroupDuplication() throws Exception { .connectionName("bottom") .build(); String loadCreationInfosJson = getJsonBody(loadCreationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - MvcResult mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(loadCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(loadCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); assertNotNull(network.getLoad("idLoad1")); // load was created testNetworkModificationsCount(TEST_GROUP_ID, 1); @@ -1234,9 +1233,9 @@ void testTombstonedEquipmentInfos() throws Exception { String equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); // delete load - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.LOAD, "v1load", "v1b1", "v1d1", "s1"); @@ -1247,9 +1246,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.LOAD); equipmentDeletionInfos.setEquipmentId("v3load"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VARIANT_NOT_EXISTING_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); Optional networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertTrue(networkModificationsResult.isPresent()); @@ -1263,9 +1262,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.SHUNT_COMPENSATOR); equipmentDeletionInfos.setEquipmentId("v2shunt"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.SHUNT_COMPENSATOR, "v2shunt", "v2bshunt", "v2dshunt", "s1"); @@ -1275,9 +1274,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.GENERATOR); equipmentDeletionInfos.setEquipmentId("idGenerator"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.GENERATOR, "idGenerator", "v2bgenerator", "v2dgenerator", "s1"); @@ -1287,9 +1286,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.LINE); equipmentDeletionInfos.setEquipmentId("line2"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testBranchDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.LINE, "line2", "v1bl2", "v1dl2", "s1", "v3bl2", "v3dl2", "s2"); @@ -1299,9 +1298,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.TWO_WINDINGS_TRANSFORMER); equipmentDeletionInfos.setEquipmentId("trf1"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testBranchDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.TWO_WINDINGS_TRANSFORMER, "trf1", "v1btrf1", "v1dtrf1", "s1", "v2btrf1", "v2dtrf1", "s1"); @@ -1311,9 +1310,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.THREE_WINDINGS_TRANSFORMER); equipmentDeletionInfos.setEquipmentId("trf6"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); test3WTDeletionImpacts(mvcResult.getResponse().getContentAsString(), "trf6", "v1btrf6", "v1dtrf6", "v2btrf6", "v2dtrf6", "v4btrf6", "v4dtrf6", "s1"); @@ -1323,9 +1322,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.STATIC_VAR_COMPENSATOR); equipmentDeletionInfos.setEquipmentId("v3Compensator"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.STATIC_VAR_COMPENSATOR, "v3Compensator", "v3bCompensator", "v3dCompensator", "s2"); @@ -1335,9 +1334,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.BATTERY); equipmentDeletionInfos.setEquipmentId("v3Battery"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.BATTERY, "v3Battery", "v3bBattery", "v3dBattery", "s2"); @@ -1347,9 +1346,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.DANGLING_LINE); equipmentDeletionInfos.setEquipmentId("v2Dangling"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.DANGLING_LINE, "v2Dangling", "v2bdangling", "v2ddangling", "s1"); @@ -1359,9 +1358,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.HVDC_LINE); equipmentDeletionInfos.setEquipmentId("hvdcLine"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); List expectedImpacts = createMultipleDeletionImpacts( @@ -1380,9 +1379,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.VOLTAGE_LEVEL); equipmentDeletionInfos.setEquipmentId("v5"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); expectedImpacts = createMultipleDeletionImpacts( @@ -1400,9 +1399,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.SUBSTATION); equipmentDeletionInfos.setEquipmentId("s3"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); expectedImpacts = createMultipleDeletionImpacts( @@ -1421,9 +1420,9 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.SUBSTATION); equipmentDeletionInfos.setEquipmentId("s2"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); expectedImpacts = new ArrayList<>(); @@ -1813,9 +1812,9 @@ void testDeleteStashedNetworkModifications() throws Exception { .equipmentId("v1load") .build(); String loadModificationInfosJson = getJsonBody(loadModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(loadModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(loadModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); List modifications = modificationRepository.getModifications(TEST_GROUP_ID, true, true); @@ -2032,18 +2031,18 @@ void testSearchModificationInfos() throws Exception { .equipmentName(AttributeModification.toAttributeModification("newSubstationName", OperationType.SET)) .build(); String substationModificationInfosJson = getJsonBody(substationModificationInfos, TEST_NETWORK_ID, null); - MvcResult mvcResult1 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(substationModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult1 = mockMvc.perform(asyncDispatch(mvcResult1)) + ResultActions mockMvcResultActions1 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(substationModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult1 = mockMvc.perform(asyncDispatch(mockMvcResultActions1.andReturn())) .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult1); // Generator Creation ID : v2 GeneratorCreationInfos generatorCreationInfos = ModificationCreation.getCreationGenerator("v2", "idGenerator1", "nameGenerator1", "1B", "v2load", "LOAD", "v1"); String generatorCreationInfosJson = getJsonBody(generatorCreationInfos, TEST_NETWORK_ID, null); - MvcResult mvcResult2 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult2 = mockMvc.perform(asyncDispatch(mvcResult2)) + ResultActions mockMvcResultActions2 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult2 = mockMvc.perform(asyncDispatch(mockMvcResultActions2.andReturn())) .andExpect(status().isOk()).andReturn(); assertNotNull(network.getGenerator("idGenerator1")); assertApplicationStatusOK(mvcResult2); @@ -2054,9 +2053,9 @@ void testSearchModificationInfos() throws Exception { .equipmentId("v5load") .build(); String equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, null); - MvcResult mvcResult3 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult3 = mockMvc.perform(asyncDispatch(mvcResult3)).andExpect(status().isOk()).andReturn(); + ResultActions mockMvcResultActions3 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult3 = mockMvc.perform(asyncDispatch(mockMvcResultActions3.andReturn())).andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult3); MvcResult mvcModificationResult; diff --git a/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java index a760795c6..1002c3ab3 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/AbstractInjectionModificationTest.java @@ -47,7 +47,7 @@ protected void assertChangeConnectionState(Injection existingEquipment, Injec ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + .andExpect(status().isOk()); // connection state has changed as expected assertThat(existingEquipment.getTerminal().isConnected()).isEqualTo(expectedState); @@ -55,7 +55,7 @@ protected void assertChangeConnectionState(Injection existingEquipment, Injec mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + .andExpect(status().isOk()); assertThat(existingEquipment.getTerminal().isConnected()).isEqualTo(expectedState); } } diff --git a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java index f891d4ea8..44982b24c 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java @@ -136,9 +136,9 @@ public void testCreate() throws Exception { ModificationInfos modificationToCreate = buildModification(); String bodyJson = getJsonBody(modificationToCreate, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(bodyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(bodyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); @@ -162,9 +162,9 @@ public void testCreateDisabledModification() throws Exception { modificationToCreate.setActivated(false); String modificationToCreateJson = getJsonBody(modificationToCreate, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); @@ -253,7 +253,7 @@ public void testCopy() throws Exception { .contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + .andExpect(status().isOk()); List modifications = networkModificationRepository .getModifications(TEST_GROUP_ID, false, true); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java index 391793f1b..5ef4b205a 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java @@ -24,6 +24,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import org.springframework.web.client.HttpStatusCodeException; import java.util.List; @@ -123,9 +124,9 @@ public void testCreate() throws Exception { ModificationInfos modificationToCreate = buildModification(); String bodyJson = getJsonBody(modificationToCreate, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(bodyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(bodyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java index fec4a0181..393505eda 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BatteryCreationInNodeBreakerTest.java @@ -17,6 +17,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.*; @@ -198,9 +199,9 @@ void testCreateWithErrors() throws Exception { batteryCreationInfos.setVoltageLevelId("v2"); batteryCreationInfos.setBusOrBusbarSectionId("1B"); batteryCreationInfosJson = getJsonBody(batteryCreationInfos, "variant_not_existing"); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(batteryCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(batteryCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(networkModificationsResult); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java index 6381be065..40e54c710 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BatteryModificationTest.java @@ -150,7 +150,7 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); BatteryModificationInfos createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -164,7 +164,7 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -179,7 +179,7 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -193,7 +193,7 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -209,7 +209,7 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (BatteryModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); assertThat(createdModification).recursivelyEquals(batteryModificationInfos); testNetworkModificationsCount(getGroupId(), 5); @@ -273,9 +273,9 @@ void testImpactsAfterActivePowerControlModifications() throws Exception { //modify only participate batteryModificationInfos.setParticipate(new AttributeModification<>(false, OperationType.SET)); modificationToCreateJson = getJsonBody(batteryModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); //check impacts resultAsString = mvcResult.getResponse().getContentAsString(); @@ -303,7 +303,7 @@ void testActivePowerZeroOrBetweenMinAndMaxActivePower() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); assertLogMessage("MODIFY_BATTERY_ERROR : Battery '" + "v3Battery" + "' : Active power " + activePower + " is expected to be equal to 0 or within the range of minimum active power and maximum active power: [" + minActivePower + ", " + maxActivePower + "]", ERROR_MESSAGE_KEY, reportService); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java index 22d20735e..202d83903 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentAttributeModificationTest.java @@ -65,18 +65,18 @@ void testEquipmentAttributeModificationInfos() throws Exception { String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, null); // switch opening - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); // switch in variant VARIANT_ID opening switchStatusModificationInfos.setEquipmentId("break1Variant"); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, NetworkCreation.VARIANT_ID); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1Variant")); } @@ -119,28 +119,27 @@ private void switchModifications(String extraParams, String switchId1, String sw // switch opening switchStatusModificationInfos.setEquipmentAttributeValue(true); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), substationsIds); // switch closing switchStatusModificationInfos.setEquipmentId(switchId2); switchStatusModificationInfos.setEquipmentAttributeValue(false); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) - .andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), substationsIds); // switch opening on another substation switchStatusModificationInfos.setEquipmentId(switchId3); switchStatusModificationInfos.setEquipmentAttributeValue(true); switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, extraParams); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()).andReturn(); + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), otherSubstationsIds); testNetworkModificationsCount(getGroupId(), modificationsCount); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java index 5262e870e..9eb84f965 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/EquipmentDeletionTest.java @@ -93,7 +93,8 @@ void testOkWhenRemovingIsolatedEquipment() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()) + .andReturn(); var v5 = getNetwork().getVoltageLevel("v5"); assertNull(v5.getNodeBreakerView().getTerminal(2)); @@ -133,9 +134,9 @@ private void deleteHvdcLineWithShuntCompensator(String shuntNameToBeRemoved, boo .build(); String equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()) .andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java index 461f58616..6b30d0f16 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java @@ -606,9 +606,9 @@ void testGenerationDispatchWithMaxValueLessThanMinP() throws Exception { .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE))).getId(); String modificationJson = getJsonBody(modification, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java index fb4ea3299..df315e5b8 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorCreationInNodeBreakerTest.java @@ -18,6 +18,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.*; @@ -240,9 +241,9 @@ void testCreateWithErrors() throws Exception { generatorCreationInfos.setBusOrBusbarSectionId("1B"); generatorCreationInfosJson = getJsonBody(generatorCreationInfos, "variant_not_existing"); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(networkModificationsResult); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java index 4c44d64ac..1162630fa 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorModificationTest.java @@ -178,7 +178,7 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); GeneratorModificationInfos createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -192,7 +192,7 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -207,7 +207,7 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -221,7 +221,7 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -239,7 +239,7 @@ void testMinMaxReactiveLimitsAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); assertThat(createdModification).recursivelyEquals(generatorModificationInfos); testNetworkModificationsCount(getGroupId(), 5); @@ -256,7 +256,7 @@ void testGeneratorShortCircuitAttributesModification() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); GeneratorModificationInfos createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -272,7 +272,7 @@ void testGeneratorShortCircuitAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -291,7 +291,7 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); GeneratorModificationInfos createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -305,7 +305,7 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -319,7 +319,7 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -337,7 +337,7 @@ void testGeneratorVoltageRegulatorAttributesModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (GeneratorModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); assertThat(createdModification).recursivelyEquals(generatorModificationInfos); @@ -448,7 +448,7 @@ void testActivePowerZeroOrBetweenMinAndMaxActivePower() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); assertLogMessage("MODIFY_GENERATOR_ERROR : Generator '" + "idGenerator" + "' : Active power " + activePower + " is expected to be equal to 0 or within the range of minimum active power and maximum active power: [" + minActivePower + ", " + maxActivePower + "]", ERROR_MESSAGE_KEY, reportService); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java index bdddc9c73..fd95fd84a 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GeneratorScalingTest.java @@ -276,11 +276,11 @@ void testScalingCreationWithWarning() throws Exception { String modificationToCreateJson = getJsonBody(generatorScalingInfo, null); - var response = mockMvc.perform(post(getNetworkModificationUri()) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()) .content(modificationToCreateJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - response = mockMvc.perform(asyncDispatch(response)) + .andExpect(request().asyncStarted()); + var response = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()) .andReturn(); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java index f66231231..aadb2ec11 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GroovyScriptTest.java @@ -15,6 +15,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.Set; import java.util.UUID; @@ -73,54 +74,54 @@ void testGroovy() throws Exception { .build(); String groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); // apply groovy script with generator target P modification - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); // apply groovy script with load type modification groovyScriptInfos.setScript("network.getLoad('v1load').loadType=com.powsybl.iidm.network.LoadType.FICTITIOUS\n"); groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); // apply groovy script with lcc converter station power factor modification groovyScriptInfos.setScript("network.getLccConverterStation('v1lcc').powerFactor=1\n"); groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); // apply groovy script with line R modification groovyScriptInfos.setScript("network.getLine('line1').r=2\n"); groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1", "s2")); // apply groovy script with two windings transformer ratio tap modification groovyScriptInfos.setScript("network.getTwoWindingsTransformer('trf1').getRatioTapChanger().tapPosition=2\n"); groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); // apply groovy script with three windings transformer phase tap modification groovyScriptInfos.setScript("network.getThreeWindingsTransformer('trf6').getLeg1().getPhaseTapChanger().tapPosition=0\n"); groovyScriptInfosJson = getJsonBody(groovyScriptInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)).andExpect(status().isOk()) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()) .andReturn(); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java index 146850fd2..ca8bd237d 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java @@ -17,6 +17,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.*; @@ -43,9 +44,9 @@ void testCreateWithBadVariant() throws Exception { modificationToCreate.setEquipmentId("idLine2"); modificationToCreate.setEquipmentName("nameLine2"); String modificationToCreateJson = getJsonBody(modificationToCreate, "variant_not_existing"); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(networkModificationsResult); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java index 7c3d8ab94..52c4f76d9 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LineModificationTest.java @@ -254,7 +254,7 @@ void testPermanentLimitUnchanged() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -273,7 +273,7 @@ void testCharacteristicsModification() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -287,7 +287,7 @@ void testCharacteristicsModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -301,7 +301,7 @@ void testCharacteristicsModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -315,7 +315,7 @@ void testCharacteristicsModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -329,7 +329,7 @@ void testCharacteristicsModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); @@ -343,7 +343,7 @@ void testCharacteristicsModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(5); @@ -375,7 +375,7 @@ void testCharacteristicsModification() throws Exception { .contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true) .get(7); @@ -435,7 +435,7 @@ void testTemporaryLimitsModification() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); LineModificationInfos createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -453,7 +453,7 @@ void testTemporaryLimitsModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (LineModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -634,9 +634,9 @@ void addConnectablePositionExtensionToLine() throws Exception { .connectionDirection1(new AttributeModification<>(ConnectablePosition.Direction.BOTTOM, OperationType.SET)) .build(); String modificationInfosJson = getJsonBody(lineModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); Optional networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertTrue(networkModificationsResult.isPresent()); @@ -652,9 +652,9 @@ void addConnectablePositionExtensionToLine() throws Exception { .connectionPosition1(new AttributeModification<>(2, OperationType.SET)) .build(); modificationInfosJson = getJsonBody(lineModificationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertTrue(networkModificationsResult.isPresent()); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java index 5f9338eee..b177acd50 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/LoadCreationInNodeBreakerTest.java @@ -20,6 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.List; import java.util.Map; @@ -90,9 +91,9 @@ void testCreateWithErrors() throws Exception { testNetworkModificationsCount(getGroupId(), 5); loadCreationInfosJson = getJsonBody(loadCreationInfos, "variant_not_existing"); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(loadCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(loadCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpectAll(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(networkModificationsResult); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java index 6e479fa40..2d3de2f87 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/StaticVarCompensatorCreationInNodeBreakerTest.java @@ -18,6 +18,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.List; import java.util.Map; @@ -212,9 +213,9 @@ void testCreateWithErrors() throws Exception { compensatorCreationInfos.setVoltageLevelId("v2"); compensatorCreationInfos.setBusOrBusbarSectionId("1B"); compensatorCreationInfosJson = getJsonBody(compensatorCreationInfos, "variant_not_existing"); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(compensatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java index ff2fb9fe3..c3bc5a874 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java @@ -17,6 +17,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.List; import java.util.Map; @@ -424,9 +425,9 @@ private void testCreateTwoWindingsTransformerInBusBreaker(TwoWindingsTransformer final String transformerId = twoWindingsTransformerCreationInfos.getEquipmentId(); String twoWindingsTransformerCreationInfosJson = getJsonBody(twoWindingsTransformerCreationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); testBranchCreationImpacts(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); assertNotNull(getNetwork().getTwoWindingsTransformer(transformerId)); // transformer was created diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java index 57b35defa..540237035 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java @@ -20,6 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.List; import java.util.Map; @@ -541,9 +542,9 @@ void testCreateWithErrors() throws Exception { twoWindingsTransformerCreationInfos.setEquipmentId("id2wt3"); twoWindingsTransformerCreationInfos.setEquipmentName("name2wt3"); twoWindingsTransformerCreationInfosJson = getJsonBody(twoWindingsTransformerCreationInfos, "variant_not_existing"); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(networkModificationsResult); @@ -568,9 +569,9 @@ private void testCreateTwoWindingsTransformerInNodeBreaker(TwoWindingsTransforme final String transformerId = twoWindingsTransformerCreationInfos.getEquipmentId(); String twoWindingsTransformerCreationInfosJson = getJsonBody(twoWindingsTransformerCreationInfos, null); - mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(twoWindingsTransformerCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); TwoWindingsTransformer twoWindingsTransformer = getNetwork().getTwoWindingsTransformer(transformerId); assertNotNull(twoWindingsTransformer); // transformer was created diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java index a90db09c9..7c4c2080f 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java @@ -341,7 +341,7 @@ void testRatioTapChangerModification() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); TwoWindingsTransformerModificationInfos createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -360,7 +360,7 @@ void testRatioTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -376,7 +376,7 @@ void testRatioTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -406,7 +406,7 @@ void testRatioTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); @@ -437,7 +437,7 @@ void testRatioTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(5); @@ -451,7 +451,7 @@ void testRatioTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(6); @@ -479,7 +479,7 @@ void testPhaseTapChangerModification() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); TwoWindingsTransformerModificationInfos createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -494,7 +494,7 @@ void testPhaseTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -509,7 +509,7 @@ void testPhaseTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -524,7 +524,7 @@ void testPhaseTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -539,7 +539,7 @@ void testPhaseTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); @@ -571,7 +571,7 @@ void testPhaseTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(5); @@ -587,7 +587,7 @@ void testPhaseTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(6); @@ -602,7 +602,7 @@ void testPhaseTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(7); @@ -615,8 +615,7 @@ void testPhaseTapChangerModification() throws Exception { mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(8); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java index 0922bcd7b..85f0f5653 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelModificationTest.java @@ -250,7 +250,7 @@ private void applyModification(VoltageLevelModificationInfos infos) throws Excep .contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); } @Override diff --git a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java index 16300f165..082c649fc 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/VoltageLevelTopologyModificationTest.java @@ -161,8 +161,7 @@ void testInvalidVoltageLevel() throws Exception { .content(body) .contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); } @Test @@ -206,8 +205,7 @@ void testNonExistentSwitch() throws Exception { .content(body) .contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); } @Override diff --git a/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java b/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java index 97a77875a..76b9f1d0c 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java @@ -33,6 +33,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.*; import java.util.stream.Collectors; @@ -192,9 +193,9 @@ protected void checkCreationApplicationStatus(List> String bodyJson = getJsonBody(modificationByAssignmentInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(bodyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(bodyJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/byfilter/formula/AbstractByFormulaModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/byfilter/formula/AbstractByFormulaModificationTest.java index 781523066..6ea3c95ba 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/byfilter/formula/AbstractByFormulaModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/byfilter/formula/AbstractByFormulaModificationTest.java @@ -32,6 +32,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.*; import java.util.stream.Collectors; @@ -200,9 +201,9 @@ protected void checkCreationApplicationStatus(ByFormulaModificationInfos byFormu NetworkModificationResult.ApplicationStatus applicationStatus) throws Exception { String modificationToCreateJson = getJsonBody(byFormulaModificationInfos, null); - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); Optional networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java b/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java index fd13365b0..4995538c9 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java @@ -132,7 +132,7 @@ void testCreateAllFiltersWrong() throws Exception { ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + .andExpect(status().isOk()); assertLogMessage(byFilterDeletionInfos.getErrorType().name() + ": There is no valid equipment ID among the provided filter(s)", "network.modification.invalidFilters", reportService); wireMockUtils.verifyGetRequest(stubId, PATH, handleQueryParams(filters.stream().map(AbstractFilter::getId).collect(Collectors.toList())), false); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java index d636968a4..df333d720 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java @@ -261,7 +261,7 @@ void testAllModificationsHaveSucceeded() throws Exception { .contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); assertLogMessage("Tabular creation: 2 generators have been created", "network.modification.tabular.creation", reportService); } @@ -308,11 +308,11 @@ void testAllModificationsHaveFailed() throws Exception { .build(); String tabularCreationJson = getJsonBody(creationInfos, null); - org.springframework.test.web.servlet.ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) .contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); assertLogMessage("Tabular creation: No generators have been created", "network.modification.tabular.creation.error", reportService); } @@ -348,10 +348,10 @@ void testUnsupportedTabularCreationType() throws Exception { String tabularCreationJson = getJsonBody(creationInfos, null); // creation - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(tabularCreationJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult result = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(result); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java index 42796679c..a4208f586 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java @@ -567,7 +567,7 @@ void testAllModificationsHaveFailed() throws Exception { .contentType(MediaType.APPLICATION_JSON)) .andExpect(request().asyncStarted()); mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + .andExpect(status().isOk()).andReturn(); assertLogMessage("Tabular modification: No generators have been modified", "network.modification.tabular.modification.error", reportService); } @@ -601,10 +601,10 @@ void testUnsupportedTabularModificationType() throws Exception { String tabularModificationJson = getJsonBody(tabularInfos, null); // creation - MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(tabularModificationJson) + ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(tabularModificationJson) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpect(status().isOk()).andReturn(); NetworkModificationsResult result = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertNotNull(result); diff --git a/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java b/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java index dcb828f31..303145416 100644 --- a/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java +++ b/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java @@ -16,6 +16,7 @@ import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.ResultActions; import java.util.*; @@ -58,15 +59,15 @@ public static void postGroups(MockMvc mockMvc, UUID originGroupUuid, UUID target public static Optional putGroupsDuplications(MockMvc mockMvc, UUID originGroupUuid, UUID targetGroupUuid, UUID networkUuid) throws Exception { ModificationApplicationContext applicationContext = new ModificationApplicationContext(networkUuid, UUID.randomUUID().toString(), UUID.randomUUID(), UUID.randomUUID(), Set.of()); String bodyJson = getObjectMapper().writeValueAsString(org.springframework.data.util.Pair.of(List.of(), List.of(applicationContext))); - MvcResult mvcResult = mockMvc.perform( + ResultActions mockMvcResultActions = mockMvc.perform( put("/v1/groups/{groupUuid}", targetGroupUuid) .param("action", "COPY") .param("originGroupUuid", originGroupUuid.toString()) .content(bodyJson) .contentType(MediaType.APPLICATION_JSON) ) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpectAll(status().isOk()) .andReturn(); NetworkModificationsResult result = getObjectMapper().readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); @@ -77,14 +78,14 @@ public static NetworkModificationsResult putGroupsWithCopy(MockMvc mockMvc, UUID ModificationApplicationContext applicationContext = new ModificationApplicationContext(networkUuid, UUID.randomUUID().toString(), UUID.randomUUID(), UUID.randomUUID(), Set.of()); String body = getObjectMapper().writeValueAsString(org.springframework.data.util.Pair.of(modificationUuids, List.of(applicationContext))); - MvcResult mvcResult = mockMvc.perform( + ResultActions mockMvcResultActions = mockMvc.perform( put("/v1/groups/{groupUuid}", targetGroupUuid) .param("action", "COPY") .contentType("application/json") .content(body) ) - .andExpect(request().asyncStarted()).andReturn(); - mvcResult = mockMvc.perform(asyncDispatch(mvcResult)) + .andExpect(request().asyncStarted()); + MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) .andExpectAll(status().isOk()) .andReturn(); return getObjectMapper().readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); From 10abce43f6730c0dde0b231b3154833db3c3650a Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Tue, 14 Oct 2025 10:42:39 +0200 Subject: [PATCH 09/14] Cleaner modificationapplication contextx schedule implementation --- .../service/NetworkModificationService.java | 59 ++++++++++++------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java index 5cfe610ae..8dab0895e 100644 --- a/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java +++ b/src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java @@ -203,30 +203,47 @@ public CompletableFuture createNetworkModification(@ * Apply modifications on several networks */ private CompletableFuture>> applyModifications(UUID groupUuid, List modifications, List applicationContexts) { - // Do we want to do these in parallel (CompletableFuture.allOf) or sequential (sometimes called "Waterfall") ? + // Do we want to do these all in parallel (CompletableFuture.allOf) or sequentially (like in Flux.concatMap) or something in between ? // sequentially like before for now - // Is there a library or something to simplify this code ? - List> results = new ArrayList<>(applicationContexts.size()); - CompletableFuture>> chainedFutures = CompletableFuture.completedFuture(results); - for (ModificationApplicationContext modificationApplicationContext : applicationContexts) { - // thencompose, this should add the computation result to the list and - // and schedule the next computation in the same thread as the task - // The list is accessed from different threads but not concurrently and - // with happens-before semantics. - chainedFutures = chainedFutures.thenCompose(accumulatingresults -> + List>> results = new ArrayList<>(applicationContexts.size()); + return scheduleApplyModifications( + modificationApplicationContext -> applyModifications( - modificationApplicationContext.networkUuid(), - modificationApplicationContext.variantId(), - new ModificationApplicationGroup(groupUuid, - modifications.stream().filter(m -> !modificationApplicationContext.excludedModifications().contains(m.getId())).toList(), - new ReportInfos(modificationApplicationContext.reportUuid(), modificationApplicationContext.reporterId()) - )).thenApply(result -> { - accumulatingresults.add(result); - return accumulatingresults; - }) - ); + modificationApplicationContext.networkUuid(), + modificationApplicationContext.variantId(), + new ModificationApplicationGroup(groupUuid, + modifications.stream().filter(m -> !modificationApplicationContext.excludedModifications().contains(m.getId())).toList(), + new ReportInfos(modificationApplicationContext.reportUuid(), modificationApplicationContext.reporterId()) + ) + ), + applicationContexts, results + ).thenApply(unused -> + results.stream().map(CompletableFuture::resultNow).toList()); + } + + /** + * @param results should pass an empty list to be filled with the results + */ + // The signature of this method is chosen so that we can implement easily sequential or parallel schedule + // If we change it (for example to parallel scheduling), we should keep the exceptional behavior consistent, + // call the apply function inside a thenCompose anyway to wrap its exceptions in exceptional future completions. + private static CompletableFuture scheduleApplyModifications( + Function>> func, + List applicationContexts, + List>> results) { + CompletableFuture chainedFutures = CompletableFuture.completedFuture(null); + for (ModificationApplicationContext applicationContext : applicationContexts) { + chainedFutures = chainedFutures.thenCompose(unused -> { + var cf = func.apply(applicationContext); + // thencompose, this should add the computation result to the list and + // and schedule the next computation in the same thread as the task + // The list is accessed from different threads but not concurrently and + // with happens-before semantics. + results.add(cf); + return cf; + }); } - return chainedFutures; + return chainedFutures.thenCompose(unused -> CompletableFuture.completedFuture(null)); } public Network cloneNetworkVariant(UUID networkUuid, From 802cda87d30d7f94e0a83bee90553adce879eb5e Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Wed, 15 Oct 2025 10:12:49 +0200 Subject: [PATCH 10/14] Apply same fix as f2745ae48 after merge --- .../modification/server/service/ModificationIndexationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java index 2c418dd0a..1efeba283 100644 --- a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java @@ -325,7 +325,7 @@ void testInsertCompositeModifications() { assertThat(modificationApplicationInfos.stream().map(ModificationApplicationInfos::getModificationUuid).toList()).usingRecursiveComparison().isEqualTo(expectedModificationUuids); assertThat(modificationApplicationInfos.stream().map(ModificationApplicationInfos::getGroupUuid).toList()).usingRecursiveComparison().isEqualTo(expectedGroupUuids); - modificationApplicationInfos.forEach(applicationInfo -> assertEquals(newEquipmentId, applicationInfo.getCreatedEquipmentIds().iterator().next())); + modificationApplicationInfos.forEach(applicationInfo -> assertTrue(applicationInfo.getCreatedEquipmentIds().contains(newEquipmentId))); } @Test From 733119441f0142f6225a6d14a4d484c1461e329c Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Wed, 24 Sep 2025 12:32:38 +0200 Subject: [PATCH 11/14] Modification flush: use the same thread as for apply (bounded thread pool for large modifications) --- .../NetworkModificationApplicator.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java b/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java index 3d9a06003..c1e63538f 100644 --- a/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java +++ b/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java @@ -106,15 +106,18 @@ public NetworkModificationResult applyModifications(ModificationApplicationGroup .orElse(PreloadingStrategy.NONE); NetworkStoreListener listener = NetworkStoreListener.create(networkInfos.getNetwork(), networkInfos.getNetworkUuuid(), networkStoreService, equipmentInfosService, applicationInfosService, collectionThreshold); - ApplicationStatus groupApplicationStatus; if (preloadingStrategy == PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW) { - groupApplicationStatus = largeNetworkModificationExecutionService - .supplyAsync(() -> apply(modificationInfosGroup, listener)) + return largeNetworkModificationExecutionService + .supplyAsync(() -> applyAndFlush(modificationInfosGroup, listener)) .join(); } else { - groupApplicationStatus = apply(modificationInfosGroup, listener); + return applyAndFlush(modificationInfosGroup, listener); } + } + private NetworkModificationResult applyAndFlush(ModificationApplicationGroup modificationInfosGroup, + NetworkStoreListener listener) { + ApplicationStatus groupApplicationStatus = apply(modificationInfosGroup, listener); return flushModificationApplications(groupApplicationStatus, listener); } @@ -147,15 +150,18 @@ public NetworkModificationResult applyModifications(List groupsApplicationStatuses; if (preloadingStrategy == PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW) { - groupsApplicationStatuses = largeNetworkModificationExecutionService - .supplyAsync(() -> apply(modificationInfosGroups, listener)) + return largeNetworkModificationExecutionService + .supplyAsync(() -> applyAndFlush(modificationInfosGroups, listener)) .join(); } else { - groupsApplicationStatuses = apply(modificationInfosGroups, listener); + return applyAndFlush(modificationInfosGroups, listener); } + } + private NetworkModificationResult applyAndFlush(List modificationInfosGroups, + NetworkStoreListener listener) { + List groupsApplicationStatuses = apply(modificationInfosGroups, listener); return flushModificationApplications(groupsApplicationStatuses, listener); } From 7d5828e92943467dc87e490ad9cf00bf437189c4 Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Wed, 15 Oct 2025 10:48:54 +0200 Subject: [PATCH 12/14] Review remove variable --- .../server/modifications/NetworkModificationApplicator.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java b/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java index c1e63538f..537340d41 100644 --- a/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java +++ b/src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java @@ -117,8 +117,7 @@ public NetworkModificationResult applyModifications(ModificationApplicationGroup private NetworkModificationResult applyAndFlush(ModificationApplicationGroup modificationInfosGroup, NetworkStoreListener listener) { - ApplicationStatus groupApplicationStatus = apply(modificationInfosGroup, listener); - return flushModificationApplications(groupApplicationStatus, listener); + return flushModificationApplications(apply(modificationInfosGroup, listener), listener); } private NetworkModificationResult flushModificationApplications(ApplicationStatus groupApplicationStatus, NetworkStoreListener listener) { From c8bb81eda13ff79c1fd9018b9cc40093bd65aea1 Mon Sep 17 00:00:00 2001 From: HARPER Jon Date: Wed, 15 Oct 2025 11:02:15 +0200 Subject: [PATCH 13/14] Fix tests after merge --- .../server/service/ModificationIndexationTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java index dc6235f56..09ad9b128 100644 --- a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java @@ -505,7 +505,7 @@ void testUpdateModificationProperties() { UUID groupUuid = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid, List.of(ModificationEntity.fromDTO(loadModificationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); assertNotNull(result); ModificationApplicationEntity modificationApplicationEntity = modificationApplicationRepository.findAll().getFirst(); @@ -540,7 +540,7 @@ void testUpdateModificationPropertiesWithNotIndexedEquipment() { UUID groupUuid = UUID.randomUUID(); List entities = modificationRepository.saveModifications(groupUuid, List.of(ModificationEntity.fromDTO(substationModificationInfos))); - NetworkModificationResult result = networkModificationApplicator.applyModifications(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); + NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(new ModificationApplicationGroup(groupUuid, entities, reportInfos), networkInfos); assertNotNull(result); assertEquals(1, modificationRepository.getModifications(groupUuid, true, true).size()); From 1b3984d5e54fef8bde94573d8567c47836a8042a Mon Sep 17 00:00:00 2001 From: Slimane AMAR Date: Wed, 15 Oct 2025 17:14:26 +0200 Subject: [PATCH 14/14] Add a util method to make an http async request in the tests --- .../NetworkModificationRepository.java | 5 - .../server/ModificationControllerTest.java | 305 ++++-------------- .../modifications/GenerationDispatchTest.java | 18 +- ...woWindingsTransformerModificationTest.java | 154 ++------- .../modification/server/utils/TestUtils.java | 10 + 5 files changed, 97 insertions(+), 395 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java index 39f2ce3ba..cb4fbfad8 100644 --- a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java +++ b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java @@ -549,11 +549,6 @@ public Integer getModificationsCount(@NonNull UUID groupUuid, boolean stashed) { return modificationRepository.countByGroupIdAndStashed(groupUuid, stashed); } - @Transactional(readOnly = true) - public List getModificationsInfos(@NonNull List uuids) { - return getModificationsInfosNonTransactional(uuids); - } - private List getModificationsInfosNonTransactional(List uuids) { // Spring-data findAllById doc says: the order of elements in the result is not guaranteed Map entities = modificationRepository.findAllById(uuids) diff --git a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java index 6e0046d59..e5d596df0 100644 --- a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java +++ b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java @@ -57,7 +57,6 @@ import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; -import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; import java.io.IOException; @@ -74,13 +73,15 @@ import static org.gridsuite.modification.server.impacts.TestImpactUtils.*; import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; +import static org.gridsuite.modification.server.utils.TestUtils.runRequestAsync; import static org.gridsuite.modification.server.utils.assertions.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** * @author Franck Lecuyer @@ -219,15 +220,10 @@ void testEquipmentIdNonNull() { @Test void testNetworkNotFound() throws Exception { String body = getJsonBody(LoadCreationInfos.builder().equipmentId("id").build(), NOT_FOUND_NETWORK_ID, NetworkCreation.VARIANT_ID); - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI) - .content(body) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpectAll( - status().isNotFound(), - content().string(new NetworkModificationException(NETWORK_NOT_FOUND, NOT_FOUND_NETWORK_ID.toString()).getMessage()) - ); + MvcResult mvcResult = runRequestAsync(mockMvc, + post(NETWORK_MODIFICATION_URI).content(body).contentType(MediaType.APPLICATION_JSON), + status().isNotFound()); + assertEquals(new NetworkModificationException(NETWORK_NOT_FOUND, NOT_FOUND_NETWORK_ID.toString()).getMessage(), mvcResult.getResponse().getContentAsString()); } @Test @@ -257,9 +253,7 @@ void testModificationGroups() throws Exception { resultAsString = mvcResult.getResponse().getContentAsString(); List bsicListResult = mapper.readValue(resultAsString, new TypeReference<>() { }); assertEquals(bsicListResult, List.of()); - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -312,10 +306,7 @@ void testRestoreNetworkModifications() throws Exception { .stashed(true) .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -342,10 +333,7 @@ void testStashNetworkModifications() throws Exception { .stashed(true) .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -372,10 +360,7 @@ void testDisableNetworkModifications() throws Exception { .activated(true) .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -402,9 +387,7 @@ void testDeleteModification() throws Exception { .equipmentId("v1b1") .build(); String switchStatusModificationInfosJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(switchStatusModificationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testElementModificationImpact(mapper, mvcResult.getResponse().getContentAsString(), Set.of("s1")); @@ -460,10 +443,7 @@ void testNetworkModificationsWithErrorOnNetworkFlush() throws Exception { .script("network.getGenerator('idGenerator').targetP=10\nnetwork.getGenerator('idGenerator').targetP=20\n") .build(); String groovyScriptInfosJson = getJsonBody(groovyScriptInfos, TEST_NETWORK_WITH_FLUSH_ERROR_ID, NetworkCreation.VARIANT_ID); - - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().is5xxServerError()).andReturn(); + runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON), status().is5xxServerError()); assertEquals(1, modificationRepository.getModifications(TEST_GROUP_ID, true, false).size()); } @@ -475,10 +455,7 @@ void testMultipleModificationsWithError() throws Exception { .build(); String groovyScriptInfosJson = getJsonBody(groovyScriptInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); // apply groovy script without error - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + MvcResult mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(groovyScriptInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); assertEquals(1, modificationRepository.getModifications(TEST_GROUP_ID, true, true).size()); @@ -506,11 +483,7 @@ private List createSomeSwitchModifications(UUID groupId, int for (int i = 0; i < number; i++) { switchStatusModificationInfos.setEquipmentAttributeValue(openStates.get(i % 2)); String bodyJson = getJsonBody(switchStatusModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - ResultActions mockMvcResultActions = mockMvc.perform(post(URI_NETWORK_MODIF_BASE + "?groupUuid=" + groupId) - .content(bodyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(URI_NETWORK_MODIF_BASE + "?groupUuid=" + groupId).content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); } var modificationList = modificationRepository.getModifications(groupId, false, true); @@ -524,11 +497,7 @@ private ModificationInfos createDeletionModification(UUID groupId, IdentifiableT .equipmentId(equipmentName) .build(); String bodyJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - ResultActions mockMvcResultActions = mockMvc.perform(post(URI_NETWORK_MODIF_BASE + "?groupUuid=" + groupId) - .content(bodyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + MvcResult mvcResult = runRequestAsync(mockMvc, post(URI_NETWORK_MODIF_BASE + "?groupUuid=" + groupId).content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); var modificationList = modificationRepository.getModifications(groupId, true, true); @@ -547,13 +516,7 @@ void testCopyModification() throws Exception { List badModificationUuidList = List.of(UUID.randomUUID(), UUID.randomUUID()); duplicateModificationUuidList.addAll(badModificationUuidList); String bodyJson = getJsonBody(duplicateModificationUuidList, NetworkCreation.VARIANT_ID); - ResultActions mockMvcResultActions = mockMvc.perform( - put("/v1/groups/" + TEST_GROUP_ID + "?action=COPY") - .content(bodyJson) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + MvcResult mvcResult = runRequestAsync(mockMvc, put("/v1/groups/" + TEST_GROUP_ID + "?action=COPY").content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); var newModificationList = modificationRepository.getModifications(TEST_GROUP_ID, false, true); @@ -582,13 +545,7 @@ void testCopyModification() throws Exception { // Duplicate the same modifications, and append them at the end of this new group modification list. duplicateModificationUuidList = new ArrayList<>(modificationUuidList.subList(0, 2)); bodyJson = getJsonBody(duplicateModificationUuidList, NetworkCreation.VARIANT_ID); - mockMvcResultActions = mockMvc.perform( - put("/v1/groups/" + otherGroupId + "?action=COPY") - .content(bodyJson) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, put("/v1/groups/" + otherGroupId + "?action=COPY").content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); var newModificationListOtherGroup = modificationRepository.getModifications(otherGroupId, false, true); @@ -602,13 +559,7 @@ void testCopyModification() throws Exception { // Duplicate all modifications in TEST_GROUP_ID, and append them at the end of otherGroupId bodyJson = getJsonBody(List.of(), NetworkCreation.VARIANT_ID); - mockMvcResultActions = mockMvc.perform( - put("/v1/groups/" + otherGroupId + "?action=COPY" + "&originGroupUuid=" + TEST_GROUP_ID) - .content(bodyJson) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, put("/v1/groups/" + otherGroupId + "?action=COPY" + "&originGroupUuid=" + TEST_GROUP_ID).content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); newModificationListOtherGroup = modificationRepository.getModifications(otherGroupId, true, true); @@ -647,14 +598,7 @@ void testCopyModificationOld() throws Exception { duplicateModificationUuidList.addAll(badModificationUuidList); String bodyJson = getJsonBody(duplicateModificationUuidList, NetworkCreation.VARIANT_ID); String url = "/v1/groups/" + TEST_GROUP_ID + "?action=COPY"; - MvcResult mvcResult; - ResultActions mockMvcResultActions = mockMvc.perform( - put(url) - .content(bodyJson) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + MvcResult mvcResult = runRequestAsync(mockMvc, put(url).content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); var newModificationList = modificationRepository.getModifications(TEST_GROUP_ID, false, true); @@ -685,13 +629,7 @@ void testCopyModificationOld() throws Exception { duplicateModificationUuidList = new ArrayList<>(modificationUuidList.subList(0, 2)); String copyUrl = "/v1/groups/" + otherGroupId + "?action=COPY"; bodyJson = getJsonBody(duplicateModificationUuidList, NetworkCreation.VARIANT_ID); - mockMvcResultActions = mockMvc.perform( - put(copyUrl) - .content(bodyJson) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, put(copyUrl).content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); var newModificationListOtherGroup = modificationRepository.getModifications(otherGroupId, false, true); @@ -705,13 +643,7 @@ void testCopyModificationOld() throws Exception { // Duplicate all modifications in TEST_GROUP_ID, and append them at the end of otherGroupId String bodyJson2 = getJsonBody(List.of(), NetworkCreation.VARIANT_ID); - mockMvcResultActions = mockMvc.perform( - put("/v1/groups/" + otherGroupId + "?action=COPY" + "&originGroupUuid=" + TEST_GROUP_ID) - .content(bodyJson2) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, put("/v1/groups/" + otherGroupId + "?action=COPY" + "&originGroupUuid=" + TEST_GROUP_ID).content(bodyJson2).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); newModificationListOtherGroup = modificationRepository.getModifications(otherGroupId, true, true); @@ -750,11 +682,7 @@ void createGeneratorWithStartup() throws Exception { // create and build generator without startup GeneratorCreationInfos generatorCreationInfos = ModificationCreation.getCreationGenerator("v2", "idGenerator1", "nameGenerator1", "1B", "v2load", "LOAD", "v1"); String generatorCreationInfosJson = getJsonBody(generatorCreationInfos, TEST_NETWORK_ID, null); - MvcResult mvcResult; - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + MvcResult mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); GeneratorStartup generatorStartup = network.getGenerator("idGenerator1").getExtension(GeneratorStartup.class); @@ -763,11 +691,7 @@ void createGeneratorWithStartup() throws Exception { // same for bus breaker GeneratorCreationInfos generatorCreationInfosBusBreaker = ModificationCreation.getCreationGenerator("v1", "idGenerator2", "nameGenerator2", "bus1", "idGenerator1", "GENERATOR", "v1"); generatorCreationInfosJson = getJsonBody(generatorCreationInfosBusBreaker, TEST_NETWORK_BUS_BREAKER_ID, null); - - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); generatorStartup = networkStoreService.getNetwork(TEST_NETWORK_BUS_BREAKER_ID, null).getGenerator("idGenerator2").getExtension(GeneratorStartup.class); @@ -777,11 +701,8 @@ void createGeneratorWithStartup() throws Exception { generatorCreationInfos.setEquipmentId("idGenerator21"); generatorCreationInfos.setMarginalCost(8.); generatorCreationInfosJson = getJsonBody(generatorCreationInfos, TEST_NETWORK_ID, null); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); assertApplicationStatusOK(mvcResult); generatorStartup = network.getGenerator("idGenerator21").getExtension(GeneratorStartup.class); assertNotNull(generatorStartup); @@ -794,10 +715,8 @@ void createGeneratorWithStartup() throws Exception { generatorCreationInfosBusBreaker.setEquipmentId("idGenerator3"); generatorCreationInfosBusBreaker.setPlannedOutageRate(80.); generatorCreationInfosJson = getJsonBody(generatorCreationInfosBusBreaker, TEST_NETWORK_BUS_BREAKER_ID, null); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); + assertApplicationStatusOK(mvcResult); generatorStartup = networkStoreService.getNetwork(TEST_NETWORK_BUS_BREAKER_ID, null).getGenerator("idGenerator3").getExtension(GeneratorStartup.class); assertNotNull(generatorStartup); @@ -876,13 +795,8 @@ void testNetworkCompositeModification() throws Exception { // Insert the composite modification in the group String bodyJson = getJsonBody(List.of(compositeModificationUuid), NetworkCreation.VARIANT_ID); - ResultActions mockMvcResultActions = mockMvc.perform( - put("/v1/groups/" + TEST_GROUP_ID + "?action=INSERT") - .content(bodyJson) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, put("/v1/groups/" + TEST_GROUP_ID + "?action=INSERT").content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); + assertApplicationStatusOK(mvcResult); List newModificationList = modificationRepository.getModifications(TEST_GROUP_ID, false, true); @@ -938,13 +852,8 @@ void testNetworkCompositeModificationOld() throws Exception { assertEquals("v1b1", ((EquipmentAttributeModificationInfos) compositeModificationContent.get(0)).getEquipmentId()); String bodyJson = getJsonBody(List.of(compositeModificationUuid), NetworkCreation.VARIANT_ID); // Insert the composite modification in the group - ResultActions mockMvcResultActions = mockMvc.perform( - put("/v1/groups/" + TEST_GROUP_ID + "?action=INSERT") - .content(bodyJson) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, put("/v1/groups/" + TEST_GROUP_ID + "?action=INSERT").content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); + assertApplicationStatusOK(mvcResult); List newModificationList = modificationRepository.getModifications(TEST_GROUP_ID, false, true); @@ -973,12 +882,7 @@ void testMoveModificationBetweenTwoGroups() throws Exception { List movingModificationUuidList = List.of(originSingleModification); String bodyJson = getJsonBody(movingModificationUuidList, NetworkCreation.VARIANT_ID); String url = "/v1/groups/" + TEST_GROUP_ID + "?action=MOVE" + "&originGroupUuid=" + TEST_GROUP2_ID + "&build=true"; - ResultActions mockMvcResultActions = mockMvc.perform(put(url).content(bodyJson) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()) - .andReturn(); + MvcResult mvcResult = runRequestAsync(mockMvc, put(url).content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); // incremental build: deletion impacts expected, all related to the moved load deletion (dealing with "s1" substation) NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); @@ -1034,14 +938,7 @@ void testDuplicateModificationGroup() throws Exception { MvcResult mvcResult; VoltageLevelCreationInfos vl1 = ModificationCreation.getCreationVoltageLevel("s1", "vl1Id", "vl1Name"); String bodyJson = getJsonBody(vl1, TEST_NETWORK_BUS_BREAKER_ID, null); - ResultActions mockMvcResultActions = mockMvc.perform( - post(NETWORK_MODIFICATION_URI) - .content(bodyJson) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()) - .andReturn().getResponse().getContentAsString(); + runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); // create new line in voltage levels with node/breaker topology // between voltage level "v1" and busbar section "bus1" and @@ -1072,14 +969,7 @@ void testDuplicateModificationGroup() throws Exception { .build(); bodyJson = getJsonBody(lineCreationInfos, TEST_NETWORK_BUS_BREAKER_ID, null); - mockMvcResultActions = mockMvc.perform( - post(NETWORK_MODIFICATION_URI) - .content(bodyJson) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()) - .andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(bodyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); String resultAsString = mvcResult.getResponse().getContentAsString(); testBranchCreationImpacts(mapper, resultAsString, Set.of("s1", "s2")); @@ -1097,13 +987,7 @@ void testDuplicateModificationGroup() throws Exception { 10.0, "AttPointId", "attPointName", null, "v4", "1.A", attachmentLine, "nl1", "NewLine1", "nl2", "NewLine2"); String bodyJson2 = getJsonBody(lineAttachToVL, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mockMvcResultActions = mockMvc.perform( - post(NETWORK_MODIFICATION_URI) - .content(bodyJson2) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(bodyJson2).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testNetworkModificationsCount(TEST_GROUP_ID, 3); @@ -1112,24 +996,12 @@ void testDuplicateModificationGroup() throws Exception { LineSplitWithVoltageLevelInfos lineSplitWoVL = new LineSplitWithVoltageLevelInfos("line1", 10.0, null, "v4", "1.A", "nl11", "NewLine11", "nl12", "NewLine12"); bodyJson2 = getJsonBody(lineSplitWoVL, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mockMvcResultActions = mockMvc.perform( - post(NETWORK_MODIFICATION_URI) - .content(bodyJson2) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(bodyJson2).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); //create a generator GeneratorCreationInfos generatorCreationInfos = ModificationCreation.getCreationGenerator("v2", "idGenerator1", "nameGenerator1", "1B", "v2load", "LOAD", "v1"); bodyJson2 = getJsonBody(generatorCreationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - mockMvcResultActions = mockMvc.perform( - post(NETWORK_MODIFICATION_URI) - .content(bodyJson2) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(bodyJson2).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testNetworkModificationsCount(TEST_GROUP_ID, 5); @@ -1166,13 +1038,7 @@ void replaceTeePointByVoltageLevelOnLineDuplicateModificationGroupTest() throws LinesAttachToSplitLinesInfos linesAttachToSplitLinesInfos = new LinesAttachToSplitLinesInfos("l1", "l2", "l3", "v4", "bbs4", "nl1", "NewLine1", "nl2", "NewLine2"); String body = getJsonBody(linesAttachToSplitLinesInfos, TEST_NETWORK_WITH_TEE_POINT_ID, null); - - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI) - .content(body) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + MvcResult mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(body).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testNetworkModificationsCount(TEST_GROUP_ID, 1); @@ -1201,9 +1067,7 @@ void testGroupDuplication() throws Exception { .connectionName("bottom") .build(); String loadCreationInfosJson = getJsonBody(loadCreationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(loadCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); + MvcResult mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(loadCreationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); assertNotNull(network.getLoad("idLoad1")); // load was created testNetworkModificationsCount(TEST_GROUP_ID, 1); @@ -1233,11 +1097,9 @@ void testTombstonedEquipmentInfos() throws Exception { String equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); // delete load - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); + testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.LOAD, "v1load", "v1b1", "v1d1", "s1"); testNetworkModificationsCount(TEST_GROUP_ID, 1); @@ -1246,10 +1108,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.LOAD); equipmentDeletionInfos.setEquipmentId("v3load"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VARIANT_NOT_EXISTING_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); Optional networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertTrue(networkModificationsResult.isPresent()); assertFalse(networkModificationsResult.get().modificationResults().isEmpty()); @@ -1262,10 +1121,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.SHUNT_COMPENSATOR); equipmentDeletionInfos.setEquipmentId("v2shunt"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.SHUNT_COMPENSATOR, "v2shunt", "v2bshunt", "v2dshunt", "s1"); testNetworkModificationsCount(TEST_GROUP_ID, 3); @@ -1274,10 +1130,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.GENERATOR); equipmentDeletionInfos.setEquipmentId("idGenerator"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.GENERATOR, "idGenerator", "v2bgenerator", "v2dgenerator", "s1"); testNetworkModificationsCount(TEST_GROUP_ID, 4); @@ -1286,10 +1139,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.LINE); equipmentDeletionInfos.setEquipmentId("line2"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testBranchDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.LINE, "line2", "v1bl2", "v1dl2", "s1", "v3bl2", "v3dl2", "s2"); testNetworkModificationsCount(TEST_GROUP_ID, 5); @@ -1298,10 +1148,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.TWO_WINDINGS_TRANSFORMER); equipmentDeletionInfos.setEquipmentId("trf1"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testBranchDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.TWO_WINDINGS_TRANSFORMER, "trf1", "v1btrf1", "v1dtrf1", "s1", "v2btrf1", "v2dtrf1", "s1"); testNetworkModificationsCount(TEST_GROUP_ID, 6); @@ -1310,10 +1157,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.THREE_WINDINGS_TRANSFORMER); equipmentDeletionInfos.setEquipmentId("trf6"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); test3WTDeletionImpacts(mvcResult.getResponse().getContentAsString(), "trf6", "v1btrf6", "v1dtrf6", "v2btrf6", "v2dtrf6", "v4btrf6", "v4dtrf6", "s1"); testNetworkModificationsCount(TEST_GROUP_ID, 7); @@ -1322,10 +1166,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.STATIC_VAR_COMPENSATOR); equipmentDeletionInfos.setEquipmentId("v3Compensator"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.STATIC_VAR_COMPENSATOR, "v3Compensator", "v3bCompensator", "v3dCompensator", "s2"); testNetworkModificationsCount(TEST_GROUP_ID, 8); @@ -1334,10 +1175,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.BATTERY); equipmentDeletionInfos.setEquipmentId("v3Battery"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.BATTERY, "v3Battery", "v3bBattery", "v3dBattery", "s2"); testNetworkModificationsCount(TEST_GROUP_ID, 9); @@ -1346,10 +1184,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.DANGLING_LINE); equipmentDeletionInfos.setEquipmentId("v2Dangling"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); testConnectableDeletionImpacts(mvcResult.getResponse().getContentAsString(), IdentifiableType.DANGLING_LINE, "v2Dangling", "v2bdangling", "v2ddangling", "s1"); testNetworkModificationsCount(TEST_GROUP_ID, 10); @@ -1358,10 +1193,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.HVDC_LINE); equipmentDeletionInfos.setEquipmentId("hvdcLine"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); List expectedImpacts = createMultipleDeletionImpacts( List.of( @@ -1379,10 +1211,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.VOLTAGE_LEVEL); equipmentDeletionInfos.setEquipmentId("v5"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); expectedImpacts = createMultipleDeletionImpacts( List.of( @@ -1399,10 +1228,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.SUBSTATION); equipmentDeletionInfos.setEquipmentId("s3"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); expectedImpacts = createMultipleDeletionImpacts( List.of( @@ -1420,10 +1246,7 @@ void testTombstonedEquipmentInfos() throws Exception { equipmentDeletionInfos.setEquipmentType(IdentifiableType.SUBSTATION); equipmentDeletionInfos.setEquipmentId("s2"); equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, VariantManagerConstants.INITIAL_VARIANT_ID); - mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); expectedImpacts = new ArrayList<>(); // Two winding transformer trf2 (in s1) is regulating on v3load (in s2), resetting regulation on delete of v3load adds a modification impact on the substation s1 @@ -1812,9 +1635,7 @@ void testDeleteStashedNetworkModifications() throws Exception { .equipmentId("v1load") .build(); String loadModificationInfosJson = getJsonBody(loadModificationInfos, TEST_NETWORK_ID, NetworkCreation.VARIANT_ID); - ResultActions mockMvcResultActions = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(loadModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); + mvcResult = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(loadModificationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult); List modifications = modificationRepository.getModifications(TEST_GROUP_ID, true, true); @@ -2031,19 +1852,13 @@ void testSearchModificationInfos() throws Exception { .equipmentName(AttributeModification.toAttributeModification("newSubstationName", OperationType.SET)) .build(); String substationModificationInfosJson = getJsonBody(substationModificationInfos, TEST_NETWORK_ID, null); - ResultActions mockMvcResultActions1 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(substationModificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - MvcResult mvcResult1 = mockMvc.perform(asyncDispatch(mockMvcResultActions1.andReturn())) - .andExpect(status().isOk()).andReturn(); + MvcResult mvcResult1 = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(substationModificationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertApplicationStatusOK(mvcResult1); // Generator Creation ID : v2 GeneratorCreationInfos generatorCreationInfos = ModificationCreation.getCreationGenerator("v2", "idGenerator1", "nameGenerator1", "1B", "v2load", "LOAD", "v1"); String generatorCreationInfosJson = getJsonBody(generatorCreationInfos, TEST_NETWORK_ID, null); - ResultActions mockMvcResultActions2 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - MvcResult mvcResult2 = mockMvc.perform(asyncDispatch(mockMvcResultActions2.andReturn())) - .andExpect(status().isOk()).andReturn(); + MvcResult mvcResult2 = runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(generatorCreationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertNotNull(network.getGenerator("idGenerator1")); assertApplicationStatusOK(mvcResult2); @@ -2053,11 +1868,7 @@ void testSearchModificationInfos() throws Exception { .equipmentId("v5load") .build(); String equipmentDeletionInfosJson = getJsonBody(equipmentDeletionInfos, TEST_NETWORK_ID, null); - ResultActions mockMvcResultActions3 = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - MvcResult mvcResult3 = mockMvc.perform(asyncDispatch(mockMvcResultActions3.andReturn())).andExpect(status().isOk()).andReturn(); - assertApplicationStatusOK(mvcResult3); - + runRequestAsync(mockMvc, post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); MvcResult mvcModificationResult; Map> networkModificationsResult; List modificationsSearchResult; diff --git a/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java b/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java index 6b30d0f16..1d2686aab 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/GenerationDispatchTest.java @@ -26,7 +26,6 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; -import org.springframework.test.web.servlet.ResultActions; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; @@ -35,9 +34,7 @@ import static org.gridsuite.modification.server.utils.TestUtils.*; import static org.junit.jupiter.api.Assertions.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -171,10 +168,7 @@ void testGenerationDispatchWithMultipleEnergySource() throws Exception { setNetwork(Network.read("testGenerationDispatchWithMultipleEnergySource.xiidm", getClass().getResourceAsStream("/testGenerationDispatchWithMultipleEnergySource.xiidm"))); String modificationJson = getJsonBody(modification, null); - ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertLogMessageWithoutRank("The total demand is : 768.0 MW", "network.modification.TotalDemand", reportService); assertLogMessageWithoutRank("The total amount of fixed supply is : 0.0 MW", "network.modification.TotalAmountFixedSupply", reportService); @@ -496,10 +490,7 @@ void testGenerationDispatchWithSubstationsHierarchy() throws Exception { setNetwork(Network.read("ieee118cdf_testDemGroupe.xiidm", getClass().getResourceAsStream("/ieee118cdf_testDemGroupe.xiidm"))); String modificationJson = getJsonBody(modification, null); - ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); // generators modified assertEquals(264, getNetwork().getGenerator("B4-G").getTargetP(), 0.001); @@ -606,10 +597,7 @@ void testGenerationDispatchWithMaxValueLessThanMinP() throws Exception { .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE))).getId(); String modificationJson = getJsonBody(modification, null); - ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + MvcResult mvcResult = runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); assertEquals(NetworkModificationResult.ApplicationStatus.WITH_WARNINGS, extractApplicationStatus(networkModificationsResult).getFirst()); diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java index 31c26f574..1d2de9e9b 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModificationTest.java @@ -7,15 +7,8 @@ package org.gridsuite.modification.server.modifications; import com.fasterxml.jackson.core.type.TypeReference; -import com.powsybl.iidm.network.*; -import com.powsybl.iidm.network.LoadingLimits; -import com.powsybl.iidm.network.Network; -import com.powsybl.iidm.network.PhaseTapChanger; -import com.powsybl.iidm.network.Terminal; -import com.powsybl.iidm.network.TwoSides; -import com.powsybl.iidm.network.TwoWindingsTransformer; - import com.powsybl.commons.report.ReportNode; +import com.powsybl.iidm.network.*; import com.powsybl.iidm.network.extensions.ConnectablePosition; import com.powsybl.iidm.network.extensions.TwoWindingsTransformerToBeEstimated; import org.gridsuite.modification.NetworkModificationException; @@ -28,7 +21,6 @@ import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; -import org.springframework.test.web.servlet.ResultActions; import java.util.*; @@ -40,11 +32,10 @@ import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY; import static org.gridsuite.modification.server.utils.NetworkUtil.createTwoWindingsTransformer; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; +import static org.gridsuite.modification.server.utils.TestUtils.runRequestAsync; import static org.gridsuite.modification.server.utils.assertions.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -380,11 +371,7 @@ void testRatioTapChangerModification() throws Exception { .build(); String modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); TwoWindingsTransformerModificationInfos createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -399,11 +386,7 @@ void testRatioTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.getRatioTapChanger().setTargetV(new AttributeModification<>(250.0, OperationType.SET)); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -415,11 +398,7 @@ void testRatioTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.getRatioTapChanger().setTerminalRefConnectableId(new AttributeModification<>("trf1_terminal1", OperationType.SET)); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -430,11 +409,7 @@ void testRatioTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.getRatioTapChanger().setTargetDeadband(new AttributeModification<>(22.0, OperationType.SET)); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -445,11 +420,7 @@ void testRatioTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.getRatioTapChanger().setTapPosition(new AttributeModification<>(0, OperationType.SET)); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); @@ -476,11 +447,7 @@ void testRatioTapChangerModification() throws Exception { )); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(5); @@ -490,11 +457,7 @@ void testRatioTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.setRatioTapChanger(RatioTapChangerModificationInfos.builder().enabled(new AttributeModification<>(false, OperationType.SET)).build()); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(6); @@ -519,11 +482,7 @@ void testPhaseTapChangerModification() throws Exception { .build(); String modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); TwoWindingsTransformerModificationInfos createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0); @@ -534,11 +493,7 @@ void testPhaseTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.getPhaseTapChanger().setRegulationValue(new AttributeModification<>(250.0, OperationType.SET)); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(1); @@ -549,11 +504,7 @@ void testPhaseTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.getPhaseTapChanger().setTerminalRefConnectableId(new AttributeModification<>("trf1_terminal1", OperationType.SET)); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(2); @@ -564,11 +515,7 @@ void testPhaseTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.getPhaseTapChanger().setTargetDeadband(new AttributeModification<>(22.0, OperationType.SET)); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(3); @@ -579,11 +526,7 @@ void testPhaseTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.getPhaseTapChanger().setTapPosition(new AttributeModification<>(0, OperationType.SET)); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(4); @@ -611,11 +554,7 @@ void testPhaseTapChangerModification() throws Exception { .build())); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(5); @@ -627,11 +566,7 @@ void testPhaseTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.getPhaseTapChanger().setRegulationSide(new AttributeModification<>(RegulationSide.SIDE1, OperationType.SET)); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(6); @@ -642,11 +577,7 @@ void testPhaseTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.getPhaseTapChanger().setRegulationSide(new AttributeModification<>(RegulationSide.SIDE2, OperationType.SET)); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(7); @@ -656,10 +587,7 @@ void testPhaseTapChangerModification() throws Exception { twoWindingsTransformerModificationInfos.setPhaseTapChanger(PhaseTapChangerModificationInfos.builder().enabled(new AttributeModification<>(false, OperationType.SET)).build()); modificationToCreateJson = getJsonBody(twoWindingsTransformerModificationInfos, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())).andExpect(status().isOk()).andReturn(); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); createdModification = (TwoWindingsTransformerModificationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(8); @@ -720,11 +648,7 @@ void testPhaseTapChangerRegulationModification() throws Exception { .build(); String modificationToModifyJson = getJsonBody(phaseTapChangerCreation, null); - - ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); PhaseTapChanger phaseTapChanger = twt3.getPhaseTapChanger(); @@ -740,11 +664,7 @@ void testPhaseTapChangerRegulationModification() throws Exception { phaseTapChangerCreation.getPhaseTapChanger().setRegulating(new AttributeModification<>(false, OperationType.SET)); String modificationToModifyJson2 = getJsonBody(phaseTapChangerCreation, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson2).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToModifyJson2).contentType(MediaType.APPLICATION_JSON), status().isOk()); phaseTapChanger = getNetwork().getTwoWindingsTransformer(twtId).getPhaseTapChanger(); // modification 2 assert @@ -759,10 +679,7 @@ void testPhaseTapChangerRegulationModification() throws Exception { phaseTapChangerCreation.getPhaseTapChanger().setRegulating(new AttributeModification<>(true, OperationType.SET)); String modificationToModifyJson3 = getJsonBody(phaseTapChangerCreation, null); - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson3).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToModifyJson3).contentType(MediaType.APPLICATION_JSON), status().isOk()); phaseTapChanger = getNetwork().getTwoWindingsTransformer(twtId).getPhaseTapChanger(); @@ -794,11 +711,7 @@ void testPhaseTapChangerRegulationModification2() throws Exception { String modificationToModifyJson1 = getJsonBody(phaseTapChangerCreation, null); // modification 1 assert - ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()) - .content(modificationToModifyJson1).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToModifyJson1).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertLogMessage(new NetworkModificationException(MODIFY_TWO_WINDINGS_TRANSFORMER_ERROR, "Regulation value is missing when modifying, phase tap changer can not regulate").getMessage(), ERROR_MESSAGE_KEY, reportService); } @@ -841,11 +754,7 @@ private void changeConnectionState(TwoWindingsTransformer existingEquipment, Two .terminal2Connected(side == TwoSides.TWO ? new AttributeModification<>(expectedState, OperationType.SET) : null) .build(); String modificationInfosJson = getJsonBody(modificationInfos, null); - - ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - MvcResult mvcResult = mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()).andReturn(); + MvcResult mvcResult = runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); NetworkModificationsResult networkModificationsResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { }); assertEquals(1, extractApplicationStatus(networkModificationsResult).size()); @@ -860,10 +769,7 @@ private void changeConnectionState(TwoWindingsTransformer existingEquipment, Two assertEquals(NetworkModificationResult.ApplicationStatus.ALL_OK, extractApplicationStatus(networkModificationsResult).getFirst()); // try to modify again => no change on connection state - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationInfosJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); assertThat(terminal.isConnected()).isEqualTo(expectedState); } } @@ -1025,11 +931,7 @@ void testPhaseTapChangerRegulationCreation() throws Exception { .build(); String modificationToModifyJson = getJsonBody(phaseTapChangerCreation, null); - - ResultActions mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); PhaseTapChanger phaseTapChanger = twt3.getPhaseTapChanger(); @@ -1075,11 +977,7 @@ void testPhaseTapChangerRegulationCreation() throws Exception { .build(); modificationToModifyJson = getJsonBody(phaseTapChangerCreation, null); - - mockMvcResultActions = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON)) - .andExpect(request().asyncStarted()); - mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) - .andExpect(status().isOk()); + runRequestAsync(mockMvc, post(getNetworkModificationUri()).content(modificationToModifyJson).contentType(MediaType.APPLICATION_JSON), status().isOk()); phaseTapChanger = twt3.getPhaseTapChanger(); diff --git a/src/test/java/org/gridsuite/modification/server/utils/TestUtils.java b/src/test/java/org/gridsuite/modification/server/utils/TestUtils.java index e1093786f..eebdd2736 100644 --- a/src/test/java/org/gridsuite/modification/server/utils/TestUtils.java +++ b/src/test/java/org/gridsuite/modification/server/utils/TestUtils.java @@ -26,6 +26,7 @@ import org.junit.platform.commons.util.StringUtils; import org.mockito.ArgumentCaptor; import org.springframework.cloud.stream.binder.test.OutputDestination; +import org.springframework.test.web.servlet.*; import java.io.IOException; import java.io.InputStream; @@ -38,6 +39,8 @@ import static com.vladmihalcea.sql.SQLStatementCountValidator.*; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; /** * @author Slimane Amar @@ -50,6 +53,13 @@ private TestUtils() { throw new IllegalCallerException("Utility class"); } + public static MvcResult runRequestAsync(MockMvc mockMvc, RequestBuilder requestBuilder, ResultMatcher... matchers) throws Exception { + ResultActions mockMvcResultActions = mockMvc.perform(requestBuilder).andExpect(request().asyncStarted()); + return mockMvc.perform(asyncDispatch(mockMvcResultActions.andReturn())) + .andExpectAll(matchers) + .andReturn(); + } + public static Set getRequestsDone(int n, MockWebServer server) throws UncheckedInterruptedException { return IntStream.range(0, n).mapToObj(i -> { try {