OpenSecurityAnalysisProviderTest.java
/**
* Copyright (c) 2022, 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.openloadflow.sa;
import com.powsybl.commons.config.InMemoryPlatformConfig;
import com.powsybl.commons.config.MapModuleConfig;
import com.powsybl.commons.test.AbstractSerDeTest;
import com.powsybl.openloadflow.util.PowsyblOpenLoadFlowVersion;
import com.powsybl.openloadflow.util.ProviderConstants;
import com.powsybl.security.SecurityAnalysisParameters;
import com.powsybl.security.json.JsonSecurityAnalysisParameters;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
*/
class OpenSecurityAnalysisProviderTest extends AbstractSerDeTest {
private OpenSecurityAnalysisProvider provider;
@BeforeEach
public void setUp() throws IOException {
super.setUp();
provider = new OpenSecurityAnalysisProvider();
}
@Test
void basicTest() {
assertEquals(ProviderConstants.NAME, provider.getName());
assertEquals(new PowsyblOpenLoadFlowVersion().toString(), provider.getVersion());
assertEquals(ProviderConstants.NAME, provider.getLoadFlowProviderName().orElseThrow());
}
@Test
void specificParametersNamesTest() {
assertEquals(List.of("createResultExtension", "contingencyPropagation", "threadCount", "dcFastMode", "contingencyActivePowerLossDistribution"), provider.getSpecificParametersNames());
}
@Test
void specificParametersFromDefaultPlatformConfigTest() {
InMemoryPlatformConfig platformConfig = new InMemoryPlatformConfig(fileSystem);
OpenSecurityAnalysisParameters parametersExt = (OpenSecurityAnalysisParameters) provider.loadSpecificParameters(platformConfig).orElseThrow();
assertEquals("open-security-analysis-parameters", parametersExt.getName());
assertFalse(parametersExt.isCreateResultExtension());
parametersExt.setCreateResultExtension(true);
assertTrue(parametersExt.isCreateResultExtension());
assertTrue(parametersExt.isContingencyPropagation());
parametersExt.setContingencyPropagation(false);
assertFalse(parametersExt.isContingencyPropagation());
assertFalse(parametersExt.isDcFastMode());
parametersExt.setDcFastMode(true);
assertTrue(parametersExt.isDcFastMode());
}
@Test
void specificParametersFromPlatformConfigTest() {
InMemoryPlatformConfig platformConfig = new InMemoryPlatformConfig(fileSystem);
MapModuleConfig moduleConfig = platformConfig.createModuleConfig("open-security-analysis-default-parameters");
moduleConfig.setStringProperty("createResultExtension", "true");
moduleConfig.setStringProperty("contingencyPropagation", "false");
moduleConfig.setStringProperty("dcFastMode", "true");
OpenSecurityAnalysisParameters parametersExt = (OpenSecurityAnalysisParameters) provider.loadSpecificParameters(platformConfig).orElseThrow();
assertTrue(parametersExt.isCreateResultExtension());
assertFalse(parametersExt.isContingencyPropagation());
assertTrue(parametersExt.isDcFastMode());
}
@Test
void specificParametersFromEmptyPropertiesTest() {
OpenSecurityAnalysisParameters parametersExt = (OpenSecurityAnalysisParameters) provider.loadSpecificParameters(Collections.emptyMap()).orElseThrow();
assertFalse(parametersExt.isCreateResultExtension());
assertTrue(parametersExt.isContingencyPropagation());
assertFalse(parametersExt.isDcFastMode());
}
@Test
void specificParametersFromPropertiesTest() {
Map<String, String> properties = Map.of("createResultExtension", "true", "contingencyPropagation", "false", "dcFastMode", "true");
OpenSecurityAnalysisParameters parametersExt = (OpenSecurityAnalysisParameters) provider.loadSpecificParameters(properties).orElseThrow();
assertTrue(parametersExt.isCreateResultExtension());
assertFalse(parametersExt.isContingencyPropagation());
assertTrue(parametersExt.isDcFastMode());
}
@Test
void jsonTest() throws IOException {
SecurityAnalysisParameters parameters = new SecurityAnalysisParameters();
OpenSecurityAnalysisParameters parametersExt = new OpenSecurityAnalysisParameters()
.setCreateResultExtension(true)
.setContingencyPropagation(false)
.setDcFastMode(true);
parameters.addExtension(OpenSecurityAnalysisParameters.class, parametersExt);
roundTripTest(parameters, JsonSecurityAnalysisParameters::write, JsonSecurityAnalysisParameters::read, "/sa-params.json");
}
}