You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jb...@apache.org on 2016/04/04 18:09:43 UTC

[34/42] activemq-artemis git commit: ARTEMIS-463 Improvement to the openwire testsuite https://issues.apache.org/jira/browse/ARTEMIS-463

ARTEMIS-463 Improvement to the openwire testsuite
https://issues.apache.org/jira/browse/ARTEMIS-463

This was a team effort from Clebert Suconic and Howard Gao


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/2e666730
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/2e666730
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/2e666730

Branch: refs/heads/master
Commit: 2e66673048a5defc30b6fccaa5668c011867d014
Parents: 7e80cc3
Author: Clebert Suconic <cl...@apache.org>
Authored: Fri Apr 1 15:46:20 2016 -0400
Committer: jbertram <jb...@apache.org>
Committed: Mon Apr 4 11:08:43 2016 -0500

----------------------------------------------------------------------
 tests/activemq5-unit-tests/pom.xml              |   60 +-
 .../artemiswrapper/ArtemisBrokerHelper.java     |   17 +-
 .../broker/ArtemisBrokerWrapperFactory.java     |   32 +
 .../apache/activemq/broker/BrokerService.java   |  210 ++-
 .../artemiswrapper/ArtemisBrokerBase.java       |   17 +-
 .../artemiswrapper/ArtemisBrokerWrapper.java    |  103 +-
 .../artemiswrapper/CleanupThreadRule.java       |   52 +
 .../artemiswrapper/OpenwireArtemisBaseTest.java |  283 ++++
 .../transport/tcp/TcpTransportFactory.java      |   70 +-
 .../activemq/ActiveMQConnectionFactoryTest.java |    5 +-
 .../activemq/ActiveMQInputStreamTest.java       |  148 --
 .../ActiveMQXAConnectionFactoryTest.java        |   15 +-
 .../apache/activemq/AutoFailTestSupport.java    |  159 ++
 .../apache/activemq/CombinationTestSupport.java |    2 +-
 .../apache/activemq/ConnectionCleanupTest.java  |   34 +-
 .../activemq/EmbeddedBrokerTestSupport.java     |   98 +-
 ...ExclusiveConsumerStartupDestinationTest.java |    1 +
 .../apache/activemq/ExclusiveConsumerTest.java  |    3 +
 .../org/apache/activemq/JMSConsumerTest.java    |   52 +-
 .../JmsDurableQueueWildcardSendReceiveTest.java |    2 +-
 .../apache/activemq/JmsQueueBrowserTest.java    |    1 +
 .../activemq/JmsQueueTransactionTest.java       |  234 +++
 .../JmsQueueWildcardSendReceiveTest.java        |    2 +-
 .../activemq/JmsRollbackRedeliveryTest.java     |    2 +-
 ...sTopicSendReceiveWithTwoConnectionsTest.java |    3 +
 .../activemq/JmsTransactionTestSupport.java     |  722 +++++++++
 .../org/apache/activemq/LargeStreamletTest.java |  170 --
 .../activemq/QueueConsumerPriorityTest.java     |    4 +
 .../activemq/ReconnectWithSameClientIDTest.java |    3 +-
 .../apache/activemq/RemoveDestinationTest.java  |    2 +
 .../java/org/apache/activemq/TimeStampTest.java |   12 +-
 .../apache/activemq/TransactionContextTest.java |   21 +-
 .../activemq/ZeroPrefetchConsumerTest.java      |   34 +-
 .../org/apache/activemq/broker/AMQ4351Test.java |  271 ----
 .../org/apache/activemq/broker/BrokerTest.java  |   23 +-
 .../jmx/BrokerViewSlowStoreStartupTest.java     |  395 -----
 .../broker/jmx/HealthViewMBeanTest.java         |  119 --
 .../activemq/broker/jmx/Log4JConfigTest.java    |  194 ---
 .../broker/jmx/MBeanOperationTimeoutTest.java   |  136 --
 .../apache/activemq/broker/jmx/MBeanTest.java   | 1505 ------------------
 .../apache/activemq/broker/jmx/PurgeTest.java   |  258 ---
 .../broker/jmx/TransportConnectorMBeanTest.java |  141 --
 .../region/QueueDuplicatesFromStoreTest.java    |   87 +-
 .../region/SubscriptionAddRemoveQueueTest.java  |   21 +-
 .../region/cursors/NegativeQueueTest.java       |  432 -----
 .../broker/virtual/CompositeQueueTest.java      |  134 --
 .../broker/virtual/CompositeTopicTest.java      |   49 -
 .../DestinationInterceptorDurableSubTest.java   |  283 ----
 .../broker/virtual/FilteredQueueTest.java       |   36 -
 .../MirroredQueueCorrectMemoryUsageTest.java    |  167 --
 .../broker/virtual/MirroredQueueTest.java       |  116 --
 ...MirroredQueueUsingVirtualTopicQueueTest.java |   34 -
 .../broker/virtual/VirtualDestPerfTest.java     |  200 ---
 .../broker/virtual/VirtualTopicDLQTest.java     |  433 -----
 .../VirtualTopicDisconnectSelectorTest.java     |  188 ---
 .../broker/virtual/VirtualTopicPubSubTest.java  |  131 --
 .../VirtualTopicPubSubUsingXBeanTest.java       |   55 -
 .../virtual/VirtualTopicSelectorTest.java       |  108 --
 .../VirtualTopicsAndDurableSubsTest.java        |  117 --
 .../activemq/broker/virtual/composite-queue.xml |   47 -
 .../activemq/broker/virtual/composite-topic.xml |   47 -
 .../broker/virtual/disconnected-selector.xml    |   43 -
 .../activemq/broker/virtual/filtered-queue.xml  |   47 -
 .../broker/virtual/global-virtual-topics.xml    |   42 -
 .../broker/virtual/virtual-individual-dlq.xml   |   80 -
 .../virtual/virtual-topics-and-interceptor.xml  |   50 -
 .../java/org/apache/activemq/bugs/AMQ1282.java  |  206 ---
 .../org/apache/activemq/bugs/AMQ1687Test.java   |  106 --
 .../org/apache/activemq/bugs/AMQ1853Test.java   |  378 -----
 .../java/org/apache/activemq/bugs/AMQ1866.java  |  233 ---
 .../org/apache/activemq/bugs/AMQ1893Test.java   |  192 ---
 .../org/apache/activemq/bugs/AMQ1917Test.java   |  229 ---
 .../org/apache/activemq/bugs/AMQ1936Test.java   |  320 ----
 .../org/apache/activemq/bugs/AMQ2021Test.java   |  275 ----
 .../org/apache/activemq/bugs/AMQ2084Test.java   |  188 ---
 .../org/apache/activemq/bugs/AMQ2103Test.java   |  130 --
 .../activemq/bugs/AMQ2149LevelDBTest.java       |   30 -
 .../org/apache/activemq/bugs/AMQ2149Test.java   |  614 -------
 .../org/apache/activemq/bugs/AMQ2171Test.java   |  150 --
 .../org/apache/activemq/bugs/AMQ2200Test.java   |  100 --
 .../org/apache/activemq/bugs/AMQ2213Test.java   |  101 --
 .../org/apache/activemq/bugs/AMQ2314Test.java   |  181 ---
 .../org/apache/activemq/bugs/AMQ2356Test.java   |  192 ---
 .../org/apache/activemq/bugs/AMQ2364Test.java   |  113 --
 .../org/apache/activemq/bugs/AMQ2383Test.java   |   61 -
 .../org/apache/activemq/bugs/AMQ2401Test.java   |  235 ---
 .../org/apache/activemq/bugs/AMQ2413Test.java   |  344 ----
 .../org/apache/activemq/bugs/AMQ2439Test.java   |   94 --
 .../org/apache/activemq/bugs/AMQ2489Test.java   |  232 ---
 .../org/apache/activemq/bugs/AMQ2512Test.java   |  179 ---
 .../org/apache/activemq/bugs/AMQ2513Test.java   |  105 --
 .../org/apache/activemq/bugs/AMQ2528Test.java   |   79 -
 .../org/apache/activemq/bugs/AMQ2571Test.java   |  115 --
 .../org/apache/activemq/bugs/AMQ2580Test.java   |  195 ---
 .../activemq/bugs/AMQ2584ConcurrentDlqTest.java |  268 ----
 .../org/apache/activemq/bugs/AMQ2584Test.java   |  233 ---
 .../org/apache/activemq/bugs/AMQ2585Test.java   |   82 -
 .../org/apache/activemq/bugs/AMQ2616Test.java   |  118 --
 .../org/apache/activemq/bugs/AMQ2645Test.java   |  112 --
 .../org/apache/activemq/bugs/AMQ2736Test.java   |   98 --
 .../org/apache/activemq/bugs/AMQ2751Test.java   |   97 --
 .../org/apache/activemq/bugs/AMQ2801Test.java   |  199 ---
 .../org/apache/activemq/bugs/AMQ2832Test.java   |  379 -----
 .../org/apache/activemq/bugs/AMQ2870Test.java   |  227 ---
 .../org/apache/activemq/bugs/AMQ2902Test.java   |   96 --
 .../org/apache/activemq/bugs/AMQ2910Test.java   |  130 --
 .../org/apache/activemq/bugs/AMQ2982Test.java   |  184 ---
 .../org/apache/activemq/bugs/AMQ2983Test.java   |  165 --
 .../org/apache/activemq/bugs/AMQ3014Test.java   |  200 ---
 .../org/apache/activemq/bugs/AMQ3120Test.java   |  147 --
 .../org/apache/activemq/bugs/AMQ3140Test.java   |  146 --
 .../org/apache/activemq/bugs/AMQ3141Test.java   |  117 --
 .../org/apache/activemq/bugs/AMQ3145Test.java   |  129 --
 .../org/apache/activemq/bugs/AMQ3157Test.java   |  174 --
 .../org/apache/activemq/bugs/AMQ3167Test.java   |  471 ------
 .../org/apache/activemq/bugs/AMQ3274Test.java   |  763 ---------
 .../org/apache/activemq/bugs/AMQ3324Test.java   |  148 --
 .../org/apache/activemq/bugs/AMQ3352Test.java   |   74 -
 .../org/apache/activemq/bugs/AMQ3405Test.java   |  281 ----
 .../org/apache/activemq/bugs/AMQ3436Test.java   |  203 ---
 .../org/apache/activemq/bugs/AMQ3445Test.java   |  148 --
 .../org/apache/activemq/bugs/AMQ3454Test.java   |   75 -
 .../org/apache/activemq/bugs/AMQ3465Test.java   |  198 ---
 .../org/apache/activemq/bugs/AMQ3529Test.java   |  185 ---
 .../org/apache/activemq/bugs/AMQ3537Test.java   |  105 --
 .../org/apache/activemq/bugs/AMQ3567Test.java   |  212 ---
 .../org/apache/activemq/bugs/AMQ3622Test.java   |  109 --
 .../org/apache/activemq/bugs/AMQ3625Test.java   |  110 --
 .../org/apache/activemq/bugs/AMQ3674Test.java   |  122 --
 .../org/apache/activemq/bugs/AMQ3675Test.java   |  162 --
 .../org/apache/activemq/bugs/AMQ3678Test.java   |  216 ---
 .../org/apache/activemq/bugs/AMQ3732Test.java   |  178 ---
 .../org/apache/activemq/bugs/AMQ3779Test.java   |   77 -
 .../org/apache/activemq/bugs/AMQ3841Test.java   |  119 --
 .../org/apache/activemq/bugs/AMQ3879Test.java   |  113 --
 .../org/apache/activemq/bugs/AMQ3903Test.java   |  144 --
 .../org/apache/activemq/bugs/AMQ3932Test.java   |  164 --
 .../org/apache/activemq/bugs/AMQ3934Test.java   |  106 --
 .../org/apache/activemq/bugs/AMQ3961Test.java   |  185 ---
 .../org/apache/activemq/bugs/AMQ3992Test.java   |  106 --
 .../org/apache/activemq/bugs/AMQ4062Test.java   |  280 ----
 .../org/apache/activemq/bugs/AMQ4083Test.java   |  520 ------
 .../org/apache/activemq/bugs/AMQ4092Test.java   |  234 ---
 .../org/apache/activemq/bugs/AMQ4116Test.java   |  111 --
 .../org/apache/activemq/bugs/AMQ4126Test.java   |  181 ---
 .../org/apache/activemq/bugs/AMQ4133Test.java   |  107 --
 .../org/apache/activemq/bugs/AMQ4147Test.java   |  210 ---
 .../org/apache/activemq/bugs/AMQ4148Test.java   |   93 --
 .../org/apache/activemq/bugs/AMQ4157Test.java   |  178 ---
 .../org/apache/activemq/bugs/AMQ4160Test.java   |  380 -----
 .../org/apache/activemq/bugs/AMQ4212Test.java   |  357 -----
 .../org/apache/activemq/bugs/AMQ4213Test.java   |   88 -
 .../org/apache/activemq/bugs/AMQ4220Test.java   |  119 --
 .../org/apache/activemq/bugs/AMQ4221Test.java   |  274 ----
 .../org/apache/activemq/bugs/AMQ4222Test.java   |  187 ---
 .../org/apache/activemq/bugs/AMQ4323Test.java   |  160 --
 .../org/apache/activemq/bugs/AMQ4356Test.java   |  142 --
 .../org/apache/activemq/bugs/AMQ4361Test.java   |  160 --
 .../org/apache/activemq/bugs/AMQ4368Test.java   |  256 ---
 .../org/apache/activemq/bugs/AMQ4407Test.java   |  174 --
 .../org/apache/activemq/bugs/AMQ4413Test.java   |  246 ---
 .../org/apache/activemq/bugs/AMQ4469Test.java   |  113 --
 .../org/apache/activemq/bugs/AMQ4472Test.java   |   96 --
 .../org/apache/activemq/bugs/AMQ4475Test.java   |  361 -----
 .../bugs/AMQ4485LowLimitLevelDBTest.java        |   40 -
 .../activemq/bugs/AMQ4485LowLimitTest.java      |  473 ------
 ...XBrokersWithNDestsFanoutTransactionTest.java |  358 -----
 .../org/apache/activemq/bugs/AMQ4485Test.java   |  199 ---
 .../org/apache/activemq/bugs/AMQ4487Test.java   |  135 --
 .../org/apache/activemq/bugs/AMQ4504Test.java   |   83 -
 .../org/apache/activemq/bugs/AMQ4513Test.java   |  145 --
 .../org/apache/activemq/bugs/AMQ4517Test.java   |  129 --
 .../org/apache/activemq/bugs/AMQ4518Test.java   |  129 --
 .../org/apache/activemq/bugs/AMQ4530Test.java   |  115 --
 .../org/apache/activemq/bugs/AMQ4531Test.java   |  146 --
 .../org/apache/activemq/bugs/AMQ4554Test.java   |  107 --
 .../org/apache/activemq/bugs/AMQ4582Test.java   |   95 --
 .../org/apache/activemq/bugs/AMQ4595Test.java   |  158 --
 .../org/apache/activemq/bugs/AMQ4607Test.java   |  263 ---
 .../org/apache/activemq/bugs/AMQ4636Test.java   |  263 ---
 .../org/apache/activemq/bugs/AMQ4656Test.java   |  153 --
 .../org/apache/activemq/bugs/AMQ4671Test.java   |   81 -
 .../org/apache/activemq/bugs/AMQ4677Test.java   |  182 ---
 .../org/apache/activemq/bugs/AMQ4853Test.java   |  304 ----
 .../org/apache/activemq/bugs/AMQ4887Test.java   |  168 --
 .../org/apache/activemq/bugs/AMQ4893Test.java   |   86 -
 .../org/apache/activemq/bugs/AMQ4899Test.java   |  197 ---
 .../org/apache/activemq/bugs/AMQ4930Test.java   |  147 --
 .../org/apache/activemq/bugs/AMQ4950Test.java   |  197 ---
 .../org/apache/activemq/bugs/AMQ4952Test.java   |  511 ------
 .../org/apache/activemq/bugs/AMQ5035Test.java   |   83 -
 .../org/apache/activemq/bugs/AMQ5136Test.java   |   98 --
 .../org/apache/activemq/bugs/AMQ5212Test.java   |  225 ---
 .../activemq/bugs/AMQ5266SingleDestTest.java    |  617 -------
 .../bugs/AMQ5266StarvedConsumerTest.java        |  628 --------
 .../org/apache/activemq/bugs/AMQ5266Test.java   |  604 -------
 .../org/apache/activemq/bugs/AMQ5274Test.java   |  133 --
 .../org/apache/activemq/bugs/AMQ5381Test.java   |  178 ---
 .../org/apache/activemq/bugs/AMQ5421Test.java   |  119 --
 .../org/apache/activemq/bugs/AMQ5450Test.java   |  196 ---
 .../org/apache/activemq/bugs/AMQ5567Test.java   |  217 ---
 .../bugs/ActiveMQSlowConsumerManualTest.java    |  250 ---
 .../activemq/bugs/ConnectionPerMessageTest.java |  108 --
 .../org/apache/activemq/bugs/CraigsBugTest.java |   72 -
 .../apache/activemq/bugs/DoubleExpireTest.java  |  134 --
 .../activemq/bugs/DurableConsumerTest.java      |  479 ------
 .../bugs/JMSDurableTopicNoLocalTest.java        |   85 -
 .../bugs/JmsDurableTopicSlowReceiveTest.java    |  185 ---
 .../apache/activemq/bugs/JmsTimeoutTest.java    |  166 --
 .../bugs/MemoryUsageBlockResumeTest.java        |  221 ---
 .../activemq/bugs/MemoryUsageBrokerTest.java    |   93 --
 .../activemq/bugs/MemoryUsageCleanupTest.java   |  258 ---
 .../bugs/MessageExpirationReaperTest.java       |  185 ---
 .../org/apache/activemq/bugs/MessageSender.java |   49 -
 .../activemq/bugs/MissingDataFileTest.java      |  333 ----
 .../OptimizeAcknowledgeWithExpiredMsgsTest.java |  309 ----
 .../activemq/bugs/OutOfOrderTestCase.java       |  133 --
 .../activemq/bugs/QueueWorkerPrefetchTest.java  |  267 ----
 .../bugs/RawRollbackSharedConsumerTests.java    |  134 --
 .../apache/activemq/bugs/RawRollbackTests.java  |  135 --
 .../java/org/apache/activemq/bugs/Receiver.java |   22 -
 .../bugs/RedeliveryPluginHeaderTest.java        |  164 --
 .../apache/activemq/bugs/SlowConsumerTest.java  |  165 --
 ...ReplayAfterStoreCleanupLevelDBStoreTest.java |   30 -
 .../bugs/TempQueueDeleteOnCloseTest.java        |   54 -
 .../bugs/TempStorageBlockedBrokerTest.java      |  266 ----
 .../bugs/TempStorageConfigBrokerTest.java       |  220 ---
 .../activemq/bugs/TempStoreDataCleanupTest.java |  262 ---
 .../TransactedStoreUsageSuspendResumeTest.java  |  196 ---
 .../bugs/TransactionNotStartedErrorTest.java    |  298 ----
 .../bugs/TrapMessageInJDBCStoreTest.java        |  277 ----
 .../activemq/bugs/VMTransportClosureTest.java   |  135 --
 .../activemq/bugs/VerifySteadyEnqueueRate.java  |  148 --
 .../activemq/bugs/amq1095/ActiveMQTestCase.java |  158 --
 .../bugs/amq1095/MessageSelectorTest.java       |  218 ---
 .../apache/activemq/bugs/amq1095/activemq.xml   |   39 -
 .../activemq/bugs/amq1974/TryJmsClient.java     |  155 --
 .../activemq/bugs/amq1974/TryJmsManager.java    |  125 --
 .../bugs/amq3625/conf/JaasStompSSLBroker1.xml   |   65 -
 .../bugs/amq3625/conf/JaasStompSSLBroker2.xml   |   39 -
 .../bugs/amq3625/conf/groups2.properties        |   20 -
 .../activemq/bugs/amq3625/conf/login.config     |   22 -
 .../bugs/amq3625/conf/users2.properties         |   23 -
 .../activemq/bugs/amq3625/keys/broker2.ks       |    0
 .../activemq/bugs/amq3625/keys/client2.ks       |    0
 .../activemq/bugs/amq3625/keys/client2.ts       |    0
 ...InconsistentConnectorPropertiesBehaviour.xml |   46 -
 .../bugs/amq4126/JaasStompSSLBroker.xml         |   46 -
 .../apache/activemq/bugs/amq4126/dns.properties |   17 -
 .../activemq/bugs/amq4126/groups.properties     |   18 -
 .../apache/activemq/bugs/amq4126/login.config   |   30 -
 .../activemq/bugs/amq4126/users.properties      |   18 -
 .../apache/activemq/bugs/amq5035/activemq.xml   |  109 --
 .../bugs/embedded/EmbeddedActiveMQ.java         |  104 --
 .../activemq/bugs/embedded/ThreadExplorer.java  |  148 --
 .../network/CompressionOverNetworkTest.java     |    4 +-
 .../activemq/network/NetworkLoopBackTest.java   |    5 +-
 .../activemq/network/SimpleNetworkTest.java     |    6 +-
 .../store/AutoStorePerDestinationTest.java      |   44 -
 .../store/LevelDBStorePerDestinationTest.java   |   46 -
 .../activemq/store/MessagePriorityTest.java     |  584 -------
 .../apache/activemq/store/StoreOrderTest.java   |  274 ----
 .../activemq/store/StorePerDestinationTest.java |  314 ----
 .../store/jdbc/BrokenPersistenceAdapter.java    |   47 -
 .../store/jdbc/DatabaseLockerConfigTest.java    |   55 -
 .../store/jdbc/JDBCCommitExceptionTest.java     |  176 --
 .../jdbc/JDBCIOExceptionHandlerMockeryTest.java |  110 --
 .../store/jdbc/JDBCIOExceptionHandlerTest.java  |  330 ----
 .../activemq/store/jdbc/JDBCLockTablePrefix.xml |   58 -
 .../store/jdbc/JDBCLockTablePrefixTest.java     |   43 -
 .../store/jdbc/JDBCMessagePriorityTest.java     |  451 ------
 .../store/jdbc/JDBCNegativeQueueTest.java       |   93 --
 .../store/jdbc/JDBCNetworkBrokerDetachTest.java |   37 -
 .../store/jdbc/JDBCPersistenceAdapterTest.java  |   67 -
 .../store/jdbc/JDBCStoreAutoCommitTest.java     |  515 ------
 .../store/jdbc/JDBCStoreBrokerTest.java         |   60 -
 .../activemq/store/jdbc/JDBCStoreOrderTest.java |   62 -
 .../store/jdbc/JDBCTablePrefixAssignedTest.java |  133 --
 .../activemq/store/jdbc/JDBCTestMemory.java     |  157 --
 .../store/jdbc/JDBCXACommitExceptionTest.java   |  161 --
 .../store/jdbc/LeaseDatabaseLockerTest.java     |  273 ----
 .../activemq/store/kahadb/CustomLockerTest.java |   32 -
 .../store/kahadb/KahaDBFastEnqueueTest.java     |  249 ---
 .../store/kahadb/KahaDBIndexLocationTest.java   |  166 --
 .../store/kahadb/KahaDBMessagePriorityTest.java |   41 -
 .../kahadb/KahaDBPersistenceAdapterTest.java    |   39 -
 .../store/kahadb/KahaDBStoreBrokerTest.java     |   66 -
 .../store/kahadb/KahaDBStoreOrderTest.java      |   34 -
 .../kahadb/KahaDBStoreRecoveryBrokerTest.java   |  212 ---
 .../kahadb/KahaDBStoreRecoveryExpiryTest.java   |  113 --
 .../activemq/store/kahadb/KahaDBStoreTest.java  |  113 --
 .../activemq/store/kahadb/KahaDBTest.java       |  241 ---
 .../store/kahadb/KahaDBVersion1/db-1.log        |    0
 .../store/kahadb/KahaDBVersion1/db.data         |    0
 .../store/kahadb/KahaDBVersion1/db.redo         |    0
 .../store/kahadb/KahaDBVersion2/db-1.log        |    0
 .../store/kahadb/KahaDBVersion2/db.data         |    0
 .../store/kahadb/KahaDBVersion2/db.redo         |    0
 .../store/kahadb/KahaDBVersion3/db-1.log        |    0
 .../store/kahadb/KahaDBVersion3/db.data         |    0
 .../store/kahadb/KahaDBVersion3/db.redo         |    0
 .../store/kahadb/KahaDBVersion4/db-1.log        |    0
 .../store/kahadb/KahaDBVersion4/db.data         |    0
 .../store/kahadb/KahaDBVersion4/db.redo         |    0
 .../store/kahadb/KahaDBVersionTest.java         |  182 ---
 .../activemq/store/kahadb/NoSpaceIOTest.java    |  126 --
 .../activemq/store/kahadb/PBMesssagesTest.java  |   56 -
 .../store/kahadb/TempKahaDBStoreBrokerTest.java |   57 -
 .../store/kahadb/perf/KahaBulkLoadingTest.java  |  150 --
 .../kahadb/perf/KahaStoreDurableTopicTest.java  |   43 -
 .../store/kahadb/perf/KahaStoreQueueTest.java   |   45 -
 .../kahadb/perf/TempKahaStoreQueueTest.java     |   45 -
 .../KahaDBFilePendingMessageCursorTest.java     |   96 --
 .../activemq/store/kahadb/plist/PListTest.java  |  669 --------
 .../org/apache/activemq/store/kahadb/shared.xml |   59 -
 .../store/leveldb/LevelDBNegativeQueueTest.java |   38 -
 .../store/leveldb/LevelDBStoreBrokerTest.java   |   68 -
 .../activemq/store/schedulerDB/legacy/db-1.log  |    0
 .../store/schedulerDB/legacy/scheduleDB.data    |    0
 .../store/schedulerDB/legacy/scheduleDB.redo    |    0
 .../activemq/streams/JMSInputStreamTest.java    |  286 ----
 .../activemq/test/JmsResourceProvider.java      |  258 +++
 .../activemq/test/JmsTopicSendReceiveTest.java  |    4 +
 ...sTopicSendReceiveWithTwoConnectionsTest.java |    4 +
 .../org/apache/activemq/test/TestSupport.java   |  256 +++
 .../activemq/transport/QueueClusterTest.java    |    5 +-
 .../transport/SoWriteTimeoutClientTest.java     |  152 +-
 .../activemq/transport/TopicClusterTest.java    |   71 +-
 .../transport/failover/AMQ1925Test.java         |  169 +-
 .../transport/failover/BadConnectionTest.java   |   85 -
 .../failover/ConnectionHangOnStartupTest.java   |   38 +-
 .../failover/FailoverBackupLeakTest.java        |   80 +-
 .../transport/failover/FailoverClusterTest.java |  178 +--
 .../failover/FailoverComplexClusterTest.java    |  385 +++--
 .../FailoverConsumerOutstandingCommitTest.java  |  234 +--
 .../FailoverConsumerUnconsumedTest.java         |  248 +--
 .../failover/FailoverDuplicateTest.java         |  155 +-
 .../failover/FailoverPrefetchZeroTest.java      |  124 +-
 .../failover/FailoverPriorityTest.java          |  280 ++--
 .../transport/failover/FailoverRandomTest.java  |   74 +-
 .../FailoverRedeliveryTransactionTest.java      |   28 +-
 .../transport/failover/FailoverTimeoutTest.java |   81 +-
 .../failover/FailoverTransactionTest.java       | 1233 +++++++-------
 .../failover/FailoverTransportBackupsTest.java  |   52 +-
 .../failover/FailoverTransportBrokerTest.java   |  219 ++-
 .../FailoverTransportUriHandlingTest.java       |    1 -
 .../failover/FailoverUpdateURIsTest.java        |   95 +-
 .../transport/failover/FailoverUriTest.java     |    1 +
 .../failover/InitalReconnectDelayTest.java      |   70 +-
 .../transport/failover/ReconnectTest.java       |   60 +-
 .../transport/failover/SlowConnectionTest.java  |    9 +-
 .../failover/TwoBrokerFailoverClusterTest.java  |  166 +-
 .../activemq/transport/fanout/FanoutTest.java   |   30 +-
 .../fanout/FanoutTransportBrokerTest.java       |  218 ++-
 .../transport/tcp/InactivityMonitorTest.java    |   19 +-
 .../transport/tcp/SslBrokerServiceTest.java     |    1 +
 .../transport/tcp/TcpTransportBindTest.java     |    5 +-
 .../transport/tcp/TransportUriTest.java         |   11 +-
 .../transport/vm/VMTransportBrokerNameTest.java |   50 -
 .../transport/vm/VMTransportBrokerTest.java     |   38 -
 .../vm/VMTransportEmbeddedBrokerTest.java       |  104 --
 .../transport/vm/VMTransportThreadSafeTest.java |  937 -----------
 .../transport/vm/VMTransportWaitForTest.java    |  139 --
 .../vm/VmTransportNetworkBrokerTest.java        |  151 --
 .../TwoBrokerQueueClientsReconnectTest.java     |    8 +-
 .../org/apache/activemq/util/LockFileTest.java  |   70 +
 .../org/apache/activemq/util/SocketProxy.java   |  396 +++++
 .../java/org/apache/activemq/util/Wait.java     |   50 +
 .../activemq/transport/tcp/n-brokers-ssl.xml    |   51 +
 .../integration/client/HangConsumerTest.java    |   16 +-
 .../integration/openwire/BasicOpenWireTest.java |    4 +
 .../integration/openwire/BasicSecurityTest.java |    9 +-
 .../integration/openwire/OpenWireUtilTest.java  |    2 +-
 .../openwire/SimpleOpenWireTest.java            |  572 ++++++-
 .../storage/PersistMultiThreadTest.java         |    4 +
 tests/pom.xml                                   |   10 +
 .../core/postoffice/impl/BindingsImplTest.java  |   10 +
 .../unit/core/postoffice/impl/FakeQueue.java    |    5 +
 378 files changed, 6352 insertions(+), 50940 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/pom.xml
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/pom.xml b/tests/activemq5-unit-tests/pom.xml
index 5b77b7e..9eee81c 100644
--- a/tests/activemq5-unit-tests/pom.xml
+++ b/tests/activemq5-unit-tests/pom.xml
@@ -29,7 +29,7 @@
 
    <properties>
       <activemq.basedir>${project.basedir}/../..</activemq.basedir>
