Skip to content

Commit 0781368

Browse files
authored
Voltage Init in debug mode (#817)
Signed-off-by: Thang PHAM <[email protected]>
1 parent 0910de8 commit 0781368

File tree

6 files changed

+39
-23
lines changed

6 files changed

+39
-23
lines changed

src/main/java/org/gridsuite/study/server/controller/StudyController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
import jakarta.servlet.http.HttpServletResponse;
1818
import org.apache.commons.lang3.StringUtils;
1919
import org.gridsuite.study.server.StudyApi;
20-
import org.gridsuite.study.server.StudyConstants.ModificationsActionType;
21-
import org.gridsuite.study.server.StudyConstants.SldDisplayMode;
20+
import org.gridsuite.study.server.StudyConstants.*;
2221
import org.gridsuite.study.server.StudyException;
2322
import org.gridsuite.study.server.StudyException.Type;
2423
import org.gridsuite.study.server.dto.*;
@@ -874,9 +873,10 @@ public ResponseEntity<Void> runVoltageInit(
874873
@PathVariable("studyUuid") UUID studyUuid,
875874
@Parameter(description = "rootNetworkUuid") @PathVariable("rootNetworkUuid") UUID rootNetworkUuid,
876875
@PathVariable("nodeUuid") UUID nodeUuid,
876+
@Parameter(description = "debug") @RequestParam(name = "debug", required = false, defaultValue = "false") boolean debug,
877877
@RequestHeader(HEADER_USER_ID) String userId) {
878878
studyService.assertIsNodeNotReadOnly(nodeUuid);
879-
studyService.runVoltageInit(studyUuid, nodeUuid, rootNetworkUuid, userId);
879+
studyService.runVoltageInit(studyUuid, nodeUuid, rootNetworkUuid, userId, debug);
880880
return ResponseEntity.ok().build();
881881
}
882882

src/main/java/org/gridsuite/study/server/service/ConsumerService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -802,6 +802,11 @@ public Consumer<Message<String>> consumeShortCircuitAnalysisFailed() {
802802
};
803803
}
804804

