1313import com .powsybl .commons .report .ReportNodeJsonModule ;
1414import com .powsybl .iidm .network .Network ;
1515import com .powsybl .iidm .network .ThreeSides ;
16- import com .powsybl .network .store .client .NetworkStoreService ;
17- import com .powsybl .network .store .client .NetworkStoreServicePublic ;
18- import com .powsybl .network .store .client .PreloadingStrategy ;
19- import com .powsybl .network .store .client .RestClient ;
20- import com .powsybl .network .store .iidm .impl .CachedNetworkStoreClient ;
21- import com .powsybl .network .store .iidm .impl .OfflineNetworkStoreClient ;
22- import io .micrometer .core .instrument .simple .SimpleMeterRegistry ;
23- import io .micrometer .observation .ObservationRegistry ;
2416import lombok .extern .slf4j .Slf4j ;
2517import org .gridsuite .modification .dto .*;
2618import org .gridsuite .modification .server .dto .ModificationApplicationGroup ;
2719import org .gridsuite .modification .server .dto .NetworkInfos ;
2820import org .gridsuite .modification .server .dto .NetworkModificationResult ;
2921import org .gridsuite .modification .server .dto .NetworkModificationResult .ApplicationStatus ;
3022import org .gridsuite .modification .server .dto .ReportInfos ;
31- import org .gridsuite .modification .server .elasticsearch .ModificationApplicationInfosService ;
32- import org .gridsuite .modification .server .elasticsearch .EquipmentInfosService ;
3323import org .gridsuite .modification .server .entities .ModificationEntity ;
3424import org .gridsuite .modification .server .modifications .NetworkModificationApplicator ;
35- import org .gridsuite .modification .server .service .LargeNetworkModificationExecutionService ;
36- import org .gridsuite .modification .server .service .NetworkModificationObserver ;
25+ import org .gridsuite .modification .server .repositories .NetworkModificationRepository ;
3726import org .gridsuite .modification .server .service .ReportService ;
27+ import org .gridsuite .modification .server .utils .elasticsearch .DisableElasticsearch ;
3828import org .junit .jupiter .api .DisplayName ;
3929import org .junit .jupiter .api .TestInstance ;
4030import org .junit .jupiter .api .extension .ExtendWith ;
4535import org .mockito .Mockito ;
4636import org .mockito .junit .jupiter .MockitoExtension ;
4737import org .skyscreamer .jsonassert .JSONAssert ;
38+ import org .springframework .beans .factory .annotation .Autowired ;
39+ import org .springframework .boot .test .context .SpringBootTest ;
40+ import org .springframework .boot .test .mock .mockito .MockBean ;
4841
4942import java .nio .file .Files ;
5043import java .nio .file .Paths ;
5144import java .time .Instant ;
5245import java .util .List ;
5346import java .util .UUID ;
5447
48+ import static org .junit .jupiter .api .Assertions .assertNotNull ;
49+ import static org .mockito .ArgumentMatchers .any ;
50+ import static org .mockito .Mockito .atLeast ;
51+ import static org .mockito .Mockito .verify ;
5552import static org .assertj .core .api .Assertions .assertThat ;
5653
5754@ Slf4j
5855@ TestInstance (TestInstance .Lifecycle .PER_CLASS )
5956@ ExtendWith ({MockitoExtension .class })
57+ @ SpringBootTest
58+ @ DisableElasticsearch
6059class VoltageInitReportTest {
60+
61+ @ Autowired
62+ private NetworkModificationRepository modificationRepository ;
63+
64+ @ Autowired
65+ private NetworkModificationApplicator networkModificationApplicator ;
66+
67+ @ MockBean
68+ protected ReportService reportService ;
69+
70+ private static final UUID NETWORK_ID = UUID .fromString ("11111111-1111-1111-1111-111111111111" );
71+ private static final UUID NODE_ID = UUID .fromString ("99999999-9999-9999-9999-999999999999" );
72+ private static final UUID REPORT_ID = UUID .fromString ("88888888-8888-8888-8888-888888888888" );
73+ private static final UUID GROUP_ID = UUID .randomUUID ();
74+
6175 private final ObjectMapper objectMapper = new ObjectMapper ().findAndRegisterModules ()
6276 .registerModule (new ReportNodeJsonModule ())
6377 .setInjectableValues (new InjectableValues .Std ().addValue (ReportNodeDeserializer .DICTIONARY_VALUE_ID , null ));
@@ -67,41 +81,32 @@ class VoltageInitReportTest {
6781 @ ParameterizedTest (name = "result status = {0}" )
6882 @ DisplayName ("Verifying logs after applying Voltage-Init server modifications on a network" )
6983 void testVoltageInitDuplicationLogs (final ApplicationStatus resultStatus , final String logsJsonFile , final VoltageInitModificationInfos modificationInfos ) throws Exception {
70- final ReportService reportService = Mockito .mock (ReportService .class );
71- final RestClient restClient = Mockito .mock (RestClient .class );
72- final NetworkStoreService networkStoreService = new NetworkStoreServicePublic (restClient , PreloadingStrategy .NONE ,
73- (restClient_ , preloadingStrategy , executorService ) -> new CachedNetworkStoreClient (new OfflineNetworkStoreClient ()));
74- final EquipmentInfosService equipmentInfosService = Mockito .mock (EquipmentInfosService .class );
75- final ModificationApplicationInfosService modificationApplicationInfosService = Mockito .mock (ModificationApplicationInfosService .class );
76- final NetworkModificationObserver networkModificationObserver = new NetworkModificationObserver (ObservationRegistry .NOOP , new SimpleMeterRegistry ());
77- final LargeNetworkModificationExecutionService modificationExecutionService = new LargeNetworkModificationExecutionService (2 , networkModificationObserver );
78- final NetworkModificationApplicator networkModificationApplicator = new NetworkModificationApplicator (networkStoreService , equipmentInfosService , modificationApplicationInfosService , reportService , null , null , networkModificationObserver , modificationExecutionService );
79- networkModificationApplicator .setCollectionThreshold (5 );
80-
8184 final Network network = Network .read (Paths .get (this .getClass ().getClassLoader ().getResource ("fourSubstations_testsOpenReac.xiidm" ).toURI ()));
8285
83- //for internal call to reportService.sendReport(reportInfos.getReportUuid(), reporter);
84- final ArgumentCaptor <ReportNode > reporterCaptor = ArgumentCaptor .forClass (ReportNode .class );
85-
86- final UUID networkUuuid = UUID .fromString ("11111111-1111-1111-1111-111111111111" );
87- final UUID reportUuid = UUID .fromString ("88888888-8888-8888-8888-888888888888" );
88- //simulate PUT /v1/groups/abc?action=COPY with body ModificationApplicationContext(networkUuid=0000, reportUuid=0000, reporterId=0000, variantId=0000, duplicateFrom=0000)
89- assertThat (networkModificationApplicator .applyModifications (
90- new ModificationApplicationGroup (UUID .randomUUID (), List .of (ModificationEntity .fromDTO (modificationInfos )), new ReportInfos (reportUuid , UUID .fromString ("99999999-9999-9999-9999-999999999999" ))),
91- new NetworkInfos (network , networkUuuid , true )))
92- .as ("network modifications results" )
93- .isNotNull ()
94- .extracting (NetworkModificationResult ::getApplicationStatus )
95- .isEqualTo (resultStatus );
86+ // apply a VoltageInit modification and check status
87+ assertThat (applyModification (network , modificationInfos ))
88+ .as ("voltage init result status" )
89+ .isEqualTo (resultStatus );
9690
97- Mockito .verify (reportService , Mockito .times (1 )).sendReport (Mockito .eq (reportUuid ), reporterCaptor .capture ());
91+ // check produced report json data
92+ ArgumentCaptor <ReportNode > reporterCaptor = ArgumentCaptor .forClass (ReportNode .class );
93+ verify (reportService , atLeast (1 )).sendReport (any (UUID .class ), reporterCaptor .capture ());
9894 final ReportNode result = reporterCaptor .getValue ();
99- log . info ( "Result = {}" , objectMapper . writerWithDefaultPrettyPrinter (). writeValueAsString ( result ) );
95+ assertNotNull ( result );
10096 JSONAssert .assertEquals ("voltage-init plan logs aggregated" ,
10197 Files .readString (Paths .get (this .getClass ().getClassLoader ().getResource (logsJsonFile ).toURI ())),
10298 objectMapper .writeValueAsString (result ), false );
10399 Mockito .verifyNoMoreInteractions (reportService );
104- Mockito .reset (reportService ); //because parametized tests haven't same lifecycle than tests
100+ Mockito .reset (reportService ); //because parameterized tests haven't same lifecycle than tests
101+ }
102+
103+ private ApplicationStatus applyModification (Network network , VoltageInitModificationInfos infos ) {
104+ List <ModificationEntity > entities = modificationRepository .saveModifications (GROUP_ID , List .of (ModificationEntity .fromDTO (infos )));
105+ List <ModificationApplicationGroup > modificationInfosGroups = List .of (
106+ new ModificationApplicationGroup (GROUP_ID , entities , new ReportInfos (REPORT_ID , NODE_ID ))
107+ );
108+ NetworkModificationResult result = networkModificationApplicator .applyModifications (modificationInfosGroups , new NetworkInfos (network , NETWORK_ID , true ));
109+ return result .getApplicationStatus ();
105110 }
106111
107112 private static List <Arguments > voltageInitModifications () {
0 commit comments