Skip to content

Commit e509910

Browse files
authored
Merge branch 'main' into tests-sorting-issue
2 parents 3407695 + 4df677d commit e509910

File tree

6 files changed

+63
-16
lines changed

6 files changed

+63
-16
lines changed

src/main/java/org/gridsuite/shortcircuit/server/repositories/ShortCircuitAnalysisResultRepository.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.gridsuite.shortcircuit.server.dto.ResourceFilter;
1313
import org.gridsuite.shortcircuit.server.dto.ShortCircuitLimits;
1414
import org.gridsuite.shortcircuit.server.entities.*;
15+
import org.gridsuite.shortcircuit.server.service.ShortCircuitRunContext;
1516
import org.gridsuite.shortcircuit.server.utils.FaultResultSpecificationBuilder;
1617
import org.gridsuite.shortcircuit.server.utils.FeederResultSpecificationBuilder;
1718
import org.slf4j.Logger;
@@ -161,10 +162,12 @@ public void insertStatus(List<UUID> resultUuids, String status) {
161162
}
162163

163164
@Transactional
164-
public void insert(UUID resultUuid, ShortCircuitAnalysisResult result, Map<String, ShortCircuitLimits> allCurrentLimits, String status) {
165+
public void insert(UUID resultUuid, ShortCircuitAnalysisResult result, ShortCircuitRunContext runContext, String status) {
165166
Objects.requireNonNull(resultUuid);
166-
if (result != null && !result.getFaultResults().stream().map(FaultResult::getStatus).allMatch(FaultResult.Status.NO_SHORT_CIRCUIT_DATA::equals)) {
167-
resultRepository.save(toResultEntity(resultUuid, result, allCurrentLimits));
167+
if (result != null && (runContext.getBusId() != null ||
168+
!result.getFaultResults().stream().map(FaultResult::getStatus).allMatch(FaultResult.Status.NO_SHORT_CIRCUIT_DATA::equals))
169+
) {
170+
resultRepository.save(toResultEntity(resultUuid, result, runContext.getShortCircuitLimits()));
168171
}
169172
globalStatusRepository.save(toStatusEntity(resultUuid, status));
170173
}

src/main/java/org/gridsuite/shortcircuit/server/service/ShortCircuitWorkerService.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,12 +235,17 @@ public Consumer<Message<String>> consumeRun() {
235235
long nanoTime = System.nanoTime();
236236
LOGGER.info("Just run in {}s", TimeUnit.NANOSECONDS.toSeconds(nanoTime - startTime.getAndSet(nanoTime)));
237237

238-
shortCircuitObserver.observe("results.save", () -> resultRepository.insert(resultContext.getResultUuid(), result, resultContext.getRunContext().getShortCircuitLimits(), ShortCircuitAnalysisStatus.COMPLETED.name()));
238+
shortCircuitObserver.observe("results.save", () -> resultRepository.insert(
239+
resultContext.getResultUuid(),
240+
result,
241+
resultContext.getRunContext(),
242+
ShortCircuitAnalysisStatus.COMPLETED.name()
243+
));
239244
long finalNanoTime = System.nanoTime();
240245
LOGGER.info("Stored in {}s", TimeUnit.NANOSECONDS.toSeconds(finalNanoTime - startTime.getAndSet(finalNanoTime)));
241246

242247
if (result != null) { // result available
243-
if (!result.getFaultResults().isEmpty() &&
248+
if (!result.getFaultResults().isEmpty() && resultContext.getRunContext().getBusId() == null &&
244249
result.getFaultResults().stream().map(FaultResult::getStatus).allMatch(FaultResult.Status.NO_SHORT_CIRCUIT_DATA::equals)) {
245250
LOGGER.error("Short circuit analysis failed (resultUuid='{}')", resultContext.getResultUuid());
246251
notificationService.publishFail(resultContext.getResultUuid(), resultContext.getRunContext().getReceiver(),

src/test/java/org/gridsuite/shortcircuit/server/TestUtils.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@
99

1010
import com.powsybl.shortcircuit.ShortCircuitAnalysis;
1111
import com.powsybl.shortcircuit.ShortCircuitAnalysisProvider;
12+
import com.powsybl.shortcircuit.ShortCircuitParameters;
1213
import lombok.NonNull;
14+
import org.gridsuite.shortcircuit.server.service.ShortCircuitRunContext;
1315
import org.mockito.MockedStatic;
1416
import org.mockito.Mockito;
1517
import org.springframework.cloud.stream.binder.test.OutputDestination;
1618

1719
import java.lang.reflect.Constructor;
1820
import java.util.List;
21+
import java.util.UUID;
1922

2023
import static com.vladmihalcea.sql.SQLStatementCountValidator.*;
2124
import static com.vladmihalcea.sql.SQLStatementCountValidator.assertDeleteCount;
@@ -31,6 +34,18 @@ private TestUtils() {
3134
throw new IllegalStateException("Not implemented exception");
3235
}
3336

37+
public static final ShortCircuitRunContext MOCK_RUN_CONTEXT = new ShortCircuitRunContext(
38+
UUID.randomUUID(),
39+
null,
40+
null,
41+
new ShortCircuitParameters(),
42+
null,
43+
null,
44+
null,
45+
null,
46+
null
47+
);
48+
3449
public static void assertQueuesEmptyThenClear(List<String> destinations, OutputDestination output) {
3550
try {
3651
destinations.forEach(destination -> assertNull("Should not be any messages in queue " + destination + " : ", output.receive(TIMEOUT, destination)));

src/test/java/org/gridsuite/shortcircuit/server/repositories/FaultResultRepositoryTest.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@
99

1010
import com.powsybl.security.LimitViolation;
1111
import com.powsybl.security.LimitViolationType;
12-
import com.powsybl.shortcircuit.*;
12+
import com.powsybl.shortcircuit.BusFault;
13+
import com.powsybl.shortcircuit.FaultResult;
14+
import com.powsybl.shortcircuit.FortescueFaultResult;
15+
import com.powsybl.shortcircuit.FortescueValue;
16+
import com.powsybl.shortcircuit.MagnitudeFaultResult;
17+
import com.powsybl.shortcircuit.ShortCircuitAnalysisResult;
1318
import org.gridsuite.shortcircuit.server.dto.FaultResultsMode;
1419
import org.gridsuite.shortcircuit.server.dto.ResourceFilter;
1520
import org.gridsuite.shortcircuit.server.entities.FaultResultEntity;
@@ -25,10 +30,14 @@
2530
import org.springframework.data.domain.Page;
2631
import org.springframework.data.domain.Pageable;
2732

28-
import java.util.*;
33+
import java.util.Collections;
34+
import java.util.Comparator;
35+
import java.util.List;
36+
import java.util.UUID;
2937
import java.util.stream.Stream;
3038

3139
import static org.assertj.core.api.Assertions.assertThat;
40+
import static org.gridsuite.shortcircuit.server.TestUtils.MOCK_RUN_CONTEXT;
3241

3342
/**
3443
* @author Florent MILLOT <[email protected]>
@@ -70,7 +79,7 @@ class FaultResultRepositoryTest {
7079
@BeforeAll
7180
void setUp() {
7281
// Magnitude faults
73-
shortCircuitAnalysisResultRepository.insert(MAGNITUDE_RESULT_UUID, RESULT_MAGNITUDE_FULL, Map.of(), "");
82+
shortCircuitAnalysisResultRepository.insert(MAGNITUDE_RESULT_UUID, RESULT_MAGNITUDE_FULL, MOCK_RUN_CONTEXT, "");
7483
resultMagnitudeEntity = shortCircuitAnalysisResultRepository.findFullResults(MAGNITUDE_RESULT_UUID).get();
7584
List<FaultResultEntity> faultResultEntities = resultMagnitudeEntity.getFaultResults().stream()
7685
.sorted(Comparator.comparing(faultResultEntity -> faultResultEntity.getFault().getId()))
@@ -79,7 +88,7 @@ void setUp() {
7988
faultResultEntity2 = faultResultEntities.get(1);
8089
faultResultEntity3 = faultResultEntities.get(2);
8190
// Fortescue fault
82-
shortCircuitAnalysisResultRepository.insert(FORTESCUE_RESULT_UUID, RESULT_FORTESCUE_FULL, Map.of(), "");
91+
shortCircuitAnalysisResultRepository.insert(FORTESCUE_RESULT_UUID, RESULT_FORTESCUE_FULL, MOCK_RUN_CONTEXT, "");
8392
resultFortescueEntity = shortCircuitAnalysisResultRepository.findFullResults(FORTESCUE_RESULT_UUID).get();
8493
faultResultEntity4 = resultFortescueEntity.getFaultResults().stream().findFirst().get();
8594
}

src/test/java/org/gridsuite/shortcircuit/server/repositories/FeederResultRepositoryTest.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,15 @@
77

88
package org.gridsuite.shortcircuit.server.repositories;
99

10-
import com.powsybl.shortcircuit.*;
10+
import com.powsybl.shortcircuit.BusFault;
11+
import com.powsybl.shortcircuit.FaultResult;
12+
import com.powsybl.shortcircuit.FeederResult;
13+
import com.powsybl.shortcircuit.FortescueFaultResult;
14+
import com.powsybl.shortcircuit.FortescueFeederResult;
15+
import com.powsybl.shortcircuit.FortescueValue;
16+
import com.powsybl.shortcircuit.MagnitudeFaultResult;
17+
import com.powsybl.shortcircuit.MagnitudeFeederResult;
18+
import com.powsybl.shortcircuit.ShortCircuitAnalysisResult;
1119
import org.gridsuite.shortcircuit.server.dto.ResourceFilter;
1220
import org.gridsuite.shortcircuit.server.entities.FeederResultEntity;
1321
import org.gridsuite.shortcircuit.server.entities.ShortCircuitAnalysisResultEntity;
@@ -27,11 +35,11 @@
2735

2836
import java.util.Comparator;
2937
import java.util.List;
30-
import java.util.Map;
3138
import java.util.UUID;
3239
import java.util.stream.Stream;
3340

3441
import static org.assertj.core.api.Assertions.assertThat;
42+
import static org.gridsuite.shortcircuit.server.TestUtils.MOCK_RUN_CONTEXT;
3543
import static org.junit.jupiter.api.Assertions.assertThrows;
3644

3745
/**
@@ -75,7 +83,7 @@ class FeederResultRepositoryTest {
7583
@BeforeAll
7684
void setUp() {
7785
// Magnitude fault
78-
shortCircuitAnalysisResultRepository.insert(MAGNITUDE_RESULT_UUID, RESULT_MAGNITUDE_FULL, Map.of(), "");
86+
shortCircuitAnalysisResultRepository.insert(MAGNITUDE_RESULT_UUID, RESULT_MAGNITUDE_FULL, MOCK_RUN_CONTEXT, "");
7987
resultMagnitudeEntity = shortCircuitAnalysisResultRepository.findFullResults(MAGNITUDE_RESULT_UUID).get();
8088
List<FeederResultEntity> feederResultEntities = resultMagnitudeEntity.getFaultResults().stream()
8189
.flatMap(faultResultEntity -> faultResultEntity.getFeederResults().stream())
@@ -85,7 +93,7 @@ void setUp() {
8593
feederResultEntity2 = feederResultEntities.get(1);
8694
feederResultEntity3 = feederResultEntities.get(2);
8795
// Fortescue fault
88-
shortCircuitAnalysisResultRepository.insert(FORTESCUE_RESULT_UUID, RESULT_FORTESCUE_FULL, Map.of(), "");
96+
shortCircuitAnalysisResultRepository.insert(FORTESCUE_RESULT_UUID, RESULT_FORTESCUE_FULL, MOCK_RUN_CONTEXT, "");
8997
resultFortescueEntity = shortCircuitAnalysisResultRepository.findFullResults(FORTESCUE_RESULT_UUID).get();
9098
feederResultEntities = resultFortescueEntity.getFaultResults().stream()
9199
.flatMap(faultResultEntity -> faultResultEntity.getFeederResults().stream())

src/test/java/org/gridsuite/shortcircuit/server/repositories/ShortCircuitResultRepositoryTest.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@
99

1010
import com.powsybl.security.LimitViolation;
1111
import com.powsybl.security.LimitViolationType;
12-
import com.powsybl.shortcircuit.*;
12+
import com.powsybl.shortcircuit.BusFault;
13+
import com.powsybl.shortcircuit.FaultResult;
14+
import com.powsybl.shortcircuit.FeederResult;
15+
import com.powsybl.shortcircuit.MagnitudeFaultResult;
16+
import com.powsybl.shortcircuit.MagnitudeFeederResult;
17+
import com.powsybl.shortcircuit.ShortCircuitAnalysisResult;
1318
import com.vladmihalcea.sql.SQLStatementCountValidator;
1419
import org.junit.Before;
1520
import org.junit.Test;
@@ -18,8 +23,10 @@
1823
import org.springframework.boot.test.context.SpringBootTest;
1924
import org.springframework.test.context.junit4.SpringRunner;
2025

21-
import java.util.*;
26+
import java.util.List;
27+
import java.util.UUID;
2228

29+
import static org.gridsuite.shortcircuit.server.TestUtils.MOCK_RUN_CONTEXT;
2330
import static org.gridsuite.shortcircuit.server.TestUtils.assertRequestsCount;
2431

2532
/**
@@ -58,7 +65,7 @@ public void setUp() {
5865
@Test
5966
public void deleteResultTest() {
6067
ShortCircuitAnalysisResult results = new ShortCircuitAnalysisResult(List.of(fault1, fault2, fault3));
61-
shortCircuitAnalysisResultRepository.insert(RESULT_UUID, results, Map.of(), "OK");
68+
shortCircuitAnalysisResultRepository.insert(RESULT_UUID, results, MOCK_RUN_CONTEXT, "OK");
6269
SQLStatementCountValidator.reset();
6370

6471
shortCircuitAnalysisResultRepository.delete(RESULT_UUID);

0 commit comments

Comments
 (0)