805+
@Bean
806+
public Consumer<Message<String>> consumeVoltageInitDebug() {
807+
return message -> consumeCalculationDebug(message, VOLTAGE_INITIALIZATION);
808+
}
809+
805810
@Bean
806811
public Consumer<Message<String>> consumeVoltageInitStopped() {
807812
return message -> consumeCalculationStopped(message, VOLTAGE_INITIALIZATION);

src/main/java/org/gridsuite/study/server/service/StudyService.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@
4242
import org.gridsuite.study.server.elasticsearch.EquipmentInfosService;
4343
import org.gridsuite.study.server.elasticsearch.StudyInfosService;
4444
import org.gridsuite.study.server.networkmodificationtree.dto.*;
45-
import org.gridsuite.study.server.networkmodificationtree.entities.*;
45+
import org.gridsuite.study.server.networkmodificationtree.entities.NetworkModificationNodeInfoEntity;
46+
import org.gridsuite.study.server.networkmodificationtree.entities.NodeEntity;
47+
import org.gridsuite.study.server.networkmodificationtree.entities.NodeType;
48+
import org.gridsuite.study.server.networkmodificationtree.entities.RootNetworkNodeInfoEntity;
4649
import org.gridsuite.study.server.notification.NotificationService;
4750
import org.gridsuite.study.server.notification.dto.NetworkImpactsInfos;
4851
import org.gridsuite.study.server.repository.*;
@@ -2526,7 +2529,7 @@ public UUID runShortCircuit(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid,
25262529
}
25272530

25282531
@Transactional
2529-
public UUID runVoltageInit(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid, String userId) {
2532+
public UUID runVoltageInit(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid, String userId, boolean debug) {
25302533
UUID prevResultUuid = rootNetworkNodeInfoService.getComputationResultUuid(nodeUuid, rootNetworkUuid, VOLTAGE_INITIALIZATION);
25312534
if (prevResultUuid != null) {
25322535
voltageInitService.deleteVoltageInitResults(List.of(prevResultUuid));
@@ -2537,7 +2540,7 @@ public UUID runVoltageInit(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid,
25372540
StudyEntity studyEntity = studyRepository.findById(studyUuid).orElseThrow(() -> new StudyException(STUDY_NOT_FOUND));
25382541
UUID reportUuid = networkModificationTreeService.getComputationReports(nodeUuid, rootNetworkUuid).getOrDefault(VOLTAGE_INITIALIZATION.name(), UUID.randomUUID());
25392542
networkModificationTreeService.updateComputationReportUuid(nodeUuid, rootNetworkUuid, VOLTAGE_INITIALIZATION, reportUuid);
2540-
UUID result = voltageInitService.runVoltageInit(networkUuid, variantId, studyEntity.getVoltageInitParametersUuid(), reportUuid, nodeUuid, rootNetworkUuid, userId);
2543+
UUID result = voltageInitService.runVoltageInit(new VariantInfos(networkUuid, variantId), studyEntity.getVoltageInitParametersUuid(), new ReportInfos(reportUuid, nodeUuid), rootNetworkUuid, userId, debug);
25412544

25422545
updateComputationResultUuid(nodeUuid, rootNetworkUuid, result, VOLTAGE_INITIALIZATION);
25432546
notificationService.emitStudyChanged(studyUuid, nodeUuid, rootNetworkUuid, NotificationService.UPDATE_TYPE_VOLTAGE_INIT_STATUS);

src/main/java/org/gridsuite/study/server/service/VoltageInitService.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import org.gridsuite.study.server.RemoteServicesProperties;
1414
import org.gridsuite.study.server.StudyException;
1515
import org.gridsuite.study.server.dto.NodeReceiver;
16+
import org.gridsuite.study.server.dto.ReportInfos;
17+
import org.gridsuite.study.server.dto.VariantInfos;
1618
import org.gridsuite.study.server.dto.VoltageInitStatus;
1719
import org.gridsuite.study.server.dto.voltageinit.parameters.VoltageInitParametersInfos;
1820
import org.gridsuite.study.server.service.common.AbstractComputationService;
@@ -60,30 +62,35 @@ public VoltageInitService(RemoteServicesProperties remoteServicesProperties,
6062
this.objectMapper = objectMapper;
6163
}
6264

63-
public UUID runVoltageInit(UUID networkUuid, String variantId, UUID parametersUuid, UUID reportUuid, UUID nodeUuid, UUID rootNetworkUuid, String userId) {
65+
public UUID runVoltageInit(VariantInfos variantInfos, UUID parametersUuid, ReportInfos reportInfos, UUID rootNetworkUuid, String userId, boolean debug) {
6466

6567
String receiver;
6668
try {
67-
receiver = URLEncoder.encode(objectMapper.writeValueAsString(new NodeReceiver(nodeUuid, rootNetworkUuid)), StandardCharsets.UTF_8);
69+
receiver = URLEncoder.encode(objectMapper.writeValueAsString(new NodeReceiver(reportInfos.nodeUuid(), rootNetworkUuid)), StandardCharsets.UTF_8);
6870
} catch (JsonProcessingException e) {
6971
throw new UncheckedIOException(e);
7072
}
7173

7274
var uriComponentsBuilder = UriComponentsBuilder
7375
.fromPath(DELIMITER + VOLTAGE_INIT_API_VERSION + "/networks/{networkUuid}/run-and-save")
7476
.queryParam(QUERY_PARAM_RECEIVER, receiver)
75-
.queryParam("reportUuid", reportUuid.toString())
76-
.queryParam("reporterId", nodeUuid.toString())
77+
.queryParam("reportUuid", reportInfos.reportUuid().toString())
78+
.queryParam("reporterId", reportInfos.nodeUuid().toString())
7779
.queryParam("reportType", StudyService.ReportType.VOLTAGE_INITIALIZATION.reportKey);
7880

7981
if (parametersUuid != null) {
8082
uriComponentsBuilder.queryParam("parametersUuid", parametersUuid.toString());
8183
}
8284

83-
if (!StringUtils.isBlank(variantId)) {
84-
uriComponentsBuilder.queryParam(QUERY_PARAM_VARIANT_ID, variantId);
85+
if (!StringUtils.isBlank(variantInfos.getVariantId())) {
86+
uriComponentsBuilder.queryParam(QUERY_PARAM_VARIANT_ID, variantInfos.getVariantId());
87+
}
88+
89+
if (debug) {
90+
uriComponentsBuilder.queryParam(QUERY_PARAM_DEBUG, true);
8591
}
86-
var path = uriComponentsBuilder.buildAndExpand(networkUuid).toUriString();
92+
93+
var path = uriComponentsBuilder.buildAndExpand(variantInfos.getNetworkUuid()).toUriString();
8794

8895
HttpHeaders headers = new HttpHeaders();
8996
headers.set(HEADER_USER_ID, userId);

src/main/resources/config/application.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ spring:
1212
consumeCaseImportSucceeded;consumeCaseImportFailed;\
1313
consumeSensitivityAnalysisResult;consumeSensitivityAnalysisStopped;consumeSensitivityAnalysisFailed;consumeSensitivityAnalysisCancelFailed;\
1414
consumeShortCircuitAnalysisResult;consumeShortCircuitAnalysisStopped;consumeShortCircuitAnalysisFailed;consumeShortCircuitAnalysisCancelFailed;\
15-
consumeVoltageInitResult;consumeVoltageInitStopped;consumeVoltageInitFailed;consumeVoltageInitCancelFailed;\
15+
consumeVoltageInitDebug;consumeVoltageInitResult;consumeVoltageInitStopped;consumeVoltageInitFailed;consumeVoltageInitCancelFailed;\
1616
consumeLoadFlowResult;consumeLoadFlowStopped;consumeLoadFlowFailed;consumeLoadFlowCancelFailed;\
1717
consumeNonEvacuatedEnergyResult;consumeNonEvacuatedEnergyStopped;consumeNonEvacuatedEnergyFailed;consumeNonEvacuatedEnergyCancelFailed;\
1818
consumeStateEstimationResult;consumeStateEstimationStopped;consumeStateEstimationFailed"
@@ -121,6 +121,9 @@ spring:
121121
consumeShortCircuitAnalysisCancelFailed-in-0:
122122
destination: ${powsybl-ws.rabbitmq.destination.prefix:}shortcircuitanalysis.cancelfailed
123123
group: studyShortCircuitAnalysisCancelFailedGroup
124+
consumeVoltageInitDebug-in-0:
125+
destination: ${powsybl-ws.rabbitmq.destination.prefix:}voltageinit.debug
126+
group: studyVoltageInitDebugGroup
124127
consumeVoltageInitResult-in-0:
125128
destination: ${powsybl-ws.rabbitmq.destination.prefix:}voltageinit.result
126129
group: studyVoltageInitResultGroup

src/test/java/org/gridsuite/study/server/VoltageInitTest.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,7 @@
3333
import org.gridsuite.study.server.dto.modification.NetworkModificationsResult;
3434
import org.gridsuite.study.server.dto.voltageinit.parameters.*;
3535
import org.gridsuite.study.server.networkmodificationtree.dto.*;
36-
import org.gridsuite.study.server.networkmodificationtree.entities.NetworkModificationNodeInfoEntity;
37-
import org.gridsuite.study.server.networkmodificationtree.entities.NodeEntity;
38-
import org.gridsuite.study.server.networkmodificationtree.entities.NodeType;
39-
import org.gridsuite.study.server.networkmodificationtree.entities.RootNetworkNodeInfoEntity;
40-
import org.gridsuite.study.server.networkmodificationtree.entities.RootNodeInfoEntity;
36+
import org.gridsuite.study.server.networkmodificationtree.entities.*;
4137
import org.gridsuite.study.server.notification.NotificationService;
4238
import org.gridsuite.study.server.notification.dto.AlertLevel;
4339
import org.gridsuite.study.server.notification.dto.NetworkImpactsInfos;
@@ -94,6 +90,7 @@
9490
import static org.hamcrest.MatcherAssert.assertThat;
9591
import static org.junit.jupiter.api.Assertions.*;
9692
import static org.mockito.ArgumentMatchers.any;
93+
import static org.mockito.ArgumentMatchers.anyBoolean;
9794
import static org.mockito.Mockito.doAnswer;
9895
import static org.mockito.Mockito.when;
9996
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
@@ -320,7 +317,7 @@ public MockResponse dispatch(RecordedRequest request) {
320317
.setHeader(HEADER_VOLTAGE_LEVEL_LIMITS_OUT_OF_NOMINAL_VOLTAGE_RANGE, Boolean.TRUE)
321318
.build(), voltageInitResultDestination);
322319
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), voltageInitResultUuidStr2);
323-
} else if (path.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_2)) {
320+
} else if (path.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_2 + ".*")) {
324321
input.send(MessageBuilder.withPayload("")
325322
.setHeader("resultUuid", VOLTAGE_INIT_RESULT_UUID)
326323
.setHeader("receiver", "%7B%22nodeUuid%22%3A%22" + request.getPath().split("%")[5].substring(4) + "%22%2C%20%22rootNetworkUuid%22%3A%20%22" + request.getPath().split("%")[11].substring(4) + "%22%2C%20%22userId%22%3A%22userId%22%7D")
@@ -570,6 +567,7 @@ void testVoltageInit(final MockWebServer server) throws Exception {
570567

571568
//run a voltage init analysis
572569
mockMvc.perform(put("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/voltage-init/run", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid)
570+
.param("debug", "true")
573571
.header("userId", "userId"))
574572
.andExpect(status().isOk());
575573

@@ -582,7 +580,7 @@ void testVoltageInit(final MockWebServer server) throws Exception {
582580

583581
checkUpdateModelStatusMessagesReceived(studyNameUserIdUuid, firstRootNetworkUuid, NotificationService.UPDATE_TYPE_VOLTAGE_INIT_STATUS);
584582

585-
assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_2)));
583+
assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/networks/" + NETWORK_UUID_STRING + "/run-and-save\\?receiver=.*&reportUuid=.*&reporterId=.*&variantId=" + VARIANT_ID_2 + "&debug=true")));
586584

587585
// get voltage init result
588586
mockMvc.perform(get("/v1/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/voltage-init/result", studyNameUserIdUuid, firstRootNetworkUuid, modificationNode3Uuid)).andExpectAll(
@@ -944,8 +942,8 @@ void testNotResetedUuidResultWhenVoltageInitFailed() throws Exception {
944942
.setHeader("resultUuid", VOLTAGE_INIT_ERROR_RESULT_UUID)
945943
.build(), voltageInitFailedDestination);
946944
return resultUuid;
947-
}).when(mockStudyService).runVoltageInit(any(), any(), any(), any());
948-
mockStudyService.runVoltageInit(studyEntity.getId(), modificationNode.getId(), rootNetworkUuid, "");
945+
}).when(mockStudyService).runVoltageInit(any(), any(), any(), any(), anyBoolean());
946+
mockStudyService.runVoltageInit(studyEntity.getId(), modificationNode.getId(), rootNetworkUuid, "", false);
949947

950948
// Test doesn't reset uuid result in the database
951949
assertEquals(VOLTAGE_INIT_ERROR_RESULT_UUID, rootNetworkNodeInfoService.getComputationResultUuid(modificationNode.getId(), rootNetworkUuid, VOLTAGE_INITIALIZATION).toString());

0 commit comments

Comments
 (0)