package org.ovirt.engine.core.config; import java.util.List; import junit.framework.Assert; import org.apache.log4j.Logger; import org.junit.BeforeClass; import org.junit.Test; import org.ovirt.engine.core.config.entity.ConfigKey; public class EngineConfigTest { private static final Logger log = Logger.getLogger(EngineConfigTest.class); private EngineConfig config = EngineConfig.getInstance(); @BeforeClass public static void setConfigFilePathProperty() { final String path = ClassLoader.getSystemResource("engine-config.conf").getPath(); System.setProperty(EngineConfig.CONFIG_FILE_PATH_PROPERTY, path); } @Test public void testConfigDirWithFlagSet() throws Exception { // get the real path of the config file final String path = ClassLoader.getSystemResource("engine-config.conf").getPath(); Assert.assertNotNull(path); EngineConfig.main("-a", "--config=" + path); } @Test public void getValueWithMultipleVersions() throws Exception { final String key = "MaxNumOfVmSockets"; log.info("getValue: Testing fetch multiple version of " + key); List<ConfigKey> keys = config.getEngineConfigLogic().getConfigDAO().getKeysForName(key); for (ConfigKey configKey : keys) { log.info(configKey.getDisplayValue() + " version: " + configKey.getVersion()); } Assert.assertTrue(keys.size() > 0); } @Test(expected = IllegalAccessException.class) public void setOutOfRangeValue() throws Exception { final String outOfRangeForFenceQuietTime = "601"; final String key = "FenceQuietTimeBetweenOperationsInSec"; // Should throw IllegalAccessException since the given value is out of range config.getEngineConfigLogic().persist(key, outOfRangeForFenceQuietTime, ""); } @Test public void setInvalidStringValue() throws Exception { final String key = "LDAP_Security_mode"; Assert.assertFalse(config.getEngineConfigLogic().persist(key, "GSSAPI-invalid-value")); // not valid } @Test public void setStringValueFromFlag() throws Exception { final String certificateFileNameKey = "CertificateFileName"; // Backing up current CertificateFileName ConfigKey originalAuthenticationMethod = config.getEngineConfigLogic().fetchConfigKey(certificateFileNameKey, "general"); final String certificateFileNameNewValue = "/certs/"; setKeyAndValidate(certificateFileNameKey, certificateFileNameNewValue, "general"); // Restoring original value and making sure it was restored successfully restoreOriginalValue(certificateFileNameKey, originalAuthenticationMethod); } private void setKeyAndValidate(final String keyName, final String value, final String version) throws IllegalAccessException { config.getEngineConfigLogic().persist(keyName, value, version); ConfigKey currentConfigKey = config.getEngineConfigLogic().fetchConfigKey(keyName, "general"); Assert.assertEquals(value, currentConfigKey.getValue()); } private void restoreOriginalValue(final String keyName, ConfigKey originialValue) throws IllegalAccessException { config.getEngineConfigLogic().persist(keyName, originialValue.getValue(), originialValue.getVersion()); ConfigKey currentConfigKey = config.getEngineConfigLogic().fetchConfigKey(keyName, "general"); Assert.assertEquals(originialValue.getValue(), currentConfigKey.getValue()); } }