Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@
<mockwebserver3.version>5.0.0-alpha.14</mockwebserver3.version>
<sonar.organization>gridsuite</sonar.organization>
<sonar.projectKey>org.gridsuite:sensitivity-analysis-server</sonar.projectKey>
<!-- FIXME: to be removed at next powsybl-ws-dependencies upgrade -->
<gridsuite-computation.version>2.3.0-SNAPSHOT</gridsuite-computation.version>
</properties>

<build>
Expand Down Expand Up @@ -173,6 +175,7 @@
<dependency>
<groupId>org.gridsuite</groupId>
<artifactId>gridsuite-computation</artifactId>
<version>${gridsuite-computation.version}</version>
</dependency>

<!-- Runtime dependencies -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import static org.gridsuite.computation.service.NotificationService.HEADER_USER_ID;
Expand Down Expand Up @@ -203,6 +204,13 @@ public ResponseEntity<String> getStatus(@Parameter(description = "Result UUID")
return ResponseEntity.ok().body(result == null ? null : result.name());
}

@PostMapping(value = "/results/statuses", consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
@Operation(summary = "Get sensitivity analysis statuses from the database")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The sensitivity analysis statuses")})
public ResponseEntity<Map<UUID, SensitivityAnalysisStatus>> getStatuses(@Parameter(description = "Result uuids") @RequestBody List<UUID> resultUuids) {
return ResponseEntity.ok().body(service.getStatuses(resultUuids));
}

@PutMapping(value = "/results/invalidate-status", produces = APPLICATION_JSON_VALUE)
@Operation(summary = "Invalidate the sensitivity analysis status from the database")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The sensitivity analysis status has been invalidated")})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,14 @@ public SensitivityAnalysisStatus findStatus(UUID resultUuid) {
}
}

@Override
@Transactional(readOnly = true)
public Map<UUID, SensitivityAnalysisStatus> findStatuses(List<UUID> resultUuids) {
Objects.requireNonNull(resultUuids);
List<GlobalStatusEntity> globalEntities = globalStatusRepository.findAllById(resultUuids);
return globalEntities.stream().collect(Collectors.toMap(GlobalStatusEntity::getResultUuid, e -> SensitivityAnalysisStatus.valueOf(e.getStatus())));
}

@Transactional(readOnly = true)
public SensitivityResultFilterOptions getSensitivityResultFilterOptions(UUID resultUuid, ResultsSelector selector) {
AnalysisResultEntity sas = analysisResultRepository.findByResultUuid(resultUuid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
*/
package org.gridsuite.sensitivityanalysis.server;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gdata.util.common.base.Pair;
import com.powsybl.contingency.Contingency;
Expand Down Expand Up @@ -66,6 +67,7 @@
import static org.gridsuite.sensitivityanalysis.server.util.TestUtils.unzip;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.*;
Expand All @@ -91,6 +93,7 @@ class SensitivityAnalysisControllerTest {
private UUID parametersUuid3;
private static final UUID LOADFLOW_PARAMETERS_UUID = UUID.randomUUID();
private static final UUID RESULT_UUID = UUID.randomUUID();
private static final UUID OTHER_RESULT_UUID = UUID.randomUUID();

private static final IdentifiableAttributes BRANCH1 = new IdentifiableAttributes("L1-5-1", IdentifiableType.LINE, null);
private static final IdentifiableAttributes BRANCH2 = new IdentifiableAttributes("L2-3-1", IdentifiableType.LINE, null);
Expand Down Expand Up @@ -538,6 +541,38 @@ void testStatus() throws Exception {
assertEquals(SensitivityAnalysisStatus.NOT_DONE.name(), result.getResponse().getContentAsString());
}

@Test
void testStatuses() throws Exception {
MvcResult result = mockMvc.perform(post(
"/" + VERSION + "/results/statuses")
.contentType(MediaType.APPLICATION_JSON)
.content(mapper.writeValueAsString(List.of(RESULT_UUID, OTHER_RESULT_UUID))))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andReturn();
Map<UUID, SensitivityAnalysisStatus> statuses = mapper.readValue(result.getResponse().getContentAsString(),
new TypeReference<Map<UUID, SensitivityAnalysisStatus>>() {
});
assertTrue(statuses.isEmpty());

mockMvc.perform(put("/" + VERSION + "/results/invalidate-status?resultUuid=" + RESULT_UUID))
.andExpect(status().isOk());

result = mockMvc.perform(post(
"/" + VERSION + "/results/statuses")
.contentType(MediaType.APPLICATION_JSON)
.content(mapper.writeValueAsString(List.of(RESULT_UUID, OTHER_RESULT_UUID))))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andReturn();
statuses = mapper.readValue(result.getResponse().getContentAsString(),
new TypeReference<Map<UUID, SensitivityAnalysisStatus>>() {
});
assertEquals(1, statuses.size());
assertEquals(SensitivityAnalysisStatus.NOT_DONE, statuses.get(RESULT_UUID));
assertFalse(statuses.containsKey(OTHER_RESULT_UUID));
}

@Test
void testGetFactorCount() throws Exception {
SensitivityAnalysisParametersInfos mockParametersInfos = SensitivityAnalysisParametersInfos.builder().build();
Expand Down
Loading