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();
}