Skip to content

Commit 1acc52e

Browse files
authored
Upgrade to v0.5.0 of powsybl optimizer (#39)
Fix the knitro cancellation when the voltage init calculation is stopped Signed-off-by: Antoine Bouhours <[email protected]>
1 parent c77d0b0 commit 1acc52e

File tree

3 files changed

+14
-42
lines changed

3 files changed

+14
-42
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050

5151
<properties>
5252
<powsybl-ws-dependencies.version>2.7.0</powsybl-ws-dependencies.version>
53-
<powsybl-open-reac.version>0.4.0</powsybl-open-reac.version>
53+
<powsybl-open-reac.version>0.5.0</powsybl-open-reac.version>
5454
<mockito-inline.version>3.11.1</mockito-inline.version>
5555
<liquibase-hibernate-package>org.gridsuite.voltageinit.server</liquibase-hibernate-package>
5656
</properties>

src/main/java/org/gridsuite/voltageinit/server/service/VoltageInitWorkerService.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import com.powsybl.commons.reporter.Reporter;
1313
import com.powsybl.commons.reporter.ReporterModel;
1414
import com.powsybl.commons.reporter.TypedValue;
15-
import com.powsybl.computation.CompletableFutureTask;
1615
import com.powsybl.iidm.network.Network;
1716
import com.powsybl.iidm.network.VariantManagerConstants;
1817
import com.powsybl.network.store.client.NetworkStoreService;
@@ -80,8 +79,6 @@ public class VoltageInitWorkerService {
8079

8180
private final Lock lockRunAndCancelVoltageInit = new ReentrantLock();
8281

83-
private final Executor threadPool = ForkJoinPool.commonPool();
84-
8582
@Autowired
8683
NotificationService notificationService;
8784

@@ -164,7 +161,7 @@ public CompletableFuture<OpenReacResult> runVoltageInitAsync(VoltageInitRunConte
164161

165162
OpenReacParameters parameters = voltageInitParametersService.buildOpenReacParameters(context, network);
166163
OpenReacConfig config = OpenReacConfig.load();
167-
CompletableFuture<OpenReacResult> future = CompletableFutureTask.runAsync(() -> OpenReacRunner.run(network, network.getVariantManager().getWorkingVariantId(), parameters, config, voltageInitExecutionService.getComputationManager()), this.threadPool);
164+
CompletableFuture<OpenReacResult> future = OpenReacRunner.runAsync(network, network.getVariantManager().getWorkingVariantId(), parameters, config, voltageInitExecutionService.getComputationManager());
168165
if (resultUuid != null) {
169166
futures.put(resultUuid, future);
170167
}

src/test/java/org/gridsuite/voltageinit/server/VoltageInitControllerTest.java

Lines changed: 12 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.fasterxml.jackson.databind.ObjectMapper;
1010
import com.powsybl.commons.PowsyblException;
1111
import com.powsybl.computation.CompletableFutureTask;
12+
import com.powsybl.computation.ComputationManager;
1213
import com.powsybl.iidm.modification.GeneratorModification;
1314
import com.powsybl.iidm.modification.ShuntCompensatorModification;
1415
import com.powsybl.iidm.modification.StaticVarCompensatorModification;
@@ -20,8 +21,10 @@
2021
import com.powsybl.network.store.client.NetworkStoreService;
2122
import com.powsybl.network.store.client.PreloadingStrategy;
2223
import com.powsybl.network.store.iidm.impl.NetworkFactoryImpl;
24+
import com.powsybl.openreac.OpenReacConfig;
25+
import com.powsybl.openreac.OpenReacRunner;
2326
import com.powsybl.openreac.parameters.OpenReacAmplIOFiles;
24-
import com.powsybl.openreac.parameters.input.*;
27+
import com.powsybl.openreac.parameters.input.OpenReacParameters;
2528
import com.powsybl.openreac.parameters.output.OpenReacResult;
2629
import com.powsybl.openreac.parameters.output.OpenReacStatus;
2730
import lombok.SneakyThrows;
@@ -67,15 +70,15 @@
6770
import java.util.Map;
6871
import java.util.Objects;
6972
import java.util.UUID;
70-
import java.util.concurrent.Callable;
71-
import java.util.concurrent.Executor;
7273
import java.util.concurrent.ForkJoinPool;
7374

7475
import static com.powsybl.network.store.model.NetworkStoreApi.VERSION;
75-
import static org.gridsuite.voltageinit.server.service.NotificationService.HEADER_USER_ID;
7676
import static org.gridsuite.voltageinit.server.service.NotificationService.CANCEL_MESSAGE;
77-
import static org.junit.Assert.*;
77+
import static org.gridsuite.voltageinit.server.service.NotificationService.HEADER_USER_ID;
78+
import static org.junit.Assert.assertEquals;
79+
import static org.junit.Assert.assertNotNull;
7880
import static org.mockito.ArgumentMatchers.any;
81+
import static org.mockito.ArgumentMatchers.eq;
7982
import static org.mockito.BDDMockito.given;
8083
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
8184
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
@@ -95,8 +98,6 @@ public class VoltageInitControllerTest {
9598
private static final UUID RESULT_UUID = UUID.fromString("0c8de370-3e6c-4d72-b292-d355a97e0d5d");
9699
private static final UUID REPORT_UUID = UUID.fromString("0c4de370-3e6a-4d72-b292-d355a97e0d53");
97100
private static final UUID OTHER_RESULT_UUID = UUID.fromString("0c8de370-3e6c-4d72-b292-d355a97e0d5a");
98-
private static final UUID NETWORK_FOR_MERGING_VIEW_UUID = UUID.fromString("11111111-7977-4592-ba19-88027e4254e4");
99-
private static final UUID OTHER_NETWORK_FOR_MERGING_VIEW_UUID = UUID.fromString("22222222-7977-4592-ba19-88027e4254e4");
100101
private static final Map<String, String> INDICATORS = Map.of("defaultPmax", "1000.000000", "defaultQmax", "300.000000", "minimalQPrange", "1.000000");
101102
private static final UUID MODIFICATIONS_GROUP_UUID = UUID.fromString("33333333-aaaa-bbbb-cccc-dddddddddddd");
102103
private static final String FILTER_EQUIPMENT_JSON = "[{\"filterId\":\"cf399ef3-7f14-4884-8c82-1c90300da329\",\"identifiableAttributes\":[{\"id\":\"VL1\",\"type\":\"VOLTAGE_LEVEL\"}],\"notFoundEquipments\":[]}]";
@@ -220,12 +221,6 @@ public void setUp() throws Exception {
220221
given(networkStoreService.getNetwork(NETWORK_UUID, PreloadingStrategy.COLLECTION)).willReturn(network);
221222
given(networkStoreService.getNetwork(OTHER_NETWORK_UUID, PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW)).willThrow(new PowsyblException("Not found"));
222223

223-
networkForMergingView = new NetworkFactoryImpl().createNetwork("mergingView", "test");
224-
given(networkStoreService.getNetwork(NETWORK_FOR_MERGING_VIEW_UUID, PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW)).willReturn(networkForMergingView);
225-
226-
otherNetworkForMergingView = new NetworkFactoryImpl().createNetwork("other", "test 2");
227-
given(networkStoreService.getNetwork(OTHER_NETWORK_FOR_MERGING_VIEW_UUID, PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW)).willReturn(otherNetworkForMergingView);
228-
229224
network1 = EurostagTutorialExample1Factory.createWithMoreGenerators(new NetworkFactoryImpl());
230225
network1.getVariantManager().cloneVariant(VariantManagerConstants.INITIAL_VARIANT_ID, VARIANT_2_ID);
231226

@@ -282,8 +277,8 @@ public void tearDown() {
282277

283278
@Test
284279
public void runTest() throws Exception {
285-
try (MockedStatic<CompletableFutureTask> openReacRunnerMockedStatic = Mockito.mockStatic(CompletableFutureTask.class)) {
286-
openReacRunnerMockedStatic.when(() -> CompletableFutureTask.runAsync(any(Callable.class), any(Executor.class)))
280+
try (MockedStatic<OpenReacRunner> openReacRunnerMockedStatic = Mockito.mockStatic(OpenReacRunner.class)) {
281+
openReacRunnerMockedStatic.when(() -> OpenReacRunner.runAsync(eq(network), eq(VARIANT_2_ID), any(OpenReacParameters.class), any(OpenReacConfig.class), any(ComputationManager.class)))
287282
.thenReturn(completableFutureResultsTask);
288283

289284
MvcResult result = mockMvc.perform(post(
@@ -366,8 +361,6 @@ public void runWrongNetworkTest() throws Exception {
366361

367362
@Test
368363
public void runWithReportTest() throws Exception {
369-
String resultAsString;
370-
371364
MvcResult result = mockMvc.perform(post(
372365
"/" + VERSION + "/networks/{networkUuid}/run-and-save?receiver=me&variantId={variantId}&reportType=VoltageInit&reportUuid=" + REPORT_UUID + "&reporterId=" + UUID.randomUUID(), NETWORK_UUID, VARIANT_2_ID)
373366
.header(HEADER_USER_ID, "userId"))
@@ -378,8 +371,8 @@ public void runWithReportTest() throws Exception {
378371

379372
@Test
380373
public void stopTest() throws Exception {
381-
try (MockedStatic<CompletableFutureTask> openReacRunnerMockedStatic = Mockito.mockStatic(CompletableFutureTask.class)) {
382-
openReacRunnerMockedStatic.when(() -> CompletableFutureTask.runAsync(any(Callable.class), any(Executor.class)))
374+
try (MockedStatic<OpenReacRunner> openReacRunnerMockedStatic = Mockito.mockStatic(OpenReacRunner.class)) {
375+
openReacRunnerMockedStatic.when(() -> OpenReacRunner.runAsync(eq(network), eq(VARIANT_2_ID), any(OpenReacParameters.class), any(OpenReacConfig.class), any(ComputationManager.class)))
383376
.thenReturn(completableFutureResultsTask);
384377

385378
mockMvc.perform(post(
@@ -403,24 +396,6 @@ public void stopTest() throws Exception {
403396
}
404397
}
405398

406-
@SneakyThrows
407-
@Test
408-
public void mergingViewTest() {
409-
try (MockedStatic<CompletableFutureTask> openReacRunnerMockedStatic = Mockito.mockStatic(CompletableFutureTask.class)) {
410-
openReacRunnerMockedStatic.when(() -> CompletableFutureTask.runAsync(any(Callable.class), any(Executor.class)))
411-
.thenReturn(completableFutureResultsTask);
412-
413-
MvcResult result = mockMvc.perform(post(
414-
"/" + VERSION + "/networks/{networkUuid}/run-and-save?receiver=me&networkUuid=" + NETWORK_FOR_MERGING_VIEW_UUID, OTHER_NETWORK_FOR_MERGING_VIEW_UUID)
415-
.header(HEADER_USER_ID, "userId"))
416-
.andExpect(status().isOk())
417-
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
418-
.andReturn();
419-
420-
assertEquals(RESULT_UUID, mapper.readValue(result.getResponse().getContentAsString(), UUID.class));
421-
}
422-
}
423-
424399
@SneakyThrows
425400
@Test
426401
public void getStatusTest() {

0 commit comments

Comments
 (0)