diff --git a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ModifyingProcessConfig.java b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ModifyingProcessConfig.java new file mode 100644 index 00000000..80ff6542 --- /dev/null +++ b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ModifyingProcessConfig.java @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2026, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.gridsuite.monitor.commons; + +import java.util.List; +import java.util.UUID; + +/** + * @author Kamil MARUT {@literal } + */ +public interface ModifyingProcessConfig extends ProcessConfig { + + List modificationUuids(); + +} diff --git a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessConfig.java b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessConfig.java index 419e426f..b415e73e 100644 --- a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessConfig.java +++ b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessConfig.java @@ -9,9 +9,6 @@ import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import java.util.List; -import java.util.UUID; - /** * @author Antoine Bouhours */ @@ -25,5 +22,4 @@ public interface ProcessConfig { ProcessType processType(); - List modificationUuids(); } diff --git a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/SecurityAnalysisConfig.java b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/SecurityAnalysisConfig.java index 639ee4c6..3e98f6a7 100644 --- a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/SecurityAnalysisConfig.java +++ b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/SecurityAnalysisConfig.java @@ -16,7 +16,8 @@ public record SecurityAnalysisConfig( UUID parametersUuid, List contingencies, List modificationUuids -) implements ProcessConfig { +) implements ModifyingProcessConfig { + @Override public ProcessType processType() { return ProcessType.SECURITY_ANALYSIS; diff --git a/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStep.java b/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStep.java index 45be4f5b..d37d6d45 100644 --- a/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStep.java +++ b/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStep.java @@ -11,7 +11,7 @@ import com.powsybl.iidm.network.Network; import org.apache.commons.collections4.CollectionUtils; import org.gridsuite.modification.dto.ModificationInfos; -import org.gridsuite.monitor.commons.ProcessConfig; +import org.gridsuite.monitor.commons.ModifyingProcessConfig; import org.gridsuite.monitor.worker.server.core.AbstractProcessStep; import org.gridsuite.monitor.worker.server.core.ProcessStepExecutionContext; import org.gridsuite.monitor.worker.server.services.*; @@ -29,7 +29,7 @@ * @author Antoine Bouhours */ @Component -public class ApplyModificationsStep extends AbstractProcessStep { +public class ApplyModificationsStep extends AbstractProcessStep { private final NetworkModificationService networkModificationService; private final NetworkModificationRestService networkModificationRestService; diff --git a/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStepTest.java b/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStepTest.java index bc583f9a..0e5be278 100644 --- a/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStepTest.java +++ b/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/processes/commons/steps/ApplyModificationsStepTest.java @@ -13,7 +13,7 @@ import org.gridsuite.modification.dto.LoadModificationInfos; import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.dto.OperationType; -import org.gridsuite.monitor.commons.ProcessConfig; +import org.gridsuite.monitor.commons.ModifyingProcessConfig; import org.gridsuite.monitor.worker.server.core.ProcessStepExecutionContext; import org.gridsuite.monitor.worker.server.dto.ReportInfos; import org.gridsuite.monitor.worker.server.services.*; @@ -27,6 +27,7 @@ import java.io.IOException; import java.nio.file.Path; +import java.util.Collections; import java.util.List; import java.util.UUID; @@ -54,30 +55,27 @@ class ApplyModificationsStepTest { private S3Service s3Service; @Mock - private ProcessConfig config; + private ModifyingProcessConfig config; - private ApplyModificationsStep applyModificationsStep; + private ApplyModificationsStep applyModificationsStep; @Mock - private ProcessStepExecutionContext stepContext; + private ProcessStepExecutionContext stepContext; private static final UUID MODIFICATION_UUID = UUID.randomUUID(); private static final UUID REPORT_UUID = UUID.randomUUID(); @BeforeEach void setUp() { - applyModificationsStep = new ApplyModificationsStep<>(networkModificationService, networkModificationRestService, s3Service, filterService); - when(config.modificationUuids()).thenReturn(List.of(MODIFICATION_UUID)); when(stepContext.getConfig()).thenReturn(config); - ReportInfos reportInfos = new ReportInfos(REPORT_UUID, ReportNode.newRootReportNode() - .withResourceBundles("i18n.reports") - .withMessageTemplate("test") - .build()); - when(stepContext.getReportInfos()).thenReturn(reportInfos); + + applyModificationsStep = new ApplyModificationsStep<>(networkModificationService, networkModificationRestService, s3Service, filterService); } @Test - void executeApplyModifications() { + void executeApplyModificationsWhenModificationUuidsNotEmpty() { + setUpReportInfos(); + when(config.modificationUuids()).thenReturn(List.of(MODIFICATION_UUID)); String stepType = applyModificationsStep.getType().getName(); assertEquals("APPLY_MODIFICATIONS", stepType); @@ -93,8 +91,22 @@ void executeApplyModifications() { verify(networkModificationService).applyModifications(any(Network.class), any(List.class), any(ReportNode.class), any(FilterService.class)); } + @Test + void executeDoesNothingWhenModificationUuidsEmpty() { + when(config.modificationUuids()).thenReturn(Collections.emptyList()); + + applyModificationsStep.execute(stepContext); + + verifyNoInteractions(networkModificationService); + verifyNoInteractions(networkModificationRestService); + verifyNoInteractions(filterService); + verifyNoInteractions(s3Service); + } + @Test void executeApplyModificationsDebugOn() throws IOException { + setUpReportInfos(); + when(config.modificationUuids()).thenReturn(List.of(MODIFICATION_UUID)); String stepType = applyModificationsStep.getType().getName(); assertEquals("APPLY_MODIFICATIONS", stepType); @@ -135,4 +147,12 @@ void executeApplyModificationsDebugOn() throws IOException { verify(network).write("XIIDM", null, mockedPath); } + + private void setUpReportInfos() { + ReportInfos reportInfos = new ReportInfos(REPORT_UUID, ReportNode.newRootReportNode() + .withResourceBundles("i18n.reports") + .withMessageTemplate("test") + .build()); + when(stepContext.getReportInfos()).thenReturn(reportInfos); + } }