diff --git a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/CaseResultInfos.java b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/CaseResultInfos.java new file mode 100644 index 00000000..785de07d --- /dev/null +++ b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/CaseResultInfos.java @@ -0,0 +1,38 @@ +/** + * 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 lombok.Getter; + +import java.util.UUID; + +/** + * @author Franck Lecuyer + */ +@Getter +public class CaseResultInfos { + private final UUID caseResultUuid; + + private final UUID executionUuid; + + private final UUID reportUuid; + + private final UUID resultUuid; + + private final String stepType; + + private final String status; + + public CaseResultInfos(UUID caseResultUuid, UUID executionUuid, UUID reportUuid, UUID resultUuid, String stepType, String status) { + this.caseResultUuid = caseResultUuid; + this.executionUuid = executionUuid; + this.reportUuid = reportUuid; + this.resultUuid = resultUuid; + this.stepType = stepType; + this.status = status; + } +} diff --git a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessExecutionStep.java b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessExecutionStep.java index 4d91d433..7b082b2c 100644 --- a/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessExecutionStep.java +++ b/monitor-commons/src/main/java/org/gridsuite/monitor/commons/ProcessExecutionStep.java @@ -31,4 +31,5 @@ public class ProcessExecutionStep { private UUID reportId; private Instant startedAt; private Instant completedAt; + private UUID resultCaseId; } diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java index 41933f59..c3bea076 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java @@ -111,5 +111,16 @@ public ResponseEntity deleteExecution(@PathVariable UUID executionId) { ResponseEntity.ok().build() : ResponseEntity.notFound().build(); } + + @PostMapping("/execute/security-analysis-using-servers") + @Operation(summary = "Execute a security analysis process using existing servers (network-modification-server and security-analysis-server)") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The security analysis execution has been started")}) + public ResponseEntity executeSecurityAnalysisUsingServers( + @RequestParam UUID caseUuid, + @RequestBody SecurityAnalysisConfig securityAnalysisConfig, + @RequestHeader(HEADER_USER_ID) String userId) { + UUID executionId = monitorService.executeProcessUsingServers(caseUuid, userId, securityAnalysisConfig); + return ResponseEntity.ok(executionId); + } } diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/ProcessExecutionStepEntity.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/ProcessExecutionStepEntity.java index a2b0a955..6bb88e15 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/ProcessExecutionStepEntity.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/entities/ProcessExecutionStepEntity.java @@ -54,4 +54,7 @@ public class ProcessExecutionStepEntity { @Column private Instant completedAt; + + @Column + private UUID resultCaseId; } diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/mapper/ProcessExecutionStepMapper.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/mapper/ProcessExecutionStepMapper.java index f923aa76..6b61da5c 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/mapper/ProcessExecutionStepMapper.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/mapper/ProcessExecutionStepMapper.java @@ -25,6 +25,7 @@ public static ProcessExecutionStep toDto(ProcessExecutionStepEntity entity) { .reportId(entity.getReportId()) .startedAt(entity.getStartedAt()) .completedAt(entity.getCompletedAt()) + .resultCaseId(entity.getResultCaseId()) .build(); } } diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/ConsumerServiceUsingServers.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/ConsumerServiceUsingServers.java new file mode 100644 index 00000000..764ffae9 --- /dev/null +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/ConsumerServiceUsingServers.java @@ -0,0 +1,167 @@ +/** + * 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.server.services; + +import org.gridsuite.monitor.commons.CaseResultInfos; +import org.gridsuite.monitor.commons.ProcessConfig; +import org.gridsuite.monitor.commons.ProcessExecutionStep; +import org.gridsuite.monitor.commons.ProcessRunMessage; +import org.gridsuite.monitor.commons.ProcessStatus; +import org.gridsuite.monitor.commons.ResultType; +import org.gridsuite.monitor.commons.SecurityAnalysisConfig; +import org.gridsuite.monitor.commons.StepStatus; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.Message; + +import java.time.Instant; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Consumer; + +/** + * @author Franck Lecuyer + */ +@Configuration +public class ConsumerServiceUsingServers { + private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerServiceUsingServers.class); + + private final NetworkModificationRestService networkModificationRestService; + private final SecurityAnalysisRestService securityAnalysisRestService; + private final MonitorService monitorService; + + private record ProcessExecutionContext( + UUID applyModificationsStepId, + UUID securityAnalysisStepId, + UUID caseUuid, + List contingencies, + UUID parametersUuid + ) { } + + private final Map processExecutionContexts = new ConcurrentHashMap<>(); + + @Autowired + ConsumerServiceUsingServers(NetworkModificationRestService networkModificationRestService, + SecurityAnalysisRestService securityAnalysisRestService, + MonitorService monitorService) { + this.networkModificationRestService = networkModificationRestService; + this.securityAnalysisRestService = securityAnalysisRestService; + this.monitorService = monitorService; + } + + @Bean + public Consumer>> consumeRunUsingServers() { + // consume message to launch process + // + return message -> { + ProcessRunMessage processRunMessage = message.getPayload(); + UUID caseUuid = processRunMessage.caseUuid(); + UUID executionId = processRunMessage.executionId(); + + ProcessConfig processConfig = processRunMessage.config(); + List modificationUuids = ((SecurityAnalysisConfig) processConfig).modificationUuids(); + + UUID applyModificationsStepId = UUID.randomUUID(); + UUID securityAnalysisStepId = UUID.randomUUID(); + + List contingencies = null; + UUID parametersUuid = null; + switch (processConfig.processType()) { + case SECURITY_ANALYSIS -> { + contingencies = ((SecurityAnalysisConfig) processConfig).contingencies(); + parametersUuid = ((SecurityAnalysisConfig) processConfig).parametersUuid(); + } + } + + processExecutionContexts.put(executionId, new ProcessExecutionContext( + applyModificationsStepId, + securityAnalysisStepId, + caseUuid, + contingencies, + parametersUuid + )); + + monitorService.updateExecutionStatus(executionId, ProcessStatus.RUNNING, null, Instant.now(), null); + monitorService.updateStepStatus(executionId, + new ProcessExecutionStep(applyModificationsStepId, "APPLY_MODIFICATIONS", 0, StepStatus.RUNNING, null, null, null, Instant.now(), null, null)); + monitorService.updateStepStatus(executionId, + new ProcessExecutionStep(securityAnalysisStepId, "SECURITY_ANALYSIS", 1, StepStatus.SCHEDULED, null, null, null, null, null, null)); + + // call network-modification-server to apply modifications + networkModificationRestService.applyModifications(caseUuid, executionId, modificationUuids); + }; + } + + @Bean + public Consumer> consumeNetworkModifications() { + // consume message received from network-modification-server + // + return message -> { + CaseResultInfos caseResultInfos = message.getPayload(); + UUID caseResultUuid = caseResultInfos.getCaseResultUuid(); + UUID executionId = caseResultInfos.getExecutionUuid(); + String stepType = caseResultInfos.getStepType(); + UUID reportUuid = caseResultInfos.getReportUuid(); + + StepStatus stepStatus = StepStatus.valueOf(caseResultInfos.getStatus()); + + ProcessExecutionContext processExecutionContext = processExecutionContexts.get(executionId); + if (processExecutionContext == null) { + LOGGER.error("Process execution context not found for executionId: {}", executionId); + return; + } + + monitorService.updateStepStatus(executionId, + new ProcessExecutionStep(processExecutionContext.applyModificationsStepId(), stepType, 0, stepStatus, null, null, reportUuid, null, Instant.now(), caseResultUuid)); + monitorService.updateStepStatus(executionId, + new ProcessExecutionStep(processExecutionContext.securityAnalysisStepId(), "SECURITY_ANALYSIS", 1, + stepStatus == StepStatus.COMPLETED ? StepStatus.RUNNING : StepStatus.SKIPPED, + null, null, null, Instant.now(), null, null)); + + if (stepStatus == StepStatus.COMPLETED) { + // call security-analysis-server to run security analysis + securityAnalysisRestService.runSecurityAnalysis(caseResultUuid, executionId, processExecutionContext.contingencies(), processExecutionContext.parametersUuid()); + } else { + processExecutionContexts.remove(executionId); + } + }; + } + + @Bean + public Consumer> consumeSecurityAnalysis() { + // consume message received from security-analysis-server + // + return message -> { + CaseResultInfos caseResultInfos = message.getPayload(); + UUID executionId = caseResultInfos.getExecutionUuid(); + String stepType = caseResultInfos.getStepType(); + UUID reportUuid = caseResultInfos.getReportUuid(); + UUID resultUuid = caseResultInfos.getResultUuid(); + StepStatus stepStatus = StepStatus.valueOf(caseResultInfos.getStatus()); + UUID caseResultUuid = caseResultInfos.getCaseResultUuid(); + + ProcessExecutionContext processExecutionContext = processExecutionContexts.get(executionId); + if (processExecutionContext == null) { + LOGGER.error("Process execution context not found for executionId: {}", executionId); + return; + } + + monitorService.updateStepStatus(executionId, + new ProcessExecutionStep(processExecutionContext.securityAnalysisStepId(), stepType, 1, stepStatus, resultUuid, ResultType.SECURITY_ANALYSIS, reportUuid, null, Instant.now(), caseResultUuid)); + monitorService.updateExecutionStatus(executionId, + stepStatus == StepStatus.COMPLETED ? ProcessStatus.COMPLETED : ProcessStatus.FAILED, + null, null, Instant.now()); + + processExecutionContexts.remove(executionId); + }; + } +} diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/MonitorService.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/MonitorService.java index d299114e..40650345 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/MonitorService.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/MonitorService.java @@ -106,11 +106,16 @@ private void updateStep(ProcessExecutionEntity execution, ProcessExecutionStepEn existingStep.setStatus(stepEntity.getStatus()); existingStep.setStepType(stepEntity.getStepType()); existingStep.setStepOrder(stepEntity.getStepOrder()); - existingStep.setStartedAt(stepEntity.getStartedAt()); - existingStep.setCompletedAt(stepEntity.getCompletedAt()); + if (stepEntity.getStartedAt() != null) { + existingStep.setStartedAt(stepEntity.getStartedAt()); + } + if (stepEntity.getCompletedAt() != null) { + existingStep.setCompletedAt(stepEntity.getCompletedAt()); + } existingStep.setResultId(stepEntity.getResultId()); existingStep.setResultType(stepEntity.getResultType()); existingStep.setReportId(stepEntity.getReportId()); + existingStep.setResultCaseId(stepEntity.getResultCaseId()); }, () -> steps.add(stepEntity)); } @@ -146,6 +151,7 @@ private ProcessExecutionStepEntity toStepEntity(ProcessExecutionStep processExec .reportId(processExecutionStep.getReportId()) .startedAt(processExecutionStep.getStartedAt()) .completedAt(processExecutionStep.getCompletedAt()) + .resultCaseId(processExecutionStep.getResultCaseId()) .build(); } @@ -239,4 +245,25 @@ public boolean deleteExecution(UUID executionId) { } return false; } + + @Transactional + public UUID executeProcessUsingServers(UUID caseUuid, String userId, ProcessConfig processConfig) { + ProcessExecutionEntity execution = ProcessExecutionEntity.builder() + .type(processConfig.processType().name()) + .caseUuid(caseUuid) + .status(ProcessStatus.SCHEDULED) + .scheduledAt(Instant.now()) + .userId(userId) + .executionEnvName("using-servers-env") + .build(); + executionRepository.save(execution); + + String bindingName = switch (processConfig.processType()) { + case SECURITY_ANALYSIS -> "publishRunSecurityAnalysisUsingServers-out-0"; + }; + notificationService.sendProcessRunMessage(caseUuid, processConfig, execution.getId(), null, bindingName); + + return execution.getId(); + } + } diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/NetworkModificationRestService.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/NetworkModificationRestService.java new file mode 100644 index 00000000..ef17ad83 --- /dev/null +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/NetworkModificationRestService.java @@ -0,0 +1,54 @@ +/** + * 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.server.services; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +import java.util.List; +import java.util.UUID; + +/** + * @author Franck Lecuyer + */ +@Service +public class NetworkModificationRestService { + private static final String NETWORK_MODIFICATION_SERVER_API_VERSION = "v1"; + private static final String DELIMITER = "/"; + + private final RestTemplate networkModificationServerRest; + private final String networkModificationServerBaseUri; + + public NetworkModificationRestService(@Value("${gridsuite.services.network-modification-server.base-uri:http://network-modification-server/}") String networkModificationServerBaseUri, + RestTemplateBuilder restTemplateBuilder) { + this.networkModificationServerRest = restTemplateBuilder.build(); + this.networkModificationServerBaseUri = networkModificationServerBaseUri; + } + + public void applyModifications(UUID caseUuid, UUID executionId, List modificationUuids) { + var uriComponentsBuilder = UriComponentsBuilder.fromPath(DELIMITER + NETWORK_MODIFICATION_SERVER_API_VERSION + DELIMITER + "cases/{caseUuid}/network-composite-modifications"); + var path = uriComponentsBuilder + .queryParam("executionUuid", executionId) + .queryParam("uuids", modificationUuids) + .buildAndExpand(caseUuid) + .toUriString(); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity httpEntity = new HttpEntity<>(null, headers); + + networkModificationServerRest.exchange(networkModificationServerBaseUri + path, HttpMethod.POST, httpEntity, Void.class); + } +} diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/NotificationService.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/NotificationService.java index 49202af8..13b0ef41 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/NotificationService.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/NotificationService.java @@ -27,6 +27,10 @@ public void sendProcessRunMessage(UUID caseUuid, ProcessConfig processConfig, UU String bindingName = switch (processConfig.processType()) { case SECURITY_ANALYSIS -> "publishRunSecurityAnalysis-out-0"; }; + sendProcessRunMessage(caseUuid, processConfig, executionId, bindingName, debugFileLocation); + } + + public void sendProcessRunMessage(UUID caseUuid, ProcessConfig processConfig, UUID executionId, String bindingName, String debugFileLocation) { ProcessRunMessage message = new ProcessRunMessage<>(executionId, caseUuid, processConfig, debugFileLocation); publisher.send(bindingName, message); } diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/services/SecurityAnalysisRestService.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/SecurityAnalysisRestService.java new file mode 100644 index 00000000..840a6fb8 --- /dev/null +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/services/SecurityAnalysisRestService.java @@ -0,0 +1,55 @@ +/** + * 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.server.services; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +import java.util.List; +import java.util.UUID; + +/** + * @author Franck Lecuyer + */ +@Service +public class SecurityAnalysisRestService { + private static final String SECURITY_ANALYSIS_SERVER_API_VERSION = "v1"; + private static final String DELIMITER = "/"; + + private final RestTemplate securityAnalysisServerRest; + private final String securityAnalysisServerBaseUri; + + public SecurityAnalysisRestService(@Value("${gridsuite.services.security-analysis-server.base-uri:http://security-analysis-server/}") String securityAnalysisServerBaseUri, + RestTemplateBuilder restTemplateBuilder) { + this.securityAnalysisServerRest = restTemplateBuilder.build(); + this.securityAnalysisServerBaseUri = securityAnalysisServerBaseUri; + } + + public void runSecurityAnalysis(UUID caseUuid, UUID executionId, List contingencies, UUID parametersUuid) { + var uriComponentsBuilder = UriComponentsBuilder.fromPath(DELIMITER + SECURITY_ANALYSIS_SERVER_API_VERSION + DELIMITER + "/cases/{caseUuid}/run-and-save"); + var path = uriComponentsBuilder + .queryParam("executionUuid", executionId) + .queryParam("contingencyListName", contingencies) + .queryParam("parametersUuid", parametersUuid) + .buildAndExpand(caseUuid) + .toUriString(); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity httpEntity = new HttpEntity<>(null, headers); + + securityAnalysisServerRest.exchange(securityAnalysisServerBaseUri + path, HttpMethod.POST, httpEntity, Void.class); + } +} diff --git a/monitor-server/src/main/resources/application-local.yaml b/monitor-server/src/main/resources/application-local.yaml index 69d2f51e..db9fefeb 100644 --- a/monitor-server/src/main/resources/application-local.yaml +++ b/monitor-server/src/main/resources/application-local.yaml @@ -19,5 +19,7 @@ gridsuite: base-uri: http://localhost:5028 security-analysis-server: base-uri: http://localhost:5023 + network-modification-server: + base-uri: http://localhost:5007 state-estimation-server: - base-uri: http://localhost:6040 \ No newline at end of file + base-uri: http://localhost:6040 diff --git a/monitor-server/src/main/resources/config/application.yaml b/monitor-server/src/main/resources/config/application.yaml index 1b47c9b7..102673e1 100644 --- a/monitor-server/src/main/resources/config/application.yaml +++ b/monitor-server/src/main/resources/config/application.yaml @@ -2,6 +2,8 @@ spring: application: name: monitor-server cloud: + function: + definition: consumeMonitorUpdate;consumeRunUsingServers;consumeNetworkModifications;consumeSecurityAnalysis stream: bindings: publishRunSecurityAnalysis-out-0: @@ -9,6 +11,15 @@ spring: consumeMonitorUpdate-in-0: destination: ${powsybl-ws.rabbitmq.destination.prefix:}monitor.update group: monitorUpdateGroup + publishRunSecurityAnalysisUsingServers-out-0: + destination: ${powsybl-ws.rabbitmq.destination.prefix:}monitor.process.securityanalysis.using.servers.run + consumeRunUsingServers-in-0: + destination: ${powsybl-ws.rabbitmq.destination.prefix:}monitor.process.securityanalysis.using.servers.run + consumeNetworkModifications-in-0: + destination: ${powsybl-ws.rabbitmq.destination.prefix:}modifications.case.result + consumeSecurityAnalysis-in-0: + destination: ${powsybl-ws.rabbitmq.destination.prefix:}sa.case.result + output-bindings: publishRunSecurityAnalysis-out-0;publishRunSecurityAnalysisUsingServers-out-0; powsybl-ws: database: diff --git a/monitor-server/src/main/resources/db/changelog/changesets/changelog_20260225T073450Z.xml b/monitor-server/src/main/resources/db/changelog/changesets/changelog_20260225T073450Z.xml new file mode 100644 index 00000000..f58dfb1c --- /dev/null +++ b/monitor-server/src/main/resources/db/changelog/changesets/changelog_20260225T073450Z.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/monitor-server/src/main/resources/db/changelog/db.changelog-master.yaml b/monitor-server/src/main/resources/db/changelog/db.changelog-master.yaml index e8f62f7e..9de5836b 100644 --- a/monitor-server/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/monitor-server/src/main/resources/db/changelog/db.changelog-master.yaml @@ -11,3 +11,7 @@ databaseChangeLog: - include: file: changesets/changelog_20260212T082157Z.xml relativeToChangelogFile: true + - include: + file: changesets/changelog_20260225T073450Z.xml + relativeToChangelogFile: true + diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/MonitorControllerTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/MonitorControllerTest.java index 905e0bbc..7ba41a1d 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/MonitorControllerTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/controllers/MonitorControllerTest.java @@ -172,9 +172,9 @@ void getLaunchedProcesses() throws Exception { @Test void getStepsInfos() throws Exception { UUID executionId = UUID.randomUUID(); - ProcessExecutionStep processExecutionStep1 = new ProcessExecutionStep(UUID.randomUUID(), "loadNetwork", 0, StepStatus.RUNNING, null, null, UUID.randomUUID(), Instant.now(), null); - ProcessExecutionStep processExecutionStep2 = new ProcessExecutionStep(UUID.randomUUID(), "applyModifs", 1, StepStatus.SCHEDULED, null, null, UUID.randomUUID(), null, null); - ProcessExecutionStep processExecutionStep3 = new ProcessExecutionStep(UUID.randomUUID(), "runSA", 2, StepStatus.SCHEDULED, null, null, UUID.randomUUID(), null, null); + ProcessExecutionStep processExecutionStep1 = new ProcessExecutionStep(UUID.randomUUID(), "loadNetwork", 0, StepStatus.RUNNING, null, null, UUID.randomUUID(), Instant.now(), null, null); + ProcessExecutionStep processExecutionStep2 = new ProcessExecutionStep(UUID.randomUUID(), "applyModifs", 1, StepStatus.SCHEDULED, null, null, UUID.randomUUID(), null, null, null); + ProcessExecutionStep processExecutionStep3 = new ProcessExecutionStep(UUID.randomUUID(), "runSA", 2, StepStatus.SCHEDULED, null, null, UUID.randomUUID(), null, null, null); List processExecutionStepList = List.of(processExecutionStep1, processExecutionStep2, processExecutionStep3); when(monitorService.getStepsInfos(executionId)).thenReturn(Optional.of(processExecutionStepList)); diff --git a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/MonitorServiceTest.java b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/MonitorServiceTest.java index f3a8e9c3..e67834d2 100644 --- a/monitor-server/src/test/java/org/gridsuite/monitor/server/services/MonitorServiceTest.java +++ b/monitor-server/src/test/java/org/gridsuite/monitor/server/services/MonitorServiceTest.java @@ -470,8 +470,8 @@ void getStepsInfos() { Optional> result = monitorService.getStepsInfos(executionUuid); - ProcessExecutionStep processExecutionStep1 = new ProcessExecutionStep(stepId1, "loadNetwork", 0, StepStatus.RUNNING, null, null, null, startedAt1, null); - ProcessExecutionStep processExecutionStep2 = new ProcessExecutionStep(stepId2, "applyModifs", 1, StepStatus.SCHEDULED, null, null, null, null, null); + ProcessExecutionStep processExecutionStep1 = new ProcessExecutionStep(stepId1, "loadNetwork", 0, StepStatus.RUNNING, null, null, null, startedAt1, null, null); + ProcessExecutionStep processExecutionStep2 = new ProcessExecutionStep(stepId2, "applyModifs", 1, StepStatus.SCHEDULED, null, null, null, null, null, null); assertThat(result).isPresent(); assertThat(result.get()).hasSize(2).containsExactly(processExecutionStep1, processExecutionStep2); diff --git a/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/services/StepExecutionService.java b/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/services/StepExecutionService.java index e9baac9e..00512405 100644 --- a/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/services/StepExecutionService.java +++ b/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/services/StepExecutionService.java @@ -45,5 +45,4 @@ public void executeStep(ProcessStepExecutionContext context, ProcessStep s () -> step.execute(context) ); } - }