ARTEMIS-139 data.folder related to artemis

https://issues.apache.org/jira/browse/ARTEMIS-139

I'm using the constructors on File(parent, filename) now with the home directory
This commit is contained in:
Clebert Suconic 2015-06-16 18:49:43 -04:00
parent 7de88ef87a
commit 4388923527
79 changed files with 541 additions and 876 deletions

View File

@ -124,7 +124,7 @@ public abstract class Configurable extends ActionAbstract
{ {
if (getBrokerInstance() == null) if (getBrokerInstance() == null)
{ {
final String defaultLocation = "../data"; final String defaultLocation = "./data";
fileConfiguration = new FileConfiguration(); fileConfiguration = new FileConfiguration();
// These will be the default places in case the file can't be loaded // These will be the default places in case the file can't be loaded
fileConfiguration.setBindingsDirectory(defaultLocation + "/bindings"); fileConfiguration.setBindingsDirectory(defaultLocation + "/bindings");

View File

@ -98,8 +98,8 @@ public class Create extends InputAbstract
@Option(name = "--home", description = "Directory where ActiveMQ Artemis is installed") @Option(name = "--home", description = "Directory where ActiveMQ Artemis is installed")
File home; File home;
@Option(name = "--data", description = "Directory where ActiveMQ Data is used. Path are relative to artemis.instance/bin") @Option(name = "--data", description = "Directory where ActiveMQ Data is used. Path are relative to artemis.instance")
String data = "../data"; String data = "./data";
@Option(name = "--clustered", description = "Enable clustering") @Option(name = "--clustered", description = "Enable clustering")
boolean clustered = false; boolean clustered = false;
@ -131,7 +131,7 @@ public class Create extends InputAbstract
@Option(name = "--allow-anonymous", description = "Enables anonymous configuration on security (Default: input)") @Option(name = "--allow-anonymous", description = "Enables anonymous configuration on security (Default: input)")
Boolean allowAnonymous = null; Boolean allowAnonymous = null;
@Option(name = "--require-login", description = "This will configure security to require user / password. Compliment --allow-anonymous") @Option(name = "--require-login", description = "This will configure security to require user / password. Compliments --allow-anonymous")
Boolean requireLogin = null; Boolean requireLogin = null;
@Option(name = "--user", description = "The username (Default: input)") @Option(name = "--user", description = "The username (Default: input)")

View File

@ -84,10 +84,10 @@ public class Run extends Configurable
private void createDirectories(FileConfiguration fileConfiguration) private void createDirectories(FileConfiguration fileConfiguration)
{ {
new File(fileConfiguration.getBindingsDirectory()).mkdirs(); fileConfiguration.getPagingLocation().mkdirs();
new File(fileConfiguration.getJournalDirectory()).mkdirs(); fileConfiguration.getJournalLocation().mkdirs();
new File(fileConfiguration.getPagingDirectory()).mkdirs(); fileConfiguration.getBindingsLocation().mkdirs();
new File(fileConfiguration.getLargeMessagesDirectory()).mkdirs(); fileConfiguration.getLargeMessagesLocation().mkdirs();
} }
/** /**
@ -137,7 +137,6 @@ public class Run extends Configurable
{ {
try try
{ {
//TODO stop components
server.stop(); server.stop();
} }
catch (Exception e) catch (Exception e)

View File

@ -42,7 +42,7 @@ public abstract class DataAbstract extends Configurable
{ {
if (largeMessges == null) if (largeMessges == null)
{ {
largeMessges = getFileConfiguration().getLargeMessagesDirectory(); largeMessges = getFileConfiguration().getLargeMessagesLocation().getAbsolutePath();
} }
checkIfDirectoryExists(largeMessges); checkIfDirectoryExists(largeMessges);
@ -55,7 +55,7 @@ public abstract class DataAbstract extends Configurable
{ {
if (binding == null) if (binding == null)
{ {
binding = getFileConfiguration().getBindingsDirectory(); binding = getFileConfiguration().getBindingsLocation().getAbsolutePath();
} }
checkIfDirectoryExists(binding); checkIfDirectoryExists(binding);
@ -67,7 +67,7 @@ public abstract class DataAbstract extends Configurable
{ {
if (journal == null) if (journal == null)
{ {
journal = getFileConfiguration().getJournalDirectory(); journal = getFileConfiguration().getJournalLocation().getAbsolutePath();
} }
checkIfDirectoryExists(journal); checkIfDirectoryExists(journal);
@ -79,7 +79,7 @@ public abstract class DataAbstract extends Configurable
{ {
if (paging == null) if (paging == null)
{ {
paging = getFileConfiguration().getPagingDirectory(); paging = getFileConfiguration().getPagingLocation().getAbsolutePath();
} }
checkIfDirectoryExists(paging); checkIfDirectoryExists(paging);

View File

@ -117,7 +117,7 @@ public class DecodeJournal extends Configurable implements Action
System.err.println("Could not create directory " + directory); System.err.println("Could not create directory " + directory);
} }
NIOSequentialFileFactory nio = new NIOSequentialFileFactory(directory, null); NIOSequentialFileFactory nio = new NIOSequentialFileFactory(new File(directory), null);
JournalImpl journal = new JournalImpl(fileSize, minFiles, 0, 0, nio, journalPrefix, journalSuffix, 1); JournalImpl journal = new JournalImpl(fileSize, minFiles, 0, 0, nio, journalPrefix, journalSuffix, 1);

View File

@ -17,6 +17,7 @@
package org.apache.activemq.artemis.cli.commands.tools; package org.apache.activemq.artemis.cli.commands.tools;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.PrintStream; import java.io.PrintStream;
import java.util.List; import java.util.List;
@ -112,7 +113,7 @@ public class EncodeJournal extends Configurable implements Action
final int fileSize, final int fileSize,
final PrintStream out) throws Exception final PrintStream out) throws Exception
{ {
NIOSequentialFileFactory nio = new NIOSequentialFileFactory(directory, null); NIOSequentialFileFactory nio = new NIOSequentialFileFactory(new File(directory), null);
JournalImpl journal = new JournalImpl(fileSize, minFiles, 0, 0, nio, journalPrefix, journalSuffix, 1); JournalImpl journal = new JournalImpl(fileSize, minFiles, 0, 0, nio, journalPrefix, journalSuffix, 1);

View File

@ -65,7 +65,7 @@ public class PrintData extends DataAbstract implements Action
super.execute(context); super.execute(context);
try try
{ {
printData(getBinding(), getJournal(), getPaging()); printData(new File(getBinding()), new File(getJournal()), new File(getPaging()));
} }
catch (Exception e) catch (Exception e)
{ {
@ -74,7 +74,7 @@ public class PrintData extends DataAbstract implements Action
return null; return null;
} }
public static void printData(String bindingsDirectory, String messagesDirectory, String pagingDirectory) throws Exception public static void printData(File bindingsDirectory, File messagesDirectory, File pagingDirectory) throws Exception
{ {
// Having the version on the data report is an information very useful to understand what happened // Having the version on the data report is an information very useful to understand what happened
// When debugging stuff // When debugging stuff
@ -148,7 +148,7 @@ public class PrintData extends DataAbstract implements Action
} }
private static void printPages(String pageDirectory, DescribeJournal describeJournal) private static void printPages(File pageDirectory, DescribeJournal describeJournal)
{ {
try try
{ {
@ -181,7 +181,7 @@ public class PrintData extends DataAbstract implements Action
for (SimpleString store : stores) for (SimpleString store : stores)
{ {
PagingStore pgStore = manager.getPageStore(store); PagingStore pgStore = manager.getPageStore(store);
String folder = null; File folder = null;
if (pgStore != null) if (pgStore != null)
{ {

View File

@ -19,6 +19,7 @@ package org.apache.activemq.artemis.cli.commands.tools;
import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter; import javax.xml.stream.XMLStreamWriter;
import java.io.File;
import java.io.OutputStream; import java.io.OutputStream;
import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method; import java.lang.reflect.Method;
@ -344,7 +345,7 @@ public final class XmlDataExporter extends DataAbstract implements Action
private void getJmsBindings() throws Exception private void getJmsBindings() throws Exception
{ {
SequentialFileFactory bindingsJMS = new NIOSequentialFileFactory(config.getBindingsDirectory()); SequentialFileFactory bindingsJMS = new NIOSequentialFileFactory(config.getBindingsLocation());
Journal jmsJournal = new JournalImpl(1024 * 1024, Journal jmsJournal = new JournalImpl(1024 * 1024,
2, 2,
@ -764,7 +765,7 @@ public final class XmlDataExporter extends DataAbstract implements Action
} }
}; };
PagingStoreFactory pageStoreFactory = PagingStoreFactory pageStoreFactory =
new PagingStoreFactoryNIO(storageManager, config.getPagingDirectory(), 1000L, scheduled, executorFactory, true, new PagingStoreFactoryNIO(storageManager, config.getPagingLocation(), 1000L, scheduled, executorFactory, true,
null); null);
HierarchicalRepository<AddressSettings> addressSettingsRepository = new HierarchicalObjectRepository<>(); HierarchicalRepository<AddressSettings> addressSettingsRepository = new HierarchicalObjectRepository<>();
addressSettingsRepository.setDefault(new AddressSettings()); addressSettingsRepository.setDefault(new AddressSettings());
@ -780,7 +781,7 @@ public final class XmlDataExporter extends DataAbstract implements Action
if (pageStore != null) if (pageStore != null)
{ {
String folder = pageStore.getFolder(); File folder = pageStore.getFolder();
ActiveMQServerLogger.LOGGER.debug("Reading page store " + store + " folder = " + folder); ActiveMQServerLogger.LOGGER.debug("Reading page store " + store + " folder = " + folder);
int pageId = (int) pageStore.getFirstPage(); int pageId = (int) pageStore.getFirstPage();

View File

@ -57,8 +57,6 @@ public final class JMSJournalStorageManagerImpl implements JMSStorageManager
private final IDGenerator idGenerator; private final IDGenerator idGenerator;
private final String journalDir;
private final boolean createDir; private final boolean createDir;
private final Journal jmsJournal; private final Journal jmsJournal;
@ -71,6 +69,8 @@ public final class JMSJournalStorageManagerImpl implements JMSStorageManager
private final Map<Pair<PersistedType, String>, PersistedBindings> mapBindings = new ConcurrentHashMap<Pair<PersistedType, String>, PersistedBindings>(); private final Map<Pair<PersistedType, String>, PersistedBindings> mapBindings = new ConcurrentHashMap<Pair<PersistedType, String>, PersistedBindings>();
private final Configuration config;
// Static -------------------------------------------------------- // Static --------------------------------------------------------
// Constructors -------------------------------------------------- // Constructors --------------------------------------------------
@ -83,17 +83,11 @@ public final class JMSJournalStorageManagerImpl implements JMSStorageManager
throw new IllegalArgumentException("Only NIO and AsyncIO are supported journals"); throw new IllegalArgumentException("Only NIO and AsyncIO are supported journals");
} }
// Will use the same place as the bindings directory from the core journal this.config = config;
journalDir = config.getBindingsDirectory();
if (journalDir == null)
{
throw new NullPointerException("bindings-dir is null");
}
createDir = config.isCreateBindingsDir(); createDir = config.isCreateBindingsDir();
SequentialFileFactory bindingsJMS = new NIOSequentialFileFactory(journalDir); SequentialFileFactory bindingsJMS = new NIOSequentialFileFactory(config.getJournalLocation());
Journal localJMS = new JournalImpl(1024 * 1024, Journal localJMS = new JournalImpl(1024 * 1024,
2, 2,
@ -265,7 +259,7 @@ public final class JMSJournalStorageManagerImpl implements JMSStorageManager
public void start() throws Exception public void start() throws Exception
{ {
checkAndCreateDir(journalDir, createDir); checkAndCreateDir(config.getJournalLocation(), createDir);
jmsJournal.start(); jmsJournal.start();
@ -335,15 +329,14 @@ public final class JMSJournalStorageManagerImpl implements JMSStorageManager
// Private ------------------------------------------------------- // Private -------------------------------------------------------
private void checkAndCreateDir(final String dir, final boolean create) private void checkAndCreateDir(final File dir, final boolean create)
{ {
File f = new File(dir);
if (!f.exists()) if (!dir.exists())
{ {
if (create) if (create)
{ {
if (!f.mkdirs()) if (!dir.mkdirs())
{ {
throw new IllegalStateException("Failed to create directory " + dir); throw new IllegalStateException("Failed to create directory " + dir);
} }

View File

@ -16,6 +16,7 @@
*/ */
package org.apache.activemq.artemis.core.journal; package org.apache.activemq.artemis.core.journal;
import java.io.File;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.List; import java.util.List;
@ -71,7 +72,7 @@ public interface SequentialFileFactory
int calculateBlockSize(int bytes); int calculateBlockSize(int bytes);
String getDirectory(); File getDirectory();
void clearBuffer(ByteBuffer buffer); void clearBuffer(ByteBuffer buffer);

View File

@ -46,14 +46,14 @@ public class AIOSequentialFile extends AbstractSequentialFile implements IOExcep
public AIOSequentialFile(final SequentialFileFactory factory, public AIOSequentialFile(final SequentialFileFactory factory,
final int bufferSize, final int bufferSize,
final long bufferTimeoutMilliseconds, final long bufferTimeoutMilliseconds,
final String directory, final File directory,
final String fileName, final String fileName,
final int maxIO, final int maxIO,
final BufferCallback bufferCallback, final BufferCallback bufferCallback,
final Executor writerExecutor, final Executor writerExecutor,
final Executor pollerExecutor) final Executor pollerExecutor)
{ {
super(directory, new File(directory + "/" + fileName), factory, writerExecutor); super(directory, fileName, factory, writerExecutor);
this.maxIO = maxIO; this.maxIO = maxIO;
this.bufferCallback = bufferCallback; this.bufferCallback = bufferCallback;
this.pollerExecutor = pollerExecutor; this.pollerExecutor = pollerExecutor;
@ -85,8 +85,8 @@ public class AIOSequentialFile extends AbstractSequentialFile implements IOExcep
return new AIOSequentialFile(factory, return new AIOSequentialFile(factory,
-1, -1,
-1, -1,
getFile().getParent(), getFile().getParentFile(),
getFileName(), getFile().getName(),
maxIO, maxIO,
bufferCallback, bufferCallback,
writerExecutor, writerExecutor,

View File

@ -16,6 +16,7 @@
*/ */
package org.apache.activemq.artemis.core.journal.impl; package org.apache.activemq.artemis.core.journal.impl;
import java.io.File;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.security.AccessController; import java.security.AccessController;
import java.security.PrivilegedAction; import java.security.PrivilegedAction;
@ -49,7 +50,7 @@ public final class AIOSequentialFileFactory extends AbstractSequentialFileFactor
ActiveMQJournalLogger.LOGGER.trace(message); ActiveMQJournalLogger.LOGGER.trace(message);
} }
public AIOSequentialFileFactory(final String journalDir) public AIOSequentialFileFactory(final File journalDir)
{ {
this(journalDir, this(journalDir,
JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO, JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO,
@ -58,7 +59,7 @@ public final class AIOSequentialFileFactory extends AbstractSequentialFileFactor
null); null);
} }
public AIOSequentialFileFactory(final String journalDir, final IOCriticalErrorListener listener) public AIOSequentialFileFactory(final File journalDir, final IOCriticalErrorListener listener)
{ {
this(journalDir, this(journalDir,
JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO, JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO,
@ -67,7 +68,7 @@ public final class AIOSequentialFileFactory extends AbstractSequentialFileFactor
listener); listener);
} }
public AIOSequentialFileFactory(final String journalDir, public AIOSequentialFileFactory(final File journalDir,
final int bufferSize, final int bufferSize,
final int bufferTimeout, final int bufferTimeout,
final boolean logRates) final boolean logRates)
@ -75,7 +76,7 @@ public final class AIOSequentialFileFactory extends AbstractSequentialFileFactor
this(journalDir, bufferSize, bufferTimeout, logRates, null); this(journalDir, bufferSize, bufferTimeout, logRates, null);
} }
public AIOSequentialFileFactory(final String journalDir, public AIOSequentialFileFactory(final File journalDir,
final int bufferSize, final int bufferSize,
final int bufferTimeout, final int bufferTimeout,
final boolean logRates, final boolean logRates,

View File

@ -41,7 +41,7 @@ public abstract class AbstractSequentialFile implements SequentialFile
private File file; private File file;
private final String directory; protected final File directory;
protected final SequentialFileFactory factory; protected final SequentialFileFactory factory;
@ -66,13 +66,13 @@ public abstract class AbstractSequentialFile implements SequentialFile
* @param file * @param file
* @param directory * @param directory
*/ */
public AbstractSequentialFile(final String directory, public AbstractSequentialFile(final File directory,
final File file, final String file,
final SequentialFileFactory factory, final SequentialFileFactory factory,
final Executor writerExecutor) final Executor writerExecutor)
{ {
super(); super();
this.file = file; this.file = new File(directory, file);
this.directory = directory; this.directory = directory;
this.factory = factory; this.factory = factory;
this.writerExecutor = writerExecutor; this.writerExecutor = writerExecutor;

View File

@ -45,7 +45,7 @@ abstract class AbstractSequentialFileFactory implements SequentialFileFactory
// Timeout used to wait executors to shutdown // Timeout used to wait executors to shutdown
protected static final int EXECUTOR_TIMEOUT = 60; protected static final int EXECUTOR_TIMEOUT = 60;
protected final String journalDir; protected final File journalDir;
protected final TimedBuffer timedBuffer; protected final TimedBuffer timedBuffer;
@ -62,7 +62,7 @@ abstract class AbstractSequentialFileFactory implements SequentialFileFactory
* */ * */
protected ExecutorService writeExecutor; protected ExecutorService writeExecutor;
AbstractSequentialFileFactory(final String journalDir, AbstractSequentialFileFactory(final File journalDir,
final boolean buffered, final boolean buffered,
final int bufferSize, final int bufferSize,
final int bufferTimeout, final int bufferTimeout,
@ -109,7 +109,8 @@ abstract class AbstractSequentialFileFactory implements SequentialFileFactory
} }
} }
public String getDirectory() @Override
public File getDirectory()
{ {
return journalDir; return journalDir;
} }
@ -175,8 +176,7 @@ abstract class AbstractSequentialFileFactory implements SequentialFileFactory
*/ */
public void createDirs() throws Exception public void createDirs() throws Exception
{ {
File file = new File(journalDir); boolean ok = journalDir.mkdirs();
boolean ok = file.mkdirs();
if (!ok) if (!ok)
{ {
throw new IOException("Failed to create directory " + journalDir); throw new IOException("Failed to create directory " + journalDir);
@ -185,8 +185,6 @@ abstract class AbstractSequentialFileFactory implements SequentialFileFactory
public List<String> listFiles(final String extension) throws Exception public List<String> listFiles(final String extension) throws Exception
{ {
File dir = new File(journalDir);
FilenameFilter fnf = new FilenameFilter() FilenameFilter fnf = new FilenameFilter()
{ {
public boolean accept(final File file, final String name) public boolean accept(final File file, final String name)
@ -195,7 +193,7 @@ abstract class AbstractSequentialFileFactory implements SequentialFileFactory
} }
}; };
String[] fileNames = dir.list(fnf); String[] fileNames = journalDir.list(fnf);
if (fileNames == null) if (fileNames == null)
{ {

View File

@ -16,6 +16,8 @@
*/ */
package org.apache.activemq.artemis.core.journal.impl; package org.apache.activemq.artemis.core.journal.impl;
import java.io.File;
import org.apache.activemq.artemis.core.journal.IOCriticalErrorListener; import org.apache.activemq.artemis.core.journal.IOCriticalErrorListener;
/** /**
@ -38,7 +40,7 @@ public final class CompactJournal // NO_UCD
try try
{ {
CompactJournal.compactJournal(arg[0], arg[1], arg[2], 2, Integer.parseInt(arg[3]), null); CompactJournal.compactJournal(new File(arg[0]), arg[1], arg[2], 2, Integer.parseInt(arg[3]), null);
} }
catch (Exception e) catch (Exception e)
{ {
@ -47,7 +49,7 @@ public final class CompactJournal // NO_UCD
} }
static void compactJournal(final String directory, static void compactJournal(final File directory,
final String journalPrefix, final String journalPrefix,
final String journalSuffix, final String journalSuffix,
final int minFiles, final int minFiles,

View File

@ -51,21 +51,12 @@ public final class NIOSequentialFile extends AbstractSequentialFile
private int maxIO; private int maxIO;
public NIOSequentialFile(final SequentialFileFactory factory, public NIOSequentialFile(final SequentialFileFactory factory,
final String directory, final File directory,
final String fileName, final String file,
final int maxIO, final int maxIO,
final Executor writerExecutor) final Executor writerExecutor)
{ {
super(directory, new File(directory + "/" + fileName), factory, writerExecutor); super(directory, file, factory, writerExecutor);
defaultMaxIO = maxIO;
}
public NIOSequentialFile(final SequentialFileFactory factory,
final File file,
final int maxIO,
final Executor writerExecutor)
{
super(file.getParent(), new File(file.getPath()), factory, writerExecutor);
defaultMaxIO = maxIO; defaultMaxIO = maxIO;
} }
@ -284,7 +275,7 @@ public final class NIOSequentialFile extends AbstractSequentialFile
public SequentialFile cloneFile() public SequentialFile cloneFile()
{ {
return new NIOSequentialFile(factory, getFile(), maxIO, writerExecutor); return new NIOSequentialFile(factory, directory, getFileName(), maxIO, writerExecutor);
} }
public void writeDirect(final ByteBuffer bytes, final boolean sync, final IOAsyncTask callback) public void writeDirect(final ByteBuffer bytes, final boolean sync, final IOAsyncTask callback)

View File

@ -16,6 +16,7 @@
*/ */
package org.apache.activemq.artemis.core.journal.impl; package org.apache.activemq.artemis.core.journal.impl;
import java.io.File;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
@ -24,12 +25,12 @@ import org.apache.activemq.artemis.core.journal.SequentialFile;
public class NIOSequentialFileFactory extends AbstractSequentialFileFactory public class NIOSequentialFileFactory extends AbstractSequentialFileFactory
{ {
public NIOSequentialFileFactory(final String journalDir) public NIOSequentialFileFactory(final File journalDir)
{ {
this(journalDir, null); this(journalDir, null);
} }
public NIOSequentialFileFactory(final String journalDir, final IOCriticalErrorListener listener) public NIOSequentialFileFactory(final File journalDir, final IOCriticalErrorListener listener)
{ {
this(journalDir, this(journalDir,
false, false,
@ -39,12 +40,12 @@ public class NIOSequentialFileFactory extends AbstractSequentialFileFactory
listener); listener);
} }
public NIOSequentialFileFactory(final String journalDir, final boolean buffered) public NIOSequentialFileFactory(final File journalDir, final boolean buffered)
{ {
this(journalDir, buffered, null); this(journalDir, buffered, null);
} }
public NIOSequentialFileFactory(final String journalDir, public NIOSequentialFileFactory(final File journalDir,
final boolean buffered, final boolean buffered,
final IOCriticalErrorListener listener) final IOCriticalErrorListener listener)
{ {
@ -56,7 +57,7 @@ public class NIOSequentialFileFactory extends AbstractSequentialFileFactory
listener); listener);
} }
public NIOSequentialFileFactory(final String journalDir, public NIOSequentialFileFactory(final File journalDir,
final boolean buffered, final boolean buffered,
final int bufferSize, final int bufferSize,
final int bufferTimeout, final int bufferTimeout,
@ -65,7 +66,7 @@ public class NIOSequentialFileFactory extends AbstractSequentialFileFactory
this(journalDir, buffered, bufferSize, bufferTimeout, logRates, null); this(journalDir, buffered, bufferSize, bufferTimeout, logRates, null);
} }
public NIOSequentialFileFactory(final String journalDir, public NIOSequentialFileFactory(final File journalDir,
final boolean buffered, final boolean buffered,
final int bufferSize, final int bufferSize,
final int bufferTimeout, final int bufferTimeout,

View File

@ -59,11 +59,11 @@ public class SyncSpeedTest
{ {
if (AIO) if (AIO)
{ {
fileFactory = new AIOSequentialFileFactory(".", 0, 0, false, null); fileFactory = new AIOSequentialFileFactory(new File("."), 0, 0, false, null);
} }
else else
{ {
fileFactory = new NIOSequentialFileFactory(".", false, 0, 0, false, null); fileFactory = new NIOSequentialFileFactory(new File("."), false, 0, 0, false, null);
} }
} }
@ -74,7 +74,7 @@ public class SyncSpeedTest
return new AIOSequentialFile(fileFactory, return new AIOSequentialFile(fileFactory,
0, 0,
0, 0,
".", new File("."),
fileName, fileName,
100000, 100000,
null, null,
@ -83,7 +83,7 @@ public class SyncSpeedTest
} }
else else
{ {
return new NIOSequentialFile(fileFactory, new File(fileName), 1000, null); return new NIOSequentialFile(fileFactory, new File("."), fileName, 1000, null);
} }
} }

View File

@ -18,6 +18,8 @@ package org.apache.activemq.artemis.maven;
import javax.management.MBeanServer; import javax.management.MBeanServer;
import java.io.File;
import org.apache.activemq.artemis.core.config.Configuration; import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.server.NodeManager; import org.apache.activemq.artemis.core.server.NodeManager;
import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl; import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl;
@ -65,7 +67,7 @@ public final class InVMNodeManagerServer extends ActiveMQServerImpl
} }
@Override @Override
protected NodeManager createNodeManager(final String directory, boolean replicatingBackup) protected NodeManager createNodeManager(final File directory, boolean replicatingBackup)
{ {
return nodeManager; return nodeManager;
} }

View File

@ -174,7 +174,7 @@ public class ActiveMQBootstrap
if (nodeManager == null) if (nodeManager == null)
{ {
boolean replicatedBackup = configuration.getHAPolicyConfiguration().getType() == HAPolicyConfiguration.TYPE.REPLICA; boolean replicatedBackup = configuration.getHAPolicyConfiguration().getType() == HAPolicyConfiguration.TYPE.REPLICA;
nodeManager = new InVMNodeManager(replicatedBackup, configuration.getJournalDirectory()); nodeManager = new InVMNodeManager(replicatedBackup, configuration.getJournalLocation());
managerMap.put(nodeId, nodeManager); managerMap.put(nodeId, nodeManager);
} }
server = new InVMNodeManagerServer(configuration, ManagementFactory.getPlatformMBeanServer(), server = new InVMNodeManagerServer(configuration, ManagementFactory.getPlatformMBeanServer(),

View File

@ -16,6 +16,7 @@
*/ */
package org.apache.activemq.artemis.core.config; package org.apache.activemq.artemis.core.config;
import java.io.File;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -434,6 +435,11 @@ public interface Configuration
*/ */
String getBindingsDirectory(); String getBindingsDirectory();
/**
* The binding location related to artemis.instance.
*/
File getBindingsLocation();
/** /**
* Sets the file system directory used to store bindings. * Sets the file system directory used to store bindings.
*/ */
@ -459,6 +465,12 @@ public interface Configuration
*/ */
String getJournalDirectory(); String getJournalDirectory();
/**
* The location of the journal related to artemis.instance.
* @return
*/
File getJournalLocation();
/** /**
* Sets the file system directory used to store journal log. * Sets the file system directory used to store journal log.
*/ */
@ -675,6 +687,12 @@ public interface Configuration
*/ */
Configuration setPagingDirectory(String dir); Configuration setPagingDirectory(String dir);
/**
* The paging location related to artemis.instance
*/
File getPagingLocation();
// Large Messages Properties ------------------------------------------------------------ // Large Messages Properties ------------------------------------------------------------
/** /**
@ -683,6 +701,9 @@ public interface Configuration
*/ */
String getLargeMessagesDirectory(); String getLargeMessagesDirectory();
/** The large message location related to artemis.instance */
File getLargeMessagesLocation();
/** /**
* Sets the file system directory used to store large messages. * Sets the file system directory used to store large messages.
*/ */
@ -864,4 +885,15 @@ public interface Configuration
HAPolicyConfiguration getHAPolicyConfiguration(); HAPolicyConfiguration getHAPolicyConfiguration();
Configuration setHAPolicyConfiguration(HAPolicyConfiguration haPolicyConfiguration); Configuration setHAPolicyConfiguration(HAPolicyConfiguration haPolicyConfiguration);
/**
* Set the Artemis instance relative folder for data and stuff.
*/
void setArtemisInstance(File directory);
/**
* Set the Artemis instance relative folder for data and stuff.
*/
File getArtemisInstance();
} }

View File

@ -18,9 +18,11 @@ package org.apache.activemq.artemis.core.config.impl;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.io.Serializable; import java.io.Serializable;
import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
@ -217,6 +219,11 @@ public class ConfigurationImpl implements Configuration, Serializable
private HAPolicyConfiguration haPolicyConfiguration; private HAPolicyConfiguration haPolicyConfiguration;
/**
* Parent folder for all data folders.
*/
private File artemisInstance;
// Public ------------------------------------------------------------------------- // Public -------------------------------------------------------------------------
public boolean isClustered() public boolean isClustered()
@ -524,6 +531,11 @@ public class ConfigurationImpl implements Configuration, Serializable
return this; return this;
} }
public File getBindingsLocation()
{
return subFolder(getBindingsDirectory());
}
public String getBindingsDirectory() public String getBindingsDirectory()
{ {
return bindingsDirectory; return bindingsDirectory;
@ -549,6 +561,10 @@ public class ConfigurationImpl implements Configuration, Serializable
return this; return this;
} }
public File getJournalLocation()
{
return subFolder(getJournalDirectory());
}
public String getJournalDirectory() public String getJournalDirectory()
{ {
@ -572,6 +588,11 @@ public class ConfigurationImpl implements Configuration, Serializable
return this; return this;
} }
public File getPagingLocation()
{
return subFolder(getPagingDirectory());
}
public String getPagingDirectory() public String getPagingDirectory()
{ {
return pagingDirectory; return pagingDirectory;
@ -797,6 +818,11 @@ public class ConfigurationImpl implements Configuration, Serializable
return largeMessagesDirectory; return largeMessagesDirectory;
} }
public File getLargeMessagesLocation()
{
return subFolder(getLargeMessagesDirectory());
}
public ConfigurationImpl setLargeMessagesDirectory(final String directory) public ConfigurationImpl setLargeMessagesDirectory(final String directory)
{ {
largeMessagesDirectory = directory; largeMessagesDirectory = directory;
@ -1077,6 +1103,30 @@ public class ConfigurationImpl implements Configuration, Serializable
return this.connectorServiceConfigurations; return this.connectorServiceConfigurations;
} }
public File getArtemisInstance()
{
if (artemisInstance != null)
{
return artemisInstance;
}
String strartemisInstance = System.getProperty("artemis.instance");
if (strartemisInstance == null)
{
strartemisInstance = System.getProperty("user.dir");
}
artemisInstance = new File(strartemisInstance);
return artemisInstance;
}
public void setArtemisInstance(File directory)
{
this.artemisInstance = directory;
}
public boolean isCheckForLiveServer() public boolean isCheckForLiveServer()
{ {
if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration) if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
@ -1568,4 +1618,23 @@ public class ConfigurationImpl implements Configuration, Serializable
this.haPolicyConfiguration = haPolicyConfiguration; this.haPolicyConfiguration = haPolicyConfiguration;
return this; return this;
} }
/**
* It will find the right location of a subFolder, related to artemisInstance
*/
private File subFolder(String subFolder)
{
try
{
// Resolve wont work without "/" as the last character
URI artemisHome = new URI(getArtemisInstance().toURI() + "/");
URI relative = artemisHome.resolve(subFolder);
return new File(relative.getPath());
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
} }

View File

@ -16,6 +16,7 @@
*/ */
package org.apache.activemq.artemis.core.paging; package org.apache.activemq.artemis.core.paging;
import java.io.File;
import java.util.Collection; import java.util.Collection;
import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock;
@ -53,7 +54,7 @@ public interface PagingStore extends ActiveMQComponent
SimpleString getStoreName(); SimpleString getStoreName();
String getFolder(); File getFolder();
AddressFullMessagePolicy getAddressFullMessagePolicy(); AddressFullMessagePolicy getAddressFullMessagePolicy();

View File

@ -55,7 +55,7 @@ public class PagingStoreFactoryNIO implements PagingStoreFactory
// Attributes ---------------------------------------------------- // Attributes ----------------------------------------------------
private final String directory; private final File directory;
private final ExecutorFactory executorFactory; private final ExecutorFactory executorFactory;
@ -71,7 +71,7 @@ public class PagingStoreFactoryNIO implements PagingStoreFactory
private final IOCriticalErrorListener critialErrorListener; private final IOCriticalErrorListener critialErrorListener;
public PagingStoreFactoryNIO(final StorageManager storageManager, final String directory, public PagingStoreFactoryNIO(final StorageManager storageManager, final File directory,
final long syncTimeout, final long syncTimeout,
final ScheduledExecutorService scheduledExecutor, final ScheduledExecutorService scheduledExecutor,
final ExecutorFactory executorFactory, final ExecutorFactory executorFactory,
@ -118,7 +118,7 @@ public class PagingStoreFactoryNIO implements PagingStoreFactory
factory.createDirs(); factory.createDirs();
File fileWithID = new File(directory + File.separatorChar + File fileWithID = new File(directory,
guid + guid +
File.separatorChar + File.separatorChar +
PagingStoreFactoryNIO.ADDRESS_FILE); PagingStoreFactoryNIO.ADDRESS_FILE);
@ -145,9 +145,7 @@ public class PagingStoreFactoryNIO implements PagingStoreFactory
public List<PagingStore> reloadStores(final HierarchicalRepository<AddressSettings> addressSettingsRepository) throws Exception public List<PagingStore> reloadStores(final HierarchicalRepository<AddressSettings> addressSettingsRepository) throws Exception
{ {
File pageDirectory = new File(directory); File[] files = directory.listFiles();
File[] files = pageDirectory.listFiles();
if (files == null) if (files == null)
{ {
@ -210,6 +208,6 @@ public class PagingStoreFactoryNIO implements PagingStoreFactory
private SequentialFileFactory newFileFactory(final String directoryName) private SequentialFileFactory newFileFactory(final String directoryName)
{ {
return new NIOSequentialFileFactory(directory + File.separatorChar + directoryName, false, critialErrorListener); return new NIOSequentialFileFactory(new File(directory, directoryName), false, critialErrorListener);
} }
} }

View File

@ -16,6 +16,7 @@
*/ */
package org.apache.activemq.artemis.core.paging.impl; package org.apache.activemq.artemis.core.paging.impl;
import java.io.File;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@ -264,7 +265,7 @@ public class PagingStoreImpl implements PagingStore
return pageSize; return pageSize;
} }
public String getFolder() public File getFolder()
{ {
SequentialFileFactory factoryUsed = this.fileFactory; SequentialFileFactory factoryUsed = this.fileFactory;
if (factoryUsed != null) if (factoryUsed != null)

View File

@ -17,6 +17,7 @@
package org.apache.activemq.artemis.core.persistence.impl.journal; package org.apache.activemq.artemis.core.persistence.impl.journal;
import javax.transaction.xa.Xid; import javax.transaction.xa.Xid;
import java.io.File;
import java.io.PrintStream; import java.io.PrintStream;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
@ -105,7 +106,7 @@ public final class DescribeJournal
return preparedTransactions; return preparedTransactions;
} }
public static void describeBindingsJournal(final String bindingsDir) throws Exception public static void describeBindingsJournal(final File bindingsDir) throws Exception
{ {
SequentialFileFactory bindingsFF = new NIOSequentialFileFactory(bindingsDir, null); SequentialFileFactory bindingsFF = new NIOSequentialFileFactory(bindingsDir, null);
@ -114,7 +115,7 @@ public final class DescribeJournal
describeJournal(bindingsFF, bindings, bindingsDir); describeJournal(bindingsFF, bindings, bindingsDir);
} }
public static DescribeJournal describeMessagesJournal(final String messagesDir) throws Exception public static DescribeJournal describeMessagesJournal(final File messagesDir) throws Exception
{ {
SequentialFileFactory messagesFF = new NIOSequentialFileFactory(messagesDir, null); SequentialFileFactory messagesFF = new NIOSequentialFileFactory(messagesDir, null);
@ -139,7 +140,7 @@ public final class DescribeJournal
* @param journal * @param journal
* @throws Exception * @throws Exception
*/ */
private static DescribeJournal describeJournal(SequentialFileFactory fileFactory, JournalImpl journal, final String path) throws Exception private static DescribeJournal describeJournal(SequentialFileFactory fileFactory, JournalImpl journal, final File path) throws Exception
{ {
List<JournalFile> files = journal.orderFiles(); List<JournalFile> files = journal.orderFiles();

View File

@ -201,18 +201,12 @@ public class JournalStorageManager implements StorageManager
private final int perfBlastPages; private final int perfBlastPages;
private final boolean createBindingsDir;
private final String bindingsDir;
private final boolean createJournalDir;
private final String journalDir;
private final String largeMessagesDirectory; private final String largeMessagesDirectory;
private boolean journalLoaded = false; private boolean journalLoaded = false;
private final Configuration config;
// Persisted core configuration // Persisted core configuration
private final Map<SimpleString, PersistedRoles> mapPersistedRoles = private final Map<SimpleString, PersistedRoles> mapPersistedRoles =
new ConcurrentHashMap<SimpleString, PersistedRoles>(); new ConcurrentHashMap<SimpleString, PersistedRoles>();
@ -232,6 +226,8 @@ public class JournalStorageManager implements StorageManager
{ {
this.executorFactory = executorFactory; this.executorFactory = executorFactory;
this.config = config;
executor = executorFactory.getExecutor(); executor = executorFactory.getExecutor();
if (config.getJournalType() != JournalType.NIO && config.getJournalType() != JournalType.ASYNCIO) if (config.getJournalType() != JournalType.NIO && config.getJournalType() != JournalType.ASYNCIO)
@ -239,17 +235,8 @@ public class JournalStorageManager implements StorageManager
throw ActiveMQMessageBundle.BUNDLE.invalidJournal(); throw ActiveMQMessageBundle.BUNDLE.invalidJournal();
} }
bindingsDir = config.getBindingsDirectory();
if (bindingsDir == null)
{
throw new NullPointerException("bindings-dir is null");
}
createBindingsDir = config.isCreateBindingsDir(); SequentialFileFactory bindingsFF = new NIOSequentialFileFactory(config.getBindingsLocation(), criticalErrorListener);
journalDir = config.getJournalDirectory();
SequentialFileFactory bindingsFF = new NIOSequentialFileFactory(bindingsDir, criticalErrorListener);
Journal localBindings = new JournalImpl(1024 * 1024, Journal localBindings = new JournalImpl(1024 * 1024,
2, 2,
@ -263,13 +250,6 @@ public class JournalStorageManager implements StorageManager
bindingsJournal = localBindings; bindingsJournal = localBindings;
originalBindingsJournal = localBindings; originalBindingsJournal = localBindings;
if (journalDir == null)
{
throw new NullPointerException("journal-dir is null");
}
createJournalDir = config.isCreateJournalDir();
syncNonTransactional = config.isJournalSyncNonTransactional(); syncNonTransactional = config.isJournalSyncNonTransactional();
syncTransactional = config.isJournalSyncTransactional(); syncTransactional = config.isJournalSyncTransactional();
@ -278,7 +258,7 @@ public class JournalStorageManager implements StorageManager
{ {
ActiveMQServerLogger.LOGGER.journalUseAIO(); ActiveMQServerLogger.LOGGER.journalUseAIO();
journalFF = new AIOSequentialFileFactory(journalDir, journalFF = new AIOSequentialFileFactory(config.getJournalLocation(),
config.getJournalBufferSize_AIO(), config.getJournalBufferSize_AIO(),
config.getJournalBufferTimeout_AIO(), config.getJournalBufferTimeout_AIO(),
config.isLogJournalWriteRate(), config.isLogJournalWriteRate(),
@ -287,7 +267,7 @@ public class JournalStorageManager implements StorageManager
else if (config.getJournalType() == JournalType.NIO) else if (config.getJournalType() == JournalType.NIO)
{ {
ActiveMQServerLogger.LOGGER.journalUseNIO(); ActiveMQServerLogger.LOGGER.journalUseNIO();
journalFF = new NIOSequentialFileFactory(journalDir, journalFF = new NIOSequentialFileFactory(config.getJournalLocation(),
true, true,
config.getJournalBufferSize_NIO(), config.getJournalBufferSize_NIO(),
config.getJournalBufferTimeout_NIO(), config.getJournalBufferTimeout_NIO(),
@ -316,7 +296,7 @@ public class JournalStorageManager implements StorageManager
largeMessagesDirectory = config.getLargeMessagesDirectory(); largeMessagesDirectory = config.getLargeMessagesDirectory();
largeMessagesFactory = new NIOSequentialFileFactory(largeMessagesDirectory, false, criticalErrorListener); largeMessagesFactory = new NIOSequentialFileFactory(config.getLargeMessagesLocation(), false, criticalErrorListener);
perfBlastPages = config.getJournalPerfBlastPages(); perfBlastPages = config.getJournalPerfBlastPages();
@ -2242,11 +2222,11 @@ public class JournalStorageManager implements StorageManager
return; return;
} }
checkAndCreateDir(bindingsDir, createBindingsDir); checkAndCreateDir(config.getBindingsLocation(), config.isCreateBindingsDir());
checkAndCreateDir(journalDir, createJournalDir); checkAndCreateDir(config.getJournalLocation(), config.isCreateJournalDir());
checkAndCreateDir(largeMessagesDirectory, createJournalDir); checkAndCreateDir(config.getLargeMessagesLocation(), config.isCreateJournalDir());
cleanupIncompleteFiles(); cleanupIncompleteFiles();
@ -2524,22 +2504,20 @@ public class JournalStorageManager implements StorageManager
// Private ---------------------------------------------------------------------------------- // Private ----------------------------------------------------------------------------------
private void checkAndCreateDir(final String dir, final boolean create) private void checkAndCreateDir(final File dir, final boolean create)
{ {
File f = new File(dir); if (!dir.exists())
if (!f.exists())
{ {
if (create) if (create)
{ {
if (!f.mkdirs()) if (!dir.mkdirs())
{ {
throw new IllegalStateException("Failed to create directory " + dir); throw new IllegalStateException("Failed to create directory " + dir);
} }
} }
else else
{ {
throw ActiveMQMessageBundle.BUNDLE.cannotCreateDir(dir); throw ActiveMQMessageBundle.BUNDLE.cannotCreateDir(dir.getAbsolutePath());
} }
} }
} }

View File

@ -294,7 +294,7 @@ public final class ReplicationEndpoint implements ChannelHandler, ActiveMQCompon
} }
pageManager = pageManager =
new PagingManagerImpl(new PagingStoreFactoryNIO(storageManager, config.getPagingDirectory(), new PagingManagerImpl(new PagingStoreFactoryNIO(storageManager, config.getPagingLocation(),
config.getJournalBufferSize_NIO(), config.getJournalBufferSize_NIO(),
server.getScheduledPool(), server.getScheduledPool(),
server.getExecutorFactory(), server.getExecutorFactory(),

View File

@ -34,7 +34,7 @@ public abstract class NodeManager implements ActiveMQComponent
private static final String ACCESS_MODE = "rw"; private static final String ACCESS_MODE = "rw";
protected final boolean replicatedBackup; protected final boolean replicatedBackup;
private final String directory; private final File directory;
private final Object nodeIDGuard = new Object(); private final Object nodeIDGuard = new Object();
private SimpleString nodeID; private SimpleString nodeID;
private UUID uuid; private UUID uuid;
@ -42,7 +42,7 @@ public abstract class NodeManager implements ActiveMQComponent
protected FileChannel channel; protected FileChannel channel;
public NodeManager(final boolean replicatedBackup, final String directory) public NodeManager(final boolean replicatedBackup, final File directory)
{ {
this.directory = directory; this.directory = directory;
this.replicatedBackup = replicatedBackup; this.replicatedBackup = replicatedBackup;

View File

@ -39,12 +39,12 @@ public final class AIOFileLockNodeManager extends FileLockNodeManager
* @param directory * @param directory
* @param replicatingBackup * @param replicatingBackup
*/ */
public AIOFileLockNodeManager(final String directory, boolean replicatingBackup) public AIOFileLockNodeManager(final File directory, boolean replicatingBackup)
{ {
super(directory, replicatingBackup); super(directory, replicatingBackup);
} }
public AIOFileLockNodeManager(final String directory, boolean replicatingBackup, long lockAcquisitionTimeout) public AIOFileLockNodeManager(final File directory, boolean replicatingBackup, long lockAcquisitionTimeout)
{ {
super(directory, replicatingBackup); super(directory, replicatingBackup);

View File

@ -353,7 +353,7 @@ public class ActiveMQServerImpl implements ActiveMQServer
/* /*
* Can be overridden for tests * Can be overridden for tests
*/ */
protected NodeManager createNodeManager(final String directory, boolean replicatingBackup) protected NodeManager createNodeManager(final File directory, boolean replicatingBackup)
{ {
NodeManager manager; NodeManager manager;
if (!configuration.isPersistenceEnabled()) if (!configuration.isPersistenceEnabled())
@ -396,7 +396,7 @@ public class ActiveMQServerImpl implements ActiveMQServer
{ {
checkJournalDirectory(); checkJournalDirectory();
nodeManager = createNodeManager(configuration.getJournalDirectory(), false); nodeManager = createNodeManager(configuration.getJournalLocation(), false);
nodeManager.start(); nodeManager.start();
@ -500,7 +500,7 @@ public class ActiveMQServerImpl implements ActiveMQServer
{ {
nodeManager.stop(); nodeManager.stop();
nodeManager = nodeManager =
createNodeManager(configuration.getJournalDirectory(), true); createNodeManager(configuration.getJournalLocation(), true);
} }
public Activation getActivation() public Activation getActivation()
@ -1603,7 +1603,7 @@ public class ActiveMQServerImpl implements ActiveMQServer
private PagingManager createPagingManager() private PagingManager createPagingManager()
{ {
return new PagingManagerImpl(new PagingStoreFactoryNIO(storageManager, configuration.getPagingDirectory(), return new PagingManagerImpl(new PagingStoreFactoryNIO(storageManager, configuration.getPagingLocation(),
configuration.getJournalBufferTimeout_NIO(), configuration.getJournalBufferTimeout_NIO(),
scheduledPool, scheduledPool,
executorFactory, executorFactory,
@ -2240,7 +2240,7 @@ public class ActiveMQServerImpl implements ActiveMQServer
*/ */
void checkJournalDirectory() void checkJournalDirectory()
{ {
File journalDir = new File(configuration.getJournalDirectory()); File journalDir = configuration.getJournalLocation();
if (!journalDir.exists() && configuration.isPersistenceEnabled()) if (!journalDir.exists() && configuration.isPersistenceEnabled())
{ {

View File

@ -16,6 +16,7 @@
*/ */
package org.apache.activemq.artemis.core.server.impl; package org.apache.activemq.artemis.core.server.impl;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.FileLock; import java.nio.channels.FileLock;
@ -50,12 +51,12 @@ public class FileLockNodeManager extends NodeManager
protected boolean interrupted = false; protected boolean interrupted = false;
public FileLockNodeManager(final String directory, boolean replicatedBackup) public FileLockNodeManager(final File directory, boolean replicatedBackup)
{ {
super(replicatedBackup, directory); super(replicatedBackup, directory);
} }
public FileLockNodeManager(final String directory, boolean replicatedBackup, long lockAcquisitionTimeout) public FileLockNodeManager(final File directory, boolean replicatedBackup, long lockAcquisitionTimeout)
{ {
super(replicatedBackup, directory); super(replicatedBackup, directory);

View File

@ -16,11 +16,7 @@
*/ */
package org.apache.activemq.artemis.core.server.impl; package org.apache.activemq.artemis.core.server.impl;
import static org.apache.activemq.artemis.core.server.impl.InVMNodeManager.State.LIVE; import java.io.File;
import static org.apache.activemq.artemis.core.server.impl.InVMNodeManager.State.FAILING_BACK;
import static org.apache.activemq.artemis.core.server.impl.InVMNodeManager.State.NOT_STARTED;
import static org.apache.activemq.artemis.core.server.impl.InVMNodeManager.State.PAUSED;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.Semaphore; import java.util.concurrent.Semaphore;
@ -29,6 +25,11 @@ import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.server.NodeManager; import org.apache.activemq.artemis.core.server.NodeManager;
import org.apache.activemq.artemis.utils.UUIDGenerator; import org.apache.activemq.artemis.utils.UUIDGenerator;
import static org.apache.activemq.artemis.core.server.impl.InVMNodeManager.State.FAILING_BACK;
import static org.apache.activemq.artemis.core.server.impl.InVMNodeManager.State.LIVE;
import static org.apache.activemq.artemis.core.server.impl.InVMNodeManager.State.NOT_STARTED;
import static org.apache.activemq.artemis.core.server.impl.InVMNodeManager.State.PAUSED;
/** /**
* NodeManager used to run multiple servers in the same VM. * NodeManager used to run multiple servers in the same VM.
* <p> * <p>
@ -59,7 +60,7 @@ public final class InVMNodeManager extends NodeManager
throw new RuntimeException("if replicated-backup, we need its journal directory"); throw new RuntimeException("if replicated-backup, we need its journal directory");
} }
public InVMNodeManager(boolean replicatedBackup, String directory) public InVMNodeManager(boolean replicatedBackup, File directory)
{ {
super(replicatedBackup, directory); super(replicatedBackup, directory);
liveLock = new Semaphore(1); liveLock = new Semaphore(1);

View File

@ -897,6 +897,11 @@ public abstract class ActiveMQTestBase extends Assert
return testDir; return testDir;
} }
protected final File getTestDirfile()
{
return new File(testDir);
}
protected final void setTestDir(String testDir) protected final void setTestDir(String testDir)
{ {
this.testDir = testDir; this.testDir = testDir;
@ -983,6 +988,12 @@ public abstract class ActiveMQTestBase extends Assert
return getPageDir(getTestDir()); return getPageDir(getTestDir());
} }
protected File getPageDirFile()
{
return new File(getPageDir());
}
/** /**
* @return the pageDir * @return the pageDir
*/ */
@ -1883,7 +1894,7 @@ public abstract class ActiveMQTestBase extends Assert
JournalImpl messagesJournal = null; JournalImpl messagesJournal = null;
try try
{ {
SequentialFileFactory messagesFF = new NIOSequentialFileFactory(getJournalDir(), null); SequentialFileFactory messagesFF = new NIOSequentialFileFactory(new File(getJournalDir()), null);
messagesJournal = new JournalImpl(config.getJournalFileSize(), messagesJournal = new JournalImpl(config.getJournalFileSize(),
config.getJournalMinFiles(), config.getJournalMinFiles(),
@ -1929,7 +1940,7 @@ public abstract class ActiveMQTestBase extends Assert
protected HashMap<Integer, AtomicInteger> countJournal(Configuration config) throws Exception protected HashMap<Integer, AtomicInteger> countJournal(Configuration config) throws Exception
{ {
final HashMap<Integer, AtomicInteger> recordsType = new HashMap<Integer, AtomicInteger>(); final HashMap<Integer, AtomicInteger> recordsType = new HashMap<Integer, AtomicInteger>();
SequentialFileFactory messagesFF = new NIOSequentialFileFactory(config.getJournalDirectory(), null); SequentialFileFactory messagesFF = new NIOSequentialFileFactory(config.getJournalLocation(), null);
JournalImpl messagesJournal = new JournalImpl(config.getJournalFileSize(), JournalImpl messagesJournal = new JournalImpl(config.getJournalFileSize(),
config.getJournalMinFiles(), config.getJournalMinFiles(),
@ -1977,7 +1988,7 @@ public abstract class ActiveMQTestBase extends Assert
if (messageJournal) if (messageJournal)
{ {
ff = new NIOSequentialFileFactory(config.getJournalDirectory(), null); ff = new NIOSequentialFileFactory(config.getJournalLocation(), null);
journal = new JournalImpl(config.getJournalFileSize(), journal = new JournalImpl(config.getJournalFileSize(),
config.getJournalMinFiles(), config.getJournalMinFiles(),
0, 0,
@ -1989,7 +2000,7 @@ public abstract class ActiveMQTestBase extends Assert
} }
else else
{ {
ff = new NIOSequentialFileFactory(config.getBindingsDirectory(), null); ff = new NIOSequentialFileFactory(config.getJournalLocation(), null);
journal = new JournalImpl(1024 * 1024, journal = new JournalImpl(1024 * 1024,
2, 2,
config.getJournalCompactMinFiles(), config.getJournalCompactMinFiles(),

View File

@ -18,6 +18,8 @@ package org.apache.activemq.artemis.tests.util;
import javax.management.MBeanServer; import javax.management.MBeanServer;
import java.io.File;
import org.apache.activemq.artemis.core.asyncio.impl.AsynchronousFileImpl; import org.apache.activemq.artemis.core.asyncio.impl.AsynchronousFileImpl;
import org.apache.activemq.artemis.core.config.Configuration; import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.config.impl.FileConfiguration; import org.apache.activemq.artemis.core.config.impl.FileConfiguration;
@ -62,7 +64,7 @@ public class ColocatedActiveMQServer extends ActiveMQServerImpl
@Override @Override
protected NodeManager protected NodeManager
createNodeManager(final String directory, boolean replicatingBackup) createNodeManager(final File directory, boolean replicatingBackup)
{ {
if (replicatingBackup) if (replicatingBackup)
{ {

View File

@ -18,6 +18,8 @@ package org.apache.activemq.artemis.tests.util;
import javax.management.MBeanServer; import javax.management.MBeanServer;
import java.io.File;
import org.apache.activemq.artemis.core.config.Configuration; import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.server.NodeManager; import org.apache.activemq.artemis.core.server.NodeManager;
import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl; import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl;
@ -65,7 +67,7 @@ public final class InVMNodeManagerServer extends ActiveMQServerImpl
} }
@Override @Override
protected NodeManager createNodeManager(final String directory, boolean replicatingBackup) protected NodeManager createNodeManager(final File directory, boolean replicatingBackup)
{ {
return nodeManager; return nodeManager;
} }

View File

@ -16,6 +16,15 @@
*/ */
package org.apache.activemq.artemis.tests.integration.client; package org.apache.activemq.artemis.tests.integration.client;
import javax.management.MBeanServer;
import java.lang.management.ManagementFactory;
import java.util.LinkedList;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import org.apache.activemq.artemis.api.core.ActiveMQException; import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.Interceptor; import org.apache.activemq.artemis.api.core.Interceptor;
import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.api.core.SimpleString;
@ -62,15 +71,6 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import javax.management.MBeanServer;
import java.lang.management.ManagementFactory;
import java.util.LinkedList;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
/** /**
* This test will simulate a consumer hanging on the delivery packet due to unbehaved clients * This test will simulate a consumer hanging on the delivery packet due to unbehaved clients
* and it will make sure we can still perform certain operations on the queue such as produce * and it will make sure we can still perform certain operations on the queue such as produce
@ -480,7 +480,7 @@ public class HangConsumerTest extends ActiveMQTestBase
server.stop(); server.stop();
SequentialFileFactory messagesFF = new NIOSequentialFileFactory(server.getConfiguration().getBindingsDirectory(), null); SequentialFileFactory messagesFF = new NIOSequentialFileFactory(server.getConfiguration().getBindingsLocation(), null);
JournalImpl messagesJournal = new JournalImpl(1024 * 1024, JournalImpl messagesJournal = new JournalImpl(1024 * 1024,
2, 2,

View File

@ -16,6 +16,7 @@
*/ */
package org.apache.activemq.artemis.tests.integration.client; package org.apache.activemq.artemis.tests.integration.client;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -220,7 +221,7 @@ public class JournalCrashTest extends ActiveMQTestBase
*/ */
private void printJournal() throws Exception private void printJournal() throws Exception
{ {
NIOSequentialFileFactory factory = new NIOSequentialFileFactory(getJournalDir()); NIOSequentialFileFactory factory = new NIOSequentialFileFactory(new File(getJournalDir()));
JournalImpl journal = new JournalImpl(ActiveMQDefaultConfiguration.getDefaultJournalFileSize(), JournalImpl journal = new JournalImpl(ActiveMQDefaultConfiguration.getDefaultJournalFileSize(),
2, 2,
0, 0,

View File

@ -16,6 +16,23 @@
*/ */
package org.apache.activemq.artemis.tests.integration.client; package org.apache.activemq.artemis.tests.integration.client;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer; import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQException; import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQExceptionType; import org.apache.activemq.artemis.api.core.ActiveMQExceptionType;
@ -62,23 +79,6 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
public class PagingTest extends ActiveMQTestBase public class PagingTest extends ActiveMQTestBase
{ {
private ServerLocator locator; private ServerLocator locator;
@ -1734,7 +1734,7 @@ public class PagingTest extends ActiveMQTestBase
2, 2,
0, 0,
0, 0,
new NIOSequentialFileFactory(server.getConfiguration().getJournalDirectory()), new NIOSequentialFileFactory(server.getConfiguration().getJournalLocation()),
"activemq-data", "activemq-data",
"amq", "amq",
1); 1);

View File

@ -297,7 +297,7 @@ public class RedeliveryConsumerTest extends ActiveMQTestBase
2, 2,
0, 0,
0, 0,
new NIOSequentialFileFactory(server.getConfiguration().getJournalDirectory()), new NIOSequentialFileFactory(server.getConfiguration().getJournalLocation()),
"activemq-data", "activemq-data",
"amq", "amq",
1); 1);

View File

@ -16,6 +16,8 @@
*/ */
package org.apache.activemq.artemis.tests.integration.cluster; package org.apache.activemq.artemis.tests.integration.cluster;
import java.io.File;
import org.apache.activemq.artemis.core.server.NodeManager; import org.apache.activemq.artemis.core.server.NodeManager;
import org.apache.activemq.artemis.core.server.impl.FileLockNodeManager; import org.apache.activemq.artemis.core.server.impl.FileLockNodeManager;
@ -128,7 +130,7 @@ public class NodeManagerAction
} }
NodeManagerAction nodeManagerAction = new NodeManagerAction(work1); NodeManagerAction nodeManagerAction = new NodeManagerAction(work1);
FileLockNodeManager nodeManager = new FileLockNodeManager(".", false); FileLockNodeManager nodeManager = new FileLockNodeManager(new File("."), false);
nodeManager.start(); nodeManager.start();
try try
{ {

View File

@ -16,6 +16,7 @@
*/ */
package org.apache.activemq.artemis.tests.integration.cluster; package org.apache.activemq.artemis.tests.integration.cluster;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -32,7 +33,7 @@ public class RealNodeManagerTest extends NodeManagerTest
@Test @Test
public void testId() throws Exception public void testId() throws Exception
{ {
NodeManager nodeManager = new FileLockNodeManager(getTemporaryDir(), false); NodeManager nodeManager = new FileLockNodeManager(new File(getTemporaryDir()), false);
nodeManager.start(); nodeManager.start();
UUID id1 = nodeManager.getUUID(); UUID id1 = nodeManager.getUUID();
nodeManager.stop(); nodeManager.stop();

View File

@ -16,6 +16,18 @@
*/ */
package org.apache.activemq.artemis.tests.integration.cluster.bridge; package org.apache.activemq.artemis.tests.integration.cluster.bridge;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer; import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQException; import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.Interceptor; import org.apache.activemq.artemis.api.core.Interceptor;
@ -67,18 +79,6 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.junit.runners.Parameterized; import org.junit.runners.Parameterized;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
@RunWith(value = Parameterized.class) @RunWith(value = Parameterized.class)
public class BridgeTest extends ActiveMQTestBase public class BridgeTest extends ActiveMQTestBase
{ {
@ -1926,7 +1926,7 @@ public class BridgeTest extends ActiveMQTestBase
protected Map<Long, AtomicInteger> loadQueues(ActiveMQServer serverToInvestigate) throws Exception protected Map<Long, AtomicInteger> loadQueues(ActiveMQServer serverToInvestigate) throws Exception
{ {
SequentialFileFactory messagesFF = new NIOSequentialFileFactory(serverToInvestigate.getConfiguration() SequentialFileFactory messagesFF = new NIOSequentialFileFactory(serverToInvestigate.getConfiguration()
.getJournalDirectory()); .getJournalLocation());
JournalImpl messagesJournal = new JournalImpl(serverToInvestigate.getConfiguration().getJournalFileSize(), JournalImpl messagesJournal = new JournalImpl(serverToInvestigate.getConfiguration().getJournalFileSize(),
serverToInvestigate.getConfiguration().getJournalMinFiles(), serverToInvestigate.getConfiguration().getJournalMinFiles(),

View File

@ -16,6 +16,22 @@
*/ */
package org.apache.activemq.artemis.tests.integration.cluster.distribution; package org.apache.activemq.artemis.tests.integration.cluster.distribution;
import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration; import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration;
import org.apache.activemq.artemis.api.core.ActiveMQException; import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration; import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
@ -68,21 +84,6 @@ import org.junit.After;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
public abstract class ClusterTestBase extends ActiveMQTestBase public abstract class ClusterTestBase extends ActiveMQTestBase
{ {
private static final IntegrationTestLogger log = IntegrationTestLogger.LOGGER; private static final IntegrationTestLogger log = IntegrationTestLogger.LOGGER;
@ -152,7 +153,7 @@ public abstract class ClusterTestBase extends ActiveMQTestBase
for (int i = 0, nodeManagersLength = nodeManagers.length; i < nodeManagersLength; i++) for (int i = 0, nodeManagersLength = nodeManagers.length; i < nodeManagersLength; i++)
{ {
nodeManagers[i] = new InVMNodeManager(isSharedStore(), getJournalDir(i, true)); nodeManagers[i] = new InVMNodeManager(isSharedStore(), new File(getJournalDir(i, true)));
} }
locators = new ServerLocator[ClusterTestBase.MAX_SERVERS]; locators = new ServerLocator[ClusterTestBase.MAX_SERVERS];
@ -1717,7 +1718,7 @@ public abstract class ClusterTestBase extends ActiveMQTestBase
* backup case. * backup case.
* <br> * <br>
* Use * Use
* {@link #setupClusterConnectionWithBackups(String, String, boolean, int, boolean, int, int[])} * {@link #setupClusterConnectionWithBackups(String, String, org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType, int, boolean, int, int[])}
* to add it. * to add it.
* *
* @param node * @param node
@ -2169,11 +2170,6 @@ public abstract class ClusterTestBase extends ActiveMQTestBase
clusterConfs.add(clusterConf); clusterConfs.add(clusterConf);
} }
/**
* XXX waitForPrevious actually masks what can be considered a bug: that even controlling for
* {@link org.apache.activemq.artemis.core.server.ActiveMQServer#waitForInitialization} we still need to wait between starting a shared
* store backup and its live.
*/
protected void startServers(final int... nodes) throws Exception protected void startServers(final int... nodes) throws Exception
{ {
for (int node : nodes) for (int node : nodes)

View File

@ -16,6 +16,14 @@
*/ */
package org.apache.activemq.artemis.tests.integration.cluster.failover; package org.apache.activemq.artemis.tests.integration.cluster.failover;
import java.io.File;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.apache.activemq.artemis.api.core.ActiveMQException; import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.Pair; import org.apache.activemq.artemis.api.core.Pair;
import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.api.core.SimpleString;
@ -40,14 +48,6 @@ import org.apache.activemq.artemis.utils.UUID;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.File;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.TimeUnit;
public class BackupSyncJournalTest extends FailoverTestBase public class BackupSyncJournalTest extends FailoverTestBase
{ {
protected static final int BACKUP_WAIT_TIME = 20; protected static final int BACKUP_WAIT_TIME = 20;
@ -227,9 +227,9 @@ public class BackupSyncJournalTest extends FailoverTestBase
{ {
System.out.println("\n\n BINDINGS JOURNAL\n\n"); System.out.println("\n\n BINDINGS JOURNAL\n\n");
Configuration config = server.getServer().getConfiguration(); Configuration config = server.getServer().getConfiguration();
DescribeJournal.describeBindingsJournal(config.getBindingsDirectory()); DescribeJournal.describeBindingsJournal(config.getBindingsLocation());
System.out.println("\n\n MESSAGES JOURNAL\n\n"); System.out.println("\n\n MESSAGES JOURNAL\n\n");
DescribeJournal.describeMessagesJournal(config.getJournalDirectory()); DescribeJournal.describeMessagesJournal(config.getJournalLocation());
} }
catch (Exception ignored) catch (Exception ignored)
{ {

View File

@ -16,6 +16,13 @@
*/ */
package org.apache.activemq.artemis.tests.integration.cluster.failover; package org.apache.activemq.artemis.tests.integration.cluster.failover;
import java.io.IOException;
import java.net.ServerSocket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer; import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration; import org.apache.activemq.artemis.api.core.TransportConfiguration;
@ -40,19 +47,12 @@ import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl;
import org.apache.activemq.artemis.core.server.impl.InVMNodeManager; import org.apache.activemq.artemis.core.server.impl.InVMNodeManager;
import org.apache.activemq.artemis.tests.integration.cluster.util.SameProcessActiveMQServer; import org.apache.activemq.artemis.tests.integration.cluster.util.SameProcessActiveMQServer;
import org.apache.activemq.artemis.tests.integration.cluster.util.TestableServer; import org.apache.activemq.artemis.tests.integration.cluster.util.TestableServer;
import org.apache.activemq.artemis.tests.util.ReplicatedBackupUtils;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase; import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.apache.activemq.artemis.tests.util.ReplicatedBackupUtils;
import org.junit.After; import org.junit.After;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import java.io.IOException;
import java.net.ServerSocket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
public abstract class FailoverTestBase extends ActiveMQTestBase public abstract class FailoverTestBase extends ActiveMQTestBase
{ {
// Constants ----------------------------------------------------- // Constants -----------------------------------------------------
@ -213,7 +213,7 @@ public abstract class FailoverTestBase extends ActiveMQTestBase
.setSecurityEnabled(false); .setSecurityEnabled(false);
setupHAPolicyConfiguration(); setupHAPolicyConfiguration();
nodeManager = new InVMNodeManager(true, backupConfig.getJournalDirectory()); nodeManager = new InVMNodeManager(true, backupConfig.getJournalLocation());
backupServer = createTestableServer(backupConfig); backupServer = createTestableServer(backupConfig);

View File

@ -40,6 +40,6 @@ public class AIOImportExportTest extends NIOImportExportTest
file.mkdir(); file.mkdir();
return new AIOSequentialFileFactory(getTestDir()); return new AIOSequentialFileFactory(getTestDirfile());
} }
} }

View File

@ -41,7 +41,7 @@ public class AIOJournalCompactTest extends NIOJournalCompactTest
file.mkdir(); file.mkdir();
return new AIOSequentialFileFactory(getTestDir(), return new AIOSequentialFileFactory(getTestDirfile(),
JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO, JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO,
100000, 100000,
false); false);

View File

@ -66,7 +66,7 @@ public class AIOJournalImplTest extends JournalImplTestUnit
file.mkdir(); file.mkdir();
return new AIOSequentialFileFactory(getTestDir(), return new AIOSequentialFileFactory(getTestDirfile(),
JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO, 1000000, JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO, 1000000,
false); false);
} }

View File

@ -15,6 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.apache.activemq.artemis.tests.integration.journal; package org.apache.activemq.artemis.tests.integration.journal;
import java.io.File;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import org.apache.activemq.artemis.tests.unit.core.journal.impl.SequentialFileFactoryTestBase; import org.apache.activemq.artemis.tests.unit.core.journal.impl.SequentialFileFactoryTestBase;
@ -37,7 +38,7 @@ public class AIOSequentialFileFactoryTest extends SequentialFileFactoryTestBase
@Override @Override
protected SequentialFileFactory createFactory(String folder) protected SequentialFileFactory createFactory(String folder)
{ {
return new AIOSequentialFileFactory(folder); return new AIOSequentialFileFactory(new File(folder));
} }
@Test @Test

View File

@ -1,238 +0,0 @@
/*
* 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.integration.journal;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.apache.activemq.artemis.core.journal.EncodingSupport;
import org.apache.activemq.artemis.core.journal.IOCompletion;
import org.apache.activemq.artemis.core.journal.Journal;
import org.apache.activemq.artemis.core.journal.LoaderCallback;
import org.apache.activemq.artemis.core.journal.PreparedTransactionInfo;
import org.apache.activemq.artemis.core.journal.RecordInfo;
import org.apache.activemq.artemis.core.journal.SequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.AIOSequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.JournalImpl;
import org.apache.activemq.artemis.utils.DataConstants;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
@Ignore
public class JournalPerfTuneTest extends ActiveMQTestBase
{
private static final IntegrationTestLogger log = IntegrationTestLogger.LOGGER;
private Journal journal;
static final class LoaderCB implements LoaderCallback
{
public void addPreparedTransaction(PreparedTransactionInfo preparedTransaction)
{
// no-op
}
public void addRecord(RecordInfo info)
{
// no-op
}
public void deleteRecord(long id)
{
// no-op
}
public void updateRecord(RecordInfo info)
{
// no-op
}
public void failedTransaction(long transactionID, List<RecordInfo> records, List<RecordInfo> recordsToDelete)
{
// no-op
}
}
@Override
@Before
public void setUp() throws Exception
{
super.setUp();
final int fileSize = 1024 * 1024 * 10;
final int minFiles = 10;
final int compactMinFiles = 20;
final int compactPercentage = 30;
final String filePrefix = "data";
final String extension = "amq";
final int maxIO = 500;
final String journalDir = getTestDir();
final int bufferSize = 490 * 1024;
final int bufferTimeout = (int)(1000000000d / 2000);
final boolean logRates = true;
recreateDirectory(journalDir);
SequentialFileFactory fileFactory = new AIOSequentialFileFactory(journalDir, bufferSize, bufferTimeout, logRates);
journal = new JournalImpl(fileSize,
minFiles,
compactMinFiles,
compactPercentage,
fileFactory,
filePrefix,
extension,
maxIO);
addActiveMQComponent(journal);
journal.start();
journal.load(new LoaderCB());
}
static final class TestCallback implements IOCompletion
{
private final CountDownLatch latch;
TestCallback(final int counts)
{
this.latch = new CountDownLatch(counts);
}
public void await() throws Exception
{
waitForLatch(latch);
}
public void storeLineUp()
{
}
public void done()
{
latch.countDown();
log.info(latch.getCount());
}
public void onError(int errorCode, String errorMessage)
{
}
}
@Test
public void test1() throws Exception
{
final int itersPerThread = 10000000;
final int numThreads = 1;
this.callback = new TestCallback(2 * itersPerThread * numThreads);
Worker[] workers = new Worker[numThreads];
for (int i = 0; i < numThreads; i++)
{
workers[i] = new Worker(itersPerThread);
workers[i].start();
}
for (int i = 0; i < numThreads; i++)
{
workers[i].join();
}
callback.await();
}
private final AtomicLong idGen = new AtomicLong(0);
private TestCallback callback;
class Worker extends Thread
{
final int iters;
Worker(final int iters)
{
this.iters = iters;
}
@Override
public void run()
{
try
{
Record record = new Record(new byte[1024]);
for (int i = 0; i < iters; i++)
{
long id = idGen.getAndIncrement();
journal.appendAddRecord(id, (byte)0, record, true, callback);
journal.appendDeleteRecord(id, true, callback);
// log.info("did " + i);
}
}
catch (Exception e)
{
log.error("Failed", e);
}
}
}
static class Record implements EncodingSupport
{
private byte[] bytes;
Record(byte[] bytes)
{
this.bytes = bytes;
}
public void decode(ActiveMQBuffer buffer)
{
int length = buffer.readInt();
bytes = new byte[length];
buffer.readBytes(bytes);
}
public void encode(ActiveMQBuffer buffer)
{
buffer.writeInt(bytes.length);
buffer.writeBytes(bytes);
}
public int getEncodeSize()
{
return DataConstants.SIZE_INT + bytes.length;
}
}
}

View File

@ -34,7 +34,7 @@ public class NIOBufferedJournalCompactTest extends NIOJournalCompactTest
file.mkdir(); file.mkdir();
return new NIOSequentialFileFactory(getTestDir(), true); return new NIOSequentialFileFactory(getTestDirfile(), true);
} }
} }

View File

@ -16,6 +16,8 @@
*/ */
package org.apache.activemq.artemis.tests.integration.journal; package org.apache.activemq.artemis.tests.integration.journal;
import java.io.File;
import org.apache.activemq.artemis.core.journal.EncodingSupport; import org.apache.activemq.artemis.core.journal.EncodingSupport;
import org.apache.activemq.artemis.core.journal.SequentialFileFactory; import org.apache.activemq.artemis.core.journal.SequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory; import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory;
@ -24,8 +26,6 @@ import org.apache.activemq.artemis.tests.unit.core.journal.impl.fakes.SimpleEnco
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase; import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.junit.Test; import org.junit.Test;
import java.io.File;
public class NIOImportExportTest extends JournalImplTestBase public class NIOImportExportTest extends JournalImplTestBase
{ {
@ -41,7 +41,7 @@ public class NIOImportExportTest extends JournalImplTestBase
file.mkdir(); file.mkdir();
return new NIOSequentialFileFactory(getTestDir(), true); return new NIOSequentialFileFactory(getTestDirfile(), true);
} }
// Constants ----------------------------------------------------- // Constants -----------------------------------------------------

View File

@ -1939,7 +1939,7 @@ public class NIOJournalCompactTest extends JournalImplTestBase
@Override @Override
protected SequentialFileFactory getFileFactory() throws Exception protected SequentialFileFactory getFileFactory() throws Exception
{ {
return new NIOSequentialFileFactory(getTestDir()); return new NIOSequentialFileFactory(getTestDirfile());
} }
} }

View File

@ -39,7 +39,7 @@ public class NIOJournalImplTest extends JournalImplTestUnit
file.mkdir(); file.mkdir();
return new NIOSequentialFileFactory(getTestDir(), true); return new NIOSequentialFileFactory(getTestDirfile(), true);
} }
@Override @Override

View File

@ -38,7 +38,7 @@ public class NIONoBufferJournalImplTest extends JournalImplTestUnit
file.mkdir(); file.mkdir();
return new NIOSequentialFileFactory(getTestDir(), false); return new NIOSequentialFileFactory(new File(getTestDir()), false);
} }
@Override @Override

View File

@ -15,6 +15,8 @@
* limitations under the License. * limitations under the License.
*/ */
package org.apache.activemq.artemis.tests.integration.journal; package org.apache.activemq.artemis.tests.integration.journal;
import java.io.File;
import org.apache.activemq.artemis.core.journal.SequentialFileFactory; import org.apache.activemq.artemis.core.journal.SequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory; import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory;
import org.apache.activemq.artemis.tests.unit.core.journal.impl.SequentialFileFactoryTestBase; import org.apache.activemq.artemis.tests.unit.core.journal.impl.SequentialFileFactoryTestBase;
@ -25,7 +27,7 @@ public class NIONonBufferedSequentialFileFactoryTest extends SequentialFileFacto
@Override @Override
protected SequentialFileFactory createFactory(String folder) protected SequentialFileFactory createFactory(String folder)
{ {
return new NIOSequentialFileFactory(folder, false); return new NIOSequentialFileFactory(new File(folder), false);
} }
} }

View File

@ -15,6 +15,8 @@
* limitations under the License. * limitations under the License.
*/ */
package org.apache.activemq.artemis.tests.integration.journal; package org.apache.activemq.artemis.tests.integration.journal;
import java.io.File;
import org.apache.activemq.artemis.core.journal.SequentialFileFactory; import org.apache.activemq.artemis.core.journal.SequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory; import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory;
import org.apache.activemq.artemis.tests.unit.core.journal.impl.SequentialFileFactoryTestBase; import org.apache.activemq.artemis.tests.unit.core.journal.impl.SequentialFileFactoryTestBase;
@ -25,7 +27,7 @@ public class NIOSequentialFileFactoryTest extends SequentialFileFactoryTestBase
@Override @Override
protected SequentialFileFactory createFactory(String folder) protected SequentialFileFactory createFactory(String folder)
{ {
return new NIOSequentialFileFactory(folder, true); return new NIOSequentialFileFactory(new File(folder), true);
} }
} }

View File

@ -1,148 +0,0 @@
/*
* 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.integration.journal;
import java.nio.ByteBuffer;
import org.apache.activemq.artemis.core.journal.RecordInfo;
import org.apache.activemq.artemis.core.journal.SequentialFile;
import org.apache.activemq.artemis.core.journal.SequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.JournalImpl;
import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory;
import org.apache.activemq.artemis.tests.unit.core.journal.impl.JournalImplTestBase;
import org.apache.activemq.artemis.utils.DataConstants;
import org.junit.Test;
public class OldFormatTest extends JournalImplTestBase
{
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
// Public --------------------------------------------------------
// This will generate records using the Version 1 format, and reading at the current version
@Test
public void testFormatOne() throws Exception
{
setup(2, 100 * 1024, true);
SequentialFile file = fileFactory.createSequentialFile("amq-1.amq", 1);
ByteBuffer buffer = ByteBuffer.allocateDirect(100 * 1024);
initHeader(buffer, 1);
byte[] record = new byte[1];
for (long i = 0; i < 10; i++)
{
add(buffer, 1, i, record);
update(buffer, 1, i, record);
}
file.open(1, false);
buffer.rewind();
file.writeDirect(buffer, true);
file.close();
createJournal();
startJournal();
loadAndCheck();
startCompact();
finishCompact();
stopJournal();
createJournal();
startJournal();
loadAndCheck();
}
private void add(ByteBuffer buffer, int fileID, long id, byte[] record)
{
int pos = buffer.position();
buffer.put(JournalImpl.ADD_RECORD);
buffer.putInt(fileID);
buffer.putLong(id);
buffer.putInt(record.length);
buffer.put((byte) 0);
buffer.put(record);
buffer.putInt(buffer.position() - pos + DataConstants.SIZE_INT);
records.add(new RecordInfo(id, (byte) 0, record, false, (short) 0));
}
private void update(ByteBuffer buffer, int fileID, long id, byte[] record)
{
int pos = buffer.position();
buffer.put(JournalImpl.UPDATE_RECORD);
buffer.putInt(fileID);
buffer.putLong(id);
buffer.putInt(record.length);
buffer.put((byte) 0);
buffer.put(record);
buffer.putInt(buffer.position() - pos + DataConstants.SIZE_INT);
records.add(new RecordInfo(id, (byte) 0, record, true, (short) 0));
}
/**
* @param buffer
*/
private void initHeader(ByteBuffer buffer, int fileID)
{
buffer.putInt(1);
buffer.putInt(0);
buffer.putLong(fileID);
}
/* (non-Javadoc)
* @see JournalImplTestBase#getFileFactory()
*/
@Override
protected SequentialFileFactory getFileFactory() throws Exception
{
return new NIOSequentialFileFactory(getTestDir());
}
}

View File

@ -0,0 +1,126 @@
/*
* 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.integration.journal;
import java.io.File;
import java.io.FileFilter;
import java.util.HashMap;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.junit.Assert;
import org.junit.Test;
public class RelativePathTest extends ActiveMQTestBase
{
@Test
public void testRelativePathOnDefaultConfig() throws Exception
{
Configuration configuration = createDefaultConfig(false);
ActiveMQServer server = createServer(true, configuration, AddressSettings.DEFAULT_PAGE_SIZE, AddressSettings.DEFAULT_MAX_SIZE_BYTES, new HashMap<String, AddressSettings>());
server.start();
server.stop();
checkData(new File(configuration.getJournalDirectory()), ".amq");
checkData(new File(configuration.getBindingsDirectory()), ".bindings");
}
@Test
public void testDataOutsideHome() throws Exception
{
Configuration configuration = createDefaultConfig(false);
File instanceHome = new File(getTemporaryDir(), "artemisHome");
configuration.setArtemisInstance(instanceHome);
// the journal should be outside of the artemisInstance on this case
File journalOutside = new File(getTemporaryDir(), "./journalOut").getAbsoluteFile();
configuration.setJournalDirectory(journalOutside.getAbsolutePath());
// Somewhere inside artemis.instance
configuration.setBindingsDirectory("./bind");
File bindingsInside = new File(instanceHome, "bind");
// configuration.setJournal
System.out.println("Journal dir::" + configuration.getJournalDirectory());
System.out.println("Journal loc::" + configuration.getJournalLocation());
ActiveMQServer server = createServer(true, configuration, AddressSettings.DEFAULT_PAGE_SIZE, AddressSettings.DEFAULT_MAX_SIZE_BYTES, new HashMap<String, AddressSettings>());
server.start();
server.stop();
checkData(journalOutside, ".amq");
// Checking if the journal created the lock as well
checkData(journalOutside, "server.lock");
checkData(bindingsInside, ".bindings");
}
@Test
public void testRelativePath() throws Exception
{
Configuration configuration = createDefaultConfig(false);
File instanceHome = new File(getTemporaryDir(), "artemisHome");
File dataHome = new File(instanceHome, "data");
// One folder up for testing
File bindingsHome = new File(instanceHome, "../binx");
System.out.println("InstanceHome->" + instanceHome);
instanceHome.mkdirs();
configuration.setArtemisInstance(instanceHome);
configuration.setJournalDirectory("./data");
configuration.setPagingDirectory("./paging");
configuration.setBindingsDirectory("../binx");
// one folder up from instance home
configuration.setLargeMessagesDirectory("./large");
ActiveMQServer server = createServer(true, configuration, AddressSettings.DEFAULT_PAGE_SIZE, AddressSettings.DEFAULT_MAX_SIZE_BYTES, new HashMap<String, AddressSettings>());
server.start();
server.stop();
checkData(dataHome, ".amq");
checkData(bindingsHome, ".bindings");
}
public void checkData(File dataHome, final String extension)
{
Assert.assertTrue("Folder " + dataHome + " doesn't exist", dataHome.exists());
File[] files = dataHome.listFiles(new FileFilter()
{
@Override
public boolean accept(File pathname)
{
return (extension == null || pathname.toString().endsWith(extension));
}
});
Assert.assertNotNull(files);
Assert.assertTrue(files.length > 0);
}
}

View File

@ -378,18 +378,18 @@ public class ValidateTransactionHealthTest extends ActiveMQTestBase
{ {
if (factoryType.equals("aio")) if (factoryType.equals("aio"))
{ {
return new AIOSequentialFileFactory(directory, return new AIOSequentialFileFactory(new File(directory),
JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO, JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO,
JournalConstants.DEFAULT_JOURNAL_BUFFER_TIMEOUT_AIO, JournalConstants.DEFAULT_JOURNAL_BUFFER_TIMEOUT_AIO,
false); false);
} }
else if (factoryType.equals("nio2")) else if (factoryType.equals("nio2"))
{ {
return new NIOSequentialFileFactory(directory, true); return new NIOSequentialFileFactory(new File(directory), true);
} }
else else
{ {
return new NIOSequentialFileFactory(directory, false); return new NIOSequentialFileFactory(new File(directory), false);
} }
} }

View File

@ -16,6 +16,20 @@
*/ */
package org.apache.activemq.artemis.tests.integration.replication; package org.apache.activemq.artemis.tests.integration.replication;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer; import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQBuffers; import org.apache.activemq.artemis.api.core.ActiveMQBuffers;
import org.apache.activemq.artemis.api.core.ActiveMQException; import org.apache.activemq.artemis.api.core.ActiveMQException;
@ -67,8 +81,8 @@ import org.apache.activemq.artemis.core.server.impl.ServerMessageImpl;
import org.apache.activemq.artemis.core.settings.HierarchicalRepository; import org.apache.activemq.artemis.core.settings.HierarchicalRepository;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings; import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection; import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
import org.apache.activemq.artemis.tests.util.ReplicatedBackupUtils;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase; import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.apache.activemq.artemis.tests.util.ReplicatedBackupUtils;
import org.apache.activemq.artemis.tests.util.TransportConfigurationUtils; import org.apache.activemq.artemis.tests.util.TransportConfigurationUtils;
import org.apache.activemq.artemis.utils.ActiveMQThreadFactory; import org.apache.activemq.artemis.utils.ActiveMQThreadFactory;
import org.apache.activemq.artemis.utils.ExecutorFactory; import org.apache.activemq.artemis.utils.ExecutorFactory;
@ -78,20 +92,6 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
public final class ReplicationTest extends ActiveMQTestBase public final class ReplicationTest extends ActiveMQTestBase
{ {
@ -653,7 +653,7 @@ public final class ReplicationTest extends ActiveMQTestBase
final HierarchicalRepository<AddressSettings> addressSettingsRepository) throws Exception final HierarchicalRepository<AddressSettings> addressSettingsRepository) throws Exception
{ {
PagingManager paging = new PagingManagerImpl(new PagingStoreFactoryNIO(storageManager, configuration.getPagingDirectory(), PagingManager paging = new PagingManagerImpl(new PagingStoreFactoryNIO(storageManager, configuration.getPagingLocation(),
1000, null, 1000, null,
executorFactory, false, null), executorFactory, false, null),
addressSettingsRepository); addressSettingsRepository);

View File

@ -1,158 +0,0 @@
/*
* 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.util.ArrayList;
import org.apache.activemq.artemis.core.journal.PreparedTransactionInfo;
import org.apache.activemq.artemis.core.journal.RecordInfo;
import org.apache.activemq.artemis.core.journal.SequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.AIOSequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.JournalImpl;
import org.apache.activemq.artemis.utils.TimeAndCounterIDGenerator;
/**
* A JournalExample: Just an example on how to use the Journal Directly
* <br>
* TODO: find a better place to store this example
*/
public class JournalExample
{
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
// Public --------------------------------------------------------
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
public static void main(final String[] arg)
{
TimeAndCounterIDGenerator idgenerator = new TimeAndCounterIDGenerator();
try
{
SequentialFileFactory fileFactory = new AIOSequentialFileFactory("/tmp"); // any dir you want
// SequentialFileFactory fileFactory = new NIOSequentialFileFactory("/tmp"); // any dir you want
JournalImpl journalExample = new JournalImpl(10 * 1024 * 1024, // 10M.. we believe that's the usual cilinder
// bufferSize.. not an exact science here
2, // number of files pre-allocated
0,
0,
fileFactory, // AIO or NIO
"exjournal", // file name
"dat", // extension
10000); // it's like a semaphore for callback on the AIO layer
ArrayList<RecordInfo> committedRecords = new ArrayList<RecordInfo>();
ArrayList<PreparedTransactionInfo> preparedTransactions = new ArrayList<PreparedTransactionInfo>();
journalExample.start();
System.out.println("Loading records and creating data files");
journalExample.load(committedRecords, preparedTransactions, null);
System.out.println("Loaded Record List:");
for (RecordInfo record : committedRecords)
{
System.out.println("Record id = " + record.id +
" userType = " +
record.userRecordType +
" with " +
record.data.length +
" bytes is stored on the journal");
}
System.out.println("Adding Records:");
for (int i = 0; i < 10; i++)
{
journalExample.appendAddRecord(idgenerator.generateID(), (byte) 1, new byte[]{
0,
1,
2,
0,
1,
2,
0,
1,
2,
0,
1,
2,
0,
1,
2,
0,
1,
2,
0,
1,
2}, false);
}
long tx = idgenerator.generateID(); // some id generation system
for (int i = 0; i < 100; i++)
{
journalExample.appendAddRecordTransactional(tx, idgenerator.generateID(), (byte) 2, new byte[]{0,
1,
2,
0,
1,
2,
0,
1,
2,
0,
1,
2,
0,
1,
2,
0,
1,
2,
0,
1,
2,
5});
}
// After this is complete, you're sure the records are there
journalExample.appendCommitRecord(tx, true);
System.out.println("Done!");
journalExample.stop();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

View File

@ -51,7 +51,7 @@ public class RealJournalImplAIOTest extends JournalImplTestUnit
file.mkdir(); file.mkdir();
return new AIOSequentialFileFactory(getTestDir()); return new AIOSequentialFileFactory(getTestDirfile());
} }
} }

View File

@ -37,7 +37,7 @@ public class RealJournalImplNIOTest extends JournalImplTestUnit
file.mkdir(); file.mkdir();
return new NIOSequentialFileFactory(getTestDir()); return new NIOSequentialFileFactory(getTestDirfile());
} }
} }

View File

@ -51,7 +51,7 @@ public class AIOAllPossibilitiesCompactStressTest extends AllPossibilitiesCompac
file.mkdir(); file.mkdir();
return new AIOSequentialFileFactory(getTestDir(), return new AIOSequentialFileFactory(getTestDirfile(),
JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO, JournalConstants.DEFAULT_JOURNAL_BUFFER_SIZE_AIO,
1000000, 1000000,
false); false);

View File

@ -76,7 +76,7 @@ public class AddAndRemoveStressTest extends ActiveMQTestBase
public void testInsertAndLoad() throws Exception public void testInsertAndLoad() throws Exception
{ {
SequentialFileFactory factory = new AIOSequentialFileFactory(getTestDir()); SequentialFileFactory factory = new AIOSequentialFileFactory(getTestDirfile());
JournalImpl impl = new JournalImpl(10 * 1024 * 1024, JournalImpl impl = new JournalImpl(10 * 1024 * 1024,
AddAndRemoveStressTest.NUMBER_OF_FILES_ON_JOURNAL, AddAndRemoveStressTest.NUMBER_OF_FILES_ON_JOURNAL,
0, 0,
@ -101,7 +101,7 @@ public class AddAndRemoveStressTest extends ActiveMQTestBase
impl.stop(); impl.stop();
factory = new AIOSequentialFileFactory(getTestDir()); factory = new AIOSequentialFileFactory(getTestDirfile());
impl = new JournalImpl(10 * 1024 * 1024, impl = new JournalImpl(10 * 1024 * 1024,
AddAndRemoveStressTest.NUMBER_OF_FILES_ON_JOURNAL, AddAndRemoveStressTest.NUMBER_OF_FILES_ON_JOURNAL,
0, 0,
@ -127,7 +127,7 @@ public class AddAndRemoveStressTest extends ActiveMQTestBase
impl.stop(); impl.stop();
factory = new AIOSequentialFileFactory(getTestDir()); factory = new AIOSequentialFileFactory(getTestDirfile());
impl = new JournalImpl(10 * 1024 * 1024, impl = new JournalImpl(10 * 1024 * 1024,
AddAndRemoveStressTest.NUMBER_OF_FILES_ON_JOURNAL, AddAndRemoveStressTest.NUMBER_OF_FILES_ON_JOURNAL,
0, 0,
@ -164,7 +164,7 @@ public class AddAndRemoveStressTest extends ActiveMQTestBase
public void testInsertUpdateAndLoad() throws Exception public void testInsertUpdateAndLoad() throws Exception
{ {
SequentialFileFactory factory = new AIOSequentialFileFactory(getTestDir()); SequentialFileFactory factory = new AIOSequentialFileFactory(getTestDirfile());
JournalImpl impl = new JournalImpl(10 * 1024 * 1024, JournalImpl impl = new JournalImpl(10 * 1024 * 1024,
AddAndRemoveStressTest.NUMBER_OF_FILES_ON_JOURNAL, AddAndRemoveStressTest.NUMBER_OF_FILES_ON_JOURNAL,
0, 0,
@ -190,7 +190,7 @@ public class AddAndRemoveStressTest extends ActiveMQTestBase
impl.stop(); impl.stop();
factory = new AIOSequentialFileFactory(getTestDir()); factory = new AIOSequentialFileFactory(getTestDirfile());
impl = new JournalImpl(10 * 1024 * 1024, 10, 0, 0, factory, "amq", "amq", 1000); impl = new JournalImpl(10 * 1024 * 1024, 10, 0, 0, factory, "amq", "amq", 1000);
impl.start(); impl.start();
@ -209,7 +209,7 @@ public class AddAndRemoveStressTest extends ActiveMQTestBase
impl.stop(); impl.stop();
factory = new AIOSequentialFileFactory(getTestDir()); factory = new AIOSequentialFileFactory(getTestDirfile());
impl = new JournalImpl(10 * 1024 * 1024, impl = new JournalImpl(10 * 1024 * 1024,
AddAndRemoveStressTest.NUMBER_OF_FILES_ON_JOURNAL, AddAndRemoveStressTest.NUMBER_OF_FILES_ON_JOURNAL,
0, 0,

View File

@ -114,12 +114,12 @@ public class JournalCleanupCompactStressTest extends ActiveMQTestBase
int maxAIO; int maxAIO;
if (AsynchronousFileImpl.isLoaded()) if (AsynchronousFileImpl.isLoaded())
{ {
factory = new AIOSequentialFileFactory(dir.getPath()); factory = new AIOSequentialFileFactory(dir);
maxAIO = ActiveMQDefaultConfiguration.getDefaultJournalMaxIoAio(); maxAIO = ActiveMQDefaultConfiguration.getDefaultJournalMaxIoAio();
} }
else else
{ {
factory = new NIOSequentialFileFactory(dir.getPath(), true); factory = new NIOSequentialFileFactory(dir, true);
maxAIO = ActiveMQDefaultConfiguration.getDefaultJournalMaxIoNio(); maxAIO = ActiveMQDefaultConfiguration.getDefaultJournalMaxIoNio();
} }

View File

@ -241,6 +241,6 @@ public abstract class MixupCompactorTestBase extends JournalImplTestBase
@Override @Override
protected SequentialFileFactory getFileFactory() throws Exception protected SequentialFileFactory getFileFactory() throws Exception
{ {
return new NIOSequentialFileFactory(getTestDir()); return new NIOSequentialFileFactory(getTestDirfile());
} }
} }

View File

@ -16,6 +16,13 @@
*/ */
package org.apache.activemq.artemis.tests.stress.journal; package org.apache.activemq.artemis.tests.stress.journal;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration; import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration;
import org.apache.activemq.artemis.api.core.ActiveMQException; import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.api.core.SimpleString;
@ -38,12 +45,6 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
public class NIOMultiThreadCompactorStressTest extends ActiveMQTestBase public class NIOMultiThreadCompactorStressTest extends ActiveMQTestBase
{ {
@ -89,7 +90,7 @@ public class NIOMultiThreadCompactorStressTest extends ActiveMQTestBase
internalTestProduceAndConsume(); internalTestProduceAndConsume();
stopServer(); stopServer();
NIOSequentialFileFactory factory = new NIOSequentialFileFactory(getJournalDir()); NIOSequentialFileFactory factory = new NIOSequentialFileFactory(new File(getJournalDir()));
JournalImpl journal = new JournalImpl(ActiveMQDefaultConfiguration.getDefaultJournalFileSize(), JournalImpl journal = new JournalImpl(ActiveMQDefaultConfiguration.getDefaultJournalFileSize(),
2, 2,
0, 0,

View File

@ -39,7 +39,7 @@ public class AIOJournalImplTest extends JournalImplTestUnit
file.mkdir(); file.mkdir();
return new AIOSequentialFileFactory(getTestDir()); return new AIOSequentialFileFactory(getTestDirfile());
} }
} }

View File

@ -18,7 +18,6 @@ package org.apache.activemq.artemis.tests.timing.core.journal.impl;
import java.io.File; import java.io.File;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.apache.activemq.artemis.core.journal.SequentialFileFactory; import org.apache.activemq.artemis.core.journal.SequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory; import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory;
import org.apache.activemq.artemis.tests.unit.UnitTestLogger; import org.apache.activemq.artemis.tests.unit.UnitTestLogger;
@ -27,20 +26,12 @@ public class NIOJournalImplTest extends JournalImplTestUnit
{ {
private static final UnitTestLogger log = UnitTestLogger.LOGGER; private static final UnitTestLogger log = UnitTestLogger.LOGGER;
protected String journalDir = System.getProperty("java.io.tmpdir", "/tmp") + "/journal-test";
@Override @Override
protected SequentialFileFactory getFileFactory() throws Exception protected SequentialFileFactory getFileFactory() throws Exception
{ {
File file = new File(journalDir); File file = new File(getTemporaryDir());
NIOJournalImplTest.log.debug("deleting directory " + journalDir); return new NIOSequentialFileFactory(file);
ActiveMQTestBase.deleteDirectory(file);
file.mkdir();
return new NIOSequentialFileFactory(journalDir);
} }
} }

View File

@ -16,18 +16,17 @@
*/ */
package org.apache.activemq.artemis.tests.unit.core.journal.impl; package org.apache.activemq.artemis.tests.unit.core.journal.impl;
import org.apache.activemq.artemis.tests.unit.core.journal.impl.fakes.FakeSequentialFileFactory; import java.io.File;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.junit.Test;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import org.junit.Assert;
import org.apache.activemq.artemis.core.asyncio.impl.AsynchronousFileImpl; import org.apache.activemq.artemis.core.asyncio.impl.AsynchronousFileImpl;
import org.apache.activemq.artemis.core.journal.SequentialFileFactory; import org.apache.activemq.artemis.core.journal.SequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.AIOSequentialFileFactory; import org.apache.activemq.artemis.core.journal.impl.AIOSequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory; import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory;
import org.apache.activemq.artemis.tests.unit.core.journal.impl.fakes.FakeSequentialFileFactory;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.junit.Assert;
import org.junit.Test;
public class CleanBufferTest extends ActiveMQTestBase public class CleanBufferTest extends ActiveMQTestBase
{ {
@ -45,7 +44,7 @@ public class CleanBufferTest extends ActiveMQTestBase
@Test @Test
public void testCleanOnNIO() public void testCleanOnNIO()
{ {
SequentialFileFactory factory = new NIOSequentialFileFactory("Whatever"); SequentialFileFactory factory = new NIOSequentialFileFactory(new File("Whatever"));
testBuffer(factory); testBuffer(factory);
} }
@ -55,7 +54,7 @@ public class CleanBufferTest extends ActiveMQTestBase
{ {
if (AsynchronousFileImpl.isLoaded()) if (AsynchronousFileImpl.isLoaded())
{ {
SequentialFileFactory factory = new AIOSequentialFileFactory("Whatever"); SequentialFileFactory factory = new AIOSequentialFileFactory(new File("Whatever"));
testBuffer(factory); testBuffer(factory);
} }

View File

@ -728,7 +728,7 @@ public class FakeSequentialFileFactory implements SequentialFileFactory
} }
@Override @Override
public String getDirectory() public File getDirectory()
{ {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;

View File

@ -22,8 +22,6 @@ import java.util.List;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer; import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.tests.unit.core.journal.impl.fakes.FakeSequentialFileFactory;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.apache.activemq.artemis.core.journal.SequentialFile; import org.apache.activemq.artemis.core.journal.SequentialFile;
import org.apache.activemq.artemis.core.journal.SequentialFileFactory; import org.apache.activemq.artemis.core.journal.SequentialFileFactory;
import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory; import org.apache.activemq.artemis.core.journal.impl.NIOSequentialFileFactory;
@ -33,6 +31,8 @@ import org.apache.activemq.artemis.core.paging.impl.PagedMessageImpl;
import org.apache.activemq.artemis.core.persistence.impl.nullpm.NullStorageManager; import org.apache.activemq.artemis.core.persistence.impl.nullpm.NullStorageManager;
import org.apache.activemq.artemis.core.server.ServerMessage; import org.apache.activemq.artemis.core.server.ServerMessage;
import org.apache.activemq.artemis.core.server.impl.ServerMessageImpl; import org.apache.activemq.artemis.core.server.impl.ServerMessageImpl;
import org.apache.activemq.artemis.tests.unit.core.journal.impl.fakes.FakeSequentialFileFactory;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
@ -52,14 +52,14 @@ public class PageTest extends ActiveMQTestBase
public void testPageWithNIO() throws Exception public void testPageWithNIO() throws Exception
{ {
recreateDirectory(getTestDir()); recreateDirectory(getTestDir());
testAdd(new NIOSequentialFileFactory(getTestDir()), 1000); testAdd(new NIOSequentialFileFactory(getTestDirfile()), 1000);
} }
@Test @Test
public void testDamagedDataWithNIO() throws Exception public void testDamagedDataWithNIO() throws Exception
{ {
recreateDirectory(getTestDir()); recreateDirectory(getTestDir());
testDamagedPage(new NIOSequentialFileFactory(getTestDir()), 1000); testDamagedPage(new NIOSequentialFileFactory(getTestDirfile()), 1000);
} }
@Test @Test

View File

@ -57,7 +57,7 @@ public class PagingManagerImplTest extends ActiveMQTestBase
final StorageManager storageManager = new NullStorageManager(); final StorageManager storageManager = new NullStorageManager();
PagingStoreFactoryNIO storeFactory = PagingStoreFactoryNIO storeFactory =
new PagingStoreFactoryNIO(storageManager, getPageDir(), 100, null, getOrderedExecutor(), true, null); new PagingStoreFactoryNIO(storageManager, getPageDirFile(), 100, null, getOrderedExecutor(), true, null);
PagingManagerImpl managerImpl = new PagingManagerImpl(storeFactory, addressSettings); PagingManagerImpl managerImpl = new PagingManagerImpl(storeFactory, addressSettings);

View File

@ -16,6 +16,7 @@
*/ */
package org.apache.activemq.artemis.tests.unit.core.paging.impl; package org.apache.activemq.artemis.tests.unit.core.paging.impl;
import java.io.File;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -128,7 +129,7 @@ public class PagingStoreImplTest extends ActiveMQTestBase
public void testPageWithNIO() throws Exception public void testPageWithNIO() throws Exception
{ {
ActiveMQTestBase.recreateDirectory(getTestDir()); ActiveMQTestBase.recreateDirectory(getTestDir());
testConcurrentPaging(new NIOSequentialFileFactory(getTestDir()), 1); testConcurrentPaging(new NIOSequentialFileFactory(new File(getTestDir())), 1);
} }
@Test @Test
@ -644,7 +645,7 @@ public class PagingStoreImplTest extends ActiveMQTestBase
public void testRestartPage() throws Throwable public void testRestartPage() throws Throwable
{ {
clearDataRecreateServerDirs(); clearDataRecreateServerDirs();
SequentialFileFactory factory = new NIOSequentialFileFactory(getPageDir()); SequentialFileFactory factory = new NIOSequentialFileFactory(new File(getPageDir()));
PagingStoreFactory storeFactory = new FakeStoreFactory(factory); PagingStoreFactory storeFactory = new FakeStoreFactory(factory);
@ -681,7 +682,7 @@ public class PagingStoreImplTest extends ActiveMQTestBase
public void testOrderOnPaging() throws Throwable public void testOrderOnPaging() throws Throwable
{ {
clearDataRecreateServerDirs(); clearDataRecreateServerDirs();
SequentialFileFactory factory = new NIOSequentialFileFactory(getPageDir()); SequentialFileFactory factory = new NIOSequentialFileFactory(new File(getPageDir()));
PagingStoreFactory storeFactory = new FakeStoreFactory(factory); PagingStoreFactory storeFactory = new FakeStoreFactory(factory);

View File

@ -15,6 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.apache.activemq.artemis.tests.unit.core.persistence.impl; package org.apache.activemq.artemis.tests.unit.core.persistence.impl;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer; import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
@ -38,7 +39,7 @@ public class BatchIDGeneratorUnitTest extends ActiveMQTestBase
@Test @Test
public void testSequence() throws Exception public void testSequence() throws Exception
{ {
NIOSequentialFileFactory factory = new NIOSequentialFileFactory(getTestDir()); NIOSequentialFileFactory factory = new NIOSequentialFileFactory(new File(getTestDir()));
Journal journal = new JournalImpl(10 * 1024, 2, 0, 0, factory, "activemq-bindings", "bindings", 1); Journal journal = new JournalImpl(10 * 1024, 2, 0, 0, factory, "activemq-bindings", "bindings", 1);
journal.start(); journal.start();

View File

@ -15,16 +15,14 @@
* limitations under the License. * limitations under the License.
*/ */
package org.apache.activemq.artemis.tests.unit.core.server.impl; package org.apache.activemq.artemis.tests.unit.core.server.impl;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.junit.Before;
import org.junit.Test;
import java.io.File; import java.io.File;
import org.apache.activemq.artemis.core.asyncio.impl.AsynchronousFileImpl; import org.apache.activemq.artemis.core.asyncio.impl.AsynchronousFileImpl;
import org.apache.activemq.artemis.core.server.impl.AIOFileLockNodeManager; import org.apache.activemq.artemis.core.server.impl.AIOFileLockNodeManager;
import org.apache.activemq.artemis.core.server.impl.FileLockNodeManager; import org.apache.activemq.artemis.core.server.impl.FileLockNodeManager;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.junit.Before;
import org.junit.Test;
public class FileLockTest extends ActiveMQTestBase public class FileLockTest extends ActiveMQTestBase
{ {
@ -42,7 +40,7 @@ public class FileLockTest extends ActiveMQTestBase
@Test @Test
public void testNIOLock() throws Exception public void testNIOLock() throws Exception
{ {
doTestLock(new FileLockNodeManager(getTestDir(), false), new FileLockNodeManager(getTestDir(), false)); doTestLock(new FileLockNodeManager(getTestDirfile(), false), new FileLockNodeManager(getTestDirfile(), false));
} }
@ -51,7 +49,7 @@ public class FileLockTest extends ActiveMQTestBase
{ {
if (AsynchronousFileImpl.isLoaded()) if (AsynchronousFileImpl.isLoaded())
{ {
doTestLock(new AIOFileLockNodeManager(getTestDir(), false), new AIOFileLockNodeManager(getTestDir(), false)); doTestLock(new AIOFileLockNodeManager(getTestDirfile(), false), new AIOFileLockNodeManager(getTestDirfile(), false));
} }
} }