diff --git a/pom.xml b/pom.xml
index 14987f25..dc5c5714 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,7 @@
34
org.gridsuite.securityanalysis.server
1.0.5
+ 5.0.0-alpha.14
1.18.2
@@ -87,6 +88,13 @@
+
+ com.squareup.okhttp3
+ okhttp-bom
+ ${mockwebserver3.version}
+ pom
+ import
+
com.powsybl
@@ -116,7 +124,11 @@
-
+
+ com.vladmihalcea
+ db-util
+ ${db-util.version}
+
@@ -227,21 +239,6 @@
powsybl-iidm-test
test
-
- junit
- junit
- test
-
-
- org.junit.vintage
- junit-vintage-engine
- test
-
-
- org.mockito
- mockito-core
- test
-
org.springframework.boot
spring-boot-starter-test
@@ -249,12 +246,7 @@
com.squareup.okhttp3
- okhttp
- test
-
-
- com.squareup.okhttp3
- mockwebserver
+ mockwebserver3-junit5
test
@@ -270,7 +262,6 @@
com.vladmihalcea
db-util
- ${db-util.version}
test
@@ -279,5 +270,4 @@
test
-
diff --git a/src/main/java/org/gridsuite/securityanalysis/server/dto/CsvTranslationDTO.java b/src/main/java/org/gridsuite/securityanalysis/server/dto/CsvTranslationDTO.java
index 5b77197c..7d4f4bb3 100644
--- a/src/main/java/org/gridsuite/securityanalysis/server/dto/CsvTranslationDTO.java
+++ b/src/main/java/org/gridsuite/securityanalysis/server/dto/CsvTranslationDTO.java
@@ -1,6 +1,6 @@
package org.gridsuite.securityanalysis.server.dto;
-import lombok.*;
+import lombok.Builder;
import java.util.List;
import java.util.Map;
diff --git a/src/main/java/org/gridsuite/securityanalysis/server/service/ActionsService.java b/src/main/java/org/gridsuite/securityanalysis/server/service/ActionsService.java
index 8abc4b21..4e2a8a64 100644
--- a/src/main/java/org/gridsuite/securityanalysis/server/service/ActionsService.java
+++ b/src/main/java/org/gridsuite/securityanalysis/server/service/ActionsService.java
@@ -7,7 +7,6 @@
package org.gridsuite.securityanalysis.server.service;
import org.gridsuite.securityanalysis.server.dto.ContingencyInfos;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpMethod;
@@ -39,7 +38,6 @@ public void setActionServiceBaseUri(String baseUri) {
this.baseUri = baseUri;
}
- @Autowired
public ActionsService(
@Value("${gridsuite.services.actions-server.base-uri:http://actions-server/}") String baseUri,
RestTemplate restTemplate) {
diff --git a/src/main/java/org/gridsuite/securityanalysis/server/service/LoadFlowService.java b/src/main/java/org/gridsuite/securityanalysis/server/service/LoadFlowService.java
index 6d0735a3..8e3135bf 100644
--- a/src/main/java/org/gridsuite/securityanalysis/server/service/LoadFlowService.java
+++ b/src/main/java/org/gridsuite/securityanalysis/server/service/LoadFlowService.java
@@ -7,7 +7,6 @@
package org.gridsuite.securityanalysis.server.service;
import org.gridsuite.securityanalysis.server.dto.LoadFlowParametersValues;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@@ -28,7 +27,6 @@ public class LoadFlowService {
private final RestTemplate restTemplate;
- @Autowired
public LoadFlowService(@Value("${gridsuite.services.loadflow-server.base-uri:http://loadflow-server/}") String baseUri, RestTemplate restTemplate) {
this.baseUri = baseUri;
this.restTemplate = restTemplate;
diff --git a/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisObserver.java b/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisObserver.java
index 123913bd..fb6e9c43 100644
--- a/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisObserver.java
+++ b/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisObserver.java
@@ -4,7 +4,6 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-
package org.gridsuite.securityanalysis.server.service;
import com.powsybl.loadflow.LoadFlowResult;
diff --git a/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisResultService.java b/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisResultService.java
index d55dffca..1e59f723 100644
--- a/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisResultService.java
+++ b/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisResultService.java
@@ -24,7 +24,6 @@
import org.gridsuite.securityanalysis.server.util.SecurityAnalysisException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.domain.*;
import org.springframework.data.jpa.domain.Specification;
@@ -91,7 +90,6 @@ public class SecurityAnalysisResultService extends AbstractComputationResultServ
AbstractLimitViolationEntity.Fields.side
);
- @Autowired
public SecurityAnalysisResultService(SecurityAnalysisResultRepository securityAnalysisResultRepository,
ContingencyRepository contingencyRepository,
PreContingencyLimitViolationRepository preContingencyLimitViolationRepository,
@@ -238,6 +236,7 @@ public void insert(UUID resultUuid, SecurityAnalysisResult result, SecurityAnaly
securityAnalysisResultRepository.save(securityAnalysisResult);
}
+ @Override
@Transactional
public void insertStatus(List resultUuids, SecurityAnalysisStatus status) {
Objects.requireNonNull(resultUuids);
@@ -248,6 +247,7 @@ public void insertStatus(List resultUuids, SecurityAnalysisStatus status)
});
}
+ @Override
@Transactional
public void delete(UUID resultUuid) {
AtomicReference startTime = new AtomicReference<>();
@@ -271,11 +271,13 @@ private void deleteSecurityAnalysisResult(UUID resultId) {
securityAnalysisResultRepository.deleteById(resultId);
}
+ @Override
@Transactional
public void deleteAll() {
securityAnalysisResultRepository.deleteAll();
}
+ @Override
@Transactional(readOnly = true)
public SecurityAnalysisStatus findStatus(UUID resultUuid) {
Objects.requireNonNull(resultUuid);
diff --git a/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisService.java b/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisService.java
index b4a57b03..d5352d0b 100644
--- a/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisService.java
+++ b/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisService.java
@@ -13,7 +13,7 @@
import com.powsybl.ws.commons.computation.service.AbstractComputationService;
import com.powsybl.ws.commons.computation.service.NotificationService;
import com.powsybl.ws.commons.computation.service.UuidGeneratorService;
-import org.gridsuite.securityanalysis.server.dto.*;
+import org.gridsuite.securityanalysis.server.dto.SecurityAnalysisStatus;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -37,6 +37,7 @@ public SecurityAnalysisService(SecurityAnalysisResultService securityAnalysisRes
super(notificationService, securityAnalysisResultService, objectMapper, uuidGeneratorService, defaultProvider);
}
+ @Override
public UUID runAndSaveResult(SecurityAnalysisRunContext runContext) {
Objects.requireNonNull(runContext);
var resultUuid = uuidGeneratorService.generate();
@@ -47,6 +48,7 @@ public UUID runAndSaveResult(SecurityAnalysisRunContext runContext) {
return resultUuid;
}
+ @Override
public List getProviders() {
return SecurityAnalysisProvider.findAll().stream()
.map(SecurityAnalysisProvider::getName)
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/FindContingenciesTest.java b/src/test/java/org/gridsuite/securityanalysis/server/FindContingenciesTest.java
index 87d03186..5ac54bd0 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/FindContingenciesTest.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/FindContingenciesTest.java
@@ -12,7 +12,10 @@
import org.gridsuite.securityanalysis.server.dto.ResourceFilterDTO;
import org.gridsuite.securityanalysis.server.dto.SecurityAnalysisStatus;
import org.gridsuite.securityanalysis.server.dto.SubjectLimitViolationDTO;
-import org.gridsuite.securityanalysis.server.entities.*;
+import org.gridsuite.securityanalysis.server.entities.AbstractLimitViolationEntity;
+import org.gridsuite.securityanalysis.server.entities.ContingencyEntity;
+import org.gridsuite.securityanalysis.server.entities.SecurityAnalysisResultEntity;
+import org.gridsuite.securityanalysis.server.entities.SubjectLimitViolationEntity;
import org.gridsuite.securityanalysis.server.repositories.SecurityAnalysisResultRepository;
import org.gridsuite.securityanalysis.server.repositories.specifications.SpecificationUtils;
import org.gridsuite.securityanalysis.server.service.SecurityAnalysisResultService;
@@ -49,12 +52,12 @@
@TestInstance(TestInstance.Lifecycle.PER_CLASS) // improve tests speed as we only read DB
class FindContingenciesTest {
@Autowired
- SecurityAnalysisResultRepository securityAnalysisResultRepository;
+ private SecurityAnalysisResultRepository securityAnalysisResultRepository;
- SecurityAnalysisResultEntity resultEntity;
+ private SecurityAnalysisResultEntity resultEntity;
@Autowired
- SecurityAnalysisResultService securityAnalysisResultService;
+ private SecurityAnalysisResultService securityAnalysisResultService;
@BeforeAll
void setUp() {
@@ -106,40 +109,40 @@ void testSortAndFilterErrors(List filters, Pageable pageable,
assertEquals(expectedException.getMessage(), exception.getMessage());
}
- private Stream providePageableAndSortOnly() {
+ private static Stream providePageableAndSortOnly() {
return Stream.of(
- Arguments.of(List.of(), PageRequest.of(0, 5, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)), RESULT_CONTINGENCIES.stream().sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList().subList(0, 5), 5),
- Arguments.of(List.of(), PageRequest.of(0, 5, Sort.by(Sort.Direction.DESC, ContingencyEntity.Fields.contingencyId)), RESULT_CONTINGENCIES.stream().sorted(Comparator.comparing(this::getContingencyResultDTOId).reversed()).toList().subList(0, 5), 5)
+ Arguments.of(List.of(), PageRequest.of(0, 5, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)), RESULT_CONTINGENCIES.stream().sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList().subList(0, 5), 5),
+ Arguments.of(List.of(), PageRequest.of(0, 5, Sort.by(Sort.Direction.DESC, ContingencyEntity.Fields.contingencyId)), RESULT_CONTINGENCIES.stream().sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId).reversed()).toList().subList(0, 5), 5)
);
}
- private Stream provideParentFilter() {
+ private static Stream provideParentFilter() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.CONTAINS, "3", ContingencyEntity.Fields.contingencyId)), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
- RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getContingencyId().contains("3")).sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList(), 4),
+ RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getContingencyId().contains("3")).sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList(), 4),
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.STARTS_WITH, "l", ContingencyEntity.Fields.contingencyId)), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
- RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getContingencyId().startsWith("l")).sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList(), 4),
+ RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getContingencyId().startsWith("l")).sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList(), 4),
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.STARTS_WITH, "3", ContingencyEntity.Fields.contingencyId)), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
- RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getContingencyId().startsWith("3")).sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList(), 1)
+ RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getContingencyId().startsWith("3")).sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList(), 1)
);
}
- private Stream provideChildFilter() {
+ private static Stream provideChildFilter() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.CONTAINS, "l6", ContingencyEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId)), PageRequest.of(0, 2, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
getResultContingenciesWithNestedFilter(lm -> lm.getSubjectId().equals("l6"))
- .stream().sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList()
+ .stream().sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList()
.subList(0, 2), 5), // find 1st page of size 2 of contingencies, filtered by SubjectId
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.STARTS_WITH, "CURRENT", ContingencyEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.limitType)), PageRequest.of(0, 2, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
getResultContingenciesWithNestedFilter(lm -> lm.getLimitViolation().getLimitType().equals(LimitViolationType.CURRENT))
- .stream().sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList()
+ .stream().sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList()
.subList(0, 2), 5),
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.CONTAINS, "not_found", ContingencyEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId)), PageRequest.of(0, 2, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
List.of(), 1) // filter by not found limit_violation
);
}
- private Stream provideChildSorting() {
+ private static Stream provideChildSorting() {
return Stream.of(
buildArgumentsForChildrenSorting(
Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId),
@@ -181,7 +184,7 @@ private Stream provideChildSorting() {
);
}
- private Arguments buildArgumentsForChildrenSorting(Sort childrenSort, Comparator childrenComparator) {
+ private static Arguments buildArgumentsForChildrenSorting(Sort childrenSort, Comparator childrenComparator) {
return Arguments.of(
List.of(),
PageRequest.of(0, 5,
@@ -189,22 +192,22 @@ private Arguments buildArgumentsForChildrenSorting(Sort childrenSort, Comparator
.and(childrenSort)),
getResultContingenciesSorted(
childrenComparator,
- Comparator.comparing(this::getContingencyResultDTOId))
+ Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId))
.subList(0, 5), 5);
}
- private Stream provideEachColumnFilter() {
+ private static Stream provideEachColumnFilter() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.CONTAINS, "CO", ContingencyEntity.Fields.status)), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
- RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getStatus().contains("CO")).sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList(), 4),
+ RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getStatus().contains("CO")).sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList(), 4),
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.EQUALS, "ONE", ContingencyEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.side)), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
- getResultContingenciesWithNestedFilter(lm -> lm.getLimitViolation().getSide() != null && lm.getLimitViolation().getSide().equals(ThreeSides.ONE)).stream().sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList(), 4),
+ getResultContingenciesWithNestedFilter(lm -> lm.getLimitViolation().getSide() != null && lm.getLimitViolation().getSide().equals(ThreeSides.ONE)).stream().sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList(), 4),
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.EQUALS, "l6_name", ContingencyEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.limitName)), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
- getResultContingenciesWithNestedFilter(lm -> lm.getLimitViolation().getLimitName().equals("l6_name")).stream().sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList(), 4)
+ getResultContingenciesWithNestedFilter(lm -> lm.getLimitViolation().getLimitName().equals("l6_name")).stream().sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList(), 4)
);
}
- private Stream provideCollectionOfFilters() {
+ private static Stream provideCollectionOfFilters() {
return Stream.of(
Arguments.of(
List.of(
@@ -213,7 +216,7 @@ private Stream provideCollectionOfFilters() {
new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.EQUALS, "CONVERGED", ContingencyEntity.Fields.status)
),
PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
- RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getContingencyId().contains("l") && c.getContingency().getContingencyId().contains("3") && c.getContingency().getStatus().equals("CONVERGED")).sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList(),
+ RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getContingencyId().contains("l") && c.getContingency().getContingencyId().contains("3") && c.getContingency().getStatus().equals("CONVERGED")).sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList(),
4), // list of parent filters
Arguments.of(
List.of(
@@ -221,7 +224,7 @@ private Stream provideCollectionOfFilters() {
new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.EQUALS, "CURRENT", ContingencyEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.limitType)
),
PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
- getResultContingenciesWithNestedFilter(c -> c.getSubjectId().equals("l6") && c.getLimitViolation().getLimitType().equals(LimitViolationType.CURRENT)).stream().sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList(),
+ getResultContingenciesWithNestedFilter(c -> c.getSubjectId().equals("l6") && c.getLimitViolation().getLimitType().equals(LimitViolationType.CURRENT)).stream().sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList(),
4), // list of children filters
Arguments.of(
List.of(
@@ -230,27 +233,27 @@ private Stream provideCollectionOfFilters() {
new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.EQUALS, "CURRENT", ContingencyEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.limitType)
),
PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
- getResultContingenciesWithNestedFilter(c -> c.getLimitViolation().getLimitType().equals(LimitViolationType.CURRENT)).stream().filter(c -> c.getContingency().getContingencyId().contains("1") && c.getContingency().getContingencyId().contains("l")).sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList(),
+ getResultContingenciesWithNestedFilter(c -> c.getLimitViolation().getLimitType().equals(LimitViolationType.CURRENT)).stream().filter(c -> c.getContingency().getContingencyId().contains("1") && c.getContingency().getContingencyId().contains("l")).sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList(),
4) // mix of children and parent filter
);
}
- private Stream provideEdgeCasesFilters() {
+ private static Stream provideEdgeCasesFilters() {
return Stream.of(
- Arguments.of(List.of(), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)), RESULT_CONTINGENCIES.stream().sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList(), 4), // empty list of filter
+ Arguments.of(List.of(), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)), RESULT_CONTINGENCIES.stream().sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList(), 4), // empty list of filter
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.CONTAINS, "co", ContingencyEntity.Fields.status)), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, ContingencyEntity.Fields.contingencyId)),
- RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getStatus().contains("CO")).sorted(Comparator.comparing(this::getContingencyResultDTOId)).toList(), 4) // case insensitive search test
+ RESULT_CONTINGENCIES.stream().filter(c -> c.getContingency().getStatus().contains("CO")).sorted(Comparator.comparing(FindContingenciesTest::getContingencyResultDTOId)).toList(), 4) // case insensitive search test
);
}
- private Stream provideForbiddenSort() {
+ private static Stream provideForbiddenSort() {
return Stream.of(
Arguments.of(List.of(), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, "limitType")), new SecurityAnalysisException(SecurityAnalysisException.Type.INVALID_SORT_FORMAT)),
Arguments.of(List.of(), PageRequest.of(0, 30, Sort.by(Sort.Direction.DESC, "side")), new SecurityAnalysisException(SecurityAnalysisException.Type.INVALID_SORT_FORMAT))
);
}
- private Stream provideForbiddenFilter() {
+ private static Stream provideForbiddenFilter() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.EQUALS, 300, ContingencyEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.limit)), PageRequest.of(0, 30), new IllegalArgumentException("The filter type EQUALS is not supported with the data type NUMBER")),
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.CONTAINS, 300, ContingencyEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.value)), PageRequest.of(0, 30), new IllegalArgumentException("The filter type CONTAINS is not supported with the data type NUMBER")),
@@ -259,7 +262,7 @@ private Stream provideForbiddenFilter() {
);
}
- private String getContingencyResultDTOId(ContingencyResultDTO contingencyResultDTO) {
+ private static String getContingencyResultDTOId(ContingencyResultDTO contingencyResultDTO) {
return contingencyResultDTO.getContingency().getContingencyId();
}
}
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/FindPreContingencyLimitViolationTest.java b/src/test/java/org/gridsuite/securityanalysis/server/FindPreContingencyLimitViolationTest.java
index 9cd6c7c4..c9e934f5 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/FindPreContingencyLimitViolationTest.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/FindPreContingencyLimitViolationTest.java
@@ -44,12 +44,12 @@
@TestInstance(TestInstance.Lifecycle.PER_CLASS) // improve tests speed as we only read DB
class FindPreContingencyLimitViolationTest {
@Autowired
- SecurityAnalysisResultRepository securityAnalysisResultRepository;
+ private SecurityAnalysisResultRepository securityAnalysisResultRepository;
- SecurityAnalysisResultEntity resultEntity;
+ private SecurityAnalysisResultEntity resultEntity;
@Autowired
- SecurityAnalysisResultService securityAnalysisResultService;
+ private SecurityAnalysisResultService securityAnalysisResultService;
@BeforeAll
void setUp() {
@@ -79,14 +79,14 @@ void findFilteredPrecontingencyLimitViolationResultsTest(List
assertSelectCount(expectedSelectCount);
}
- private Stream provideSortOnly() {
+ private static Stream provideSortOnly() {
return Stream.of(
Arguments.of(List.of(), Sort.by(Sort.Direction.ASC, AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId), RESULT_PRECONTINGENCY.stream().sorted(Comparator.comparing(PreContingencyLimitViolationResultDTO::getSubjectId)).toList(), 2),
Arguments.of(List.of(), Sort.by(Sort.Direction.DESC, AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId), RESULT_PRECONTINGENCY.stream().sorted(Comparator.comparing(PreContingencyLimitViolationResultDTO::getSubjectId).reversed()).toList(), 2)
);
}
- private Stream provideParentFilter() {
+ private static Stream provideParentFilter() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.CONTAINS, "3", AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId)), Sort.by(Sort.Direction.ASC, AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId),
RESULT_PRECONTINGENCY.stream().sorted(Comparator.comparing(PreContingencyLimitViolationResultDTO::getSubjectId)).filter(c -> c.getSubjectId().contains("3")).toList(), 2),
@@ -97,7 +97,7 @@ private Stream provideParentFilter() {
);
}
- private Stream provideChildFilter() {
+ private static Stream provideChildFilter() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.CONTAINS, "l6", AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId)), Sort.by(Sort.Direction.ASC, AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId),
getResultPreContingencyWithNestedFilter(p -> p.getSubjectId().contains("l6"))
@@ -108,7 +108,7 @@ private Stream provideChildFilter() {
);
}
- private Stream provideChildFilterWithTolerance() {
+ private static Stream provideChildFilterWithTolerance() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.NOT_EQUAL, "11.02425", AbstractLimitViolationEntity.Fields.value),
new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.LESS_THAN_OR_EQUAL, "10.51243", AbstractLimitViolationEntity.Fields.limit),
@@ -118,7 +118,7 @@ private Stream provideChildFilterWithTolerance() {
);
}
- private Stream provideEachColumnFilter() {
+ private static Stream provideEachColumnFilter() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.EQUALS, "ONE", AbstractLimitViolationEntity.Fields.side)), Sort.by(Sort.Direction.ASC, AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId),
getResultPreContingencyWithNestedFilter(c -> c.getLimitViolation().getSide() != null && c.getLimitViolation().getSide().equals(ThreeSides.ONE)).stream().sorted(Comparator.comparing(PreContingencyLimitViolationResultDTO::getSubjectId)).toList(), 2),
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/FindSubjectLimitViolationsTest.java b/src/test/java/org/gridsuite/securityanalysis/server/FindSubjectLimitViolationsTest.java
index 0ac29d30..8c07fba8 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/FindSubjectLimitViolationsTest.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/FindSubjectLimitViolationsTest.java
@@ -8,7 +8,10 @@
import com.powsybl.iidm.network.ThreeSides;
import com.powsybl.security.LimitViolationType;
-import org.gridsuite.securityanalysis.server.dto.*;
+import org.gridsuite.securityanalysis.server.dto.ContingencyLimitViolationDTO;
+import org.gridsuite.securityanalysis.server.dto.ResourceFilterDTO;
+import org.gridsuite.securityanalysis.server.dto.SecurityAnalysisStatus;
+import org.gridsuite.securityanalysis.server.dto.SubjectLimitViolationResultDTO;
import org.gridsuite.securityanalysis.server.entities.*;
import org.gridsuite.securityanalysis.server.repositories.SecurityAnalysisResultRepository;
import org.gridsuite.securityanalysis.server.repositories.specifications.SpecificationUtils;
@@ -46,12 +49,12 @@
@TestInstance(TestInstance.Lifecycle.PER_CLASS) // improve tests speed as we only read DB
class FindSubjectLimitViolationsTest {
@Autowired
- SecurityAnalysisResultRepository securityAnalysisResultRepository;
+ private SecurityAnalysisResultRepository securityAnalysisResultRepository;
- SecurityAnalysisResultEntity resultEntity;
+ private SecurityAnalysisResultEntity resultEntity;
@Autowired
- SecurityAnalysisResultService securityAnalysisResultService;
+ private SecurityAnalysisResultService securityAnalysisResultService;
@BeforeAll
void setUp() {
@@ -82,7 +85,7 @@ void findFilteredSubjectLimitViolationResultsTest(List filter
assertThat(subjectLimitViolationPage.getContent().stream()
.map(SubjectLimitViolationResultDTO::toDto)
.map(lm -> lm.getContingencies().stream().map(c -> c.getContingency().getContingencyId()).toList()))
- .containsExactlyElementsOf(expectedResult.stream().map(c -> c.getContingencies().stream().map(this::getContingencyLimitViolationDTOContingencyId).toList()).toList());
+ .containsExactlyElementsOf(expectedResult.stream().map(c -> c.getContingencies().stream().map(FindSubjectLimitViolationsTest::getContingencyLimitViolationDTOContingencyId).toList()).toList());
// select count check to prevent potential n+1 problems
// 1 -> parent UUIDs ; empty parents, no count or children request
@@ -101,7 +104,7 @@ void testSortAndFilterErrors(List filters, Pageable pageable,
assertEquals(expectedException.getMessage(), exception.getMessage());
}
- private Stream providePageableAndSortOnly() {
+ private static Stream providePageableAndSortOnly() {
return Stream.of(
Arguments.of(List.of(), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, "subjectId")), RESULT_CONSTRAINTS.stream().sorted(Comparator.comparing(SubjectLimitViolationResultDTO::getSubjectId)).toList(), 4),
Arguments.of(List.of(), PageRequest.of(0, 30, Sort.by(Sort.Direction.DESC, "subjectId")), RESULT_CONSTRAINTS.stream().sorted(Comparator.comparing(SubjectLimitViolationResultDTO::getSubjectId).reversed()).toList(), 4),
@@ -110,7 +113,7 @@ private Stream providePageableAndSortOnly() {
);
}
- private Stream provideParentFilter() {
+ private static Stream provideParentFilter() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.CONTAINS, "3", SubjectLimitViolationEntity.Fields.subjectId)), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, "subjectId")),
RESULT_CONSTRAINTS.stream().sorted(Comparator.comparing(SubjectLimitViolationResultDTO::getSubjectId)).filter(c -> c.getSubjectId().contains("3")).toList(), 4),
@@ -121,7 +124,7 @@ private Stream provideParentFilter() {
);
}
- private Stream provideChildFilter() {
+ private static Stream provideChildFilter() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.CONTAINS, "2", SubjectLimitViolationEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + ContingencyLimitViolationEntity.Fields.contingency + SpecificationUtils.FIELD_SEPARATOR + ContingencyEntity.Fields.contingencyId)), PageRequest.of(0, 2, Sort.by(Sort.Direction.ASC, "subjectId")),
getResultConstraintsWithNestedFilter(c -> c.getContingency().getContingencyId().contains("2"))
@@ -134,7 +137,7 @@ private Stream provideChildFilter() {
);
}
- private Stream provideChildSorting() {
+ private static Stream provideChildSorting() {
return Stream.of(
buildArgumentsForChildrenSorting(
Sort.by(Sort.Direction.ASC, SubjectLimitViolationEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + ContingencyLimitViolationEntity.Fields.contingency + SpecificationUtils.FIELD_SEPARATOR + ContingencyEntity.Fields.contingencyId),
@@ -180,7 +183,7 @@ private Stream provideChildSorting() {
);
}
- private Arguments buildArgumentsForChildrenSorting(Sort childrenSort, Comparator childrenComparator) {
+ private static Arguments buildArgumentsForChildrenSorting(Sort childrenSort, Comparator childrenComparator) {
return Arguments.of(
List.of(),
PageRequest.of(0, 4,
@@ -192,7 +195,7 @@ private Arguments buildArgumentsForChildrenSorting(Sort childrenSort, Comparator
.subList(0, 4), 5);
}
- private Stream provideEachColumnFilter() {
+ private static Stream provideEachColumnFilter() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.CONTAINS, "CO", SubjectLimitViolationEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + ContingencyLimitViolationEntity.Fields.contingency + SpecificationUtils.FIELD_SEPARATOR + ContingencyEntity.Fields.status)), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, "subjectId")),
getResultConstraintsWithNestedFilter(c -> c.getContingency().getStatus().contains("CO")).stream().sorted(Comparator.comparing(SubjectLimitViolationResultDTO::getSubjectId)).toList(), 4),
@@ -203,21 +206,21 @@ private Stream provideEachColumnFilter() {
);
}
- private Stream provideForbiddenSort() {
+ private static Stream provideForbiddenSort() {
return Stream.of(
Arguments.of(List.of(), PageRequest.of(0, 30, Sort.by(Sort.Direction.ASC, "contingencyId")), new SecurityAnalysisException(SecurityAnalysisException.Type.INVALID_SORT_FORMAT)),
Arguments.of(List.of(), PageRequest.of(0, 30, Sort.by(Sort.Direction.DESC, "side")), new SecurityAnalysisException(SecurityAnalysisException.Type.INVALID_SORT_FORMAT))
);
}
- private Stream provideForbiddenFilter() {
+ private static Stream provideForbiddenFilter() {
return Stream.of(
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.CONTAINS, 3, SubjectLimitViolationEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.limit)), PageRequest.of(0, 30), new IllegalArgumentException("The filter type CONTAINS is not supported with the data type NUMBER")),
Arguments.of(List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.EQUALS, 45, SubjectLimitViolationEntity.Fields.contingencyLimitViolations + SpecificationUtils.FIELD_SEPARATOR + AbstractLimitViolationEntity.Fields.value)), PageRequest.of(0, 30), new IllegalArgumentException("The filter type EQUALS is not supported with the data type NUMBER"))
);
}
- private String getContingencyLimitViolationDTOContingencyId(ContingencyLimitViolationDTO contingencyLimitViolationDTO) {
+ private static String getContingencyLimitViolationDTOContingencyId(ContingencyLimitViolationDTO contingencyLimitViolationDTO) {
return contingencyLimitViolationDTO.getContingency().getContingencyId();
}
}
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java b/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java
index 05a9eef7..93b28428 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java
@@ -6,13 +6,13 @@
*/
package org.gridsuite.securityanalysis.server;
+import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.WireMock;
-import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
import com.powsybl.commons.report.ReportNode;
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.ThreeSides;
@@ -24,8 +24,9 @@
import com.powsybl.network.store.client.PreloadingStrategy;
import com.powsybl.network.store.iidm.impl.NetworkFactoryImpl;
import com.powsybl.security.*;
+import com.powsybl.ws.commons.computation.service.ReportService;
+import com.powsybl.ws.commons.computation.service.UuidGeneratorService;
import com.vladmihalcea.sql.SQLStatementCountValidator;
-import lombok.SneakyThrows;
import org.assertj.core.api.Assertions;
import org.gridsuite.securityanalysis.server.dto.*;
import org.gridsuite.securityanalysis.server.entities.AbstractLimitViolationEntity;
@@ -34,25 +35,22 @@
import org.gridsuite.securityanalysis.server.repositories.specifications.SpecificationUtils;
import org.gridsuite.securityanalysis.server.service.ActionsService;
import org.gridsuite.securityanalysis.server.service.LoadFlowService;
-import com.powsybl.ws.commons.computation.service.ReportService;
import org.gridsuite.securityanalysis.server.service.SecurityAnalysisWorkerService;
-import com.powsybl.ws.commons.computation.service.UuidGeneratorService;
import org.gridsuite.securityanalysis.server.util.ContextConfigurationWithTestChannel;
import org.gridsuite.securityanalysis.server.util.CsvExportUtils;
import org.gridsuite.securityanalysis.server.util.MatcherJson;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.mockito.MockitoAnnotations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.cloud.stream.binder.test.OutputDestination;
+import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.messaging.Message;
-import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.util.StreamUtils;
@@ -68,14 +66,15 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
import static com.powsybl.network.store.model.NetworkStoreApi.VERSION;
-import static org.gridsuite.securityanalysis.server.SecurityAnalysisProviderMock.*;
import static com.powsybl.ws.commons.computation.service.NotificationService.*;
+import static org.gridsuite.securityanalysis.server.SecurityAnalysisProviderMock.*;
import static org.gridsuite.securityanalysis.server.service.SecurityAnalysisService.COMPUTATION_TYPE;
import static org.gridsuite.securityanalysis.server.util.DatabaseQueryUtils.assertRequestsCount;
import static org.gridsuite.securityanalysis.server.util.TestUtils.assertLogMessage;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.doNothing;
@@ -89,11 +88,10 @@
* @author Geoffroy Jamgotchian
*/
-@RunWith(SpringRunner.class)
@AutoConfigureMockMvc
@SpringBootTest
@ContextConfigurationWithTestChannel
-public class SecurityAnalysisControllerTest {
+class SecurityAnalysisControllerTest {
private static final UUID NETWORK_UUID = UUID.fromString("7928181c-7977-4592-ba19-88027e4254e4");
private static final UUID NETWORK_STOP_UUID = UUID.fromString("7928181c-7977-4592-ba19-88027e4254e6");
@@ -133,9 +131,9 @@ public class SecurityAnalysisControllerTest {
private ObjectMapper mapper;
@Autowired
- SubjectLimitViolationRepository subjectLimitViolationRepository;
+ private SubjectLimitViolationRepository subjectLimitViolationRepository;
- private final Map enumTranslationsEn = Map.of(
+ private static final Map ENUM_TRANSLATIONS_EN = Map.of(
"ONE", "Side 1",
"TWO", "Side 2",
"CURRENT", "Current",
@@ -145,7 +143,7 @@ public class SecurityAnalysisControllerTest {
"permanent", "IST"
);
- private final Map enumTranslationsFr = Map.of(
+ private static final Map ENUM_TRANSLATIONS_FR = Map.of(
"ONE", "Côté 1",
"TWO", "Côté 2",
"CURRENT", "Intensité",
@@ -155,8 +153,8 @@ public class SecurityAnalysisControllerTest {
"permanent", "IST"
);
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp() throws Exception {
WireMockServer wireMockServer = new WireMockServer(wireMockConfig().dynamicPort());
wireMockServer.start();
@@ -196,7 +194,7 @@ public void setUp() throws Exception {
.specificParameters(Map.of("reactiveRangeCheckMode", "TARGET_P", "plausibleActivePowerLimit", "5000.0"))
.build();
wireMockServer.stubFor(WireMock.get(WireMock.urlMatching("/v1/parameters/.*/values\\?provider=.*"))
- .willReturn(WireMock.ok().withHeader("Content-Type", "application/json").withBody(mapper.writeValueAsString(loadFlowParametersValues))));
+ .willReturn(WireMock.ok().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).withBody(mapper.writeValueAsString(loadFlowParametersValues))));
// purge messages
while (output.receive(1000, "sa.result") != null) {
@@ -213,14 +211,13 @@ public void setUp() throws Exception {
}
// added for testStatus can return null, after runTest
- @After
- public void tearDown() throws Exception {
+ @AfterEach
+ void tearDown() throws Exception {
mockMvc.perform(delete("/" + VERSION + "/results"))
.andExpect(status().isOk());
}
- @SneakyThrows
- public void simpleRunRequest(SecurityAnalysisParametersInfos lfParams) {
+ private void simpleRunRequest(SecurityAnalysisParametersInfos lfParams) throws Exception {
MvcResult mvcResult = mockMvc.perform(post("/" + VERSION + "/networks/" + NETWORK_UUID + "/run?reportType=SecurityAnalysis&contingencyListName=" + CONTINGENCY_LIST_NAME_VARIANT + "&variantId=" + VARIANT_3_ID + "&loadFlowParametersUuid=" + UUID.randomUUID())
.contentType(MediaType.APPLICATION_JSON)
.header(HEADER_USER_ID, "testUserId")
@@ -235,8 +232,7 @@ public void simpleRunRequest(SecurityAnalysisParametersInfos lfParams) {
}
@Test
- @SneakyThrows
- public void runTestWithLFParams() {
+ void runTestWithLFParams() throws Exception {
// run with some empty params
simpleRunRequest(SecurityAnalysisParametersInfos.builder().build());
// with default LFParams
@@ -251,7 +247,7 @@ public void runTestWithLFParams() {
}
@Test
- public void runTest() throws Exception {
+ void runTest() throws Exception {
MvcResult mvcResult;
String resultAsString;
@@ -283,7 +279,7 @@ public void runTest() throws Exception {
}
@Test
- public void runAndSaveTest() throws Exception {
+ void runAndSaveTest() throws Exception {
MvcResult mvcResult;
String resultAsString;
@@ -350,7 +346,7 @@ public void runAndSaveTest() throws Exception {
}
@Test
- public void testDeterministicResults() throws Exception {
+ void testDeterministicResults() throws Exception {
MvcResult mvcResult;
String resultAsString;
SQLStatementCountValidator.reset();
@@ -411,50 +407,35 @@ public void testDeterministicResults() throws Exception {
assertEquals(expectedResultInOrder, result);
}
- private String buildFilterUrl() {
- String filterUrl = "";
- try {
-
- List filters = List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.STARTS_WITH, "vl1", AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId),
- new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.EQUALS, new String[]{"HIGH_VOLTAGE"}, AbstractLimitViolationEntity.Fields.limitType),
- new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.GREATER_THAN_OR_EQUAL, "399", AbstractLimitViolationEntity.Fields.limit),
- new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.LESS_THAN_OR_EQUAL, "420", AbstractLimitViolationEntity.Fields.value),
- new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.NOT_EQUAL, "2", AbstractLimitViolationEntity.Fields.acceptableDuration)
- );
-
- String jsonFilters = new ObjectMapper().writeValueAsString(filters);
-
- filterUrl = "filters=" + URLEncoder.encode(jsonFilters, StandardCharsets.UTF_8);
-
- return filterUrl;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return filterUrl;
+ private static String buildFilterUrl() throws JsonProcessingException {
+ List filters = List.of(new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.STARTS_WITH, "vl1", AbstractLimitViolationEntity.Fields.subjectLimitViolation + SpecificationUtils.FIELD_SEPARATOR + SubjectLimitViolationEntity.Fields.subjectId),
+ new ResourceFilterDTO(ResourceFilterDTO.DataType.TEXT, ResourceFilterDTO.Type.EQUALS, new String[]{"HIGH_VOLTAGE"}, AbstractLimitViolationEntity.Fields.limitType),
+ new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.GREATER_THAN_OR_EQUAL, "399", AbstractLimitViolationEntity.Fields.limit),
+ new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.LESS_THAN_OR_EQUAL, "420", AbstractLimitViolationEntity.Fields.value),
+ new ResourceFilterDTO(ResourceFilterDTO.DataType.NUMBER, ResourceFilterDTO.Type.NOT_EQUAL, "2", AbstractLimitViolationEntity.Fields.acceptableDuration)
+ );
+ String jsonFilters = new ObjectMapper().writeValueAsString(filters);
+ return "filters=" + URLEncoder.encode(jsonFilters, StandardCharsets.UTF_8);
}
private void assertFiltredResultN() throws Exception {
-
MvcResult mvcResult = mockMvc.perform(get("/" + VERSION + "/results/" + RESULT_UUID + "/n-result?" + buildFilterUrl()))
.andExpectAll(
status().isOk(),
content().contentType(MediaType.APPLICATION_JSON)
).andReturn();
String resultAsString = mvcResult.getResponse().getContentAsString();
- List preContingencyResult = mapper.readValue(resultAsString, new TypeReference<>() {
- });
+ List preContingencyResult = mapper.readValue(resultAsString, new TypeReference<>() { });
assertEquals(1, preContingencyResult.size());
}
private void checkNResultEnumFilters(UUID resultUuid) throws Exception {
-
MvcResult mvcResult = mockMvc.perform(get("/" + VERSION + "/results/" + resultUuid + "/n-result"))
.andExpectAll(
status().isOk(),
content().contentType(MediaType.APPLICATION_JSON)).andReturn();
- List nResults = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() {
- });
+ List nResults = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { });
List expectedLimitTypes = nResults.stream().map(result -> result.getLimitViolation().getLimitType()).distinct().toList();
mvcResult = mockMvc.perform(get("/" + VERSION + "/results/{resultUuid}/n-limit-types", resultUuid))
@@ -515,7 +496,7 @@ private void checkNmKResultEnumFilters(UUID resultUuid) throws Exception {
}
@Test
- public void runWithTwoLists() throws Exception {
+ void runWithTwoLists() throws Exception {
MvcResult mvcResult;
String resultAsString;
mvcResult = mockMvc.perform(post("/" + VERSION + "/networks/" + NETWORK_UUID + "/run?reportType=SecurityAnalysis&contingencyListName=" + CONTINGENCY_LIST_NAME +
@@ -532,7 +513,7 @@ public void runWithTwoLists() throws Exception {
}
@Test
- public void deleteResultsTest() throws Exception {
+ void deleteResultsTest() throws Exception {
MvcResult mvcResult;
String resultAsString;
@@ -557,7 +538,7 @@ public void deleteResultsTest() throws Exception {
}
@Test
- public void testStatus() throws Exception {
+ void testStatus() throws Exception {
MvcResult mvcResult;
String resultAsString;
@@ -620,7 +601,7 @@ public void testStatus() throws Exception {
}
@Test
- public void stopTest() throws Exception {
+ void stopTest() throws Exception {
countDownLatch = new CountDownLatch(1);
new Thread(() -> {
@@ -659,7 +640,7 @@ public void stopTest() throws Exception {
}
@Test
- public void testStopAndFail() throws Exception {
+ void testStopAndFail() throws Exception {
UUID randomUuid = UUID.randomUUID();
mockMvc.perform(put("/" + VERSION + "/results/" + randomUuid + "/stop" + "?receiver=me")
.header(HEADER_USER_ID, "testUserId"))
@@ -672,7 +653,7 @@ public void testStopAndFail() throws Exception {
}
@Test
- public void runTestWithError() throws Exception {
+ void runTestWithError() throws Exception {
MvcResult mvcResult;
String resultAsString;
@@ -703,7 +684,7 @@ public void runTestWithError() throws Exception {
}
@Test
- public void runWithReportTest() throws Exception {
+ void runWithReportTest() throws Exception {
MvcResult mvcResult;
String resultAsString;
@@ -721,7 +702,7 @@ public void runWithReportTest() throws Exception {
}
@Test
- public void runWithReportTestElementsNotFoundAndNotConnected() throws Exception {
+ void runWithReportTestElementsNotFoundAndNotConnected() throws Exception {
MvcResult mvcResult;
String resultAsString;
@@ -750,7 +731,7 @@ public void runWithReportTestElementsNotFoundAndNotConnected() throws Exception
}
@Test
- public void getProvidersTest() throws Exception {
+ void getProvidersTest() throws Exception {
MvcResult mvcResult;
String resultAsString;
@@ -761,13 +742,12 @@ public void getProvidersTest() throws Exception {
).andReturn();
resultAsString = mvcResult.getResponse().getContentAsString();
- List providers = mapper.readValue(resultAsString, new TypeReference<>() {
- });
+ List providers = mapper.readValue(resultAsString, new TypeReference<>() { });
assertEquals(List.of("DynaFlow", "OpenLoadFlow"), providers);
}
@Test
- public void getDefaultProviderTest() throws Exception {
+ void getDefaultProviderTest() throws Exception {
mockMvc.perform(get("/" + VERSION + "/default-provider"))
.andExpectAll(
status().isOk(),
@@ -777,7 +757,7 @@ public void getDefaultProviderTest() throws Exception {
}
@Test
- public void getZippedCsvResults() throws Exception {
+ void getZippedCsvResults() throws Exception {
// running computation to create result
MvcResult mvcResult = mockMvc.perform(post("/" + VERSION + "/networks/" + NETWORK_UUID + "/run-and-save?reportType=SecurityAnalysis&contingencyListName=" + CONTINGENCY_LIST_NAME
+ "&receiver=me&variantId=" + VARIANT_2_ID + "&provider=OpenLoadFlow" + "&loadFlowParametersUuid=" + UUID.randomUUID())
@@ -799,12 +779,12 @@ public void getZippedCsvResults() throws Exception {
checkAllZippedCsvResults();
}
- public void checkAllZippedCsvResults() throws Exception {
+ private void checkAllZippedCsvResults() throws Exception {
SQLStatementCountValidator.reset();
checkZippedCsvResult("n-result", "/results/n-result-en.csv",
CsvTranslationDTO.builder()
.headers(List.of("Equipment", "Violation type", "Limit name", "Limit value (A or kV)", "Calculated value (A or kV)", "Load (%)", "Overload", "Side"))
- .enumValueTranslations(enumTranslationsEn)
+ .enumValueTranslations(ENUM_TRANSLATIONS_EN)
.build());
/*
* SELECT
@@ -817,7 +797,7 @@ public void checkAllZippedCsvResults() throws Exception {
checkZippedCsvResult("n-result", "/results/n-result-fr.csv",
CsvTranslationDTO.builder()
.headers(List.of("Ouvrage", "Type de contrainte", "Nom du seuil", "Valeur du seuil (A ou kV)", "Valeur calculée (A ou kV)", "Charge (%)", "Surcharge", "Côté"))
- .enumValueTranslations(enumTranslationsFr)
+ .enumValueTranslations(ENUM_TRANSLATIONS_FR)
.build());
assertRequestsCount(2, 0, 0, 0);
@@ -825,7 +805,7 @@ public void checkAllZippedCsvResults() throws Exception {
checkZippedCsvResult("nmk-contingencies-result", "/results/nmk-contingencies-result-en.csv",
CsvTranslationDTO.builder()
.headers(List.of("Contingency ID", "Status", "Constraint", "Violation type", "Limit name", "Limit value (A or kV)", "Calculated value (A or kV)", "Load (%)", "Overload", "Side"))
- .enumValueTranslations(enumTranslationsEn)
+ .enumValueTranslations(ENUM_TRANSLATIONS_EN)
.build());
/*
* SELECT
@@ -840,7 +820,7 @@ public void checkAllZippedCsvResults() throws Exception {
checkZippedCsvResult("nmk-contingencies-result", "/results/nmk-contingencies-result-fr.csv",
CsvTranslationDTO.builder()
.headers(List.of("Id aléa", "Statut", "Contrainte", "Type de contrainte", "Nom du seuil", "Valeur du seuil (A ou kV)", "Charge (%)", "Surcharge", "Côté"))
- .enumValueTranslations(enumTranslationsFr)
+ .enumValueTranslations(ENUM_TRANSLATIONS_FR)
.build());
assertRequestsCount(4, 0, 0, 0);
@@ -848,7 +828,7 @@ public void checkAllZippedCsvResults() throws Exception {
checkZippedCsvResult("nmk-constraints-result", "/results/nmk-constraints-result-en.csv",
CsvTranslationDTO.builder()
.headers(List.of("Constraint", "Contingency ID", "Status", "Violation type", "Limit name", "Limit value (A or kV)", "Calculated value (A or kV)", "Load (%)", "Overload", "Side"))
- .enumValueTranslations(enumTranslationsEn)
+ .enumValueTranslations(ENUM_TRANSLATIONS_EN)
.build());
/*
* SELECT
@@ -863,12 +843,12 @@ public void checkAllZippedCsvResults() throws Exception {
checkZippedCsvResult("nmk-constraints-result", "/results/nmk-constraints-result-fr.csv",
CsvTranslationDTO.builder()
.headers(List.of("Contrainte", "ID aléa", "Statut", "Type de contrainte", "Nom du seuil", "Valeur du seuil (A ou kV)", "Valeur calculée (A ou kV)", "Charge (%)", "Surcharge", "Côté"))
- .enumValueTranslations(enumTranslationsFr)
+ .enumValueTranslations(ENUM_TRANSLATIONS_FR)
.build());
assertRequestsCount(4, 0, 0, 0);
}
- public void checkZippedCsvResult(String resultType, String resourcePath, CsvTranslationDTO csvTranslationDTO) throws Exception {
+ private void checkZippedCsvResult(String resultType, String resourcePath, CsvTranslationDTO csvTranslationDTO) throws Exception {
// get csv file
byte[] resultAsByteArray = mockMvc.perform(post("/" + VERSION + "/results/" + RESULT_UUID + "/" + resultType + "/csv")
.contentType(MediaType.APPLICATION_JSON)
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersControllerTest.java b/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersControllerTest.java
index d43cbdc5..1afe2c3a 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersControllerTest.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisParametersControllerTest.java
@@ -16,14 +16,12 @@
import org.gridsuite.securityanalysis.server.util.ContextConfigurationWithTestChannel;
import org.gridsuite.securityanalysis.server.util.MatcherJson;
import org.gridsuite.securityanalysis.server.util.SecurityAnalysisException;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
-import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
@@ -33,7 +31,7 @@
import static com.powsybl.network.store.model.NetworkStoreApi.VERSION;
import static org.gridsuite.securityanalysis.server.util.SecurityAnalysisException.Type.PARAMETERS_NOT_FOUND;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@@ -41,11 +39,10 @@
/**
* @author Abdelsalem Hedhili
*/
-@RunWith(SpringRunner.class)
@AutoConfigureMockMvc
@SpringBootTest
@ContextConfigurationWithTestChannel
-public class SecurityAnalysisParametersControllerTest {
+class SecurityAnalysisParametersControllerTest {
@Autowired
private MockMvc mockMvc;
@@ -66,7 +63,7 @@ public class SecurityAnalysisParametersControllerTest {
private LimitReductionService limitReductionService;
@Test
- public void limitReductionConfigTest() {
+ void limitReductionConfigTest() {
List limitReductions = limitReductionService.createDefaultLimitReductions();
assertNotNull(limitReductions);
assertFalse(limitReductions.isEmpty());
@@ -107,7 +104,7 @@ public void limitReductionConfigTest() {
}
@Test
- public void securityAnalysisParametersCreateAndGetTest() throws Exception {
+ void securityAnalysisParametersCreateAndGetTest() throws Exception {
// Create parameters
List> limitReductions = List.of(List.of(1.0, 0.9, 0.8, 0.7), List.of(1.0, 0.9, 0.8, 0.7));
SecurityAnalysisParametersValues.SecurityAnalysisParametersValuesBuilder builder = SecurityAnalysisParametersValues.builder()
@@ -174,7 +171,7 @@ private void testParametersCreateAndGetTest(SecurityAnalysisParametersValues par
}
@Test
- public void securityAnalysisParametersUpdateTest() throws Exception {
+ void securityAnalysisParametersUpdateTest() throws Exception {
MvcResult mvcResult;
String resultAsString;
@@ -260,7 +257,7 @@ public void securityAnalysisParametersUpdateTest() throws Exception {
}
@Test
- public void testDuplicateParameters() throws Exception {
+ void testDuplicateParameters() throws Exception {
MvcResult mvcResult;
String resultAsString;
@@ -309,7 +306,7 @@ public void testDuplicateParameters() throws Exception {
}
@Test
- public void testRemoveParameters() throws Exception {
+ void testRemoveParameters() throws Exception {
MvcResult mvcResult;
String resultAsString;
@@ -344,7 +341,7 @@ public void testRemoveParameters() throws Exception {
assertNull(securityAnalysisParametersRepository.findById(createdParametersUuid).orElse(null));
}
- public void assertSecurityAnalysisParametersEntityAreEquals(UUID parametersUuid, double lowVoltageAbsoluteThreshold, double lowVoltageProportionalThreshold, double highVoltageAbsoluteThreshold, double highVoltageProportionalThreshold, double flowProportionalThreshold) {
+ private void assertSecurityAnalysisParametersEntityAreEquals(UUID parametersUuid, double lowVoltageAbsoluteThreshold, double lowVoltageProportionalThreshold, double highVoltageAbsoluteThreshold, double highVoltageProportionalThreshold, double flowProportionalThreshold) {
SecurityAnalysisParametersEntity securityAnalysisParametersEntity = securityAnalysisParametersRepository.findById(parametersUuid).orElseThrow();
assertEquals(lowVoltageAbsoluteThreshold, securityAnalysisParametersEntity.getLowVoltageAbsoluteThreshold(), 0.001);
assertEquals(lowVoltageProportionalThreshold, securityAnalysisParametersEntity.getLowVoltageProportionalThreshold(), 0.001);
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/SupervisionControllerTest.java b/src/test/java/org/gridsuite/securityanalysis/server/SupervisionControllerTest.java
index 8f9da956..581adf1d 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/SupervisionControllerTest.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/SupervisionControllerTest.java
@@ -6,30 +6,28 @@
*/
package org.gridsuite.securityanalysis.server;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* @author Hugo Marcellin
*/
-@RunWith(SpringRunner.class)
@AutoConfigureMockMvc
@SpringBootTest
-public class SupervisionControllerTest {
+class SupervisionControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
- public void testResultCount() throws Exception {
+ void testResultCount() throws Exception {
//get the result timeline uuid of the calculation
mockMvc.perform(get("/v1/supervision/results-count"))
.andExpectAll(
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/service/ActionsServiceTest.java b/src/test/java/org/gridsuite/securityanalysis/server/service/ActionsServiceTest.java
index b1a1439e..f3ba6b34 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/service/ActionsServiceTest.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/service/ActionsServiceTest.java
@@ -9,22 +9,24 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.powsybl.contingency.BranchContingency;
import com.powsybl.contingency.Contingency;
+import mockwebserver3.Dispatcher;
+import mockwebserver3.MockResponse;
+import mockwebserver3.MockWebServer;
+import mockwebserver3.RecordedRequest;
+import mockwebserver3.junit5.internal.MockWebServerExtension;
+import okhttp3.Headers;
import okhttp3.HttpUrl;
-import okhttp3.mockwebserver.Dispatcher;
-import okhttp3.mockwebserver.MockResponse;
-import okhttp3.mockwebserver.MockWebServer;
-import okhttp3.mockwebserver.RecordedRequest;
import org.gridsuite.securityanalysis.server.dto.ContingencyInfos;
import org.gridsuite.securityanalysis.server.util.ContextConfigurationWithTestChannel;
import org.jetbrains.annotations.NotNull;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.http.MediaType;
import java.io.IOException;
import java.util.List;
@@ -35,17 +37,17 @@
import java.util.stream.IntStream;
import java.util.stream.Stream;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* @author Geoffroy Jamgotchian
* @author Slimane Amar
*/
+@ExtendWith(MockWebServerExtension.class)
@SpringBootTest
-@RunWith(SpringRunner.class)
@ContextConfigurationWithTestChannel
-public class ActionsServiceTest {
+class ActionsServiceTest {
private static final int DATA_BUFFER_LIMIT = 256 * 1024; // AbstractJackson2Decoder.maxInMemorySize
@@ -66,30 +68,16 @@ public class ActionsServiceTest {
@Autowired
private ObjectMapper objectMapper;
- private MockWebServer server;
-
@Autowired
private ActionsService actionsService;
- @Before
- public void setUp() throws IOException {
- String mockServerUri = initMockWebServer();
+ @BeforeEach
+ void setUp(final MockWebServer mockWebServer) throws Exception {
+ final String mockServerUri = initMockWebServer(mockWebServer);
actionsService.setActionServiceBaseUri(mockServerUri);
}
- @After
- public void tearDown() {
- try {
- server.shutdown();
- } catch (Exception e) {
- // Nothing to do
- }
- }
-
- private String initMockWebServer() throws IOException {
- server = new MockWebServer();
- server.start();
-
+ private String initMockWebServer(final MockWebServer server) throws IOException {
String jsonExpected = objectMapper.writeValueAsString(List.of(CONTINGENCY));
String veryLargeJsonExpected = objectMapper.writeValueAsString(createVeryLargeList());
String jsonVariantExpected = objectMapper.writeValueAsString(List.of(CONTINGENCY_VARIANT));
@@ -100,26 +88,17 @@ private String initMockWebServer() throws IOException {
@Override
public MockResponse dispatch(RecordedRequest request) {
String requestPath = Objects.requireNonNull(request.getPath());
-
if (requestPath.equals(String.format("/v1/contingency-lists/contingency-infos/export?networkUuid=%s&variantId=%s&ids=%s", NETWORK_UUID, VARIANT_ID, LIST_NAME))) {
- return new MockResponse().setResponseCode(HttpStatus.OK.value())
- .setBody(jsonVariantExpected)
- .addHeader("Content-Type", "application/json; charset=utf-8");
+ return new MockResponse(HttpStatus.OK.value(), Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), jsonVariantExpected);
} else if (requestPath.equals(String.format("/v1/contingency-lists/contingency-infos/export?networkUuid=%s&ids=%s", NETWORK_UUID, LIST_NAME))) {
- return new MockResponse().setResponseCode(HttpStatus.OK.value())
- .setBody(jsonExpected)
- .addHeader("Content-Type", "application/json; charset=utf-8");
+ return new MockResponse(HttpStatus.OK.value(), Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), jsonExpected);
} else if (requestPath.equals(String.format("/v1/contingency-lists/contingency-infos/export?networkUuid=%s&variantId=%s&ids=%s", NETWORK_UUID, VARIANT_ID, VERY_LARGE_LIST_NAME))
|| requestPath.equals(String.format("/v1/contingency-lists/contingency-infos/export?networkUuid=%s&ids=%s", NETWORK_UUID, VERY_LARGE_LIST_NAME))) {
- return new MockResponse().setResponseCode(HttpStatus.OK.value())
- .setBody(veryLargeJsonExpected)
- .addHeader("Content-Type", "application/json; charset=utf-8");
+ return new MockResponse(HttpStatus.OK.value(), Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), veryLargeJsonExpected);
} else if (requestPath.equals(String.format("/v1/contingency-lists/contingency-infos/export?networkUuid=%s&ids=%s&ids=%s", NETWORK_UUID, LIST_NAME, LIST_NAME_VARIANT))) {
- return new MockResponse().setResponseCode(HttpStatus.OK.value())
- .setBody(jsonExpectedForList)
- .addHeader("Content-Type", "application/json; charset=utf-8");
+ return new MockResponse(HttpStatus.OK.value(), Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), jsonExpectedForList);
} else {
- return new MockResponse().setResponseCode(HttpStatus.NOT_FOUND.value()).setBody("Path not supported: " + request.getPath());
+ return new MockResponse.Builder().code(HttpStatus.NOT_FOUND.value()).body("Path not supported: " + request.getPath()).build();
}
}
};
@@ -132,12 +111,12 @@ public MockResponse dispatch(RecordedRequest request) {
return baseHttpUrl.toString().substring(0, baseHttpUrl.toString().length() - 1);
}
- private List createVeryLargeList() {
+ private static List createVeryLargeList() {
return IntStream.range(0, DATA_BUFFER_LIMIT).mapToObj(i -> new ContingencyInfos(new Contingency("l" + i, new BranchContingency("l" + i)))).collect(Collectors.toList());
}
@Test
- public void test() {
+ void test() {
List list = actionsService.getContingencyList(List.of(LIST_NAME), UUID.fromString(NETWORK_UUID), null);
list.forEach(contingencyInfos -> assertArrayEquals(List.of(WRONG_ID).toArray(new Object[0]), contingencyInfos.getNotFoundElements().toArray(new String[0])));
assertEquals(Stream.of(CONTINGENCY).map(ContingencyInfos::getContingency).toList(), list.stream().map(ContingencyInfos::getContingency).collect(Collectors.toList()));
@@ -146,7 +125,7 @@ public void test() {
}
@Test
- public void testVeryLargeList() {
+ void testVeryLargeList() {
// DataBufferLimitException should not be thrown with this message : "Exceeded limit on max bytes to buffer : DATA_BUFFER_LIMIT"
List list = actionsService.getContingencyList(List.of(VERY_LARGE_LIST_NAME), UUID.fromString(NETWORK_UUID), null);
list.forEach(contingencyInfos -> assertArrayEquals(List.of().toArray(new Object[0]), contingencyInfos.getNotFoundElements().toArray(new String[0])));
@@ -156,7 +135,7 @@ public void testVeryLargeList() {
}
@Test
- public void testGetContingenciesByListOfIds() {
+ void testGetContingenciesByListOfIds() {
List list = actionsService.getContingencyList(List.of(LIST_NAME, LIST_NAME_VARIANT), UUID.fromString(NETWORK_UUID), null);
assertEquals(Stream.of(CONTINGENCY, CONTINGENCY_VARIANT).map(ContingencyInfos::getContingency).toList(), list.stream().map(ContingencyInfos::getContingency).collect(Collectors.toList()));
}
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisResultServiceTest.java b/src/test/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisResultServiceTest.java
index 4ceff6ca..e970a378 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisResultServiceTest.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisResultServiceTest.java
@@ -4,7 +4,6 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-
package org.gridsuite.securityanalysis.server.service;
import com.vladmihalcea.sql.SQLStatementCountValidator;
@@ -25,7 +24,7 @@
class SecurityAnalysisResultServiceTest {
@Autowired
- SecurityAnalysisResultService securityAnalysisResultService;
+ private SecurityAnalysisResultService securityAnalysisResultService;
@Test
void deleteResultPerfTest() {
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/util/DatabaseQueryUtils.java b/src/test/java/org/gridsuite/securityanalysis/server/util/DatabaseQueryUtils.java
index 6b8ec4e9..47be3cd2 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/util/DatabaseQueryUtils.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/util/DatabaseQueryUtils.java
@@ -7,7 +7,6 @@
package org.gridsuite.securityanalysis.server.util;
import static com.vladmihalcea.sql.SQLStatementCountValidator.*;
-import static com.vladmihalcea.sql.SQLStatementCountValidator.assertDeleteCount;
public final class DatabaseQueryUtils {
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/util/DatasourceProxyBeanPostProcessor.java b/src/test/java/org/gridsuite/securityanalysis/server/util/DatasourceProxyBeanPostProcessor.java
index c7341dc1..02b903d6 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/util/DatasourceProxyBeanPostProcessor.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/util/DatasourceProxyBeanPostProcessor.java
@@ -22,15 +22,15 @@
import javax.sql.DataSource;
import java.lang.reflect.Method;
-@Component
/**
* The author of db-utils describes its library in https://vladmihalcea.com/how-to-detect-the-n-plus-one-query-problem-during-testing/
- * But the recommended method to select the datasource (using @bean public DataSource dataSource(DataSource originalDataSource) {...} )
+ * But the recommended method to select the datasource (using {@code @bean public DataSource dataSource(DataSource originalDataSource) {...}} )
* doesn't work when you use the spring default profile for tests
- * It crashes with this exception : java.lang.IllegalStateException: Failed to load ApplicationContext : org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'dataSource': Requested bean is currently in creation: Is there an unresolvable circular reference
+ * It crashes with this exception : {@literal java.lang.IllegalStateException: Failed to load ApplicationContext : org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'dataSource': Requested bean is currently in creation: Is there an unresolvable circular reference}
* Instead, the underlying datasource-proxy library author recommends to use a BeanPostProcessor:
* https://github.com/ttddyy/datasource-proxy-examples/blob/master/springboot-autoconfig-example/src/main/java/net/ttddyy/dsproxy/example/DatasourceProxyBeanPostProcessor.java
*/
+@Component
public class DatasourceProxyBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) {
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/util/MatcherJson.java b/src/test/java/org/gridsuite/securityanalysis/server/util/MatcherJson.java
index d6ccaf9f..c28f7a01 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/util/MatcherJson.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/util/MatcherJson.java
@@ -6,11 +6,10 @@
*/
package org.gridsuite.securityanalysis.server.util;
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeMatcher;
-
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows;
+import org.hamcrest.Description;
+import org.hamcrest.TypeSafeMatcher;
/**
* @author Slimane Amar
@@ -40,8 +39,8 @@ public void describeTo(Description description) {
}
@SneakyThrows
+ @Override
protected void describeMismatchSafely(T item, Description mismatchDescription) {
mismatchDescription.appendText("was ").appendText(mapper.writeValueAsString(item));
}
-
}
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/util/SecurityAnalysisRunnerSupplierTest.java b/src/test/java/org/gridsuite/securityanalysis/server/util/SecurityAnalysisRunnerSupplierTest.java
index df8424a9..5fbeda21 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/util/SecurityAnalysisRunnerSupplierTest.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/util/SecurityAnalysisRunnerSupplierTest.java
@@ -7,30 +7,28 @@
package org.gridsuite.securityanalysis.server.util;
import com.powsybl.commons.PowsyblException;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
/**
* @author Geoffroy Jamgotchian
*/
-@RunWith(SpringRunner.class)
@SpringBootTest
-public class SecurityAnalysisRunnerSupplierTest {
+class SecurityAnalysisRunnerSupplierTest {
@Value("${security-analysis.default-provider}")
- String defaultSecurityAnalysisProvider;
+ private String defaultSecurityAnalysisProvider;
@Autowired
- SecurityAnalysisRunnerSupplier securityAnalysisRunnerSupplier;
+ private SecurityAnalysisRunnerSupplier securityAnalysisRunnerSupplier;
@Test
- public void test() {
+ void test() {
assertEquals("OpenLoadFlow", securityAnalysisRunnerSupplier.getRunner("OpenLoadFlow").getName());
assertEquals("DynaFlow", securityAnalysisRunnerSupplier.getRunner("DynaFlow").getName());
assertEquals(defaultSecurityAnalysisProvider, securityAnalysisRunnerSupplier.getRunner(null).getName());
diff --git a/src/test/java/org/gridsuite/securityanalysis/server/util/TestUtils.java b/src/test/java/org/gridsuite/securityanalysis/server/util/TestUtils.java
index 1ababe8f..c4ae88c9 100644
--- a/src/test/java/org/gridsuite/securityanalysis/server/util/TestUtils.java
+++ b/src/test/java/org/gridsuite/securityanalysis/server/util/TestUtils.java
@@ -9,7 +9,7 @@
import java.util.Optional;
import java.util.UUID;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.verify;
@@ -17,6 +17,7 @@
public final class TestUtils {
private TestUtils() {
+ throw new IllegalStateException("Utility class");
}
public static void assertLogNthMessage(String expectedMessage, String reportKey, ReportService reportService, int rank) {