-      <activemq5.project.version>5.11.1</activemq5.project.version>
+      <activemq5.project.version>5.12.0</activemq5.project.version>
       <jmdns-version>3.4.1</jmdns-version>
       <ftpserver-version>1.0.6</ftpserver-version>
       <jmock-version>2.5.1</jmock-version>
@@ -43,28 +43,30 @@
       <jasypt-version>1.9.2</jasypt-version>
       <directory-version>2.0.0-M6</directory-version>
       <activeio-core-version>3.1.4</activeio-core-version>
+      <byteman.version>2.2.0</byteman.version>
 
    </properties>
 
    <dependencies>
 
+      <!-- I imported this to get the ThreadLeakCheck -->
       <dependency>
          <groupId>org.apache.activemq</groupId>
-         <artifactId>activemq-client</artifactId>
-         <version>${activemq5.project.version}</version>
+         <artifactId>artemis-server</artifactId>
+         <version>${project.version}</version>
+         <type>test-jar</type>
       </dependency>
 
       <dependency>
          <groupId>org.apache.activemq</groupId>
-         <artifactId>activemq-jaas</artifactId>
+         <artifactId>activemq-client</artifactId>
          <version>${activemq5.project.version}</version>
       </dependency>
 
       <dependency>
          <groupId>org.apache.activemq</groupId>
