DefaultComputationManagerConfigTest.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.computation;
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.commons.exceptions.UncheckedNoSuchMethodException;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import java.nio.file.FileSystem;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
*/
class DefaultComputationManagerConfigTest {
static class FirstComputationManagerFactory implements ComputationManagerFactory {
@Override
public ComputationManager create() {
return Mockito.mock(ComputationManager.class);
}
}
static class SecondComputationManagerFactory implements ComputationManagerFactory {
@Override
public ComputationManager create() {
return Mockito.mock(ComputationManager.class);
}
}
static class ThirdComputationManagerFactory implements ComputationManagerFactory {
ThirdComputationManagerFactory(String a, String b) {
}
@Override
public ComputationManager create() {
return Mockito.mock(ComputationManager.class);
}
}
private FileSystem fileSystem;
@BeforeEach
void setUp() {
fileSystem = Jimfs.newFileSystem(Configuration.unix());
}
@AfterEach
void tearDown() throws Exception {
fileSystem.close();
}
@Test
void test() {
DefaultComputationManagerConfig config = new DefaultComputationManagerConfig(FirstComputationManagerFactory.class,
SecondComputationManagerFactory.class);
assertEquals("DefaultComputationManagerConfig(shortTimeExecutionComputationManagerFactoryClass=com.powsybl.computation.DefaultComputationManagerConfigTest$FirstComputationManagerFactory, longTimeExecutionComputationManagerFactoryClass=com.powsybl.computation.DefaultComputationManagerConfigTest$SecondComputationManagerFactory)", config.toString());
assertNotNull(config.createShortTimeExecutionComputationManager());
assertNotNull(config.createLongTimeExecutionComputationManager());
config = new DefaultComputationManagerConfig(FirstComputationManagerFactory.class, null);
assertEquals("DefaultComputationManagerConfig(shortTimeExecutionComputationManagerFactoryClass=com.powsybl.computation.DefaultComputationManagerConfigTest$FirstComputationManagerFactory, longTimeExecutionComputationManagerFactoryClass=com.powsybl.computation.DefaultComputationManagerConfigTest$FirstComputationManagerFactory)", config.toString());
assertNotNull(config.createShortTimeExecutionComputationManager());
assertNotNull(config.createLongTimeExecutionComputationManager());
InMemoryPlatformConfig platformConfig = new InMemoryPlatformConfig(fileSystem);
MapModuleConfig moduleConfig = platformConfig.createModuleConfig("default-computation-manager");
moduleConfig.setClassProperty("short-time-execution-computation-manager-factory", FirstComputationManagerFactory.class);
moduleConfig.setClassProperty("long-time-execution-computation-manager-factory", SecondComputationManagerFactory.class);
config = DefaultComputationManagerConfig.load(platformConfig);
assertEquals("DefaultComputationManagerConfig(shortTimeExecutionComputationManagerFactoryClass=" + FirstComputationManagerFactory.class.getName()
+ ", longTimeExecutionComputationManagerFactoryClass=" + SecondComputationManagerFactory.class.getName() + ")",
config.toString());
}
@Test
void testExceptions() {
DefaultComputationManagerConfig config = new DefaultComputationManagerConfig(
FirstComputationManagerFactory.class,
ThirdComputationManagerFactory.class);
assertThrows(UncheckedNoSuchMethodException.class, config::createLongTimeExecutionComputationManager);
}
}