Skip to content

Commit

Permalink
Fix : Exclude stashed modifications from node build (#364)
Browse files Browse the repository at this point in the history
* fix(NetworkModificationService): For buildVariant we want to consider only modifications which aren't stashed.

Signed-off-by: sBouzols <[email protected]>
  • Loading branch information
sBouzols authored Nov 13, 2023
1 parent ae5ae4c commit 58f5e5c
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,10 @@ public NetworkModificationResult buildVariant(@NonNull UUID networkUuid, @NonNul
(groupUuid, reporterId) -> {
List<ModificationInfos> modificationsByGroup = List.of();
try {
modificationsByGroup = networkModificationRepository.getModificationsInfos(List.of(groupUuid), false);
modificationsByGroup = networkModificationRepository.getModificationsInfos(List.of(groupUuid), false)
.stream()
.filter(m -> !m.getStashed())
.collect(Collectors.toList());
} catch (NetworkModificationException e) {
if (e.getType() != MODIFICATION_GROUP_NOT_FOUND) { // May not exist
throw e;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -900,6 +900,41 @@ public void runBuildTest() throws Exception {
TestUtils.purgeRequests(server);
}

@Test
public void runBuildWithStashedModificationsTest() throws Exception {
// create modification entities in the database
List<ModificationEntity> entities1 = new ArrayList<>();
entities1.add(EquipmentAttributeModificationInfos.builder().equipmentId("v1d1").equipmentAttributeName("open").equipmentAttributeValue(true).equipmentType(IdentifiableType.SWITCH).build().toEntity());
entities1.add(LoadCreationInfos.builder().equipmentId("willBeStashedLoad").equipmentName("willBeStashedLoad").loadType(LoadType.AUXILIARY).voltageLevelId("v1").busOrBusbarSectionId("1.1").activePower(10.).reactivePower(20.).connectionName("vn").connectionDirection(ConnectablePosition.Direction.TOP).connected(true).build().toEntity());

modificationRepository.saveModifications(TEST_GROUP_ID, entities1);

testNetworkModificationsCount(TEST_GROUP_ID, entities1.size());

List<ModificationInfos> modifications = modificationRepository.getModifications(TEST_GROUP_ID, true, true);
String uuidString = modifications.get(1).getUuid().toString();
mockMvc.perform(put("/v1/network-modifications")
.queryParam("groupUuid", TEST_GROUP_ID.toString())
.queryParam("uuids", uuidString)
.queryParam("stashed", "true"))
.andExpect(status().isOk());
assertEquals(true, modificationRepository.getModificationInfo(UUID.fromString(uuidString)).getStashed());

BuildInfos buildInfos = new BuildInfos(VariantManagerConstants.INITIAL_VARIANT_ID,
NetworkCreation.VARIANT_ID,
TEST_REPORT_ID,
List.of(TEST_GROUP_ID),
List.of(TEST_SUB_REPORTER_ID_1),
new HashSet<>());
networkModificationService.buildVariant(TEST_NETWORK_ID, buildInfos);

// test that only non stashed modifications have been made on variant VARIANT_ID
network.getVariantManager().setWorkingVariant(NetworkCreation.VARIANT_ID);
assertTrue(network.getSwitch("v1d1").isOpen());
assertNull(network.getLoad("willBeStashedLoad"));
assertTrue(TestUtils.getRequestsDone(1, server).stream().anyMatch(r -> r.matches("/v1/reports/.*")));
}

@Test
public void stopBuildTest() throws Exception {
List<ModificationEntity> entities = List.of(
Expand Down

0 comments on commit 58f5e5c

Please sign in to comment.