-         <artifactId>activemq-broker</artifactId>
+         <artifactId>activemq-jaas</artifactId>
          <version>${activemq5.project.version}</version>
-         <type>test-jar</type>
       </dependency>
 
       <dependency>
@@ -313,6 +315,47 @@
          <artifactId>artemis-openwire-protocol</artifactId>
          <version>${project.version}</version>
       </dependency>
+      <dependency>
+         <groupId>org.jboss.byteman</groupId>
+         <artifactId>byteman</artifactId>
+         <version>${byteman.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.byteman</groupId>
+         <artifactId>byteman-submit</artifactId>
+         <scope>test</scope>
+         <version>${byteman.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.byteman</groupId>
+         <artifactId>byteman-install</artifactId>
+         <scope>test</scope>
+         <version>${byteman.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.byteman</groupId>
+         <artifactId>byteman-bmunit</artifactId>
+         <scope>test</scope>
+         <version>${byteman.version}</version>
+         <exclusions>
+            <exclusion>
+               <groupId>org.testng</groupId>
+               <artifactId>testng</artifactId>
+            </exclusion>
+         </exclusions>
+      </dependency>
+
+       <!--
+           JBoss Logging
+       -->
+       <dependency>
+           <groupId>org.jboss.logging</groupId>
+           <artifactId>jboss-logging</artifactId>
+       </dependency>
+      <dependency>
+            <groupId>org.jboss.logmanager</groupId>
+            <artifactId>jboss-logmanager</artifactId>
+      </dependency>
 
    </dependencies>
 
@@ -382,11 +425,13 @@
             <configuration>
                <skipTests>${skipActiveMQ5Tests}</skipTests>
                <includes>
-                  <!-- include this first three packages -->
+                  <!-- included packages -->
                   <include>**/org/apache/activemq/*Test.java</include>
                   <include>**/org/apache/activemq/command/*Test.java</include>
                   <include>**/org/apache/activemq/openwire/*Test.java</include>
                   <include>**/org/apache/activemq/transport/tcp/*Test.java</include>
+                  <include>**/org/apache/activemq/transport/failover/*Test.java</include>
+                  <include>**/org/apache/activemq/transport/*Test.java</include>
                   <!-- tests that are known to pass-->
                   <include>**/org/apache/activemq/blob/BlobTransferPolicyUriTest.java</include>
                </includes>
@@ -396,7 +441,6 @@
                   <exclude>**/org/apache/activemq/ProducerFlowControlTest.java</exclude>
                   <!-- exclude tests that are on client side only -->
                   <exclude>**/org/apache/activemq/transport/tcp/TransportConnectorInvalidSocketOptionsTest.java</exclude>
-                  <exclude>**/org/apache/activemq/transport/tcp/TransportUriTest.java</exclude>
                </excludes>
             </configuration>
          </plugin>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/artemiswrapper/ArtemisBrokerHelper.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/artemiswrapper/ArtemisBrokerHelper.java b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/artemiswrapper/ArtemisBrokerHelper.java
index bc4bb11..fce53ee 100644
--- a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/artemiswrapper/ArtemisBrokerHelper.java
+++ b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/artemiswrapper/ArtemisBrokerHelper.java
@@ -23,8 +23,11 @@ import java.net.URI;
 
 import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.command.ActiveMQDestination;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class ArtemisBrokerHelper {
+   private static final Logger LOG = LoggerFactory.getLogger(ArtemisBrokerHelper.class);
 
    private static volatile Object service = null;
    private static Class<?> serviceClass;
@@ -42,6 +45,7 @@ public class ArtemisBrokerHelper {
    // start a tcp transport artemis broker, the broker need to
    // be invm with client.
    public static void startArtemisBroker(URI location) throws IOException {
+      LOG.info("---starting broker, service is there? " + service);
       if (service != null) {
          return;
       }
@@ -49,6 +53,7 @@ public class ArtemisBrokerHelper {
          service = serviceClass.newInstance();
          Method startMethod = serviceClass.getMethod("start");
          startMethod.invoke(service, (Object[]) null);
+         LOG.info("started a service instance: " + service);
       }
       catch (InstantiationException e) {
          throw new IOException("Inst exception", e);
@@ -75,23 +80,21 @@ public class ArtemisBrokerHelper {
       startMethod.invoke(service, activemqDestination);
    }
 
-   //some tests run broker in setUp(). This need be called
-   //to prevent auto broker creation.
-   public static void setBroker(Object startedBroker) {
-      service = startedBroker;
-   }
-
    public static BrokerService getBroker() {
       return (BrokerService) service;
    }
 
-   public static void stopArtemisBroker() throws Exception {
+   public static void stopArtemisBroker() {
       try {
          if (service != null) {
             Method startMethod = serviceClass.getMethod("stop");
             startMethod.invoke(service, (Object[]) null);
+            System.out.println("stopped the service instance: " + service);
          }
       }
+      catch (Exception e) {
+         e.printStackTrace();
+      }
       finally {
          service = null;
       }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/ArtemisBrokerWrapperFactory.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/ArtemisBrokerWrapperFactory.java b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/ArtemisBrokerWrapperFactory.java
new file mode 100644
index 0000000..eff9ab3
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/ArtemisBrokerWrapperFactory.java
@@ -0,0 +1,32 @@
+/*
+ * 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.broker;
+
+import org.apache.activemq.broker.artemiswrapper.ArtemisBrokerWrapper;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ArtemisBrokerWrapperFactory {
+   List<ArtemisBrokerWrapper> brokers = new ArrayList<>();
+
+   public static Broker createBroker(BrokerService brokerService) {
+
+      return null;
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/BrokerService.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/BrokerService.java b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/BrokerService.java
index ffdfc6e..f72fe34 100644
--- a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/BrokerService.java
+++ b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/BrokerService.java
@@ -16,22 +16,26 @@
  */
 package org.apache.activemq.broker;
 
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.net.ServerSocket;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.WeakHashMap;
-
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.activemq.ActiveMQConnectionMetaData;
 import org.apache.activemq.Service;
@@ -44,10 +48,13 @@ import org.apache.activemq.broker.region.policy.PolicyMap;
 import org.apache.activemq.broker.scheduler.JobSchedulerStore;
 import org.apache.activemq.command.ActiveMQDestination;
 import org.apache.activemq.command.BrokerId;
+import org.apache.activemq.network.ConnectionFilter;
+import org.apache.activemq.network.DiscoveryNetworkConnector;
 import org.apache.activemq.network.NetworkConnector;
 import org.apache.activemq.network.jms.JmsConnector;
 import org.apache.activemq.proxy.ProxyConnector;
 import org.apache.activemq.security.MessageAuthorizationPolicy;
+import org.apache.activemq.spring.SpringSslContext;
 import org.apache.activemq.store.PListStore;
 import org.apache.activemq.store.PersistenceAdapter;
 import org.apache.activemq.store.PersistenceAdapterFactory;
@@ -57,6 +64,7 @@ import org.apache.activemq.usage.SystemUsage;
 import org.apache.activemq.util.IOExceptionHandler;
 import org.apache.activemq.util.IOHelper;
 import org.apache.activemq.util.ServiceStopper;
+import org.junit.rules.TemporaryFolder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -68,10 +76,12 @@ import org.slf4j.LoggerFactory;
 public class BrokerService implements Service {
 
    public static final String DEFAULT_PORT = "61616";
+   public static final AtomicInteger RANDOM_PORT_BASE = new AtomicInteger(51616);
    public static final String DEFAULT_BROKER_NAME = "localhost";
    public static final String BROKER_VERSION;
    public static final int DEFAULT_MAX_FILE_LENGTH = 1024 * 1024 * 32;
    public static final long DEFAULT_START_TIMEOUT = 600000L;
+   public static boolean disableWrapper = false;
 
    public String SERVER_SIDE_KEYSTORE;
    public String KEYSTORE_PASSWORD;
@@ -91,7 +101,7 @@ public class BrokerService implements Service {
    private BrokerId brokerId;
    private Throwable startException = null;
    private boolean startAsync = false;
-   public Set<Integer> extraConnectors = new HashSet<>();
+   public Set<ConnectorInfo> extraConnectors = new HashSet<>();
 
    private List<TransportConnector> transportConnectors = new ArrayList<>();
    private File dataDirectoryFile;
@@ -99,6 +109,10 @@ public class BrokerService implements Service {
    private PolicyMap destinationPolicy;
    private SystemUsage systemUsage;
 
+   private final List<NetworkConnector> networkConnectors = new CopyOnWriteArrayList<NetworkConnector>();
+
+   private TemporaryFolder tmpfolder;
+
    public static WeakHashMap<Broker, Exception> map = new WeakHashMap<>();
 
    static {
@@ -117,7 +131,7 @@ public class BrokerService implements Service {
 
    @Override
    public String toString() {
-      return "BrokerService[" + getBrokerName() + "]";
+      return "BrokerService[" + getBrokerName() + "]" + super.toString();
    }
 
    private String getBrokerVersion() {
@@ -131,6 +145,10 @@ public class BrokerService implements Service {
 
    @Override
    public void start() throws Exception {
+      File targetTmp = new File("./target/tmp");
+      targetTmp.mkdirs();
+      tmpfolder = new TemporaryFolder(targetTmp);
+      tmpfolder.create();
       Exception e = new Exception();
       e.fillInStackTrace();
       startBroker(startAsync);
@@ -188,10 +206,10 @@ public class BrokerService implements Service {
       LOG.info("Apache ActiveMQ Artemis{} ({}, {}) is shutting down", new Object[]{getBrokerVersion(), getBrokerName(), brokerId});
 
       if (broker != null) {
-         System.out.println("______________________stopping broker: " + broker.getClass().getName());
          broker.stop();
          broker = null;
       }
+      tmpfolder.delete();
       LOG.info("Apache ActiveMQ Artemis {} ({}, {}) is shutdown", new Object[]{getBrokerVersion(), getBrokerName(), brokerId});
    }
 
@@ -200,7 +218,7 @@ public class BrokerService implements Service {
 
    public Broker getBroker() throws Exception {
       if (broker == null) {
-         broker = createBroker();
+         broker = createBroker(tmpfolder.getRoot());
       }
       return broker;
    }
@@ -220,13 +238,13 @@ public class BrokerService implements Service {
       this.brokerName = str.trim();
    }
 
-   protected Broker createBroker() throws Exception {
-      broker = createBrokerWrapper();
+   protected Broker createBroker(File temporaryFile) throws Exception {
+      broker = createBrokerWrapper(temporaryFile);
       return broker;
    }
 
-   private Broker createBrokerWrapper() {
-      return new ArtemisBrokerWrapper(this);
+   private Broker createBrokerWrapper(File temporaryFile) {
+      return new ArtemisBrokerWrapper(this, temporaryFile);
    }
 
    public void makeSureDestinationExists(ActiveMQDestination activemqDestination) throws Exception {
@@ -382,10 +400,6 @@ public class BrokerService implements Service {
    public void setKeepDurableSubsActive(boolean keepDurableSubsActive) {
    }
 
-   public NetworkConnector addNetworkConnector(String discoveryAddress) throws Exception {
-      return null;
-   }
-
    public TransportConnector getConnectorByName(String connectorName) {
       return null;
    }
@@ -407,8 +421,17 @@ public class BrokerService implements Service {
    public void setSchedulerDirectoryFile(File schedulerDirectory) {
    }
 
+   public NetworkConnector addNetworkConnector(String discoveryAddress) throws Exception {
+      return addNetworkConnector(new URI(discoveryAddress));
+   }
+
+   public NetworkConnector addNetworkConnector(URI discoveryAddress) throws Exception {
+      NetworkConnector connector = new DiscoveryNetworkConnector(discoveryAddress);
+      return addNetworkConnector(connector);
+   }
+
    public List<NetworkConnector> getNetworkConnectors() {
-      return new ArrayList<>();
+      return this.networkConnectors;
    }
 
    public void setSchedulerSupport(boolean schedulerSupport) {
@@ -468,9 +491,53 @@ public class BrokerService implements Service {
 
    public void setTransportConnectors(List<TransportConnector> transportConnectors) throws Exception {
       this.transportConnectors = transportConnectors;
+      for (TransportConnector connector : transportConnectors) {
+         if (connector.getUri().getScheme().equals("ssl")) {
+            boolean added = this.extraConnectors.add(new ConnectorInfo(connector.getUri().getPort(), true));
+            if (added) {
+               System.out.println("added ssl connector " + connector);
+            }
+            else {
+               System.out.println("WARNing! failed to add ssl connector: " + connector);
+            }
+         }
+         else {
+            boolean added = this.extraConnectors.add(new ConnectorInfo(connector.getUri().getPort()));
+            if (added) {
+               System.out.println("added connector " + connector);
+            }
+            else {
+               System.out.println("WARNing! failed to add connector: " + connector);
+            }
+         }
+      }
    }
 
    public NetworkConnector addNetworkConnector(NetworkConnector connector) throws Exception {
+      connector.setBrokerService(this);
+
+      System.out.println("------------------------ this broker uri: " + this.getConnectURI());
+      connector.setLocalUri(this.getConnectURI());
+      // Set a connection filter so that the connector does not establish loop
+      // back connections.
+      connector.setConnectionFilter(new ConnectionFilter() {
+         @Override
+         public boolean connectTo(URI location) {
+            List<TransportConnector> transportConnectors = getTransportConnectors();
+            for (Iterator<TransportConnector> iter = transportConnectors.iterator(); iter.hasNext();) {
+               try {
+                  TransportConnector tc = iter.next();
+                  if (location.equals(tc.getConnectUri())) {
+                     return false;
+                  }
+               } catch (Throwable e) {
+               }
+            }
+            return true;
+         }
+      });
+
+      networkConnectors.add(connector);
       return connector;
    }
 
@@ -486,19 +553,75 @@ public class BrokerService implements Service {
 
    public TransportConnector addConnector(URI bindAddress) throws Exception {
       Integer port = bindAddress.getPort();
+      String host = bindAddress.getHost();
       FakeTransportConnector connector = null;
-      if (port != 0) {
-         connector = new FakeTransportConnector(bindAddress);
-         this.transportConnectors.add(connector);
-         this.extraConnectors.add(port);
+
+      host = (host == null || host.length() == 0) ? "localhost" : host;
+      if ("0.0.0.0".equals(host)) {
+         host = "localhost";
       }
-      else {
-         connector = new FakeTransportConnector(new URI(this.getDefaultUri()));
-         this.transportConnectors.add(connector);
+
+      if (port == 0) {
+         //In actual impl in amq5, after connector has been added the socket
+         //is bound already. This means in case of 0 port uri, the random
+         //port is available after this call. With artemis wrapper however
+         //the real binding happens during broker start. To work around this
+         //we use manually calculated port for that.
+         port = getPseudoRandomPort();
+
       }
+
+      System.out.println("Now host is: " + host);
+      bindAddress = new URI(bindAddress.getScheme(), bindAddress.getUserInfo(),
+              host, port, bindAddress.getPath(), bindAddress.getQuery(), bindAddress.getFragment());
+
+      connector = new FakeTransportConnector(bindAddress);
+      this.transportConnectors.add(connector);
+      this.extraConnectors.add(new ConnectorInfo(port));
+
       return connector;
    }
 
+   private int getPseudoRandomPort() {
+      int port = RANDOM_PORT_BASE.getAndIncrement();
+      int maxTry = 20;
+      while (!checkPort(port)) {
+         port = RANDOM_PORT_BASE.getAndIncrement();
+         maxTry--;
+         if (maxTry == 0) {
+            LOG.error("Too many port used");
+            break;
+         }
+         try {
+            TimeUnit.SECONDS.sleep(5);
+         }
+         catch (InterruptedException e) {
+         }
+      }
+      return port;
+   }
+
+   public static boolean checkPort(final int port) {
+      ServerSocket ssocket = null;
+      try {
+         ssocket = new ServerSocket(port);
+      }
+      catch (Exception e) {
+         LOG.info("port " + port + " is being used.");
+         return false;
+      }
+      finally {
+         if (ssocket != null) {
+            try {
+               ssocket.close();
+            }
+            catch (IOException e) {
+            }
+         }
+      }
+      return true;
+   }
+
    public void setCacheTempDestinations(boolean cacheTempDestinations) {
    }
 
@@ -607,6 +730,14 @@ public class BrokerService implements Service {
 
    public void setSslContext(SslContext sslContext) {
       this.sslContext = sslContext;
+      if (sslContext instanceof SpringSslContext) {
+         SpringSslContext springContext = (SpringSslContext)sslContext;
+         this.SERVER_SIDE_KEYSTORE = springContext.getKeyStore();
+         this.KEYSTORE_PASSWORD = springContext.getKeyStorePassword();
+         this.SERVER_SIDE_TRUSTSTORE = springContext.getTrustStore();
+         this.TRUSTSTORE_PASSWORD = springContext.getTrustStorePassword();
+         this.storeType = springContext.getKeyStoreType();
+      }
    }
 
    public void setPersistenceFactory(PersistenceAdapterFactory persistenceFactory) {
@@ -643,8 +774,10 @@ public class BrokerService implements Service {
       URI uri = null;
       try {
          if (this.extraConnectors.size() > 0) {
-            Integer port = extraConnectors.iterator().next();
-            uri = new URI("tcp://localhost:" + port);
+            ConnectorInfo info = extraConnectors.iterator().next();
+            Integer port = info.port;
+            String schema = info.ssl ? "ssl" : "tcp";
+            uri = new URI(schema + "://localhost:" + port);
          } else {
             uri = new URI(this.getDefaultUri());
          }
@@ -654,6 +787,33 @@ public class BrokerService implements Service {
       return uri;
    }
 
+   public static class ConnectorInfo {
+
+      public int port;
+      public boolean ssl;
+
+      public ConnectorInfo(int port) {
+         this(port, false);
+      }
+
+      public ConnectorInfo(int port, boolean ssl) {
+         this.port = port;
+         this.ssl = ssl;
+      }
+
+      @Override
+      public int hashCode() {
+         return port;
+      }
+
+      @Override
+      public boolean equals(Object obj) {
+         if (obj instanceof ConnectorInfo) {
+            return this.port == ((ConnectorInfo)obj).port;
+         }
+         return false;
+      }
+   }
 }
 
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/ArtemisBrokerBase.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/ArtemisBrokerBase.java b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/ArtemisBrokerBase.java
index 5c052a6..fb3c242 100644
--- a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/ArtemisBrokerBase.java
+++ b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/ArtemisBrokerBase.java
@@ -17,7 +17,6 @@
 package org.apache.activemq.broker.artemiswrapper;
 
 import java.io.File;
-import java.io.IOException;
 import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
@@ -65,7 +64,6 @@ import org.apache.activemq.command.TransactionId;
 import org.apache.activemq.store.PListStore;
 import org.apache.activemq.thread.Scheduler;
 import org.apache.activemq.usage.Usage;
-import org.junit.rules.TemporaryFolder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -83,20 +81,19 @@ public abstract class ArtemisBrokerBase implements Broker {
    protected volatile boolean stopped;
    protected BrokerId brokerId = new BrokerId("Artemis Broker");
    protected BrokerService bservice;
-   protected TemporaryFolder temporaryFolder = new TemporaryFolder();
-   protected String testDir;
+
+   protected final File temporaryFolder;
+   protected final String testDir;
    protected boolean realStore = false;
 
    protected ActiveMQServer server;
 
    protected boolean enableSecurity = false;
 
-   public ArtemisBrokerBase() {
-      try {
-         this.temporaryFolder.create();
-      }
-      catch (IOException e) {
-      }
+   public ArtemisBrokerBase(File temporaryFolder) {
+      this.temporaryFolder = temporaryFolder;
+      this.testDir = temporaryFolder.getAbsolutePath();
+
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/ArtemisBrokerWrapper.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/ArtemisBrokerWrapper.java b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/ArtemisBrokerWrapper.java
index 61d6250..94faf26 100644
--- a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/ArtemisBrokerWrapper.java
+++ b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/ArtemisBrokerWrapper.java
@@ -16,6 +16,7 @@
  */
 package org.apache.activemq.broker.artemiswrapper;
 
+import java.io.File;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -28,40 +29,47 @@ import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.TransportConfiguration;
 import org.apache.activemq.artemis.core.config.Configuration;
 import org.apache.activemq.artemis.core.config.impl.SecurityConfiguration;
+import org.apache.activemq.artemis.core.postoffice.Binding;
 import org.apache.activemq.artemis.core.registry.JndiBindingRegistry;
 import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
 import org.apache.activemq.artemis.core.security.Role;
+import org.apache.activemq.artemis.core.server.impl.QueueImpl;
 import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
 import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
 import org.apache.activemq.artemis.core.settings.impl.SlowConsumerPolicy;
 import org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl;
-import org.apache.activemq.artemis.spi.core.security.ActiveMQSecurityManagerImpl;
-import org.apache.activemq.artemiswrapper.ArtemisBrokerHelper;
+import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
 import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.broker.region.policy.PolicyEntry;
 import org.apache.activemq.broker.region.policy.PolicyMap;
 
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+
 public class ArtemisBrokerWrapper extends ArtemisBrokerBase {
 
    protected final Map<String, SimpleString> testQueues = new HashMap<>();
    protected JMSServerManagerImpl jmsServer;
+   protected MBeanServer mbeanServer;
 
-   public ArtemisBrokerWrapper(BrokerService brokerService) {
+   public ArtemisBrokerWrapper(BrokerService brokerService, File temporaryFolder) {
+      super(temporaryFolder);
       this.bservice = brokerService;
    }
 
    @Override
    public void start() throws Exception {
-      testDir = temporaryFolder.getRoot().getAbsolutePath();
       clearDataRecreateServerDirs();
+
+      mbeanServer = MBeanServerFactory.createMBeanServer();
+
       server = createServer(realStore, true);
+      server.setMBeanServer(mbeanServer);
+
       server.getConfiguration().getAcceptorConfigurations().clear();
-      HashMap<String, Object> params = new HashMap<>();
-      params.put(TransportConstants.PORT_PROP_NAME, "61616");
-      params.put(TransportConstants.PROTOCOLS_PROP_NAME, "OPENWIRE,CORE");
-      TransportConfiguration transportConfiguration = new TransportConfiguration(NETTY_ACCEPTOR_FACTORY, params);
 
       Configuration serverConfig = server.getConfiguration();
+      serverConfig.setJMXManagementEnabled(true);
 
       Map<String, AddressSettings> addressSettingsMap = serverConfig.getAddressesSettings();
 
@@ -82,34 +90,16 @@ public class ArtemisBrokerWrapper extends ArtemisBrokerBase {
       commonSettings.setDeadLetterAddress(dla);
       commonSettings.setAutoCreateJmsQueues(true);
 
-      serverConfig.getAcceptorConfigurations().add(transportConfiguration);
+      if (bservice.extraConnectors.size() == 0) {
+         serverConfig.addAcceptorConfiguration("home", "tcp://localhost:61616?protocols=OPENWIRE,CORE");
+      }
       if (this.bservice.enableSsl()) {
-         params = new HashMap<>();
-         params.put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-         params.put(TransportConstants.PORT_PROP_NAME, 61611);
-         params.put(TransportConstants.PROTOCOLS_PROP_NAME, "OPENWIRE");
-         params.put(TransportConstants.KEYSTORE_PATH_PROP_NAME, bservice.SERVER_SIDE_KEYSTORE);
-         params.put(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, bservice.KEYSTORE_PASSWORD);
-         params.put(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME, bservice.storeType);
-         if (bservice.SERVER_SIDE_TRUSTSTORE != null) {
-            params.put(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME, true);
-            params.put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, bservice.SERVER_SIDE_TRUSTSTORE);
-            params.put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, bservice.TRUSTSTORE_PASSWORD);
-            params.put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, bservice.storeType);
-         }
-         TransportConfiguration sslTransportConfig = new TransportConfiguration(NETTY_ACCEPTOR_FACTORY, params);
-         serverConfig.getAcceptorConfigurations().add(sslTransportConfig);
+         //default
+         addServerAcceptor(serverConfig, new BrokerService.ConnectorInfo(61611, true));
       }
 
-      for (Integer port : bservice.extraConnectors) {
-         if (port.intValue() != 61616) {
-            //extra port
-            params = new HashMap<>();
-            params.put(TransportConstants.PORT_PROP_NAME, port.intValue());
-            params.put(TransportConstants.PROTOCOLS_PROP_NAME, "OPENWIRE");
-            TransportConfiguration extraTransportConfiguration = new TransportConfiguration(NETTY_ACCEPTOR_FACTORY, params);
-            serverConfig.getAcceptorConfigurations().add(extraTransportConfiguration);
-         }
+      for (BrokerService.ConnectorInfo info : bservice.extraConnectors) {
+         addServerAcceptor(serverConfig, info);
       }
 
       serverConfig.setSecurityEnabled(enableSecurity);
@@ -117,7 +107,7 @@ public class ArtemisBrokerWrapper extends ArtemisBrokerBase {
       //extraServerConfig(serverConfig);
 
       if (enableSecurity) {
-         ActiveMQSecurityManagerImpl sm = (ActiveMQSecurityManagerImpl) server.getSecurityManager();
+         ActiveMQJAASSecurityManager sm = (ActiveMQJAASSecurityManager) server.getSecurityManager();
          SecurityConfiguration securityConfig = sm.getConfiguration();
          securityConfig.addRole("openwireSender", "sender");
          securityConfig.addUser("openwireSender", "SeNdEr");
@@ -170,16 +160,32 @@ public class ArtemisBrokerWrapper extends ArtemisBrokerBase {
 
       server.start();
 
-/*
-         registerConnectionFactory();
-	      mbeanServer = MBeanServerFactory.createMBeanServer();
-*/
-
-      ArtemisBrokerHelper.setBroker(this.bservice);
       stopped = false;
 
    }
 
+   private void addServerAcceptor(Configuration serverConfig, BrokerService.ConnectorInfo info) throws Exception {
+      if (info.ssl) {
+         HashMap<String, Object> params = new HashMap<String, Object>();
+         params.put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
+         params.put(TransportConstants.PORT_PROP_NAME, info.port);
+         params.put(TransportConstants.PROTOCOLS_PROP_NAME, "OPENWIRE");
+         params.put(TransportConstants.KEYSTORE_PATH_PROP_NAME, bservice.SERVER_SIDE_KEYSTORE);
+         params.put(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, bservice.KEYSTORE_PASSWORD);
+         params.put(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME, bservice.storeType);
+         if (bservice.SERVER_SIDE_TRUSTSTORE != null) {
+            params.put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, bservice.SERVER_SIDE_TRUSTSTORE);
+            params.put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, bservice.TRUSTSTORE_PASSWORD);
+            params.put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, bservice.storeType);
+         }
+         TransportConfiguration sslTransportConfig = new TransportConfiguration(NETTY_ACCEPTOR_FACTORY, params);
+         serverConfig.getAcceptorConfigurations().add(sslTransportConfig);
+      }
+      else {
+         serverConfig.addAcceptorConfiguration("homePort" + info.port, "tcp://localhost:" + info.port + "?protocols=OPENWIRE,CORE");
+      }
+   }
+
    private void translatePolicyMap(Configuration serverConfig, PolicyMap policyMap) {
       List allEntries = policyMap.getAllEntries();
       Map<String, AddressSettings> settingsMap = serverConfig.getAddressesSettings();
@@ -204,6 +210,8 @@ public class ArtemisBrokerWrapper extends ArtemisBrokerBase {
                settings.setAddressFullMessagePolicy(AddressFullMessagePolicy.FAIL);
             }
          }
+         int queuePrefetch = entry.getQueuePrefetch();
+         settings.setQueuePrefetch(queuePrefetch);
       }
 
       PolicyEntry defaultEntry = policyMap.getDefaultEntry();
@@ -265,4 +273,19 @@ public class ArtemisBrokerWrapper extends ArtemisBrokerBase {
          }
       }
    }
+
+   public long getAMQueueMessageCount(String physicalName) {
+      long count = 0;
+      String qname = "jms.queue." + physicalName;
+      Binding binding = server.getPostOffice().getBinding(new SimpleString(qname));
+      if (binding != null) {
+         QueueImpl q = (QueueImpl) binding.getBindable();
+         count = q.getMessageCount();
+      }
+      return count;
+   }
+
+   public MBeanServer getMbeanServer() {
+      return this.mbeanServer;
+   }
 }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/CleanupThreadRule.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/CleanupThreadRule.java b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/CleanupThreadRule.java
new file mode 100644
index 0000000..2ddac3b
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/CleanupThreadRule.java
@@ -0,0 +1,52 @@
+/**
+ * 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.broker.artemiswrapper;
+
+import org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl;
+import org.apache.activemq.artemis.core.persistence.impl.journal.OperationContextImpl;
+import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector;
+import org.junit.rules.ExternalResource;
+
+public class CleanupThreadRule extends ExternalResource {
+
+   @Override
+   protected void before() throws Throwable {
+
+   }
+
+   @Override
+   protected void after() {
+      OperationContextImpl.clearContext();
+
+      // We shutdown the global pools to give a better isolation between tests
+      try {
+         ServerLocatorImpl.clearThreadPools();
+      }
+      catch (Throwable e) {
+         e.printStackTrace();
+      }
+
+      try {
+         NettyConnector.clearThreadPools();
+      }
+      catch (Exception e) {
+         e.printStackTrace();
+      }
+
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/OpenwireArtemisBaseTest.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/OpenwireArtemisBaseTest.java b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/OpenwireArtemisBaseTest.java
new file mode 100644
index 0000000..b523433
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/broker/artemiswrapper/OpenwireArtemisBaseTest.java
@@ -0,0 +1,283 @@
+/**
+ * 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.broker.artemiswrapper;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
+import org.apache.activemq.artemis.api.jms.management.JMSQueueControl;
+import org.apache.activemq.artemis.api.jms.management.JMSServerControl;
+import org.apache.activemq.artemis.core.config.Configuration;
+import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl;
+import org.apache.activemq.artemis.core.server.JournalType;
+import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
+import org.apache.activemq.artemis.jms.server.config.impl.JMSConfigurationImpl;
+import org.apache.activemq.artemis.jms.server.embedded.EmbeddedJMS;
+import org.apache.activemq.artemis.tests.util.ThreadLeakCheckRule;
+import org.apache.activemq.artemis.utils.uri.URISupport;
+import org.apache.activemq.broker.BrokerService;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
+import org.junit.rules.TestName;
+
+import javax.management.MBeanServer;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.ObjectName;
+
+public class OpenwireArtemisBaseTest {
+   @Rule
+   public CleanupThreadRule cleanupRules = new CleanupThreadRule();
+
+   @Rule
+   public ThreadLeakCheckRule leakCheckRule = new ThreadLeakCheckRule();
+
+   @Rule
+   public TemporaryFolder temporaryFolder;
+   @Rule
+   public TestName name = new TestName();
+
+   public OpenwireArtemisBaseTest() {
+      File tmpRoot = new File("./target/tmp");
+      tmpRoot.mkdirs();
+      temporaryFolder = new TemporaryFolder(tmpRoot);
+      //The wrapper stuff will automatically create a default
+      //server on a normal connection factory, which will
+      //cause problems with clustering tests, which starts
+      //all servers explicitly. Setting this to true
+      //can prevent the auto-creation from happening.
+      BrokerService.disableWrapper = true;
+   }
+
+
+   public String getTmp() {
+      return getTmpFile().getAbsolutePath();
+   }
+
+   public File getTmpFile() {
+      return temporaryFolder.getRoot();
+   }
+
+   protected String getJournalDir(int serverID, boolean backup) {
+      return getTmp() + "/journal_" + serverID + "_" + backup;
+   }
+
+   protected String getBindingsDir(int serverID, boolean backup) {
+      return getTmp() + "/binding_" + serverID + "_" + backup;
+   }
+
+   protected String getPageDir(int serverID, boolean backup) {
+      return getTmp() + "/paging_" + serverID + "_" + backup;
+   }
+
+   protected String getLargeMessagesDir(int serverID, boolean backup) {
+      return getTmp() + "/paging_" + serverID + "_" + backup;
+   }
+
+   public String CLUSTER_PASSWORD = "OPENWIRECLUSTER";
+
+   protected Configuration createConfig(final int serverID) throws Exception {
+      return createConfig("localhost", serverID, Collections.EMPTY_MAP);
+   }
+
+   protected Configuration createConfig(final String hostAddress, final int serverID, final int port) throws Exception {
+      ConfigurationImpl configuration = new ConfigurationImpl().setJMXManagementEnabled(false).
+         setSecurityEnabled(false).setJournalMinFiles(2).setJournalFileSize(1000 * 1024).setJournalType(JournalType.NIO).
+         setJournalDirectory(getJournalDir(serverID, false)).
+         setBindingsDirectory(getBindingsDir(serverID, false)).
+         setPagingDirectory(getPageDir(serverID, false)).
+         setLargeMessagesDirectory(getLargeMessagesDir(serverID, false)).
+         setJournalCompactMinFiles(0).
+         setJournalCompactPercentage(0).
+         setClusterPassword(CLUSTER_PASSWORD);
+
+      configuration.addAddressesSetting("#", new AddressSettings().setAutoCreateJmsQueues(true).setAutoDeleteJmsQueues(true));
+
+      configuration.addAcceptorConfiguration("netty", newURIwithPort(hostAddress, port));
+      configuration.addConnectorConfiguration("netty-connector", newURIwithPort(hostAddress, port));
+
+      return configuration;
+   }
+
+   protected Configuration createConfig(final String hostAddress, final int serverID) throws Exception {
+      return createConfig(hostAddress, serverID, Collections.EMPTY_MAP);
+   }
+
+   protected Configuration createConfig(final String hostAddress, final int serverID, Map<String, String> params) throws Exception {
+      ConfigurationImpl configuration = new ConfigurationImpl().setJMXManagementEnabled(false).
+              setSecurityEnabled(false).setJournalMinFiles(2).setJournalFileSize(1000 * 1024).setJournalType(JournalType.NIO).
+              setJournalDirectory(getJournalDir(serverID, false)).
+              setBindingsDirectory(getBindingsDir(serverID, false)).
+              setPagingDirectory(getPageDir(serverID, false)).
+              setLargeMessagesDirectory(getLargeMessagesDir(serverID, false)).
+              setJournalCompactMinFiles(0).
+              setJournalCompactPercentage(0).
+              setClusterPassword(CLUSTER_PASSWORD);
+
+      configuration.addAddressesSetting("#", new AddressSettings().setAutoCreateJmsQueues(true).setAutoDeleteJmsQueues(true));
+
+      configuration.addAcceptorConfiguration("netty", newURI(hostAddress, serverID) + "?" + URISupport.createQueryString(params));
+      configuration.addConnectorConfiguration("netty-connector", newURI(hostAddress, serverID));
+
+      return configuration;
+   }
+
+   //extraAcceptor takes form: "?name=value&name1=value ..."
+   protected Configuration createConfig(final int serverID, String extraAcceptorParams) throws Exception {
+      ConfigurationImpl configuration = new ConfigurationImpl().setJMXManagementEnabled(false).
+              setSecurityEnabled(false).setJournalMinFiles(2).setJournalFileSize(100 * 1024).setJournalType(JournalType.NIO).
+              setJournalDirectory(getJournalDir(serverID, false)).
+              setBindingsDirectory(getBindingsDir(serverID, false)).
+              setPagingDirectory(getPageDir(serverID, false)).
+              setLargeMessagesDirectory(getLargeMessagesDir(serverID, false)).
+              setJournalCompactMinFiles(0).
+              setJournalCompactPercentage(0).
+              setClusterPassword(CLUSTER_PASSWORD);
+
+      configuration.addAddressesSetting("#", new AddressSettings().setAutoCreateJmsQueues(true).setAutoDeleteJmsQueues(true));
+
+      String fullAcceptorUri = newURI(serverID) + extraAcceptorParams;
+      configuration.addAcceptorConfiguration("netty", fullAcceptorUri);
+
+      configuration.addConnectorConfiguration("netty-connector", newURI(serverID));
+      return configuration;
+   }
+
+   public void deployClusterConfiguration(Configuration config, Integer ... targetIDs) throws Exception {
+      StringBuffer stringBuffer = new StringBuffer();
+      String separator = "";
+      for (int x : targetIDs) {
+         stringBuffer.append(separator + newURI(x));
+         separator = ",";
+      }
+
+      String ccURI = "static://(" + stringBuffer.toString() + ")?connectorName=netty-connector;retryInterval=500;messageLoadBalancingType=STRICT;maxHops=1";
+
+      config.addClusterConfiguration("clusterCC", ccURI);
+   }
+
+   protected static String newURI(int serverID) {
+      return newURI("localhost", serverID);
+   }
+
+   protected static String newURI(String localhostAddress, int serverID) {
+      return "tcp://" + localhostAddress + ":" + (61616 + serverID);
+   }
+
+   protected static String newURIwithPort(String localhostAddress, int port) throws Exception {
+      return newURIwithPort(localhostAddress, port, Collections.EMPTY_MAP);
+   }
+
+   protected static String newURIwithPort(String localhostAddress, int port, Map<String, String> params) throws Exception {
+      return "tcp://" + localhostAddress + ":" + port + "?" + URISupport.createQueryString(params);
+   }
+
+   public static JMSServerControl createJMSServerControl(final MBeanServer mbeanServer) throws Exception {
+      return (JMSServerControl) createProxy(ObjectNameBuilder.DEFAULT.getJMSServerObjectName(), JMSServerControl.class, mbeanServer);
+   }
+
+   public static JMSQueueControl createJMSQueueControl(final String name,
+                                                       final MBeanServer mbeanServer) throws Exception {
+      return (JMSQueueControl) createProxy(ObjectNameBuilder.DEFAULT.getJMSQueueObjectName(name), JMSQueueControl.class, mbeanServer);
+   }
+
+   private static Object createProxy(final ObjectName objectName,
+                                     final Class mbeanInterface,
+                                     final MBeanServer mbeanServer) {
+      return MBeanServerInvocationHandler.newProxyInstance(mbeanServer, objectName, mbeanInterface, false);
+   }
+
+   protected void shutDownClusterServers(EmbeddedJMS[] servers) throws Exception {
+      for (int i = 0; i < servers.length; i++) {
+         try {
+            servers[i].stop();
+         }
+         catch (Throwable t) {
+            t.printStackTrace();
+         }
+      }
+   }
+
+   protected void shutDownNonClusterServers(EmbeddedJMS[] servers) throws Exception {
+      shutDownClusterServers(servers);
+   }
+
+   protected void setUpNonClusterServers(EmbeddedJMS[] servers) throws Exception {
+
+      Configuration[] serverCfgs = new Configuration[servers.length];
+      for (int i = 0; i < servers.length; i++) {
+         serverCfgs[i] = createConfig(i);
+      }
+
+      for (int i = 0; i < servers.length; i++) {
+         servers[i] = new EmbeddedJMS().setConfiguration(serverCfgs[i]).setJmsConfiguration(new JMSConfigurationImpl());
+      }
+
+      for (int i = 0; i < servers.length; i++) {
+         servers[i].start();
+      }
+   }
+
+   protected void setUpClusterServers(EmbeddedJMS[] servers) throws Exception {
+
+      Configuration[] serverCfgs = new Configuration[servers.length];
+      for (int i = 0; i < servers.length; i++) {
+         serverCfgs[i] = createConfig(i);
+      }
+
+      for (int i = 0; i < servers.length; i++) {
+         deployClusterConfiguration(serverCfgs[i], getTargets(servers.length, i));
+      }
+
+      for (int i = 0; i < servers.length; i++) {
+         servers[i] = new EmbeddedJMS().setConfiguration(serverCfgs[i]).setJmsConfiguration(new JMSConfigurationImpl());
+      }
+
+      for (int i = 0; i < servers.length; i++) {
+         servers[i].start();
+      }
+
+      for (int i = 0; i < servers.length; i++) {
+         Assert.assertTrue(servers[i].waitClusterForming(100, TimeUnit.MILLISECONDS, 20, servers.length));
+      }
+   }
+
+   private Integer[] getTargets(int total, int self)
+   {
+      int lenTargets = total - self;
+      List<Integer> targets = new ArrayList<>();
+      for (int i = 0; i < lenTargets; i++) {
+         if (i != self) {
+            targets.add(i);
+         }
+      }
+      return targets.toArray(new Integer[0]);
+   }
+
+   public EmbeddedJMS createBroker() throws Exception {
+      Configuration config0 = createConfig(0);
+      EmbeddedJMS newbroker = new EmbeddedJMS().setConfiguration(config0).setJmsConfiguration(new JMSConfigurationImpl());
+      return newbroker;
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/transport/tcp/TcpTransportFactory.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/transport/tcp/TcpTransportFactory.java b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/transport/tcp/TcpTransportFactory.java
index 34babf8..c0ed126 100644
--- a/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/transport/tcp/TcpTransportFactory.java
+++ b/tests/activemq5-unit-tests/src/main/java/org/apache/activemq/transport/tcp/TcpTransportFactory.java
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.UnknownHostException;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -29,6 +30,8 @@ import javax.net.SocketFactory;
 import org.apache.activemq.TransportLoggerSupport;
 import org.apache.activemq.artemiswrapper.ArtemisBrokerHelper;
 import org.apache.activemq.broker.BrokerRegistry;
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.broker.artemiswrapper.ArtemisBrokerWrapper;
 import org.apache.activemq.openwire.OpenWireFormat;
 import org.apache.activemq.transport.*;
 import org.apache.activemq.util.IOExceptionSupport;
@@ -42,31 +45,41 @@ public class TcpTransportFactory extends TransportFactory {
 
    private static final Logger LOG = LoggerFactory.getLogger(TcpTransportFactory.class);
 
-   private static volatile String brokerService = null;
-
-   //if a broker is started or stopped it should set this.
-   public static void setBrokerName(String name) {
-      brokerService = name;
-   }
+   private static volatile InternalServiceInfo brokerService = null;
 
    @Override
    public Transport doConnect(URI location) throws Exception {
       //here check broker, if no broker, we start one
       Map<String, String> params = URISupport.parseParameters(location);
       String brokerId = params.remove("invmBrokerId");
-      params.clear();
-      location = URISupport.createRemainingURI(location, params);
-      if (brokerService == null) {
+      boolean autoCreate = true;
+      String create = params.remove("create");
+      if (create != null)
+      {
+         autoCreate = "true".equals(create);
+      }
+
+      URI location1 = URISupport.createRemainingURI(location, Collections.EMPTY_MAP);
+
+      LOG.info("deciding whether starting an internal broker: " + brokerService + " flag: " + BrokerService.disableWrapper);
+      if (autoCreate && brokerService == null && !BrokerService.disableWrapper && BrokerService.checkPort(location1.getPort())) {
 
-         ArtemisBrokerHelper.startArtemisBroker(location);
-         brokerService = location.toString();
+         LOG.info("starting internal broker: " + location1);
+         ArtemisBrokerHelper.startArtemisBroker(location1);
+         brokerService = new InternalServiceInfo(location.toString());
 
          if (brokerId != null) {
             BrokerRegistry.getInstance().bind(brokerId, ArtemisBrokerHelper.getBroker());
-            System.out.println("bound: " + brokerId);
+            LOG.info("bound: " + brokerId);
          }
       }
-      return super.doConnect(location);
+      //remove unused invm parameters
+      params.remove("broker.persistent");
+      params.remove("broker.useJmx");
+      params.remove("marshal");
+      params.remove("create");
+      URI location2 = URISupport.createRemainingURI(location, params);
+      return super.doConnect(location2);
    }
 
    @Override
@@ -173,7 +186,36 @@ public class TcpTransportFactory extends TransportFactory {
       return new InactivityMonitor(transport, format);
    }
 
+   //remember call this if the test is using the internal broker.
    public static void clearService() {
-      brokerService = null;
+      LOG.info("#### clearing internal service " + brokerService);
+      if (brokerService != null) {
+         try {
+            ArtemisBrokerHelper.stopArtemisBroker();
+         }
+         catch (Exception e) {
+            e.printStackTrace();
+         }
+         finally {
+            brokerService = null;
+         }
+      }
+   }
+
+   //added createTime for debugging
+   private static class InternalServiceInfo {
+      private String internalService;
+      private long createTime;
+
+      public InternalServiceInfo(String brokerService) {
+         this.internalService = brokerService;
+         this.createTime = System.currentTimeMillis();
+         LOG.info("just created " + this);
+      }
+
+      @Override
+      public String toString() {
+         return internalService + "@" + createTime;
+      }
    }
 }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQConnectionFactoryTest.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQConnectionFactoryTest.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQConnectionFactoryTest.java
index e1ea7e6..8769324 100644
--- a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQConnectionFactoryTest.java
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQConnectionFactoryTest.java
@@ -110,6 +110,7 @@ public class ActiveMQConnectionFactoryTest extends CombinationTestSupport {
       connection.close();
    }
 
+   //we don't support in-vm connector (will we?)
    public void testCreateVMConnectionWithEmbdeddBroker() throws URISyntaxException, JMSException {
       ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://myBroker2?broker.persistent=false");
       // Make sure the broker is not created until the connection is
@@ -124,7 +125,9 @@ public class ActiveMQConnectionFactoryTest extends CombinationTestSupport {
       connection.close();
 
       // Verify the broker was destroyed.
-      assertNull(BrokerRegistry.getInstance().lookup("myBroker2"));
+      //I comment out this because this is pure client behavior in
+      //amq5. there shouldn't be any use-case like that with Artemis.
+      //assertNull(BrokerRegistry.getInstance().lookup("myBroker2"));
    }
 
    public void testGetBrokerName() throws URISyntaxException, JMSException {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQInputStreamTest.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQInputStreamTest.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQInputStreamTest.java
deleted file mode 100644
index fd06de9..0000000
--- a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQInputStreamTest.java
+++ /dev/null
@@ -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;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import javax.jms.Queue;
-import javax.jms.Session;
-
-import junit.framework.TestCase;
-
-import org.apache.activemq.broker.BrokerService;
-import org.apache.activemq.command.ActiveMQDestination;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Deprecated
-public class ActiveMQInputStreamTest extends TestCase {
-
-   private static final Logger LOG = LoggerFactory.getLogger(ActiveMQInputStreamTest.class);
-
-   private static final String BROKER_URL = "tcp://localhost:0";
-   private static final String DESTINATION = "destination";
-   private static final int STREAM_LENGTH = 64 * 1024 + 0; // change 0 to 1 to make it not crash
-
-   private BrokerService broker;
-   private String connectionUri;
-
-   @Override
-   public void setUp() throws Exception {
-      broker = new BrokerService();
-      broker.setUseJmx(false);
-      broker.setPersistent(false);
-      broker.setDestinations(new ActiveMQDestination[]{ActiveMQDestination.createDestination(DESTINATION, ActiveMQDestination.QUEUE_TYPE),});
-      broker.addConnector(BROKER_URL);
-      broker.start();
-      broker.waitUntilStarted();
-
-      //some internal api we don't implement
-      connectionUri = broker.getDefaultUri();
-   }
-
-   @Override
-   public void tearDown() throws Exception {
-      broker.stop();
-      broker.waitUntilStopped();
-   }
-
-   public void testInputStreamSetSyncSendOption() throws Exception {
-
-      ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(connectionUri);
-      ActiveMQConnection connection = (ActiveMQConnection) connectionFactory.createConnection();
-      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-      Queue destination = session.createQueue(DESTINATION + "?producer.alwaysSyncSend=true");
-
-      OutputStream out = null;
-      try {
-         out = connection.createOutputStream(destination);
-
-         assertTrue(((ActiveMQOutputStream) out).isAlwaysSyncSend());
-
-         LOG.debug("writing...");
-         for (int i = 0; i < STREAM_LENGTH; ++i) {
-            out.write(0);
-         }
-         LOG.debug("wrote " + STREAM_LENGTH + " bytes");
-      }
-      finally {
-         if (out != null) {
-            out.close();
-         }
-      }
-
-      InputStream in = null;
-      try {
-         in = connection.createInputStream(destination);
-         LOG.debug("reading...");
-         int count = 0;
-         while (-1 != in.read()) {
-            ++count;
-         }
-         LOG.debug("read " + count + " bytes");
-      }
-      finally {
-         if (in != null) {
-            in.close();
-         }
-      }
-
-      connection.close();
-   }
-
-   public void testInputStreamMatchesDefaultChuckSize() throws Exception {
-
-      ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(connectionUri);
-      ActiveMQConnection connection = (ActiveMQConnection) connectionFactory.createConnection();
-      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-      Queue destination = session.createQueue(DESTINATION);
-
-      OutputStream out = null;
-      try {
-         out = connection.createOutputStream(destination);
-         LOG.debug("writing...");
-         for (int i = 0; i < STREAM_LENGTH; ++i) {
-            out.write(0);
-         }
-         LOG.debug("wrote " + STREAM_LENGTH + " bytes");
-      }
-      finally {
-         if (out != null) {
-            out.close();
-         }
-      }
-
-      InputStream in = null;
-      try {
-         in = connection.createInputStream(destination);
-         LOG.debug("reading...");
-         int count = 0;
-         while (-1 != in.read()) {
-            ++count;
-         }
-         LOG.debug("read " + count + " bytes");
-      }
-      finally {
-         if (in != null) {
-            in.close();
-         }
-      }
-
-      connection.close();
-   }
-}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2e666730/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQXAConnectionFactoryTest.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQXAConnectionFactoryTest.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQXAConnectionFactoryTest.java
index 9424598..c96f370 100644
--- a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQXAConnectionFactoryTest.java
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/ActiveMQXAConnectionFactoryTest.java
@@ -126,7 +126,8 @@ public class ActiveMQXAConnectionFactoryTest extends CombinationTestSupport {
       assertNotNull(BrokerRegistry.getInstance().lookup("myBroker"));
       connection.close();
       // Verify the broker was destroyed.
-      assertNull(BrokerRegistry.getInstance().lookup("myBroker"));
+      //comment out this check as it doesn't apply to artemis
+      //assertNull(BrokerRegistry.getInstance().lookup("myBroker"));
 
       connection.close();
    }
@@ -383,8 +384,9 @@ public class ActiveMQXAConnectionFactoryTest extends CombinationTestSupport {
       resource.end(tid, XAResource.TMSUCCESS);
       resource.commit(tid, true);
 
-      assertTransactionGoneFromBroker(tid);
-      assertTransactionGoneFromConnection(brokerName, xaConnection.getClientID(), xaConnection.getConnectionInfo().getConnectionId(), tid);
+      //not apply to artemis
+      //assertTransactionGoneFromBroker(tid);
+      //assertTransactionGoneFromConnection(brokerName, xaConnection.getClientID(), xaConnection.getConnectionInfo().getConnectionId(), tid);
       assertSessionGone(xaConnection, session);
       assertTransactionGoneFromFailoverState(xaConnection, tid);
 
@@ -398,8 +400,8 @@ public class ActiveMQXAConnectionFactoryTest extends CombinationTestSupport {
       assertEquals(XAResource.XA_RDONLY, resource.prepare(tid));
 
       // no need for a commit on read only
-      assertTransactionGoneFromBroker(tid);
-      assertTransactionGoneFromConnection(brokerName, xaConnection.getClientID(), xaConnection.getConnectionInfo().getConnectionId(), tid);
+      //assertTransactionGoneFromBroker(tid);
+      //assertTransactionGoneFromConnection(brokerName, xaConnection.getClientID(), xaConnection.getConnectionInfo().getConnectionId(), tid);
       assertSessionGone(xaConnection, session);
       assertTransactionGoneFromFailoverState(xaConnection, tid);
 
@@ -430,7 +432,8 @@ public class ActiveMQXAConnectionFactoryTest extends CombinationTestSupport {
 
       connection.close();
 
-      assertTransactionGoneFromBroker(tid);
+      //comment out this check as it doesn't apply to artemis
+      //assertTransactionGoneFromBroker(tid);
 
       broker.stop();
    }