SecurityAnalysisParametersTest.java
/**
* Copyright (c) 2018, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* 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/.
* SPDX-License-Identifier: MPL-2.0
*/
package com.powsybl.security;
import com.google.common.jimfs.Configuration;
import com.google.common.jimfs.Jimfs;
import com.powsybl.commons.config.InMemoryPlatformConfig;
import com.powsybl.commons.config.MapModuleConfig;
import com.powsybl.security.json.JsonSecurityAnalysisParametersTest.*;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.nio.file.FileSystem;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Teofil Calin BANC {@literal <teofil-calin.banc at rte-france.com>}
*/
class SecurityAnalysisParametersTest {
private static final double EPS = 10E-3;
@Test
void testExtensions() {
SecurityAnalysisParameters parameters = new SecurityAnalysisParameters();
DummyExtension dummyExtension = new DummyExtension();
parameters.addExtension(DummyExtension.class, dummyExtension);
assertEquals(1, parameters.getExtensions().size());
assertTrue(parameters.getExtensions().contains(dummyExtension));
assertInstanceOf(DummyExtension.class, parameters.getExtensionByName("dummy-extension"));
assertInstanceOf(DummyExtension.class, parameters.getExtension(DummyExtension.class));
}
@Test
void testNoExtensions() {
SecurityAnalysisParameters parameters = new SecurityAnalysisParameters();
assertEquals(0, parameters.getExtensions().size());
assertFalse(parameters.getExtensions().contains(new DummyExtension()));
assertFalse(parameters.getExtensionByName("dummy-extension") instanceof DummyExtension);
assertNull(parameters.getExtension(DummyExtension.class));
}
@Test
void testExtensionFromConfig() {
SecurityAnalysisParameters parameters = SecurityAnalysisParameters.load();
assertEquals(1, parameters.getExtensions().size());
assertInstanceOf(DummyExtension.class, parameters.getExtensionByName("dummy-extension"));
assertNotNull(parameters.getExtension(DummyExtension.class));
}
@Test
void testLoadFromFile() throws IOException {
try (FileSystem fileSystem = Jimfs.newFileSystem(Configuration.unix())) {
InMemoryPlatformConfig platformConfig = new InMemoryPlatformConfig(fileSystem);
MapModuleConfig moduleConfig = platformConfig.createModuleConfig("security-analysis-default-parameters");
moduleConfig.setStringProperty("increased-flow-violations-proportional-threshold", "0.3");
moduleConfig.setStringProperty("increased-low-voltage-violations-proportional-threshold", "0.4");
moduleConfig.setStringProperty("increased-high-voltage-violations-proportional-threshold", "0.2");
moduleConfig.setStringProperty("increased-low-voltage-violations-absolute-threshold", "20");
moduleConfig.setStringProperty("increased-high-voltage-violations-absolute-threshold", "25");
moduleConfig.setStringProperty("intermediate-results-in-operator-strategy", "true");
SecurityAnalysisParameters parameters = SecurityAnalysisParameters.load(platformConfig);
assertEquals(0.3, parameters.getIncreasedViolationsParameters().getFlowProportionalThreshold(), EPS);
assertEquals(0.4, parameters.getIncreasedViolationsParameters().getLowVoltageProportionalThreshold(), EPS);
assertEquals(0.2, parameters.getIncreasedViolationsParameters().getHighVoltageProportionalThreshold(), EPS);
assertEquals(20, parameters.getIncreasedViolationsParameters().getLowVoltageAbsoluteThreshold(), EPS);
assertEquals(25, parameters.getIncreasedViolationsParameters().getHighVoltageAbsoluteThreshold(), EPS);
assertTrue(parameters.getIntermediateResultsInOperatorStrategy());
}
}
@Test
void testIncreasedViolationsParameters() {
SecurityAnalysisParameters parameters = new SecurityAnalysisParameters();
assertEquals(0.1, parameters.getIncreasedViolationsParameters().getFlowProportionalThreshold(), EPS);
assertEquals(0.0, parameters.getIncreasedViolationsParameters().getLowVoltageProportionalThreshold(), EPS);
assertEquals(0.0, parameters.getIncreasedViolationsParameters().getHighVoltageProportionalThreshold(), EPS);
assertEquals(0.0, parameters.getIncreasedViolationsParameters().getLowVoltageAbsoluteThreshold(), EPS);
assertEquals(0.0, parameters.getIncreasedViolationsParameters().getHighVoltageAbsoluteThreshold(), EPS);
parameters.getIncreasedViolationsParameters().setFlowProportionalThreshold(0.01);
parameters.getIncreasedViolationsParameters().setLowVoltageProportionalThreshold(0.1);
parameters.getIncreasedViolationsParameters().setHighVoltageProportionalThreshold(0.2);
parameters.getIncreasedViolationsParameters().setLowVoltageAbsoluteThreshold(4.0);
parameters.getIncreasedViolationsParameters().setHighVoltageAbsoluteThreshold(5.0);
assertEquals(0.01, parameters.getIncreasedViolationsParameters().getFlowProportionalThreshold(), EPS);
assertEquals(0.1, parameters.getIncreasedViolationsParameters().getLowVoltageProportionalThreshold(), EPS);
assertEquals(0.2, parameters.getIncreasedViolationsParameters().getHighVoltageProportionalThreshold(), EPS);
assertEquals(4.0, parameters.getIncreasedViolationsParameters().getLowVoltageAbsoluteThreshold(), EPS);
assertEquals(5.0, parameters.getIncreasedViolationsParameters().getHighVoltageAbsoluteThreshold(), EPS);
}
}