/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.activemq.artemis.core.config.impl;
import java.io.File;
import java.util.Properties;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.activemq.artemis.ArtemisConstants;
import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.config.ha.LiveOnlyPolicyConfiguration;
import org.apache.activemq.artemis.core.server.JournalType;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.apache.activemq.artemis.utils.RandomUtil;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class ConfigurationImplTest extends ActiveMQTestBase {
protected Configuration conf;
@Test
public void testDefaults() {
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultScheduledThreadPoolMaxSize(), conf.getScheduledThreadPoolMaxSize());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultSecurityInvalidationInterval(), conf.getSecurityInvalidationInterval());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultSecurityEnabled(), conf.isSecurityEnabled());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultBindingsDirectory(), conf.getBindingsDirectory());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultCreateBindingsDir(), conf.isCreateBindingsDir());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultJournalDir(), conf.getJournalDirectory());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultCreateJournalDir(), conf.isCreateJournalDir());
Assert.assertEquals(ConfigurationImpl.DEFAULT_JOURNAL_TYPE, conf.getJournalType());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultJournalSyncTransactional(), conf.isJournalSyncTransactional());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultJournalSyncNonTransactional(), conf.isJournalSyncNonTransactional());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultJournalFileSize(), conf.getJournalFileSize());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultJournalMinFiles(), conf.getJournalMinFiles());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultJournalMaxIoAio(), conf.getJournalMaxIO_AIO());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultJournalMaxIoNio(), conf.getJournalMaxIO_NIO());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultWildcardRoutingEnabled(), conf.isWildcardRoutingEnabled());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultTransactionTimeout(), conf.getTransactionTimeout());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultMessageExpiryScanPeriod(), conf.getMessageExpiryScanPeriod()); // OK
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultMessageExpiryThreadPriority(), conf.getMessageExpiryThreadPriority()); // OK
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultTransactionTimeoutScanPeriod(), conf.getTransactionTimeoutScanPeriod()); // OK
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultManagementAddress(), conf.getManagementAddress()); // OK
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultManagementNotificationAddress(), conf.getManagementNotificationAddress()); // OK
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultClusterUser(), conf.getClusterUser()); // OK
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultClusterPassword(), conf.getClusterPassword()); // OK
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultPersistenceEnabled(), conf.isPersistenceEnabled());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultPersistDeliveryCountBeforeDelivery(), conf.isPersistDeliveryCountBeforeDelivery());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultFileDeployerScanPeriod(), conf.getFileDeployerScanPeriod());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultThreadPoolMaxSize(), conf.getThreadPoolMaxSize());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultJmxManagementEnabled(), conf.isJMXManagementEnabled());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultConnectionTtlOverride(), conf.getConnectionTTLOverride());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultAsyncConnectionExecutionEnabled(), conf.isAsyncConnectionExecutionEnabled());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultPagingDir(), conf.getPagingDirectory());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultLargeMessagesDir(), conf.getLargeMessagesDirectory());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultJournalCompactPercentage(), conf.getJournalCompactPercentage());
Assert.assertEquals(ArtemisConstants.DEFAULT_JOURNAL_BUFFER_TIMEOUT_AIO, conf.getJournalBufferTimeout_AIO());
Assert.assertEquals(ArtemisConstants.DEFAULT_JOURNAL_BUFFER_TIMEOUT_NIO, conf.getJournalBufferTimeout_NIO());
Assert.assertEquals(ArtemisConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO, conf.getJournalBufferSize_AIO());
Assert.assertEquals(ArtemisConstants.DEFAULT_JOURNAL_BUFFER_SIZE_NIO, conf.getJournalBufferSize_NIO());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultJournalLogWriteRate(), conf.isLogJournalWriteRate());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultMessageCounterEnabled(), conf.isMessageCounterEnabled());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultMessageCounterMaxDayHistory(), conf.getMessageCounterMaxDayHistory());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultMessageCounterSamplePeriod(), conf.getMessageCounterSamplePeriod());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultIdCacheSize(), conf.getIDCacheSize());
Assert.assertEquals(ActiveMQDefaultConfiguration.isDefaultPersistIdCache(), conf.isPersistIDCache());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultServerDumpInterval(), conf.getServerDumpInterval());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultMemoryWarningThreshold(), conf.getMemoryWarningThreshold());
Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultMemoryMeasureInterval(), conf.getMemoryMeasureInterval());
}
@Test
public void testSetGetAttributes() throws Exception {
for (int j = 0; j < 100; j++) {
int i = RandomUtil.randomInt();
conf.setScheduledThreadPoolMaxSize(i);
Assert.assertEquals(i, conf.getScheduledThreadPoolMaxSize());
long l = RandomUtil.randomLong();
conf.setSecurityInvalidationInterval(l);
Assert.assertEquals(l, conf.getSecurityInvalidationInterval());
boolean b = RandomUtil.randomBoolean();
conf.setSecurityEnabled(b);
Assert.assertEquals(b, conf.isSecurityEnabled());
String s = RandomUtil.randomString();
conf.setBindingsDirectory(s);
Assert.assertEquals(s, conf.getBindingsDirectory());
b = RandomUtil.randomBoolean();
conf.setCreateBindingsDir(b);
Assert.assertEquals(b, conf.isCreateBindingsDir());
s = RandomUtil.randomString();
conf.setJournalDirectory(s);
Assert.assertEquals(s, conf.getJournalDirectory());
b = RandomUtil.randomBoolean();
conf.setCreateJournalDir(b);
Assert.assertEquals(b, conf.isCreateJournalDir());
i = RandomUtil.randomInt() % 2;
JournalType journal = i == 0 ? JournalType.ASYNCIO : JournalType.NIO;
conf.setJournalType(journal);
Assert.assertEquals(journal, conf.getJournalType());
b = RandomUtil.randomBoolean();
conf.setJournalSyncTransactional(b);
Assert.assertEquals(b, conf.isJournalSyncTransactional());
b = RandomUtil.randomBoolean();
conf.setJournalSyncNonTransactional(b);
Assert.assertEquals(b, conf.isJournalSyncNonTransactional());
i = RandomUtil.randomInt();
conf.setJournalFileSize(i);
Assert.assertEquals(i, conf.getJournalFileSize());
i = RandomUtil.randomInt();
conf.setJournalMinFiles(i);
Assert.assertEquals(i, conf.getJournalMinFiles());
i = RandomUtil.randomInt();
conf.setJournalMaxIO_AIO(i);
Assert.assertEquals(i, conf.getJournalMaxIO_AIO());
i = RandomUtil.randomInt();
conf.setJournalMaxIO_NIO(i);
Assert.assertEquals(i, conf.getJournalMaxIO_NIO());
s = RandomUtil.randomString();
conf.setManagementAddress(new SimpleString(s));
Assert.assertEquals(s, conf.getManagementAddress().toString());
i = RandomUtil.randomInt();
conf.setMessageExpiryThreadPriority(i);
Assert.assertEquals(i, conf.getMessageExpiryThreadPriority());
l = RandomUtil.randomLong();
conf.setMessageExpiryScanPeriod(l);
Assert.assertEquals(l, conf.getMessageExpiryScanPeriod());
b = RandomUtil.randomBoolean();
conf.setPersistDeliveryCountBeforeDelivery(b);
Assert.assertEquals(b, conf.isPersistDeliveryCountBeforeDelivery());
b = RandomUtil.randomBoolean();
conf.setEnabledAsyncConnectionExecution(b);
Assert.assertEquals(b, conf.isAsyncConnectionExecutionEnabled());
b = RandomUtil.randomBoolean();
conf.setPersistenceEnabled(b);
Assert.assertEquals(b, conf.isPersistenceEnabled());
b = RandomUtil.randomBoolean();
conf.setJMXManagementEnabled(b);
Assert.assertEquals(b, conf.isJMXManagementEnabled());
l = RandomUtil.randomLong();
conf.setFileDeployerScanPeriod(l);
Assert.assertEquals(l, conf.getFileDeployerScanPeriod());
l = RandomUtil.randomLong();
conf.setConnectionTTLOverride(l);
Assert.assertEquals(l, conf.getConnectionTTLOverride());
i = RandomUtil.randomInt();
conf.setThreadPoolMaxSize(i);
Assert.assertEquals(i, conf.getThreadPoolMaxSize());
SimpleString ss = RandomUtil.randomSimpleString();
conf.setManagementNotificationAddress(ss);
Assert.assertEquals(ss, conf.getManagementNotificationAddress());
s = RandomUtil.randomString();
conf.setClusterUser(s);
Assert.assertEquals(s, conf.getClusterUser());
i = RandomUtil.randomInt();
conf.setIDCacheSize(i);
Assert.assertEquals(i, conf.getIDCacheSize());
b = RandomUtil.randomBoolean();
conf.setPersistIDCache(b);
Assert.assertEquals(b, conf.isPersistIDCache());
i = RandomUtil.randomInt();
conf.setJournalCompactMinFiles(i);
Assert.assertEquals(i, conf.getJournalCompactMinFiles());
i = RandomUtil.randomInt();
conf.setJournalCompactPercentage(i);
Assert.assertEquals(i, conf.getJournalCompactPercentage());
i = RandomUtil.randomInt();
conf.setJournalBufferSize_AIO(i);
Assert.assertEquals(i, conf.getJournalBufferSize_AIO());
i = RandomUtil.randomInt();
conf.setJournalBufferTimeout_AIO(i);
Assert.assertEquals(i, conf.getJournalBufferTimeout_AIO());
i = RandomUtil.randomInt();
conf.setJournalBufferSize_NIO(i);
Assert.assertEquals(i, conf.getJournalBufferSize_NIO());
i = RandomUtil.randomInt();
conf.setJournalBufferTimeout_NIO(i);
Assert.assertEquals(i, conf.getJournalBufferTimeout_NIO());
b = RandomUtil.randomBoolean();
conf.setLogJournalWriteRate(b);
Assert.assertEquals(b, conf.isLogJournalWriteRate());
l = RandomUtil.randomLong();
conf.setServerDumpInterval(l);
Assert.assertEquals(l, conf.getServerDumpInterval());
s = RandomUtil.randomString();
conf.setPagingDirectory(s);
Assert.assertEquals(s, conf.getPagingDirectory());
s = RandomUtil.randomString();
conf.setLargeMessagesDirectory(s);
Assert.assertEquals(s, conf.getLargeMessagesDirectory());
l = RandomUtil.randomLong();
conf.setTransactionTimeout(l);
Assert.assertEquals(l, conf.getTransactionTimeout());
b = RandomUtil.randomBoolean();
conf.setMessageCounterEnabled(b);
Assert.assertEquals(b, conf.isMessageCounterEnabled());
l = RandomUtil.randomPositiveLong();
conf.setMessageCounterSamplePeriod(l);
Assert.assertEquals(l, conf.getMessageCounterSamplePeriod());
i = RandomUtil.randomInt();
conf.setMessageCounterMaxDayHistory(i);
Assert.assertEquals(i, conf.getMessageCounterMaxDayHistory());
l = RandomUtil.randomLong();
conf.setTransactionTimeoutScanPeriod(l);
Assert.assertEquals(l, conf.getTransactionTimeoutScanPeriod());
s = RandomUtil.randomString();
conf.setClusterPassword(s);
Assert.assertEquals(s, conf.getClusterPassword());
}
}
@Test
public void testGetSetInterceptors() {
final String name1 = "uqwyuqywuy";
final String name2 = "yugyugyguyg";
conf.getIncomingInterceptorClassNames().add(name1);
conf.getIncomingInterceptorClassNames().add(name2);
Assert.assertTrue(conf.getIncomingInterceptorClassNames().contains(name1));
Assert.assertTrue(conf.getIncomingInterceptorClassNames().contains(name2));
Assert.assertFalse(conf.getIncomingInterceptorClassNames().contains("iijij"));
}
@Test
public void testSerialize() throws Exception {
boolean b = RandomUtil.randomBoolean();
conf.setHAPolicyConfiguration(new LiveOnlyPolicyConfiguration());
int i = RandomUtil.randomInt();
conf.setScheduledThreadPoolMaxSize(i);
Assert.assertEquals(i, conf.getScheduledThreadPoolMaxSize());
long l = RandomUtil.randomLong();
conf.setSecurityInvalidationInterval(l);
Assert.assertEquals(l, conf.getSecurityInvalidationInterval());
b = RandomUtil.randomBoolean();
conf.setSecurityEnabled(b);
Assert.assertEquals(b, conf.isSecurityEnabled());
String s = RandomUtil.randomString();
conf.setBindingsDirectory(s);
Assert.assertEquals(s, conf.getBindingsDirectory());
b = RandomUtil.randomBoolean();
conf.setCreateBindingsDir(b);
Assert.assertEquals(b, conf.isCreateBindingsDir());
s = RandomUtil.randomString();
conf.setJournalDirectory(s);
Assert.assertEquals(s, conf.getJournalDirectory());
b = RandomUtil.randomBoolean();
conf.setCreateJournalDir(b);
Assert.assertEquals(b, conf.isCreateJournalDir());
i = RandomUtil.randomInt() % 2;
JournalType journal = i == 0 ? JournalType.ASYNCIO : JournalType.NIO;
conf.setJournalType(journal);
Assert.assertEquals(journal, conf.getJournalType());
b = RandomUtil.randomBoolean();
conf.setJournalSyncTransactional(b);
Assert.assertEquals(b, conf.isJournalSyncTransactional());
b = RandomUtil.randomBoolean();
conf.setJournalSyncNonTransactional(b);
Assert.assertEquals(b, conf.isJournalSyncNonTransactional());
i = RandomUtil.randomInt();
conf.setJournalFileSize(i);
Assert.assertEquals(i, conf.getJournalFileSize());
i = RandomUtil.randomInt();
conf.setJournalMinFiles(i);
Assert.assertEquals(i, conf.getJournalMinFiles());
i = RandomUtil.randomInt();
conf.setJournalMaxIO_AIO(i);
Assert.assertEquals(i, conf.getJournalMaxIO_AIO());
i = RandomUtil.randomInt();
conf.setJournalMaxIO_NIO(i);
Assert.assertEquals(i, conf.getJournalMaxIO_NIO());
s = RandomUtil.randomString();
conf.setManagementAddress(new SimpleString(s));
Assert.assertEquals(s, conf.getManagementAddress().toString());
i = RandomUtil.randomInt();
conf.setMessageExpiryThreadPriority(i);
Assert.assertEquals(i, conf.getMessageExpiryThreadPriority());
l = RandomUtil.randomLong();
conf.setMessageExpiryScanPeriod(l);
Assert.assertEquals(l, conf.getMessageExpiryScanPeriod());
b = RandomUtil.randomBoolean();
conf.setPersistDeliveryCountBeforeDelivery(b);
Assert.assertEquals(b, conf.isPersistDeliveryCountBeforeDelivery());
b = RandomUtil.randomBoolean();
conf.setEnabledAsyncConnectionExecution(b);
Assert.assertEquals(b, conf.isAsyncConnectionExecutionEnabled());
b = RandomUtil.randomBoolean();
conf.setPersistenceEnabled(b);
Assert.assertEquals(b, conf.isPersistenceEnabled());
b = RandomUtil.randomBoolean();
conf.setJMXManagementEnabled(b);
Assert.assertEquals(b, conf.isJMXManagementEnabled());
l = RandomUtil.randomLong();
conf.setFileDeployerScanPeriod(l);
Assert.assertEquals(l, conf.getFileDeployerScanPeriod());
l = RandomUtil.randomLong();
conf.setConnectionTTLOverride(l);
Assert.assertEquals(l, conf.getConnectionTTLOverride());
i = RandomUtil.randomInt();
conf.setThreadPoolMaxSize(i);
Assert.assertEquals(i, conf.getThreadPoolMaxSize());
SimpleString ss = RandomUtil.randomSimpleString();
conf.setManagementNotificationAddress(ss);
Assert.assertEquals(ss, conf.getManagementNotificationAddress());
s = RandomUtil.randomString();
conf.setClusterUser(s);
Assert.assertEquals(s, conf.getClusterUser());
i = RandomUtil.randomInt();
conf.setIDCacheSize(i);
Assert.assertEquals(i, conf.getIDCacheSize());
b = RandomUtil.randomBoolean();
conf.setPersistIDCache(b);
Assert.assertEquals(b, conf.isPersistIDCache());
i = RandomUtil.randomInt();
conf.setJournalCompactMinFiles(i);
Assert.assertEquals(i, conf.getJournalCompactMinFiles());
i = RandomUtil.randomInt();
conf.setJournalCompactPercentage(i);
Assert.assertEquals(i, conf.getJournalCompactPercentage());
i = RandomUtil.randomInt();
conf.setJournalBufferSize_AIO(i);
Assert.assertEquals(i, conf.getJournalBufferSize_AIO());
i = RandomUtil.randomInt();
conf.setJournalBufferTimeout_AIO(i);
Assert.assertEquals(i, conf.getJournalBufferTimeout_AIO());
i = RandomUtil.randomInt();
conf.setJournalBufferSize_NIO(i);
Assert.assertEquals(i, conf.getJournalBufferSize_NIO());
i = RandomUtil.randomInt();
conf.setJournalBufferTimeout_NIO(i);
Assert.assertEquals(i, conf.getJournalBufferTimeout_NIO());
b = RandomUtil.randomBoolean();
conf.setLogJournalWriteRate(b);
Assert.assertEquals(b, conf.isLogJournalWriteRate());
l = RandomUtil.randomLong();
conf.setServerDumpInterval(l);
Assert.assertEquals(l, conf.getServerDumpInterval());
s = RandomUtil.randomString();
conf.setPagingDirectory(s);
Assert.assertEquals(s, conf.getPagingDirectory());
s = RandomUtil.randomString();
conf.setLargeMessagesDirectory(s);
Assert.assertEquals(s, conf.getLargeMessagesDirectory());
b = RandomUtil.randomBoolean();
conf.setWildcardRoutingEnabled(b);
Assert.assertEquals(b, conf.isWildcardRoutingEnabled());
l = RandomUtil.randomLong();
conf.setTransactionTimeout(l);
Assert.assertEquals(l, conf.getTransactionTimeout());
b = RandomUtil.randomBoolean();
conf.setMessageCounterEnabled(b);
Assert.assertEquals(b, conf.isMessageCounterEnabled());
l = RandomUtil.randomPositiveLong();
conf.setMessageCounterSamplePeriod(l);
Assert.assertEquals(l, conf.getMessageCounterSamplePeriod());
i = RandomUtil.randomInt();
conf.setMessageCounterMaxDayHistory(i);
Assert.assertEquals(i, conf.getMessageCounterMaxDayHistory());
l = RandomUtil.randomLong();
conf.setTransactionTimeoutScanPeriod(l);
Assert.assertEquals(l, conf.getTransactionTimeoutScanPeriod());
s = RandomUtil.randomString();
conf.setClusterPassword(s);
Assert.assertEquals(s, conf.getClusterPassword());
// This will use serialization to perform a deep copy of the object
Configuration conf2 = conf.copy();
Assert.assertTrue(conf.equals(conf2));
}
@Test
public void testResolvePath() throws Throwable {
// Validate that the resolve method will work even with artemis.instance doesn't exist
String oldProperty = System.getProperty("artemis.instance");
try {
System.setProperty("artemis.instance", "/tmp/" + RandomUtil.randomString());
ConfigurationImpl configuration = new ConfigurationImpl();
configuration.setJournalDirectory("./data-journal");
File journalLocation = configuration.getJournalLocation();
Assert.assertFalse("This path shouldn't resolve to a real folder", journalLocation.exists());
} finally {
if (oldProperty == null) {
System.clearProperty("artemis.instance");
} else {
System.setProperty("artemis.instance", oldProperty);
}
}
}
@Test
public void testAbsolutePath() throws Throwable {
// Validate that the resolve method will work even with artemis.instance doesn't exist
String oldProperty = System.getProperty("artemis.instance");
File tempFolder = null;
try {
System.setProperty("artemis.instance", "/tmp/" + RandomUtil.randomString());
tempFolder = File.createTempFile("journal-folder", "");
tempFolder.delete();
tempFolder = new File(tempFolder.getAbsolutePath());
tempFolder.mkdirs();
System.out.println("TempFolder = " + tempFolder.getAbsolutePath());
ConfigurationImpl configuration = new ConfigurationImpl();
configuration.setJournalDirectory(tempFolder.getAbsolutePath());
File journalLocation = configuration.getJournalLocation();
Assert.assertTrue(journalLocation.exists());
} finally {
if (oldProperty == null) {
System.clearProperty("artemis.instance");
} else {
System.setProperty("artemis.instance", oldProperty);
}
if (tempFolder != null) {
tempFolder.delete();
}
}
}
@Test
public void testSetSystemProperty() throws Throwable {
ConfigurationImpl configuration = new ConfigurationImpl();
Properties properties = new Properties();
properties.put(configuration.getSystemPropertyPrefix() + "fileDeployerScanPeriod", "1234");
properties.put(configuration.getSystemPropertyPrefix() + "globalMaxSize", "4321");
configuration.parseSystemProperties(properties);
Assert.assertEquals(1234, configuration.getFileDeployerScanPeriod());
Assert.assertEquals(4321, configuration.getGlobalMaxSize());
}
/**
* To test ARTEMIS-926
* @throws Throwable
*/
@Test
public void testSetSystemPropertyCME() throws Throwable {
Properties properties = new Properties();
for (int i = 0; i < 5000; i++) {
properties.put("key" + i, "value " + i);
}
final ConfigurationImpl configuration = new ConfigurationImpl();
final AtomicBoolean running = new AtomicBoolean(true);
final CountDownLatch latch = new CountDownLatch(1);
Thread thread = new Thread() {
@Override
public void run() {
latch.countDown();
int i = 1;
while (running.get()) {
properties.remove("key" + i);
properties.put("key" + i, "new value " + i);
i++;
if (i > 200) {
i = 1;
}
}
}
};
thread.start();
try {
latch.await();
properties.put(configuration.getSystemPropertyPrefix() + "fileDeployerScanPeriod", "1234");
properties.put(configuration.getSystemPropertyPrefix() + "globalMaxSize", "4321");
configuration.parseSystemProperties(properties);
} finally {
running.set(false);
thread.join();
}
Assert.assertEquals(1234, configuration.getFileDeployerScanPeriod());
Assert.assertEquals(4321, configuration.getGlobalMaxSize());
}
@Override
@Before
public void setUp() throws Exception {
super.setUp();
conf = createConfiguration();
}
protected Configuration createConfiguration() throws Exception {
return new ConfigurationImpl();
}
}