From 06d684d1687cf7780a98fb187b572fa8692026ab Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 22 Aug 2023 12:57:59 +0200 Subject: [PATCH 1/2] Add allResults parameter Signed-off-by: Etienne Homer --- .../gridsuite/shortcircuit/server/ShortCircuitController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/gridsuite/shortcircuit/server/ShortCircuitController.java b/src/main/java/org/gridsuite/shortcircuit/server/ShortCircuitController.java index 3893cf42..8d209c62 100644 --- a/src/main/java/org/gridsuite/shortcircuit/server/ShortCircuitController.java +++ b/src/main/java/org/gridsuite/shortcircuit/server/ShortCircuitController.java @@ -23,6 +23,7 @@ import org.gridsuite.shortcircuit.server.service.ShortCircuitRunContext; import org.gridsuite.shortcircuit.server.service.ShortCircuitService; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -103,8 +104,9 @@ public ResponseEntity getResult(@Parameter(descripti @ApiResponse(responseCode = "404", description = "Short circuit analysis result has not been found")}) public ResponseEntity> getPagedFaultResults(@Parameter(description = "Result UUID") @PathVariable("resultUuid") UUID resultUuid, @Parameter(description = "Full or only those with limit violations or none fault results") @RequestParam(name = "mode", required = false, defaultValue = "WITH_LIMIT_VIOLATIONS") FaultResultsMode mode, + @Parameter(description = "Fetch all results or paged results") @RequestParam(name = "allResults", required = false, defaultValue = "true") boolean allResults, Pageable pageable) { - Page faultResultsPage = shortCircuitService.getFaultResultsPage(resultUuid, mode, pageable); + Page faultResultsPage = shortCircuitService.getFaultResultsPage(resultUuid, mode, allResults ? PageRequest.of(0, Integer.MAX_VALUE, pageable.getSort()) : pageable); return faultResultsPage != null ? ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(faultResultsPage) : ResponseEntity.notFound().build(); } From ab515ed458fc507c3ed7f70c8dd7f2c10b82d81c Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 22 Aug 2023 13:06:13 +0200 Subject: [PATCH 2/2] Adapt tests Signed-off-by: Etienne Homer --- .../server/ShortCircuitController.java | 2 +- .../ShortCircuitAnalysisControllerTest.java | 26 ++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/gridsuite/shortcircuit/server/ShortCircuitController.java b/src/main/java/org/gridsuite/shortcircuit/server/ShortCircuitController.java index 8d209c62..f1631e36 100644 --- a/src/main/java/org/gridsuite/shortcircuit/server/ShortCircuitController.java +++ b/src/main/java/org/gridsuite/shortcircuit/server/ShortCircuitController.java @@ -104,7 +104,7 @@ public ResponseEntity getResult(@Parameter(descripti @ApiResponse(responseCode = "404", description = "Short circuit analysis result has not been found")}) public ResponseEntity> getPagedFaultResults(@Parameter(description = "Result UUID") @PathVariable("resultUuid") UUID resultUuid, @Parameter(description = "Full or only those with limit violations or none fault results") @RequestParam(name = "mode", required = false, defaultValue = "WITH_LIMIT_VIOLATIONS") FaultResultsMode mode, - @Parameter(description = "Fetch all results or paged results") @RequestParam(name = "allResults", required = false, defaultValue = "true") boolean allResults, + @Parameter(description = "Fetch all results or paged results") @RequestParam(name = "allResults", required = false, defaultValue = "false") boolean allResults, Pageable pageable) { Page faultResultsPage = shortCircuitService.getFaultResultsPage(resultUuid, mode, allResults ? PageRequest.of(0, Integer.MAX_VALUE, pageable.getSort()) : pageable); return faultResultsPage != null ? ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(faultResultsPage) diff --git a/src/test/java/org/gridsuite/shortcircuit/server/ShortCircuitAnalysisControllerTest.java b/src/test/java/org/gridsuite/shortcircuit/server/ShortCircuitAnalysisControllerTest.java index dbaedd84..ce41dba8 100644 --- a/src/test/java/org/gridsuite/shortcircuit/server/ShortCircuitAnalysisControllerTest.java +++ b/src/test/java/org/gridsuite/shortcircuit/server/ShortCircuitAnalysisControllerTest.java @@ -118,7 +118,7 @@ private static final class ShortCircuitAnalysisResultMock { List.of(), List.of(LIMIT_VIOLATION_1, LIMIT_VIOLATION_2, LIMIT_VIOLATION_3), 49.3, FaultResult.Status.SUCCESS); - static final ShortCircuitAnalysisResult RESULT_FULL = new ShortCircuitAnalysisResult(List.of(FAULT_RESULT_1, FAULT_RESULT_2, FAULT_RESULT_3)); + static final ShortCircuitAnalysisResult ALL_RESULT = new ShortCircuitAnalysisResult(List.of(FAULT_RESULT_1, FAULT_RESULT_2, FAULT_RESULT_3)); static final ShortCircuitAnalysisResult RESULT_SORTED_PAGE_0 = new ShortCircuitAnalysisResult(List.of(FAULT_RESULT_1, FAULT_RESULT_3)); static final ShortCircuitAnalysisResult RESULT_SORTED_PAGE_1 = new ShortCircuitAnalysisResult(List.of(FAULT_RESULT_3)); static final ShortCircuitAnalysisResult RESULT = new ShortCircuitAnalysisResult(List.of(FAULT_RESULT_1, FAULT_RESULT_3)); @@ -264,7 +264,7 @@ public void runTest() throws Exception { LocalDateTime testTime = LocalDateTime.now().truncatedTo(ChronoUnit.MICROS); try (MockedStatic shortCircuitAnalysisMockedStatic = Mockito.mockStatic(ShortCircuitAnalysis.class)) { shortCircuitAnalysisMockedStatic.when(() -> ShortCircuitAnalysis.runAsync(eq(network), anyList(), any(ShortCircuitParameters.class), any(ComputationManager.class), anyList(), any(Reporter.class))) - .thenReturn(CompletableFuture.completedFuture(ShortCircuitAnalysisResultMock.RESULT_FULL)); + .thenReturn(CompletableFuture.completedFuture(ShortCircuitAnalysisResultMock.ALL_RESULT)); MvcResult result = mockMvc.perform(post( "/" + VERSION + "/networks/{networkUuid}/run-and-save?receiver=me&variantId=" + VARIANT_2_ID, NETWORK_UUID) @@ -293,7 +293,7 @@ public void runTest() throws Exception { .andExpect(content().contentType(MediaType.APPLICATION_JSON)) .andReturn(); org.gridsuite.shortcircuit.server.dto.ShortCircuitAnalysisResult resultDtoFull = mapper.readValue(result.getResponse().getContentAsString(), org.gridsuite.shortcircuit.server.dto.ShortCircuitAnalysisResult.class); - assertResultsEquals(ShortCircuitAnalysisResultMock.RESULT_FULL, resultDtoFull); + assertResultsEquals(ShortCircuitAnalysisResultMock.ALL_RESULT, resultDtoFull); result = mockMvc.perform(get( "/" + VERSION + "/results/{resultUuid}/fault_results/paged", RESULT_UUID) @@ -336,6 +336,20 @@ public void runTest() throws Exception { List faultResultsPageDto1Full = reader.readValue(faultResultsPageNode1.get("content")); assertPagedResultsEquals(ShortCircuitAnalysisResultMock.RESULT_SORTED_PAGE_1, faultResultsPageDto1Full); + result = mockMvc.perform(get( + "/" + VERSION + "/results/{resultUuid}/fault_results/paged", RESULT_UUID) + .param("mode", "FULL") + .param("page", "0") + .param("size", "2") + .param("allResults", "true") + .param("sort", "fault.id")) + .andExpect(status().isOk()) + .andExpect(content().contentType(MediaType.APPLICATION_JSON)) + .andReturn(); + JsonNode faultResultsPageNode2 = mapper.readTree(result.getResponse().getContentAsString()); + List faultResultsPageDto2Full = reader.readValue(faultResultsPageNode2.get("content")); + assertPagedResultsEquals(ShortCircuitAnalysisResultMock.ALL_RESULT, faultResultsPageDto2Full); + // should throw not found if result does not exist mockMvc.perform(get("/" + VERSION + "/results/{resultUuid}", OTHER_RESULT_UUID)) .andExpect(status().isNotFound()); @@ -355,7 +369,7 @@ public void runWithBusIdTest() throws Exception { LocalDateTime testTime = LocalDateTime.now().truncatedTo(ChronoUnit.MICROS); try (MockedStatic shortCircuitAnalysisMockedStatic = Mockito.mockStatic(ShortCircuitAnalysis.class)) { shortCircuitAnalysisMockedStatic.when(() -> ShortCircuitAnalysis.runAsync(eq(network), anyList(), any(ShortCircuitParameters.class), any(ComputationManager.class), anyList(), any(Reporter.class))) - .thenReturn(CompletableFuture.completedFuture(ShortCircuitAnalysisResultMock.RESULT_FULL)); + .thenReturn(CompletableFuture.completedFuture(ShortCircuitAnalysisResultMock.ALL_RESULT)); MvcResult result = mockMvc.perform(post( "/" + VERSION + "/networks/{networkUuid}/run-and-save?receiver=me&variantId=" + VARIANT_2_ID, NETWORK_UUID) @@ -387,7 +401,7 @@ public void runWithBusBarSectionIdTest() throws Exception { LocalDateTime testTime = LocalDateTime.now().truncatedTo(ChronoUnit.MICROS); try (MockedStatic shortCircuitAnalysisMockedStatic = Mockito.mockStatic(ShortCircuitAnalysis.class)) { shortCircuitAnalysisMockedStatic.when(() -> ShortCircuitAnalysis.runAsync(eq(nodeBreakerNetwork), anyList(), any(ShortCircuitParameters.class), any(ComputationManager.class), anyList(), any(Reporter.class))) - .thenReturn(CompletableFuture.completedFuture(ShortCircuitAnalysisResultMock.RESULT_FULL)); + .thenReturn(CompletableFuture.completedFuture(ShortCircuitAnalysisResultMock.ALL_RESULT)); MvcResult result = mockMvc.perform(post( "/" + VERSION + "/networks/{networkUuid}/run-and-save?receiver=me&variantId=" + NODE_BREAKER_NETWORK_VARIANT_ID, NODE_BREAKER_NETWORK_UUID) @@ -419,7 +433,7 @@ public void runWithBusBarSectionIdAndErrorTest() throws Exception { LocalDateTime testTime = LocalDateTime.now().truncatedTo(ChronoUnit.MICROS); try (MockedStatic shortCircuitAnalysisMockedStatic = Mockito.mockStatic(ShortCircuitAnalysis.class)) { shortCircuitAnalysisMockedStatic.when(() -> ShortCircuitAnalysis.runAsync(eq(nodeBreakerNetwork), anyList(), any(ShortCircuitParameters.class), any(ComputationManager.class), anyList(), any(Reporter.class))) - .thenReturn(CompletableFuture.completedFuture(ShortCircuitAnalysisResultMock.RESULT_FULL)); + .thenReturn(CompletableFuture.completedFuture(ShortCircuitAnalysisResultMock.ALL_RESULT)); MvcResult result = mockMvc.perform(post( "/" + VERSION + "/networks/{networkUuid}/run-and-save?receiver=me&variantId=" + NODE_BREAKER_NETWORK_VARIANT_ID, NODE_BREAKER_NETWORK_UUID)