This commit is contained in:
Justin Bertram 2019-06-12 13:51:30 -05:00
commit 8335e78094
14 changed files with 137 additions and 10 deletions

View File

@ -171,6 +171,14 @@ public abstract class ActiveMQTestBase extends Assert {
@ClassRule @ClassRule
public static ThreadLeakCheckRule leakCheckRule = new ThreadLeakCheckRule(); public static ThreadLeakCheckRule leakCheckRule = new ThreadLeakCheckRule();
/** We should not under any circunstance create data outside of ./target
* if you have a test failing because because of this rule for any reason,
* even if you use afterClass events, move the test to ./target and always cleanup after
* your data even under ./target.
* Do not try to disable this rule! Fix your test! */
@Rule
public NoFilesBehind noFilesBehind = new NoFilesBehind("data");
/** This will cleanup any system property changed inside tests */ /** This will cleanup any system property changed inside tests */
@Rule @Rule
public CleanupSystemPropertiesRule propertiesRule = new CleanupSystemPropertiesRule(); public CleanupSystemPropertiesRule propertiesRule = new CleanupSystemPropertiesRule();

View File

@ -0,0 +1,100 @@
/**
* 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.tests.util;
import java.io.File;
import org.apache.activemq.artemis.utils.FileUtil;
import org.jboss.logging.Logger;
import org.junit.Assert;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
/**
* This is useful to make sure you won't have leaking threads between tests
*/
public class NoFilesBehind extends TestWatcher {
private static Logger log = Logger.getLogger(NoFilesBehind.class);
private final String[] filesToCheck;
public NoFilesBehind(String... filesToCheck) {
this.filesToCheck = filesToCheck;
}
private File checkFiles() {
for (String f : filesToCheck) {
File fileCheck = new File(f);
if (fileCheck.exists()) {
return fileCheck;
}
}
return null;
}
/**
* Override to set up your specific external resource.
*
* @throws if setup fails (which will disable {@code after}
*/
@Override
protected void starting(Description description) {
// do nothing
File leaked = checkFiles();
if (leaked != null) {
Assert.fail("A previous test left a folder around:: " + leaked.getAbsolutePath());
}
}
@Override
protected void failed(Throwable e, Description description) {
}
@Override
protected void succeeded(Description description) {
}
/**
* Override to tear down your specific external resource.
*/
@Override
protected void finished(Description description) {
File leaked = checkFiles();
if (leaked != null) {
try {
Assert.fail(leaked.getAbsolutePath() + " is being left behind");
} finally {
try {
FileUtil.deleteDirectory(leaked);
} catch (Throwable almostIgnored) {
// nothing we can do about it.. but we will log a stack trace for debugging
almostIgnored.printStackTrace();
}
}
}
}
}

View File

@ -1318,7 +1318,7 @@ public class DivertTest extends ActiveMQTestBase {
}; };
serviceRegistry.addDivertTransformer(DIVERT, transformer); serviceRegistry.addDivertTransformer(DIVERT, transformer);
ActiveMQServer server = addServer(new ActiveMQServerImpl(null, null, null, null, serviceRegistry)); ActiveMQServer server = addServer(new ActiveMQServerImpl(createBasicConfig(), null, null, null, serviceRegistry));
server.start(); server.start();
server.waitForActivation(100, TimeUnit.MILLISECONDS); server.waitForActivation(100, TimeUnit.MILLISECONDS);
server.createQueue(ADDRESS, RoutingType.MULTICAST, SimpleString.toSimpleString("myQueue"), null, false, false); server.createQueue(ADDRESS, RoutingType.MULTICAST, SimpleString.toSimpleString("myQueue"), null, false, false);

View File

