diff --git a/pom.xml b/pom.xml index 7909af86f..cdb7ebef6 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ - 43.0.0 + 43.2.0 1.0.5 5.0.0-alpha.14 org.gridsuite.modification.server @@ -56,6 +56,7 @@ 1.31.0 2.14.1 + 1.7.0 @@ -123,6 +124,13 @@ ${powsybl-balances-adjustment.version} + + + org.gridsuite + gridsuite-filter + ${gridsuite-filter.version} + + org.gridsuite diff --git a/src/main/java/org/gridsuite/modification/server/NetworkModificationApplication.java b/src/main/java/org/gridsuite/modification/server/NetworkModificationApplication.java index 3881d8723..55cacaacf 100644 --- a/src/main/java/org/gridsuite/modification/server/NetworkModificationApplication.java +++ b/src/main/java/org/gridsuite/modification/server/NetworkModificationApplication.java @@ -7,8 +7,15 @@ package org.gridsuite.modification.server; import com.powsybl.network.store.client.NetworkStoreService; +import com.powsybl.network.store.client.PreloadingStrategy; +import com.powsybl.network.store.client.RestClientImpl; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Primary; /** * @author Franck Lecuyer @@ -19,4 +26,20 @@ public class NetworkModificationApplication { public static void main(String[] args) { SpringApplication.run(NetworkModificationApplication.class, args); } + + + // Override NetworkStoreService defined in the lib network-store-client + // because it always autodetects the resttemplate httpclient from the classpath + // instead of using the resttemplatebuilder that can be controlled by runtime configuration/ + @Primary + @Bean + public NetworkStoreService networkstoreservice( + @Value("${powsybl.services.network-store-server.base-uri:http://network-store-server/}") String baseUri, + @Value("${powsybl.services.network-store-server.preloading-strategy:NONE}") PreloadingStrategy defaultPreloadingStrategy + ) { + RestTemplateBuilder builder = RestClientImpl.createRestTemplateBuilder(baseUri); + builder = builder.requestFactoryBuilder(ClientHttpRequestFactoryBuilder.simple()); + RestClientImpl restClient = new RestClientImpl(builder); + return new NetworkStoreService(restClient, defaultPreloadingStrategy); + } } diff --git a/src/main/java/org/gridsuite/modification/server/entities/ModificationApplicationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/ModificationApplicationEntity.java index 4797eabef..30bec2237 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/ModificationApplicationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/ModificationApplicationEntity.java @@ -18,7 +18,6 @@ * @author Kevin Le Saulnier */ @Builder -@Embeddable @AllArgsConstructor @NoArgsConstructor @Setter diff --git a/src/main/java/org/gridsuite/modification/server/entities/ModificationGroupEntity.java b/src/main/java/org/gridsuite/modification/server/entities/ModificationGroupEntity.java index a7c5ec30f..48a0b04a6 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/ModificationGroupEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/ModificationGroupEntity.java @@ -29,7 +29,8 @@ public class ModificationGroupEntity extends AbstractManuallyAssignedIdentifierE @OneToMany( mappedBy = "group", - cascade = CascadeType.ALL + //Remove is not here because we handle the deletion manually + cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH} ) @OrderBy("modificationsOrder asc") private List modifications = new ArrayList<>(); diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/AbstractShuntCompensatorEmbeddable.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/AbstractShuntCompensatorEmbeddable.java index 5efb27669..ee55b25cb 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/AbstractShuntCompensatorEmbeddable.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/AbstractShuntCompensatorEmbeddable.java @@ -8,7 +8,6 @@ package org.gridsuite.modification.server.entities.equipment.modification; import jakarta.persistence.Column; -import jakarta.persistence.Embeddable; import jakarta.persistence.MappedSuperclass; import lombok.AllArgsConstructor; import lombok.Getter; @@ -17,7 +16,6 @@ @NoArgsConstructor @AllArgsConstructor @Getter -@Embeddable @MappedSuperclass public abstract class AbstractShuntCompensatorEmbeddable { @Column(name = "shunt_compensator_id") diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/GeneratorScalingEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/GeneratorScalingEntity.java index c1ffe564a..2d6d69746 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/GeneratorScalingEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/GeneratorScalingEntity.java @@ -22,7 +22,7 @@ @Getter @Setter @Entity -@EqualsAndHashCode +@EqualsAndHashCode(callSuper = false) @Table(name = "GeneratorScaling") public class GeneratorScalingEntity extends ScalingEntity { diff --git a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java index 079a9de30..757932c02 100644 --- a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java +++ b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java @@ -460,8 +460,10 @@ public void deleteModificationGroup(UUID groupUuid, boolean errorOnGroupNotFound try { ModificationGroupEntity groupEntity = getModificationGroup(groupUuid); if (!groupEntity.getModifications().isEmpty()) { - deleteModifications(groupEntity.getModifications().stream().filter(Objects::nonNull).toList()); - groupEntity.getModifications().clear(); + //TODO: is there a way to avoid doing this setGroup(null) that triggers a useless update since the entity will be deleted right after + groupEntity.getModifications().forEach(modif -> modif.setGroup(null)); + List modifications = groupEntity.getModifications(); + deleteModifications(modifications.stream().filter(Objects::nonNull).toList()); } modificationGroupRepository.delete(groupEntity); } catch (NetworkModificationException e) { diff --git a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java index 94dcc8e3a..e2520b5dd 100644 --- a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java +++ b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java @@ -19,7 +19,6 @@ import com.powsybl.network.store.client.NetworkStoreService; import com.powsybl.network.store.client.PreloadingStrategy; import com.powsybl.network.store.iidm.impl.NetworkFactoryImpl; -import jakarta.servlet.ServletException; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.tuple.Pair; import org.gridsuite.modification.NetworkModificationException; @@ -52,9 +51,9 @@ 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.http.MediaType; import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; @@ -118,13 +117,13 @@ class ModificationControllerTest { @Autowired private ObjectMapper mapper; - @MockBean + @MockitoBean private NetworkStoreService networkStoreService; @Autowired private NetworkModificationRepository modificationRepository; - @MockBean + @MockitoBean private ReportService reportService; @Autowired @@ -1613,11 +1612,16 @@ private MockMultipartFile createMockMultipartFile(String fileName) throws IOExce } @Test - void testPostLineTypeWithLimitsCatalogError() throws IOException { + void testPostLineTypeWithLimitsCatalogError() throws Exception { MockMultipartHttpServletRequestBuilder mockMultipartHttpServletRequestBuilder = multipart(URI_LINE_CATALOG) .file(createMockMultipartFile(NOT_EXISTING_JSON_FILE)); - String message = assertThrows(ServletException.class, () -> mockMvc.perform(mockMultipartHttpServletRequestBuilder)).getMessage(); - assertEquals("Request processing failed: java.io.UncheckedIOException: java.io.EOFException", message); + + mockMvc.perform(mockMultipartHttpServletRequestBuilder) + .andExpect(result -> { + assertNotNull(result.getResolvedException()); + assertEquals("java.io.EOFException", + result.getResolvedException().getMessage()); + }); } @Test diff --git a/src/test/java/org/gridsuite/modification/server/SupervisionControllerTest.java b/src/test/java/org/gridsuite/modification/server/SupervisionControllerTest.java index ed82d0f93..4d91449bc 100644 --- a/src/test/java/org/gridsuite/modification/server/SupervisionControllerTest.java +++ b/src/test/java/org/gridsuite/modification/server/SupervisionControllerTest.java @@ -9,7 +9,7 @@ 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.SpyBean; +import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; import org.springframework.test.web.servlet.MockMvc; import java.util.UUID; @@ -24,7 +24,7 @@ @SpringBootTest @DisableElasticsearch class SupervisionControllerTest { - @SpyBean + @MockitoSpyBean private SupervisionService supervisionService; @Autowired diff --git a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java index 30a64efda..1d547bff9 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java @@ -35,8 +35,8 @@ 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.http.MediaType; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; @@ -70,7 +70,6 @@ public abstract class AbstractNetworkModificationTest { private static final UUID TEST_NETWORK_ID = UUID.randomUUID(); private static final UUID NOT_FOUND_NETWORK_ID = UUID.randomUUID(); protected static final UUID TEST_GROUP_ID = UUID.randomUUID(); - private static final UUID TEST_REPORT_ID = UUID.randomUUID(); private static final String URI_NETWORK_MODIF_BASE = "/v1/network-modifications"; private static final String URI_NETWORK_MODIF_GET_PUT = URI_NETWORK_MODIF_BASE + "/"; @@ -83,10 +82,10 @@ public abstract class AbstractNetworkModificationTest { protected WireMockUtils wireMockUtils; - @MockBean + @MockitoBean private NetworkStoreService networkStoreService; - @MockBean + @MockitoBean protected ReportService reportService; @Autowired diff --git a/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java b/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java index f73ed15a0..f5333aecb 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/BalancesAdjustmentTest.java @@ -16,13 +16,14 @@ import org.gridsuite.modification.server.dto.NetworkModificationsResult; import org.gridsuite.modification.server.service.LoadFlowService; import org.gridsuite.modification.server.NetworkModificationServerException; +import org.gridsuite.modification.server.utils.elasticsearch.DisableElasticsearch; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MvcResult; import org.springframework.web.client.HttpStatusCodeException; @@ -40,12 +41,13 @@ * @author Joris Mancini */ @Tag("IntegrationTest") +@DisableElasticsearch class BalancesAdjustmentTest extends AbstractNetworkModificationTest { private static final UUID LOADFLOW_PARAMETERS_UUID = UUID.randomUUID(); private static final UUID NON_EXISTENT_LOADFLOW_PARAMETERS_UUID = UUID.randomUUID(); private static final UUID ERROR_LOADFLOW_PARAMETERS_UUID = UUID.randomUUID(); - @MockBean + @MockitoBean private LoadFlowService loadFlowService; @BeforeEach diff --git a/src/test/java/org/gridsuite/modification/server/modifications/CompositeModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/CompositeModificationsTest.java index 216267640..58d2ace41 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/CompositeModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/CompositeModificationsTest.java @@ -20,8 +20,8 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.mockito.stubbing.Answer; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import java.util.List; import java.util.UUID; @@ -40,7 +40,7 @@ @Tag("IntegrationTest") class CompositeModificationsTest extends AbstractNetworkModificationTest { - @MockBean + @MockitoBean private NetworkModificationApplicator networkModificationApplicator; @BeforeEach diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java index edbdcd7bf..92607bf69 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java @@ -367,7 +367,7 @@ void testSqlRequestsCountOnDeleteGroup() throws Exception { reset(); ApiUtils.deleteGroup(mockMvc, getGroupId()); // It is actually (8, 0, 0, 15) because deletes made in the native query are not counted - TestUtils.assertRequestsCount(8, 0, 0, 1); + TestUtils.assertRequestsCount(7, 0, 1, 1); assertEquals(0, modificationRepository.count()); assertEquals(0, tabularPropertyRepository.count()); } @@ -379,7 +379,7 @@ void testSqlRequestsCountOnDeleteGroup2() throws Exception { reset(); ApiUtils.deleteGroup(mockMvc, getGroupId()); // It is actually (12, 0, 0, 29) because deletes made in the native query are not counted - TestUtils.assertRequestsCount(12, 0, 0, 1); + TestUtils.assertRequestsCount(11, 0, 1, 1); assertEquals(0, modificationRepository.count()); } diff --git a/src/test/java/org/gridsuite/modification/server/service/BuildTest.java b/src/test/java/org/gridsuite/modification/server/service/BuildTest.java index dc226b06d..da884c549 100644 --- a/src/test/java/org/gridsuite/modification/server/service/BuildTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/BuildTest.java @@ -52,13 +52,13 @@ 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.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.cloud.stream.binder.test.OutputDestination; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.messaging.Message; +import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; import org.springframework.test.web.servlet.MockMvc; import java.io.IOException; @@ -125,7 +125,7 @@ class BuildTest { @Autowired private OutputDestination output; - @MockBean + @MockitoBean private NetworkStoreService networkStoreService; @Autowired @@ -152,7 +152,7 @@ class BuildTest { @Autowired private EquipmentInfosRepository equipmentInfosRepository; - @SpyBean + @MockitoSpyBean private NotificationService notificationService; @Autowired diff --git a/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java b/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java index cab2e4d31..1872add92 100644 --- a/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java @@ -17,11 +17,11 @@ import org.mockito.ArgumentCaptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.cloud.stream.function.StreamBridge; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.support.MessageBuilder; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import java.util.HashMap; import java.util.List; @@ -41,9 +41,9 @@ class BuildWorkerServiceTest { private BuildWorkerService buildWorkerService; @Autowired private ObjectMapper objectMapper; - @MockBean + @MockitoBean private NetworkModificationService networkModificationService; - @MockBean + @MockitoBean private StreamBridge publisher; @Test diff --git a/src/test/java/org/gridsuite/modification/server/service/EquipmentIndexationTest.java b/src/test/java/org/gridsuite/modification/server/service/EquipmentIndexationTest.java index ad492f6a8..cf08bbdf2 100644 --- a/src/test/java/org/gridsuite/modification/server/service/EquipmentIndexationTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/EquipmentIndexationTest.java @@ -24,8 +24,8 @@ 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.http.MediaType; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import java.util.List; @@ -67,10 +67,10 @@ class EquipmentIndexationTest { @Autowired private ModificationRepository modificationRepository; - @MockBean + @MockitoBean private NetworkStoreService networkStoreService; - @MockBean + @MockitoBean private ReportService reportService; @Autowired diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java index 1efeba283..f51a4cdd4 100644 --- a/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/ModificationIndexationTest.java @@ -36,7 +36,7 @@ import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import java.util.*; @@ -52,7 +52,7 @@ class ModificationIndexationTest { // Need to mock the send reports - @MockBean + @MockitoBean private ReportService reportService; @Autowired @@ -64,7 +64,7 @@ class ModificationIndexationTest { @Mock private NetworkInfos networkInfos; - @MockBean + @MockitoBean private NetworkStoreService networkStoreService; @Mock diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java index f74776385..efca3a6e7 100644 --- a/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java @@ -226,7 +226,7 @@ void testDeleteModificationQueryCount() { SQLStatementCountValidator.reset(); networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); - assertRequestsCount(5, 0, 0, 3); + assertRequestsCount(5, 0, 1, 3); // Non-existent group modification uuid assertThrows(NetworkModificationException.class, () -> networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true), @@ -265,7 +265,7 @@ void testLoadCreation() { SQLStatementCountValidator.reset(); networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); - assertRequestsCount(5, 0, 0, 3); + assertRequestsCount(5, 0, 1, 3); assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); @@ -346,7 +346,7 @@ void testGeneratorCreation() { SQLStatementCountValidator.reset(); networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); - assertRequestsCount(5, 0, 0, 4); + assertRequestsCount(5, 0, 1, 4); assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); @@ -396,7 +396,7 @@ void testShuntCompensatorCreation() { SQLStatementCountValidator.reset(); networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); - assertRequestsCount(5, 0, 0, 3); + assertRequestsCount(5, 0, 1, 3); assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); @@ -476,7 +476,7 @@ void testLineCreation() { networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); // TODO : Due to an issue the deletion counter is not deterministic // https://github.com/jdbc-observations/datasource-proxy/issues/123 - assertRequestsCount(10, 0, 0); + assertRequestsCount(10, 0, 1); assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); @@ -715,7 +715,7 @@ void testGroovyScript() { SQLStatementCountValidator.reset(); networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); - assertRequestsCount(4, 0, 0, 3); + assertRequestsCount(4, 0, 1, 3); assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true), new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); @@ -768,7 +768,7 @@ void testSubstationCreation() { SQLStatementCountValidator.reset(); networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); - assertRequestsCount(5, 0, 1, 4); + assertRequestsCount(5, 0, 2, 4); assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true), new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); @@ -858,7 +858,7 @@ void testStatusLineModification() { SQLStatementCountValidator.reset(); networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); // n+1 query because we are deleting modifications 1 by 1, it's for now accepted according to a comment in "deleteModificationGroup" - assertRequestsCount(9, 0, 0, 3); + assertRequestsCount(9, 0, 1, 3); } @Test @@ -1368,7 +1368,7 @@ void testStaticVarCompensatorCreation() { SQLStatementCountValidator.reset(); networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); - assertRequestsCount(5, 0, 0, 3); + assertRequestsCount(5, 0, 1, 3); assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true), new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage()); diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationSearchTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationSearchTest.java index f0eea7243..53639970e 100644 --- a/src/test/java/org/gridsuite/modification/server/service/ModificationSearchTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/ModificationSearchTest.java @@ -32,7 +32,7 @@ import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import java.util.*; import java.util.stream.Collectors; @@ -57,7 +57,7 @@ class ModificationSearchTest { @Mock private NetworkInfos networkInfos; - @MockBean + @MockitoBean private NetworkStoreService networkStoreService; @Mock diff --git a/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java b/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java index ea34efbe2..10664675d 100644 --- a/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java @@ -31,8 +31,8 @@ import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; +import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; import java.util.List; import java.util.UUID; @@ -47,19 +47,19 @@ @Tag("UnitTest") class NetworkModificationApplicatorTest { - @MockBean + @MockitoBean private NetworkStoreService networkStoreService; - @MockBean + @MockitoBean private ReportService reportService; - @MockBean + @MockitoBean private FilterService filterService; - @MockBean + @MockitoBean private NetworkModificationObserver networkModificationObserver; - @SpyBean + @MockitoSpyBean private LargeNetworkModificationExecutionService largeNetworkModificationExecutionService; @Autowired diff --git a/src/test/java/org/gridsuite/modification/server/service/SupervisionTest.java b/src/test/java/org/gridsuite/modification/server/service/SupervisionTest.java index d367bf844..07fe3b97d 100644 --- a/src/test/java/org/gridsuite/modification/server/service/SupervisionTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/SupervisionTest.java @@ -14,10 +14,10 @@ import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.IndexOperations; import org.springframework.http.HttpStatus; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.web.server.ResponseStatusException; import java.util.List; @@ -36,16 +36,16 @@ class SupervisionTest { @Autowired private SupervisionService supervisionService; - @MockBean + @MockitoBean private ElasticsearchOperations elasticsearchOperations; - @MockBean + @MockitoBean private IndexOperations indexOperations; - @MockBean + @MockitoBean private ModificationApplicationRepository modificationApplicationRepository; - @MockBean + @MockitoBean private ModificationApplicationInfosRepository modificationApplicationInfosRepository; @Captor diff --git a/src/test/java/org/gridsuite/modification/server/utils/elasticsearch/DisableElasticsearch.java b/src/test/java/org/gridsuite/modification/server/utils/elasticsearch/DisableElasticsearch.java index aed3fdf52..5aa310c29 100644 --- a/src/test/java/org/gridsuite/modification/server/utils/elasticsearch/DisableElasticsearch.java +++ b/src/test/java/org/gridsuite/modification/server/utils/elasticsearch/DisableElasticsearch.java @@ -10,8 +10,12 @@ import org.gridsuite.modification.server.elasticsearch.EquipmentInfosRepository; import org.gridsuite.modification.server.elasticsearch.TombstonedEquipmentInfosRepository; import org.junit.jupiter.api.Tag; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.MockBeans; +import org.mockito.Mockito; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; +import org.springframework.data.elasticsearch.core.ElasticsearchOperations; +import org.springframework.test.context.TestPropertySource; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -23,7 +27,39 @@ */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) -@MockBeans({@MockBean(EmbeddedElasticsearch.class), @MockBean(EquipmentInfosRepository.class), @MockBean(ModificationApplicationInfosRepository.class), @MockBean(TombstonedEquipmentInfosRepository.class)}) +@TestPropertySource(properties = { + "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration" +}) +@Import(DisableElasticsearch.MockConfig.class) @Tag("Docker") public @interface DisableElasticsearch { + + @TestConfiguration(proxyBeanMethods = false) + class MockConfig { + @Bean + public EmbeddedElasticsearch embeddedElasticsearch() { + return Mockito.mock(EmbeddedElasticsearch.class); + } + + @Bean + public EquipmentInfosRepository equipmentInfosRepository() { + return Mockito.mock(EquipmentInfosRepository.class); + } + + @Bean + public ModificationApplicationInfosRepository modificationApplicationInfosRepository() { + return Mockito.mock(ModificationApplicationInfosRepository.class); + } + + @Bean + public TombstonedEquipmentInfosRepository tombstonedEquipmentInfosRepository() { + return Mockito.mock(TombstonedEquipmentInfosRepository.class); + } + + @Bean + public ElasticsearchOperations elasticsearchOperations() { + return Mockito.mock(ElasticsearchOperations.class); + } + } + } diff --git a/src/test/java/org/gridsuite/modification/server/utils/elasticsearch/EmbeddedElasticsearch.java b/src/test/java/org/gridsuite/modification/server/utils/elasticsearch/EmbeddedElasticsearch.java index 73e5221b7..eadb638e9 100644 --- a/src/test/java/org/gridsuite/modification/server/utils/elasticsearch/EmbeddedElasticsearch.java +++ b/src/test/java/org/gridsuite/modification/server/utils/elasticsearch/EmbeddedElasticsearch.java @@ -21,7 +21,7 @@ public class EmbeddedElasticsearch { private static final String ES_DOCKER_IMAGE_NAME = "docker.elastic.co/elasticsearch/elasticsearch"; - private static final String ES_DOCKER_IMAGE_VERSION = "8.7.1"; + private static final String ES_DOCKER_IMAGE_VERSION = "8.15.5"; private static ElasticsearchContainer elasticsearchContainer;