Skip to content

Commit 5ab800f

Browse files
Move reporter logs near building logic
1 parent 71585a3 commit 5ab800f

File tree

7 files changed

+130
-91
lines changed

7 files changed

+130
-91
lines changed

src/main/java/org/gridsuite/voltageinit/server/service/VoltageInitRunContext.java

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,52 @@
66
*/
77
package org.gridsuite.voltageinit.server.service;
88

9-
import lombok.AllArgsConstructor;
9+
import com.powsybl.commons.reporter.Reporter;
10+
import com.powsybl.commons.reporter.ReporterModel;
1011
import lombok.Data;
11-
import lombok.NonNull;
1212

1313
import java.util.HashMap;
1414
import java.util.Map;
15+
import java.util.Objects;
1516
import java.util.UUID;
1617

1718
/**
1819
* @author Etienne Homer <etienne.homer at rte-france.com>
1920
*/
2021
@Data
21-
@AllArgsConstructor
2222
public class VoltageInitRunContext {
23+
private static final String VOLTAGE_INIT_TYPE_REPORT = "VoltageInit";
2324

24-
@NonNull
2525
private final UUID networkUuid;
26-
2726
private final String variantId;
28-
2927
private final String receiver;
30-
3128
private final UUID reportUuid;
32-
3329
private final String reporterId;
34-
3530
private final String reportType;
36-
3731
private final String userId;
38-
3932
private final UUID parametersUuid;
40-
4133
private final Map<String, Double> voltageLevelsIdsRestricted;
34+
private final Reporter rootReporter;
35+
36+
public VoltageInitRunContext(UUID networkUuid, String variantId, String receiver, UUID reportUuid, String reporterId, String reportType, String userId, UUID parametersUuid, Map<String, Double> voltageLevelsIdsRestricted) {
37+
this.networkUuid = Objects.requireNonNull(networkUuid);
38+
this.variantId = variantId;
39+
this.receiver = receiver;
40+
this.reportUuid = reportUuid;
41+
this.reporterId = reporterId;
42+
this.reportType = reportType;
43+
this.userId = userId;
44+
this.parametersUuid = parametersUuid;
45+
this.voltageLevelsIdsRestricted = voltageLevelsIdsRestricted;
46+
if (this.reportUuid == null) {
47+
this.rootReporter = Reporter.NO_OP;
48+
} else {
49+
final String rootReporterId = reporterId == null ? VOLTAGE_INIT_TYPE_REPORT : reporterId + "@" + reportType;
50+
this.rootReporter = new ReporterModel(rootReporterId, rootReporterId);
51+
}
52+
}
4253

43-
public VoltageInitRunContext(@NonNull UUID networkUuid, String variantId, String receiver, UUID reportUuid, String reporterId, String reportType, String userId, UUID parametersUuid) {
54+
public VoltageInitRunContext(UUID networkUuid, String variantId, String receiver, UUID reportUuid, String reporterId, String reportType, String userId, UUID parametersUuid) {
4455
this(networkUuid, variantId, receiver, reportUuid, reporterId, reportType, userId, parametersUuid, new HashMap<>());
4556
}
4657
}

src/main/java/org/gridsuite/voltageinit/server/service/VoltageInitWorkerService.java

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,8 @@
66
*/
77
package org.gridsuite.voltageinit.server.service;
88

9-
import com.google.common.annotations.VisibleForTesting;
109
import com.google.common.collect.Sets;
1110
import com.powsybl.commons.PowsyblException;
12-
import com.powsybl.commons.reporter.Report;
13-
import com.powsybl.commons.reporter.Reporter;
14-
import com.powsybl.commons.reporter.ReporterModel;
15-
import com.powsybl.commons.reporter.TypedValue;
1611
import com.powsybl.iidm.network.Network;
1712
import com.powsybl.iidm.network.VariantManagerConstants;
1813
import com.powsybl.network.store.client.NetworkStoreService;
@@ -43,7 +38,6 @@
4338
import java.util.concurrent.locks.Lock;
4439
import java.util.concurrent.locks.ReentrantLock;
4540
import java.util.function.Consumer;
46-
import java.util.stream.Collectors;
4741

4842
import static org.gridsuite.voltageinit.server.service.NotificationService.CANCEL_MESSAGE;
4943
import static org.gridsuite.voltageinit.server.service.NotificationService.FAIL_MESSAGE;
@@ -53,14 +47,11 @@
5347
*/
5448
@Service
5549
public class VoltageInitWorkerService {
56-
5750
private static final Logger LOGGER = LoggerFactory.getLogger(VoltageInitWorkerService.class);
5851

5952
private static final String ERROR = "error";
6053
private static final String ERROR_DURING_VOLTAGE_PROFILE_INITIALISATION = "Error during voltage profile initialization";
6154

62-
private static final String VOLTAGE_INIT_TYPE_REPORT = "VoltageInit";
63-
6455
private final NetworkStoreService networkStoreService;
6556

6657
private final NetworkModificationService networkModificationService;
@@ -114,21 +105,6 @@ private Network getNetwork(UUID networkUuid, String variantId) {
114105
return network;
115106
}
116107

117-
@VisibleForTesting
118-
public static void addRestrictedVoltageLevelReport(Map<String, Double> voltageLevelsIdsRestricted, Reporter reporter) {
119-
if (!voltageLevelsIdsRestricted.isEmpty()) {
120-
String joinedVoltageLevelsIds = voltageLevelsIdsRestricted.entrySet()
121-
.stream()
122-
.map(entry -> entry.getKey() + "=" + entry.getValue())
123-
.collect(Collectors.joining(", "));
124-
reporter.report(Report.builder()
125-
.withKey("restrictedVoltageLevels")
126-
.withDefaultMessage(String.format("The modifications to the low limits for certain voltage levels have been restricted to avoid negative voltage limits: %s", joinedVoltageLevelsIds))
127-
.withSeverity(TypedValue.WARN_SEVERITY)
128-
.build());
129-
}
130-
}
131-
132108
private OpenReacResult run(VoltageInitRunContext context, UUID resultUuid) throws Exception {
133109
Objects.requireNonNull(context);
134110

@@ -143,12 +119,8 @@ private OpenReacResult run(VoltageInitRunContext context, UUID resultUuid) throw
143119
}
144120
CompletableFuture<OpenReacResult> future = runVoltageInitAsync(context, network, resultUuid);
145121
if (context.getReportUuid() != null) {
146-
final String rootReporterId = context.getReporterId() == null ? VOLTAGE_INIT_TYPE_REPORT : context.getReportType() + "@" + context.getReporterId();
147-
final Reporter rootReporter = new ReporterModel(rootReporterId, rootReporterId);
148-
final Reporter reporter = rootReporter.createSubReporter(context.getReportType(), VOLTAGE_INIT_TYPE_REPORT, VOLTAGE_INIT_TYPE_REPORT, context.getReportUuid().toString());
149-
addRestrictedVoltageLevelReport(context.getVoltageLevelsIdsRestricted(), reporter);
150122
voltageInitObserver.observe("report.send", () ->
151-
reportService.sendReport(context.getReportUuid(), rootReporter));
123+
reportService.sendReport(context.getReportUuid(), context.getRootReporter()));
152124
}
153125

154126
return future == null ? null : voltageInitObserver.observeRun("run", future::get);

src/main/java/org/gridsuite/voltageinit/server/service/parameters/VoltageInitParametersService.java

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
*/
77
package org.gridsuite.voltageinit.server.service.parameters;
88

9+
import com.powsybl.commons.reporter.Report;
10+
import com.powsybl.commons.reporter.Reporter;
11+
import com.powsybl.commons.reporter.TypedValue;
912
import com.powsybl.iidm.network.Network;
1013
import com.powsybl.iidm.network.VoltageLevel;
1114
import com.powsybl.openreac.parameters.input.OpenReacParameters;
@@ -28,18 +31,17 @@
2831

2932
import java.util.*;
3033
import java.util.concurrent.TimeUnit;
34+
import java.util.stream.Collectors;
3135

3236
/**
3337
* @author Ayoub LABIDI <ayoub.labidi at rte-france.com>
3438
*/
3539

3640
@Service
3741
public class VoltageInitParametersService {
38-
3942
private static final Logger LOGGER = LoggerFactory.getLogger(VoltageInitParametersService.class);
4043

4144
private final FilterService filterService;
42-
4345
private final VoltageInitParametersRepository voltageInitParametersRepository;
4446

4547
public VoltageInitParametersService(VoltageInitParametersRepository voltageInitParametersRepository, FilterService filterService) {
@@ -167,11 +169,14 @@ private static void setHighVoltageLimit(List<VoltageLimitOverride> specificVolta
167169
@Transactional(readOnly = true)
168170
public OpenReacParameters buildOpenReacParameters(VoltageInitRunContext context, Network network) {
169171
final long startTime = System.nanoTime();
170-
OpenReacParameters parameters = new OpenReacParameters();
172+
final OpenReacParameters parameters = new OpenReacParameters();
173+
final Reporter reporter = context.getRootReporter().createSubReporter("OpenReactParameters", "OpenReact parameters", Map.of(
174+
"parameters_id", new TypedValue(Objects.toString(context.getParametersUuid()), "ID")
175+
));
171176

172177
Optional.ofNullable(context.getParametersUuid())
173178
.flatMap(voltageInitParametersRepository::findById)
174-
.ifPresent(voltageInitParameters -> {
179+
.ifPresentOrElse(voltageInitParameters -> {
175180
if (voltageInitParameters.getVoltageLimits() != null) {
176181
final Map<String, VoltageLimitEntity> voltageLevelDefaultLimits = resolveVoltageLevelLimits(context, voltageInitParameters.getVoltageLimits()
177182
.stream()
@@ -185,11 +190,27 @@ public OpenReacParameters buildOpenReacParameters(VoltageInitRunContext context,
185190
network.getVoltageLevelStream()
186191
.forEach(voltageLevel -> fillSpecificVoltageLimits(specificVoltageLimits, voltageLevelModificationLimits, voltageLevelDefaultLimits, voltageLevel, context.getVoltageLevelsIdsRestricted()));
187192
parameters.addSpecificVoltageLimits(specificVoltageLimits);
193+
if (!context.getVoltageLevelsIdsRestricted().isEmpty()) {
194+
reporter.report(Report.builder()
195+
.withKey("restrictedVoltageLevels")
196+
.withDefaultMessage("The modifications to the low limits for certain voltage levels have been restricted to avoid negative voltage limits: ${joinedVoltageLevelsIds}")
197+
.withValue("joinedVoltageLevelsIds", context.getVoltageLevelsIdsRestricted()
198+
.entrySet()
199+
.stream()
200+
.map(entry -> entry.getKey() + "=" + entry.getValue())
201+
.collect(Collectors.joining(", ")))
202+
.withSeverity(TypedValue.WARN_SEVERITY)
203+
.build());
204+
}
188205
}
189206
parameters.addConstantQGenerators(toEquipmentIdsList(context.getNetworkUuid(), context.getVariantId(), voltageInitParameters.getConstantQGenerators()))
190207
.addVariableTwoWindingsTransformers(toEquipmentIdsList(context.getNetworkUuid(), context.getVariantId(), voltageInitParameters.getVariableTwoWindingsTransformers()))
191208
.addVariableShuntCompensators(toEquipmentIdsList(context.getNetworkUuid(), context.getVariantId(), voltageInitParameters.getVariableShuntCompensators()));
192-
});
209+
}, () -> reporter.report(Report.builder()
210+
.withKey("noParameters")
211+
.withDefaultMessage("No parameters were found for this analysis: using default parameters.")
212+
.withSeverity(TypedValue.TRACE_SEVERITY)
213+
.build()));
193214

194215
//The optimizer will attach reactive slack variables to all buses
195216
parameters.setReactiveSlackBusesMode(ReactiveSlackBusesMode.ALL);

src/test/java/org/gridsuite/voltageinit/server/VoltageInitParametersTest.java

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@
99
import com.fasterxml.jackson.core.type.TypeReference;
1010
import com.fasterxml.jackson.databind.DeserializationFeature;
1111
import com.fasterxml.jackson.databind.ObjectMapper;
12-
import com.powsybl.commons.reporter.Report;
13-
import com.powsybl.commons.reporter.Reporter;
14-
import com.powsybl.commons.reporter.ReporterModel;
15-
import com.powsybl.commons.reporter.TypedValue;
1612
import com.powsybl.iidm.network.IdentifiableType;
1713
import com.powsybl.iidm.network.Network;
1814
import com.powsybl.iidm.network.VariantManagerConstants;
@@ -35,7 +31,6 @@
3531
import org.gridsuite.voltageinit.server.entities.parameters.VoltageLimitEntity;
3632
import org.gridsuite.voltageinit.server.repository.parameters.VoltageInitParametersRepository;
3733
import org.gridsuite.voltageinit.server.service.VoltageInitRunContext;
38-
import org.gridsuite.voltageinit.server.service.VoltageInitWorkerService;
3934
import org.gridsuite.voltageinit.server.service.parameters.FilterService;
4035
import org.gridsuite.voltageinit.server.service.parameters.VoltageInitParametersService;
4136
import org.gridsuite.voltageinit.server.util.VoltageLimitParameterType;
@@ -44,7 +39,11 @@
4439
import org.junit.jupiter.api.DynamicTest;
4540
import org.junit.jupiter.api.Test;
4641
import org.junit.jupiter.api.TestFactory;
42+
import org.skyscreamer.jsonassert.Customization;
4743
import org.skyscreamer.jsonassert.JSONAssert;
44+
import org.skyscreamer.jsonassert.JSONCompareMode;
45+
import org.skyscreamer.jsonassert.comparator.CustomComparator;
46+
import org.skyscreamer.jsonassert.comparator.JSONComparator;
4847
import org.springframework.beans.factory.annotation.Autowired;
4948
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
5049
import org.springframework.boot.test.context.SpringBootTest;
@@ -58,7 +57,6 @@
5857
import org.springframework.util.function.ThrowingBiFunction;
5958

6059
import java.util.List;
61-
import java.util.Map;
6260
import java.util.Objects;
6361
import java.util.UUID;
6462
import java.util.function.Consumer;
@@ -92,6 +90,11 @@ class VoltageInitParametersTest {
9290
private static final String FILTER_2 = "FILTER_2";
9391
private static final UUID REPORT_UUID = UUID.fromString("00000000-0000-0000-0000-000000000000");
9492

93+
private static final JSONComparator reporterComparator = new CustomComparator(JSONCompareMode.STRICT,
94+
// ignore field having uuid changing each run
95+
new Customization("reportTree.subReporters[*].taskValues.parameters_id.value", (o1, o2) -> (o1 == null) == (o2 == null))
96+
);
97+
9598

9699
private Network network;
97100

@@ -294,10 +297,8 @@ List<DynamicTest> dynamicTestsBuildSpecificVoltageLimits() {
294297
final VoltageInitRunContext context = new VoltageInitRunContext(NETWORK_UUID, VARIANT_ID_1, null, REPORT_UUID, null, "", "", voltageInitParameters.getId());
295298
final OpenReacParameters openReacParameters = voltageInitParametersService.buildOpenReacParameters(context, network);
296299
/*TODO*/System.out.println(parametersRepository.findAll().stream().map(ToStringBuilder::reflectionToString).collect(Collectors.joining()));
297-
ReporterModel reporter = new ReporterModel("test", "test");
298-
VoltageInitWorkerService.addRestrictedVoltageLevelReport(context.getVoltageLevelsIdsRestricted(), reporter);
299-
/*TODO*/System.out.println(mapper.writeValueAsString(reporter));
300-
JSONAssert.assertEquals("build parameters logs", TestUtils.resourceToString(reportFilename), mapper.writeValueAsString(reporter), false);
300+
/*TODO*/System.out.println(mapper.writeValueAsString(context.getRootReporter()));
301+
JSONAssert.assertEquals("build parameters logs", TestUtils.resourceToString(reportFilename), mapper.writeValueAsString(context.getRootReporter()), reporterComparator);
301302
return assertThat(openReacParameters.getSpecificVoltageLimits()).as("SpecificVoltageLimits");
302303
};
303304
final VoltageLimitEntity voltageLimit = new VoltageLimitEntity(UUID.randomUUID(), 5., 10., 0, VoltageLimitParameterType.DEFAULT, List.of(new FilterEquipmentsEmbeddable(FILTER_UUID_1, FILTER_1)));
@@ -345,16 +346,4 @@ List<DynamicTest> dynamicTestsBuildSpecificVoltageLimits() {
345346
.containsOnlyOnce(new VoltageLimitOverride("VLHV1", VoltageLimitType.LOW_VOLTAGE_LIMIT, false, 0.0)))
346347
);
347348
}
348-
349-
@Test
350-
void testAddRestrictedVoltageLevelReport() {
351-
Map<String, Double> restrictedVoltageLevel = Map.of("vl", 10.0);
352-
ReporterModel reporter = new ReporterModel("test", "test");
353-
VoltageInitWorkerService.addRestrictedVoltageLevelReport(restrictedVoltageLevel, reporter);
354-
Reporter expected = new ReporterModel("test", "test");
355-
expected.report("restrictedVoltageLevels",
356-
"The modifications to the low limits for certain voltage levels have been restricted to avoid negative voltage limits: vl=10.0",
357-
Map.of(Report.REPORT_SEVERITY_KEY, TypedValue.WARN_SEVERITY));
358-
assertThat(reporter).usingRecursiveComparison().isEqualTo(expected);
359-
}
360349
}
Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,38 @@
11
{
22
"version": "1.0",
33
"reportTree": {
4-
"taskKey": "test",
5-
"reports": [
4+
"taskKey": "VoltageInit",
5+
"subReporters": [
66
{
7-
"reportKey": "restrictedVoltageLevels",
8-
"values": {
9-
"reportSeverity": {
10-
"value": "WARN",
11-
"type": "SEVERITY"
7+
"taskKey": "OpenReactParameters",
8+
"taskValues": {
9+
"parameters_id": {
10+
"value": "11111111-1111-1111-1111-111111111111",
11+
"type": "ID"
1212
}
13-
}
13+
},
14+
"reports": [
15+
{
16+
"reportKey": "restrictedVoltageLevels",
17+
"values": {
18+
"reportSeverity": {
19+
"value": "WARN",
20+
"type": "SEVERITY"
21+
},
22+
"joinedVoltageLevelsIds": {
23+
"value": "VLHV2=-10.0, VLHV1=0.0, VLGEN=-10.0, VLLOAD=0.0"
24+
}
25+
}
26+
}
27+
]
1428
}
1529
]
1630
},
1731
"dics": {
1832
"default": {
19-
"restrictedVoltageLevels": "The modifications to the low limits for certain voltage levels have been restricted to avoid negative voltage limits: VLHV2=-10.0, VLHV1=0.0, VLGEN=-10.0, VLLOAD=0.0",
20-
"test": "test"
33+
"restrictedVoltageLevels": "The modifications to the low limits for certain voltage levels have been restricted to avoid negative voltage limits: ${joinedVoltageLevelsIds}",
34+
"VoltageInit": "VoltageInit",
35+
"OpenReactParameters": "OpenReact parameters"
2136
}
2237
}
2338
}
Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,38 @@
11
{
22
"version": "1.0",
33
"reportTree": {
4-
"taskKey": "test",
5-
"reports": [
4+
"taskKey": "VoltageInit",
5+
"subReporters": [
66
{
7-
"reportKey": "restrictedVoltageLevels",
8-
"values": {
9-
"reportSeverity": {
10-
"value": "WARN",
11-
"type": "SEVERITY"
7+
"taskKey": "OpenReactParameters",
8+
"taskValues": {
9+
"parameters_id": {
10+
"value": "11111111-1111-1111-1111-111111111111",
11+
"type": "ID"
1212
}
13-
}
13+
},
14+
"reports": [
15+
{
16+
"reportKey": "restrictedVoltageLevels",
17+
"values": {
18+
"reportSeverity": {
19+
"value": "WARN",
20+
"type": "SEVERITY"
21+
},
22+
"joinedVoltageLevelsIds": {
23+
"value": "VLHV2=-10.0, VLGEN=-10.0"
24+
}
25+
}
26+
}
27+
]
1428
}
1529
]
1630
},
1731
"dics": {
1832
"default": {
19-
"restrictedVoltageLevels": "The modifications to the low limits for certain voltage levels have been restricted to avoid negative voltage limits: VLHV2=-10.0, VLGEN=-10.0",
20-
"test": "test"
33+
"restrictedVoltageLevels": "The modifications to the low limits for certain voltage levels have been restricted to avoid negative voltage limits: ${joinedVoltageLevelsIds}",
34+
"VoltageInit": "VoltageInit",
35+
"OpenReactParameters": "OpenReact parameters"
2136
}
2237
}
2338
}

0 commit comments

Comments
 (0)