@ -61,6 +61,7 @@ public class JMSServerStartStopTest extends ActiveMQTestBase {
deploymentManager.addDeployable(fc); deploymentManager.addDeployable(fc);
deploymentManager.readConfiguration(); deploymentManager.readConfiguration();
ActiveMQJAASSecurityManager sm = new ActiveMQJAASSecurityManager(InVMLoginModule.class.getName(), new SecurityConfiguration()); ActiveMQJAASSecurityManager sm = new ActiveMQJAASSecurityManager(InVMLoginModule.class.getName(), new SecurityConfiguration());
server = addServer(new ActiveMQServerImpl(fc, sm)); server = addServer(new ActiveMQServerImpl(fc, sm));

View File

@ -21,12 +21,13 @@ import java.io.File;
import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl; import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl;
import org.apache.activemq.artemis.core.io.aio.AIOSequentialFileFactory; import org.apache.activemq.artemis.core.io.aio.AIOSequentialFileFactory;
import org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager; import org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.apache.activemq.artemis.utils.actors.OrderedExecutorFactory; import org.apache.activemq.artemis.utils.actors.OrderedExecutorFactory;
import org.apache.activemq.artemis.utils.critical.EmptyCriticalAnalyzer; import org.apache.activemq.artemis.utils.critical.EmptyCriticalAnalyzer;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
public class JournalFileSizeTest { public class JournalFileSizeTest extends ActiveMQTestBase {
private static int align; private static int align;
@ -39,9 +40,16 @@ public class JournalFileSizeTest {
} }
} }
@Override
protected ConfigurationImpl createBasicConfig(final int serverID) {
ConfigurationImpl configuration = new ConfigurationImpl().setJournalDirectory(getJournalDir(serverID, false)).setBindingsDirectory(getBindingsDir(serverID, false)).setPagingDirectory(getPageDir(serverID, false)).setLargeMessagesDirectory(getLargeMessagesDir(serverID, false));
return configuration;
}
@Test @Test
public void testIncorrectFileSizeLower() { public void testIncorrectFileSizeLower() throws Exception {
ConfigurationImpl config = new ConfigurationImpl(); ConfigurationImpl config = createBasicConfig();
int origFileSize = config.getJournalFileSize(); int origFileSize = config.getJournalFileSize();
config.setJournalFileSize(origFileSize + (align / 2 - 1)); config.setJournalFileSize(origFileSize + (align / 2 - 1));
JournalStorageManager manager = new JournalStorageManager(config, EmptyCriticalAnalyzer.getInstance(), new OrderedExecutorFactory(null), new OrderedExecutorFactory(null)); JournalStorageManager manager = new JournalStorageManager(config, EmptyCriticalAnalyzer.getInstance(), new OrderedExecutorFactory(null), new OrderedExecutorFactory(null));
@ -50,8 +58,8 @@ public class JournalFileSizeTest {
} }
@Test @Test
public void testIncorrectFileSizeHigher() { public void testIncorrectFileSizeHigher() throws Exception {
ConfigurationImpl config = new ConfigurationImpl(); ConfigurationImpl config = createBasicConfig();
int origFileSize = config.getJournalFileSize(); int origFileSize = config.getJournalFileSize();
config.setJournalFileSize(origFileSize + (align / 2 + 1)); config.setJournalFileSize(origFileSize + (align / 2 + 1));
JournalStorageManager manager = new JournalStorageManager(config, EmptyCriticalAnalyzer.getInstance(), new OrderedExecutorFactory(null), new OrderedExecutorFactory(null)); JournalStorageManager manager = new JournalStorageManager(config, EmptyCriticalAnalyzer.getInstance(), new OrderedExecutorFactory(null), new OrderedExecutorFactory(null));
@ -60,8 +68,8 @@ public class JournalFileSizeTest {
} }
@Test @Test
public void testIncorrectFileSizeHalf() { public void testIncorrectFileSizeHalf() throws Exception {
ConfigurationImpl config = new ConfigurationImpl(); ConfigurationImpl config = createBasicConfig();
int origFileSize = config.getJournalFileSize(); int origFileSize = config.getJournalFileSize();
config.setJournalFileSize(origFileSize + (align / 2)); config.setJournalFileSize(origFileSize + (align / 2));
JournalStorageManager manager = new JournalStorageManager(config,EmptyCriticalAnalyzer.getInstance(), new OrderedExecutorFactory(null), new OrderedExecutorFactory(null)); JournalStorageManager manager = new JournalStorageManager(config,EmptyCriticalAnalyzer.getInstance(), new OrderedExecutorFactory(null), new OrderedExecutorFactory(null));

View File

@ -46,7 +46,7 @@ public class SuppliedThreadPoolTest extends ActiveMQTestBase {
serviceRegistry.setExecutorService(Executors.newFixedThreadPool(1, ActiveMQThreadFactory.defaultThreadFactory())); serviceRegistry.setExecutorService(Executors.newFixedThreadPool(1, ActiveMQThreadFactory.defaultThreadFactory()));
serviceRegistry.setIOExecutorService(Executors.newFixedThreadPool(5, ActiveMQThreadFactory.defaultThreadFactory())); serviceRegistry.setIOExecutorService(Executors.newFixedThreadPool(5, ActiveMQThreadFactory.defaultThreadFactory()));
serviceRegistry.setScheduledExecutorService(Executors.newScheduledThreadPool(1, ActiveMQThreadFactory.defaultThreadFactory())); serviceRegistry.setScheduledExecutorService(Executors.newScheduledThreadPool(1, ActiveMQThreadFactory.defaultThreadFactory()));
server = new ActiveMQServerImpl(null, null, null, null, serviceRegistry); server = new ActiveMQServerImpl(createBasicConfig(), null, null, null, serviceRegistry);
server.start(); server.start();
server.waitForActivation(100, TimeUnit.MILLISECONDS); server.waitForActivation(100, TimeUnit.MILLISECONDS);
} }

View File

@ -26,6 +26,7 @@
<connector name="netty-connector">tcp://localhost:61616</connector> <connector name="netty-connector">tcp://localhost:61616</connector>
</connectors> </connectors>
<persistence-enabled>false</persistence-enabled>
<journal-directory>./target/tmp/activemq-unit-test/broker-plugin-test/</journal-directory> <journal-directory>./target/tmp/activemq-unit-test/broker-plugin-test/</journal-directory>
<acceptors> <acceptors>

View File

@ -26,6 +26,7 @@
<connector name="netty-connector">tcp://localhost:61616</connector> <connector name="netty-connector">tcp://localhost:61616</connector>
</connectors> </connectors>
<persistence-enabled>false</persistence-enabled>
<journal-directory>./target/tmp/activemq-unit-test/broker-plugin-test/</journal-directory> <journal-directory>./target/tmp/activemq-unit-test/broker-plugin-test/</journal-directory>
<acceptors> <acceptors>

View File

@ -22,6 +22,7 @@
</jms> </jms>
<core xmlns="urn:activemq:core"> <core xmlns="urn:activemq:core">
<persistence-enabled>false</persistence-enabled>
<connectors> <connectors>
<connector name="netty-connector">tcp://localhost:61616</connector> <connector name="netty-connector">tcp://localhost:61616</connector>
</connectors> </connectors>

View File

@ -24,6 +24,7 @@ under the License.
<core xmlns="urn:activemq:core"> <core xmlns="urn:activemq:core">
<security-enabled>false</security-enabled> <security-enabled>false</security-enabled>
<persistence-enabled>false</persistence-enabled>
<acceptors> <acceptors>
<acceptor name="artemis">tcp://0.0.0.0:61616</acceptor> <acceptor name="artemis">tcp://0.0.0.0:61616</acceptor>

View File

@ -24,6 +24,7 @@ under the License.
<core xmlns="urn:activemq:core"> <core xmlns="urn:activemq:core">
<security-enabled>false</security-enabled> <security-enabled>false</security-enabled>
<persistence-enabled>false</persistence-enabled>
<acceptors> <acceptors>
<acceptor name="artemis">tcp://0.0.0.0:61616</acceptor> <acceptor name="artemis">tcp://0.0.0.0:61616</acceptor>

View File

@ -24,6 +24,7 @@ under the License.
<core xmlns="urn:activemq:core"> <core xmlns="urn:activemq:core">
<security-enabled>false</security-enabled> <security-enabled>false</security-enabled>
<persistence-enabled>false</persistence-enabled>
<acceptors> <acceptors>
<!-- Default ActiveMQ Artemis Acceptor. Multi-protocol adapter. Currently supports ActiveMQ Artemis Core, OpenWire, STOMP, AMQP, MQTT, and HornetQ Core. --> <!-- Default ActiveMQ Artemis Acceptor. Multi-protocol adapter. Currently supports ActiveMQ Artemis Core, OpenWire, STOMP, AMQP, MQTT, and HornetQ Core. -->

View File

@ -24,6 +24,7 @@ under the License.
<core xmlns="urn:activemq:core"> <core xmlns="urn:activemq:core">
<security-enabled>false</security-enabled> <security-enabled>false</security-enabled>
<persistence-enabled>false</persistence-enabled>
<acceptors> <acceptors>
<!-- Default ActiveMQ Artemis Acceptor. Multi-protocol adapter. Currently supports ActiveMQ Artemis Core, OpenWire, STOMP, AMQP, MQTT, and HornetQ Core. --> <!-- Default ActiveMQ Artemis Acceptor. Multi-protocol adapter. Currently supports ActiveMQ Artemis Core, OpenWire, STOMP, AMQP, MQTT, and HornetQ Core. -->

View File

@ -26,7 +26,10 @@
<connector name="netty-connector">tcp://localhost:61616</connector> <connector name="netty-connector">tcp://localhost:61616</connector>
</connectors> </connectors>
<journal-directory>./target/tmp/activemq-unit-test/start-stop-data</journal-directory> <journal-directory>./target/tmp/activemq-unit-test/start-stop-data/journal</journal-directory>
<paging-directory>./target/tmp/activemq-unit-test/start-stop-data/paging</paging-directory>
<bindings-directory>./target/tmp/activemq-unit-test/start-stop-data/paging</bindings-directory>
<large-messages-directory>./target/tmp/activemq-unit-test/start-stop-data/paging</large-messages-directory>
<acceptors> <acceptors>
<acceptor name="netty-acceptor">tcp://localhost:61616</acceptor> <acceptor name="netty-acceptor">tcp://localhost:61616</acceptor>