Skip to content

Commit afeee9a

Browse files
authored
fix bus is in node cluster (#194)
Signed-off-by: Etienne LESOT <etienne.lesot@rte-france.com>
1 parent 7c0f0a4 commit afeee9a

2 files changed

Lines changed: 21 additions & 7 deletions

File tree

src/main/java/org/gridsuite/shortcircuit/server/service/ShortCircuitWorkerService.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,17 +162,12 @@ private List<Fault> getAllBusFaults(ShortCircuitRunContext context) {
162162

163163
private List<Fault> getBusFaultFromBusId(ShortCircuitRunContext context) {
164164
String busId = context.getBusId();
165-
if (context.getParameters().getSpecificParameters().containsKey(NODE_CLUSTER)) {
166-
List<String> nodeClusters = deserializeNodeClusters(context);
167-
if (!nodeClusters.isEmpty() && !nodeClusters.contains(busId)) {
168-
throw new ShortCircuitException(BUS_OUT_OF_NODE_CLUSTER, "Selected bus is out of node cluster");
169-
}
170-
}
171165
Identifiable<?> identifiable = context.getNetwork().getIdentifiable(busId);
172166
Map<String, ShortCircuitLimits> shortCircuitLimits = new HashMap<>();
173167

174168
if (identifiable instanceof BusbarSection busbarSection) {
175169
Bus bus = busbarSection.getTerminal().getBusView().getBus();
170+
throwIfBusIsOutsideNodeCluster(context, bus);
176171
if (bus == null) {
177172
throw new ShortCircuitException(BUS_OUT_OF_VOLTAGE, "Selected bus is out of voltage");
178173
}
@@ -185,6 +180,7 @@ private List<Fault> getBusFaultFromBusId(ShortCircuitRunContext context) {
185180
}
186181

187182
if (identifiable instanceof Bus bus) {
183+
throwIfBusIsOutsideNodeCluster(context, bus);
188184
String busIdFromBusView = bus.getVoltageLevel().getBusView().getMergedBus(busId).getId();
189185
IdentifiableShortCircuit<VoltageLevel> shortCircuitExtension = bus.getVoltageLevel().getBusView().getMergedBus(busId).getVoltageLevel().getExtension(IdentifiableShortCircuit.class);
190186
if (shortCircuitExtension != null) {
@@ -196,6 +192,15 @@ private List<Fault> getBusFaultFromBusId(ShortCircuitRunContext context) {
196192
throw new NoSuchElementException("No bus found for bus id " + busId);
197193
}
198194

195+
private void throwIfBusIsOutsideNodeCluster(ShortCircuitRunContext context, Bus bus) {
196+
if (context.getParameters().getSpecificParameters().containsKey(NODE_CLUSTER)) {
197+
List<String> nodeClusters = deserializeNodeClusters(context);
198+
if (!nodeClusters.isEmpty() && !nodeClusters.contains(bus.getId())) {
199+
throw new ShortCircuitException(BUS_OUT_OF_NODE_CLUSTER, "Selected bus is outside node cluster");
200+
}
201+
}
202+
}
203+
199204
protected String getComputationType() {
200205
return COMPUTATION_TYPE;
201206
}

src/test/java/org/gridsuite/shortcircuit/server/service/ShortCircuitWorkerServiceTest.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ void testBuseIdOutsideNodeCluster() throws Exception {
187187
var runContext = mock(ShortCircuitRunContext.class);
188188
var resultContext = new ShortCircuitResultContext(UUID.randomUUID(), runContext);
189189
var busId = "bus3";
190+
var busbarSection = mock(BusbarSection.class);
191+
var terminal = mock(Terminal.class);
192+
var busView = mock(BusView.class);
193+
var bus = mock(Bus.class);
190194

191195
when(runContext.getBusId()).thenReturn(busId);
192196
when(runContext.getNetwork()).thenReturn(network);
@@ -195,13 +199,18 @@ void testBuseIdOutsideNodeCluster() throws Exception {
195199
when(runContext.getParameters())
196200
.thenReturn(ShortCircuitParametersValues.builder().specificParameters(Map.of(NODE_CLUSTER, "bus1, bus2"))
197201
.build());
202+
doReturn(busbarSection).when(network).getIdentifiable(busId);
203+
doReturn(terminal).when(busbarSection).getTerminal();
204+
doReturn(busView).when(terminal).getBusView();
205+
doReturn(bus).when(busView).getBus();
206+
doReturn(busId).when(bus).getId();
198207

199208
try (var shortCircuitAnalysisMockedStatic = TestUtils.injectShortCircuitAnalysisProvider(analysisProvider);
200209
var shortCircuitResultContextMockedStatic = mockStatic(ShortCircuitResultContext.class)) {
201210
shortCircuitResultContextMockedStatic.when(() -> ShortCircuitResultContext.fromMessage(message, objectMapper)).thenReturn(resultContext);
202211
final var run = workerService.consumeRun();
203212
String errorMessage = assertThrows(ComputationRunException.class, () -> run.accept(message)).getMessage();
204-
assertThat(errorMessage).contains("Selected bus is out of node cluster");
213+
assertThat(errorMessage).contains("Selected bus is outside node cluster");
205214
}
206215
}
207216

0 commit comments

Comments
 (0)