From fc94c0f5515cdfeb2bd67d9c8bb2eba5bd6c77b5 Mon Sep 17 00:00:00 2001 From: Patrick Sauts Date: Mon, 21 Dec 2015 11:28:04 -0800 Subject: [PATCH 01/17] Migrate build system from Ant to Maven Source files are moved from `src` to `src/main/java`. Tests are moved from `test` to `src/test/java`. `build.properties` is moved and split into two files: src/test/resources/build.properties src/test/resources/config.properties build.xml is replaced by pom.xml. Required system properties (eg. `make.bin`) are now verified in AbstractRMQTestSuite.java. Properties are verified before the tests start. This avoids to have a testsuite hanging because `make` is not GNU Make for instance. Fixes #37. --- .gitignore | 5 + build.xml | 18 +- pom.xml | 332 ++++++++++++++---- scripts/runperftestMaven.sh | 27 ++ scripts/stresspersisterMaven.sh | 72 ++++ .../java}/com/rabbitmq/client/Address.java | 0 .../client/AlreadyClosedException.java | 0 .../AuthenticationFailureException.java | 0 .../com/rabbitmq/client/BasicProperties.java | 0 .../com/rabbitmq/client/BlockedListener.java | 0 .../java}/com/rabbitmq/client/Channel.java | 0 .../java}/com/rabbitmq/client/Command.java | 0 .../com/rabbitmq/client/ConfirmListener.java | 0 .../java}/com/rabbitmq/client/Connection.java | 0 .../rabbitmq/client/ConnectionFactory.java | 0 .../java}/com/rabbitmq/client/Consumer.java | 0 .../client/ConsumerCancelledException.java | 0 .../com/rabbitmq/client/ContentHeader.java | 0 .../com/rabbitmq/client/DefaultConsumer.java | 0 .../rabbitmq/client/DefaultSaslConfig.java | 0 .../client/DefaultSocketConfigurator.java | 0 .../java}/com/rabbitmq/client/Envelope.java | 0 .../com/rabbitmq/client/ExceptionHandler.java | 0 .../com/rabbitmq/client/FlowListener.java | 0 .../com/rabbitmq/client/GetResponse.java | 0 .../com/rabbitmq/client/JDKSaslConfig.java | 0 .../java}/com/rabbitmq/client/LongString.java | 0 .../client/MalformedFrameException.java | 0 .../com/rabbitmq/client/MapRpcServer.java | 0 .../rabbitmq/client/MessageProperties.java | 0 .../java}/com/rabbitmq/client/Method.java | 0 .../client/MissedHeartbeatException.java | 0 .../com/rabbitmq/client/NullTrustManager.java | 0 ...ossibleAuthenticationFailureException.java | 0 .../ProtocolVersionMismatchException.java | 0 .../com/rabbitmq/client/QueueingConsumer.java | 0 .../com/rabbitmq/client/Recoverable.java | 0 .../com/rabbitmq/client/RecoveryListener.java | 0 .../com/rabbitmq/client/ReturnListener.java | 0 .../java}/com/rabbitmq/client/RpcClient.java | 0 .../java}/com/rabbitmq/client/RpcServer.java | 0 .../java}/com/rabbitmq/client/SaslConfig.java | 0 .../com/rabbitmq/client/SaslMechanism.java | 0 .../com/rabbitmq/client/ShutdownListener.java | 0 .../com/rabbitmq/client/ShutdownNotifier.java | 0 .../client/ShutdownSignalException.java | 0 .../rabbitmq/client/SocketConfigurator.java | 0 .../com/rabbitmq/client/StringRpcServer.java | 0 .../client/TopologyRecoveryException.java | 0 .../rabbitmq/client/UnexpectedFrameError.java | 0 .../client/UnexpectedMethodError.java | 0 .../client/UnknownClassOrMethodId.java | 0 .../client/impl/AMQBasicProperties.java | 0 .../com/rabbitmq/client/impl/AMQChannel.java | 0 .../com/rabbitmq/client/impl/AMQCommand.java | 0 .../rabbitmq/client/impl/AMQConnection.java | 0 .../client/impl/AMQContentHeader.java | 0 .../rabbitmq/client/impl/CRDemoMechanism.java | 0 .../rabbitmq/client/impl/ChannelManager.java | 0 .../com/rabbitmq/client/impl/ChannelN.java | 0 .../client/impl/ClientVersion.java.in | 0 .../client/impl/CommandAssembler.java | 0 .../client/impl/ConnectionParams.java | 0 .../client/impl/ConsumerDispatcher.java | 0 .../client/impl/ConsumerWorkService.java | 0 .../impl/ContentHeaderPropertyReader.java | 0 .../impl/ContentHeaderPropertyWriter.java | 0 .../client/impl/DefaultExceptionHandler.java | 0 .../com/rabbitmq/client/impl/Environment.java | 0 .../client/impl/ExternalMechanism.java | 0 .../impl/ForgivingExceptionHandler.java | 0 .../java}/com/rabbitmq/client/impl/Frame.java | 0 .../rabbitmq/client/impl/FrameHandler.java | 0 .../client/impl/FrameHandlerFactory.java | 0 .../rabbitmq/client/impl/HeartbeatSender.java | 0 .../client/impl/LongStringHelper.java | 0 .../com/rabbitmq/client/impl/Method.java | 0 .../client/impl/MethodArgumentReader.java | 0 .../client/impl/MethodArgumentWriter.java | 0 .../client/impl/NetworkConnection.java | 0 .../rabbitmq/client/impl/PlainMechanism.java | 0 .../com/rabbitmq/client/impl/SetQueue.java | 0 .../impl/ShutdownNotifierComponent.java | 0 .../client/impl/SocketFrameHandler.java | 0 .../client/impl/StrictExceptionHandler.java | 0 .../client/impl/TruncatedInputStream.java | 0 .../client/impl/UnknownChannelException.java | 0 .../com/rabbitmq/client/impl/ValueReader.java | 0 .../com/rabbitmq/client/impl/ValueWriter.java | 0 .../impl/VariableLinkedBlockingQueue.java | 0 .../com/rabbitmq/client/impl/Version.java | 0 .../com/rabbitmq/client/impl/WorkPool.java | 0 .../com/rabbitmq/client/impl/package.html | 0 .../impl/recovery/AutorecoveringChannel.java | 0 .../recovery/AutorecoveringConnection.java | 0 .../recovery/ConsumerRecoveryListener.java | 0 .../impl/recovery/QueueRecoveryListener.java | 0 .../client/impl/recovery/RecordedBinding.java | 0 .../impl/recovery/RecordedConsumer.java | 0 .../client/impl/recovery/RecordedEntity.java | 0 .../impl/recovery/RecordedExchange.java | 0 .../recovery/RecordedExchangeBinding.java | 0 .../impl/recovery/RecordedNamedEntity.java | 0 .../client/impl/recovery/RecordedQueue.java | 0 .../impl/recovery/RecordedQueueBinding.java | 0 .../recovery/RecoveryAwareAMQConnection.java | 0 .../RecoveryAwareAMQConnectionFactory.java | 0 .../recovery/RecoveryAwareChannelManager.java | 0 .../impl/recovery/RecoveryAwareChannelN.java | 0 .../java}/com/rabbitmq/client/package.html | 0 .../java}/com/rabbitmq/tools/Tracer.java | 0 .../com/rabbitmq/tools/json/JSONReader.java | 0 .../rabbitmq/tools/json/JSONSerializable.java | 0 .../com/rabbitmq/tools/json/JSONUtil.java | 0 .../com/rabbitmq/tools/json/JSONWriter.java | 0 .../com/rabbitmq/tools/json/package.html | 0 .../rabbitmq/tools/jsonrpc/JsonRpcClient.java | 0 .../tools/jsonrpc/JsonRpcException.java | 0 .../rabbitmq/tools/jsonrpc/JsonRpcServer.java | 0 .../tools/jsonrpc/ParameterDescription.java | 0 .../tools/jsonrpc/ProcedureDescription.java | 0 .../tools/jsonrpc/ServiceDescription.java | 0 .../com/rabbitmq/tools/jsonrpc/package.html | 0 .../java}/com/rabbitmq/tools/package.html | 0 .../com/rabbitmq/utility/BlockingCell.java | 0 .../utility/BlockingValueOrException.java | 0 .../com/rabbitmq/utility/IntAllocator.java | 0 .../com/rabbitmq/utility/SensibleClone.java | 0 .../utility/SingleShotLinearTimer.java | 0 .../java}/com/rabbitmq/utility/Utility.java | 0 .../rabbitmq/utility/ValueOrException.java | 0 .../java}/com/rabbitmq/utility/package.html | 0 .../rabbitmq/client/impl/WorkPoolTests.java | 0 .../client/test/AMQBuilderApiTest.java | 0 .../client/test/AMQConnectionTest.java | 0 .../client/test/AbstractRMQTestSuite.java | 114 ++++++ .../com/rabbitmq/client/test/AmqpUriTest.java | 0 .../client/test/BlockingCellTest.java | 0 .../client/test/BrokenFramesTest.java | 0 .../rabbitmq/client/test/BrokerTestCase.java | 10 +- .../rabbitmq/client/test/Bug20004Test.java | 0 .../test/ChannelNumberAllocationTests.java | 0 .../com/rabbitmq/client/test/ClientTests.java | 6 +- .../client/test/ClonePropertiesTest.java | 0 .../rabbitmq/client/test/CloseInMainLoop.java | 0 .../com/rabbitmq/client/test/ConfirmBase.java | 0 .../client/test/JSONReadWriteTest.java | 9 +- .../rabbitmq/client/test/LongStringTest.java | 0 .../client/test/MultiThreadedChannel.java | 0 .../test/QueueingConsumerShutdownTests.java | 0 .../client/test/SharedThreadPoolTest.java | 0 .../com/rabbitmq/client/test/TableTest.java | 0 .../client/test/TruncatedInputStreamTest.java | 0 .../client/test/ValueOrExceptionTest.java | 0 .../test/functional/AbstractRejectTest.java | 0 .../test/functional/AlternateExchange.java | 0 .../client/test/functional/BasicGet.java | 0 .../test/functional/BindingLifecycle.java | 0 .../test/functional/BindingLifecycleBase.java | 0 .../client/test/functional/CcRoutes.java | 0 .../test/functional/ClusteredTestBase.java | 0 .../client/test/functional/Confirm.java | 0 .../test/functional/ConnectionOpen.java | 0 .../test/functional/ConnectionRecovery.java | 0 .../ConsumerCancelNotification.java | 0 .../client/test/functional/ConsumerCount.java | 0 .../test/functional/ConsumerPriorities.java | 0 .../test/functional/DeadLetterExchange.java | 0 .../test/functional/DefaultExchange.java | 0 .../client/test/functional/DirectReplyTo.java | 0 .../test/functional/DoubleDeletion.java | 0 .../test/functional/DurableOnTransient.java | 0 .../test/functional/ExceptionHandling.java | 0 .../test/functional/ExceptionMessages.java | 0 .../test/functional/ExchangeDeclare.java | 0 .../functional/ExchangeDeleteIfUnused.java | 0 .../functional/ExchangeDeletePredeclared.java | 0 .../functional/ExchangeEquivalenceBase.java | 0 .../functional/ExchangeExchangeBindings.java | 0 .../ExchangeExchangeBindingsAutoDelete.java | 0 .../client/test/functional/FrameMax.java | 0 .../test/functional/FunctionalTests.java | 93 +++++ .../functional/HeadersExchangeValidation.java | 0 .../client/test/functional/Heartbeat.java | 0 .../test/functional/InternalExchange.java | 0 .../client/test/functional/InvalidAcks.java | 0 .../test/functional/InvalidAcksBase.java | 0 .../client/test/functional/InvalidAcksTx.java | 0 .../client/test/functional/MessageCount.java | 0 .../rabbitmq/client/test/functional/Nack.java | 0 .../test/functional/NoRequeueOnCancel.java | 0 .../client/test/functional/Nowait.java | 0 .../test/functional/PerConsumerPrefetch.java | 0 .../client/test/functional/PerMessageTTL.java | 0 .../client/test/functional/PerQueueTTL.java | 0 .../functional/PerQueueVsPerMessageTTL.java | 0 .../client/test/functional/Policies.java | 0 .../client/test/functional/QosTests.java | 0 .../test/functional/QueueExclusivity.java | 0 .../client/test/functional/QueueLease.java | 0 .../test/functional/QueueLifecycle.java | 0 .../test/functional/QueueSizeLimit.java | 0 .../client/test/functional/Recover.java | 0 .../client/test/functional/Reject.java | 0 .../functional/RequeueOnChannelClose.java | 0 .../test/functional/RequeueOnClose.java | 0 .../functional/RequeueOnConnectionClose.java | 0 .../client/test/functional/Routing.java | 0 .../test/functional/SaslMechanisms.java | 0 .../client/test/functional/TTLHandling.java | 0 .../client/test/functional/Tables.java | 0 .../client/test/functional/Transactions.java | 0 .../functional/UnbindAutoDeleteExchange.java | 0 .../test/functional/UnexpectedFrames.java | 0 .../client/test/functional/UserIDHeader.java | 0 .../client/test/performance/CLIHelper.java | 0 .../client/test/performance/QosScaling.java | 0 .../test/performance/ScalabilityTest.java | 0 .../test/performance/StressManagement.java | 0 .../client/test/server/AbsentQueue.java | 7 +- .../server/AlternateExchangeEquivalence.java | 0 .../client/test/server/BlockedConnection.java | 11 +- .../client/test/server/Bug19219Test.java | 0 .../test/server/ChannelLimitNegotiation.java | 0 .../server/DeadLetterExchangeDurable.java | 0 .../test/server/DurableBindingLifecycle.java | 0 .../server/EffectVisibilityCrossNodeTest.java | 0 .../test/server/ExclusiveQueueDurability.java | 1 - .../rabbitmq/client/test/server/Firehose.java | 0 .../rabbitmq/client/test/server/HATests.java | 10 +- .../client/test/server/LoopbackUsers.java | 0 .../client/test/server/MemoryAlarms.java | 1 - .../client/test/server/MessageRecovery.java | 5 +- .../client/test/server/Permissions.java | 0 .../test/server/PersistenceGuarantees.java | 0 .../client/test/server/PriorityQueues.java | 0 .../client/test/server/ServerTests.java | 52 +++ .../rabbitmq/client/test/server/Shutdown.java | 6 +- .../test/server/XDeathHeaderGrowth.java | 0 .../test/ssl/BadVerifiedConnection.java | 0 .../rabbitmq/client/test/ssl/SSLTests.java | 8 +- .../client/test/ssl/UnverifiedConnection.java | 0 .../client/test/ssl/VerifiedConnection.java | 0 .../examples/BufferPerformanceMetrics.java | 0 .../examples/ChannelCreationPerformance.java | 0 .../examples/ConfirmDontLoseMessages.java | 0 .../com/rabbitmq/examples/ConsumerMain.java | 0 .../examples/DirectReplyToPerformance.java | 0 .../com/rabbitmq/examples/FileConsumer.java | 0 .../com/rabbitmq/examples/FileProducer.java | 0 .../com/rabbitmq/examples/HelloClient.java | 0 .../rabbitmq/examples/HelloJsonClient.java | 0 .../rabbitmq/examples/HelloJsonServer.java | 0 .../rabbitmq/examples/HelloJsonService.java | 0 .../com/rabbitmq/examples/HelloServer.java | 0 .../java}/com/rabbitmq/examples/LogTail.java | 0 .../com/rabbitmq/examples/MulticastMain.java | 0 .../rabbitmq/examples/PerQueueTTLGetter.java | 0 .../examples/PerQueueTTLPublisher.java | 0 .../java}/com/rabbitmq/examples/PerfTest.java | 0 .../com/rabbitmq/examples/PerfTestMulti.java | 0 .../com/rabbitmq/examples/ProducerMain.java | 0 .../com/rabbitmq/examples/SendString.java | 0 .../com/rabbitmq/examples/SimpleConsumer.java | 0 .../com/rabbitmq/examples/SimpleProducer.java | 0 .../examples/SimpleTopicConsumer.java | 0 .../examples/SimpleTopicProducer.java | 0 .../examples/SpammyTopicProducer.java | 0 .../rabbitmq/examples/StressPersister.java | 0 .../java}/com/rabbitmq/examples/TestMain.java | 46 ++- .../examples/TracerConcurrencyTest.java | 0 .../com/rabbitmq/examples/perf/Broker.java | 0 .../rabbitmq/examples/perf/BrokerValue.java | 0 .../examples/perf/BrokerVariable.java | 0 .../com/rabbitmq/examples/perf/Consumer.java | 0 .../examples/perf/MulticastParams.java | 0 .../rabbitmq/examples/perf/MulticastSet.java | 0 .../examples/perf/MulticastValue.java | 0 .../examples/perf/MulticastVariable.java | 0 .../com/rabbitmq/examples/perf/PerfUtil.java | 0 .../com/rabbitmq/examples/perf/Producer.java | 0 .../examples/perf/ProducerConsumerBase.java | 0 .../examples/perf/RateVsLatencyScenario.java | 0 .../com/rabbitmq/examples/perf/Scenario.java | 0 .../examples/perf/ScenarioFactory.java | 0 .../rabbitmq/examples/perf/ScenarioStats.java | 0 .../examples/perf/SimpleScenario.java | 0 .../examples/perf/SimpleScenarioStats.java | 0 .../com/rabbitmq/examples/perf/Stats.java | 0 .../com/rabbitmq/examples/perf/Variable.java | 0 .../rabbitmq/examples/perf/VariableValue.java | 0 .../examples/perf/VaryingScenario.java | 0 .../examples/perf/VaryingScenarioStats.java | 0 .../test/java}/com/rabbitmq/tools/Host.java | 13 +- .../rabbitmq/utility/IntAllocatorTests.java | 0 .../test/resources/build.properties | 5 +- .../test/resources/config.properties | 1 + .../test/functional/FunctionalTests.java | 83 ----- .../client/test/server/ServerTests.java | 47 --- 299 files changed, 725 insertions(+), 257 deletions(-) create mode 100755 scripts/runperftestMaven.sh create mode 100755 scripts/stresspersisterMaven.sh rename src/{ => main/java}/com/rabbitmq/client/Address.java (100%) rename src/{ => main/java}/com/rabbitmq/client/AlreadyClosedException.java (100%) rename src/{ => main/java}/com/rabbitmq/client/AuthenticationFailureException.java (100%) rename src/{ => main/java}/com/rabbitmq/client/BasicProperties.java (100%) rename src/{ => main/java}/com/rabbitmq/client/BlockedListener.java (100%) rename src/{ => main/java}/com/rabbitmq/client/Channel.java (100%) rename src/{ => main/java}/com/rabbitmq/client/Command.java (100%) rename src/{ => main/java}/com/rabbitmq/client/ConfirmListener.java (100%) rename src/{ => main/java}/com/rabbitmq/client/Connection.java (100%) rename src/{ => main/java}/com/rabbitmq/client/ConnectionFactory.java (100%) rename src/{ => main/java}/com/rabbitmq/client/Consumer.java (100%) rename src/{ => main/java}/com/rabbitmq/client/ConsumerCancelledException.java (100%) rename src/{ => main/java}/com/rabbitmq/client/ContentHeader.java (100%) rename src/{ => main/java}/com/rabbitmq/client/DefaultConsumer.java (100%) rename src/{ => main/java}/com/rabbitmq/client/DefaultSaslConfig.java (100%) rename src/{ => main/java}/com/rabbitmq/client/DefaultSocketConfigurator.java (100%) rename src/{ => main/java}/com/rabbitmq/client/Envelope.java (100%) rename src/{ => main/java}/com/rabbitmq/client/ExceptionHandler.java (100%) rename src/{ => main/java}/com/rabbitmq/client/FlowListener.java (100%) rename src/{ => main/java}/com/rabbitmq/client/GetResponse.java (100%) rename src/{ => main/java}/com/rabbitmq/client/JDKSaslConfig.java (100%) rename src/{ => main/java}/com/rabbitmq/client/LongString.java (100%) rename src/{ => main/java}/com/rabbitmq/client/MalformedFrameException.java (100%) rename src/{ => main/java}/com/rabbitmq/client/MapRpcServer.java (100%) rename src/{ => main/java}/com/rabbitmq/client/MessageProperties.java (100%) rename src/{ => main/java}/com/rabbitmq/client/Method.java (100%) rename src/{ => main/java}/com/rabbitmq/client/MissedHeartbeatException.java (100%) rename src/{ => main/java}/com/rabbitmq/client/NullTrustManager.java (100%) rename src/{ => main/java}/com/rabbitmq/client/PossibleAuthenticationFailureException.java (100%) rename src/{ => main/java}/com/rabbitmq/client/ProtocolVersionMismatchException.java (100%) rename src/{ => main/java}/com/rabbitmq/client/QueueingConsumer.java (100%) rename src/{ => main/java}/com/rabbitmq/client/Recoverable.java (100%) rename src/{ => main/java}/com/rabbitmq/client/RecoveryListener.java (100%) rename src/{ => main/java}/com/rabbitmq/client/ReturnListener.java (100%) rename src/{ => main/java}/com/rabbitmq/client/RpcClient.java (100%) rename src/{ => main/java}/com/rabbitmq/client/RpcServer.java (100%) rename src/{ => main/java}/com/rabbitmq/client/SaslConfig.java (100%) rename src/{ => main/java}/com/rabbitmq/client/SaslMechanism.java (100%) rename src/{ => main/java}/com/rabbitmq/client/ShutdownListener.java (100%) rename src/{ => main/java}/com/rabbitmq/client/ShutdownNotifier.java (100%) rename src/{ => main/java}/com/rabbitmq/client/ShutdownSignalException.java (100%) rename src/{ => main/java}/com/rabbitmq/client/SocketConfigurator.java (100%) rename src/{ => main/java}/com/rabbitmq/client/StringRpcServer.java (100%) rename src/{ => main/java}/com/rabbitmq/client/TopologyRecoveryException.java (100%) rename src/{ => main/java}/com/rabbitmq/client/UnexpectedFrameError.java (100%) rename src/{ => main/java}/com/rabbitmq/client/UnexpectedMethodError.java (100%) rename src/{ => main/java}/com/rabbitmq/client/UnknownClassOrMethodId.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/AMQBasicProperties.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/AMQChannel.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/AMQCommand.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/AMQConnection.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/AMQContentHeader.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/CRDemoMechanism.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ChannelManager.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ChannelN.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ClientVersion.java.in (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/CommandAssembler.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ConnectionParams.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ConsumerDispatcher.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ConsumerWorkService.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ContentHeaderPropertyReader.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ContentHeaderPropertyWriter.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/DefaultExceptionHandler.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/Environment.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ExternalMechanism.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ForgivingExceptionHandler.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/Frame.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/FrameHandler.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/FrameHandlerFactory.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/HeartbeatSender.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/LongStringHelper.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/Method.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/MethodArgumentReader.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/MethodArgumentWriter.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/NetworkConnection.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/PlainMechanism.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/SetQueue.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ShutdownNotifierComponent.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/SocketFrameHandler.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/StrictExceptionHandler.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/TruncatedInputStream.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/UnknownChannelException.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ValueReader.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/ValueWriter.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/VariableLinkedBlockingQueue.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/Version.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/WorkPool.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/package.html (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/AutorecoveringChannel.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/ConsumerRecoveryListener.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/QueueRecoveryListener.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecordedBinding.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecordedConsumer.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecordedEntity.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecordedExchange.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecordedExchangeBinding.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecordedNamedEntity.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecordedQueue.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecordedQueueBinding.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnection.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecoveryAwareChannelManager.java (100%) rename src/{ => main/java}/com/rabbitmq/client/impl/recovery/RecoveryAwareChannelN.java (100%) rename src/{ => main/java}/com/rabbitmq/client/package.html (100%) rename src/{ => main/java}/com/rabbitmq/tools/Tracer.java (100%) rename src/{ => main/java}/com/rabbitmq/tools/json/JSONReader.java (100%) rename src/{ => main/java}/com/rabbitmq/tools/json/JSONSerializable.java (100%) rename src/{ => main/java}/com/rabbitmq/tools/json/JSONUtil.java (100%) rename src/{ => main/java}/com/rabbitmq/tools/json/JSONWriter.java (100%) rename src/{ => main/java}/com/rabbitmq/tools/json/package.html (100%) rename src/{ => main/java}/com/rabbitmq/tools/jsonrpc/JsonRpcClient.java (100%) rename src/{ => main/java}/com/rabbitmq/tools/jsonrpc/JsonRpcException.java (100%) rename src/{ => main/java}/com/rabbitmq/tools/jsonrpc/JsonRpcServer.java (100%) rename src/{ => main/java}/com/rabbitmq/tools/jsonrpc/ParameterDescription.java (100%) rename src/{ => main/java}/com/rabbitmq/tools/jsonrpc/ProcedureDescription.java (100%) rename src/{ => main/java}/com/rabbitmq/tools/jsonrpc/ServiceDescription.java (100%) rename src/{ => main/java}/com/rabbitmq/tools/jsonrpc/package.html (100%) rename src/{ => main/java}/com/rabbitmq/tools/package.html (100%) rename src/{ => main/java}/com/rabbitmq/utility/BlockingCell.java (100%) rename src/{ => main/java}/com/rabbitmq/utility/BlockingValueOrException.java (100%) rename src/{ => main/java}/com/rabbitmq/utility/IntAllocator.java (100%) rename src/{ => main/java}/com/rabbitmq/utility/SensibleClone.java (100%) rename src/{ => main/java}/com/rabbitmq/utility/SingleShotLinearTimer.java (100%) rename src/{ => main/java}/com/rabbitmq/utility/Utility.java (100%) rename src/{ => main/java}/com/rabbitmq/utility/ValueOrException.java (100%) rename src/{ => main/java}/com/rabbitmq/utility/package.html (100%) rename {test/src => src/test/java}/com/rabbitmq/client/impl/WorkPoolTests.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/AMQBuilderApiTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/AMQConnectionTest.java (100%) create mode 100644 src/test/java/com/rabbitmq/client/test/AbstractRMQTestSuite.java rename {test/src => src/test/java}/com/rabbitmq/client/test/AmqpUriTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/BlockingCellTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/BrokenFramesTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/BrokerTestCase.java (99%) rename {test/src => src/test/java}/com/rabbitmq/client/test/Bug20004Test.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/ChannelNumberAllocationTests.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/ClientTests.java (93%) rename {test/src => src/test/java}/com/rabbitmq/client/test/ClonePropertiesTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/CloseInMainLoop.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/ConfirmBase.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/JSONReadWriteTest.java (96%) rename {test/src => src/test/java}/com/rabbitmq/client/test/LongStringTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/MultiThreadedChannel.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/QueueingConsumerShutdownTests.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/SharedThreadPoolTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/TableTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/TruncatedInputStreamTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/ValueOrExceptionTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/AbstractRejectTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/AlternateExchange.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/BasicGet.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/BindingLifecycle.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/BindingLifecycleBase.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/CcRoutes.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ClusteredTestBase.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/Confirm.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ConnectionOpen.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ConnectionRecovery.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ConsumerCancelNotification.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ConsumerCount.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ConsumerPriorities.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/DeadLetterExchange.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/DefaultExchange.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/DirectReplyTo.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/DoubleDeletion.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/DurableOnTransient.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ExceptionHandling.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ExceptionMessages.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ExchangeDeclare.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ExchangeDeleteIfUnused.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ExchangeDeletePredeclared.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ExchangeEquivalenceBase.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ExchangeExchangeBindings.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/ExchangeExchangeBindingsAutoDelete.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/FrameMax.java (100%) create mode 100644 src/test/java/com/rabbitmq/client/test/functional/FunctionalTests.java rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/HeadersExchangeValidation.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/Heartbeat.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/InternalExchange.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/InvalidAcks.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/InvalidAcksBase.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/InvalidAcksTx.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/MessageCount.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/Nack.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/NoRequeueOnCancel.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/Nowait.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/PerConsumerPrefetch.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/PerMessageTTL.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/PerQueueTTL.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/PerQueueVsPerMessageTTL.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/Policies.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/QosTests.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/QueueExclusivity.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/QueueLease.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/QueueLifecycle.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/QueueSizeLimit.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/Recover.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/Reject.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/RequeueOnChannelClose.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/RequeueOnClose.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/RequeueOnConnectionClose.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/Routing.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/SaslMechanisms.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/TTLHandling.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/Tables.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/Transactions.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/UnbindAutoDeleteExchange.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/UnexpectedFrames.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/functional/UserIDHeader.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/performance/CLIHelper.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/performance/QosScaling.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/performance/ScalabilityTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/performance/StressManagement.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/AbsentQueue.java (99%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/AlternateExchangeEquivalence.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/BlockedConnection.java (98%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/Bug19219Test.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/ChannelLimitNegotiation.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/DeadLetterExchangeDurable.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/DurableBindingLifecycle.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/EffectVisibilityCrossNodeTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/ExclusiveQueueDurability.java (98%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/Firehose.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/HATests.java (90%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/LoopbackUsers.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/MemoryAlarms.java (99%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/MessageRecovery.java (98%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/Permissions.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/PersistenceGuarantees.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/PriorityQueues.java (100%) create mode 100644 src/test/java/com/rabbitmq/client/test/server/ServerTests.java rename {test/src => src/test/java}/com/rabbitmq/client/test/server/Shutdown.java (74%) rename {test/src => src/test/java}/com/rabbitmq/client/test/server/XDeathHeaderGrowth.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/ssl/BadVerifiedConnection.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/ssl/SSLTests.java (77%) rename {test/src => src/test/java}/com/rabbitmq/client/test/ssl/UnverifiedConnection.java (100%) rename {test/src => src/test/java}/com/rabbitmq/client/test/ssl/VerifiedConnection.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/BufferPerformanceMetrics.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/ChannelCreationPerformance.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/ConfirmDontLoseMessages.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/ConsumerMain.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/DirectReplyToPerformance.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/FileConsumer.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/FileProducer.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/HelloClient.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/HelloJsonClient.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/HelloJsonServer.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/HelloJsonService.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/HelloServer.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/LogTail.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/MulticastMain.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/PerQueueTTLGetter.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/PerQueueTTLPublisher.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/PerfTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/PerfTestMulti.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/ProducerMain.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/SendString.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/SimpleConsumer.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/SimpleProducer.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/SimpleTopicConsumer.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/SimpleTopicProducer.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/SpammyTopicProducer.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/StressPersister.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/TestMain.java (94%) rename {test/src => src/test/java}/com/rabbitmq/examples/TracerConcurrencyTest.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/Broker.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/BrokerValue.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/BrokerVariable.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/Consumer.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/MulticastParams.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/MulticastSet.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/MulticastValue.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/MulticastVariable.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/PerfUtil.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/Producer.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/ProducerConsumerBase.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/RateVsLatencyScenario.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/Scenario.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/ScenarioFactory.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/ScenarioStats.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/SimpleScenario.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/SimpleScenarioStats.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/Stats.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/Variable.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/VariableValue.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/VaryingScenario.java (100%) rename {test/src => src/test/java}/com/rabbitmq/examples/perf/VaryingScenarioStats.java (100%) rename {test/src => src/test/java}/com/rabbitmq/tools/Host.java (96%) rename {test/src => src/test/java}/com/rabbitmq/utility/IntAllocatorTests.java (100%) rename build.properties => src/test/resources/build.properties (86%) rename config.properties => src/test/resources/config.properties (91%) delete mode 100644 test/src/com/rabbitmq/client/test/functional/FunctionalTests.java delete mode 100644 test/src/com/rabbitmq/client/test/server/ServerTests.java diff --git a/.gitignore b/.gitignore index c80df7d958..9bfe0ec81b 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,8 @@ ebin/ out/ tmp/ junit*.properties +/target/ +/.DS_Store +/.classpath +/.project +/.settings diff --git a/build.xml b/build.xml index 0b5cc50339..383567a549 100644 --- a/build.xml +++ b/build.xml @@ -2,8 +2,8 @@ - - + + @@ -81,7 +81,7 @@ - @@ -340,6 +340,9 @@ + + + @@ -364,6 +367,9 @@ + + + @@ -380,6 +386,9 @@ + + + @@ -398,6 +407,9 @@ + + + diff --git a/pom.xml b/pom.xml index 5db8422d17..c55190e876 100644 --- a/pom.xml +++ b/pom.xml @@ -1,77 +1,277 @@ - - 4.0.0 - com.rabbitmq - amqp-client - VERSION - jar - RabbitMQ Java Client - RabbitMQ Java client - http://www.rabbitmq.com + + 4.0.0 - - - ASL 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html - repo - - - GPL v2 - http://www.gnu.org/licenses/gpl-2.0.txt - repo - - - MPL 1.1 - http://www.mozilla.org/MPL/MPL-1.1.txt - repo - - + com.rabbitmq + amqp-client + 3.7.0-SNAPSHOT + jar - - https://github.com/rabbitmq/rabbitmq-java-client.git - scm:git:https://github.com/rabbitmq/rabbitmq-java-client.git - + RabbitMQ Java Client + RabbitMQ Java client + http://www.rabbitmq.com - - - rabbitmq.team - The RabbitMQ Team - - Developer - - - + + + ASL 2.0 + http://www.apache.org/licenses/LICENSE-2.0.html + repo + + + GPL v2 + http://www.gnu.org/licenses/gpl-2.0.txt + repo + + + MPL 1.1 + http://www.mozilla.org/MPL/MPL-1.1.txt + repo + + - + + https://github.com/rabbitmq/rabbitmq-java-client.git + scm:git:https://github.com/rabbitmq/rabbitmq-java-client.git + - - commons-cli - commons-cli - 1.1 - test - + + + rabbitmq.team + The RabbitMQ Team + + Developer + + + - - commons-io - commons-io - 1.2 - test - + + UTF-8 + - - junit - junit - 4.12 - test - + + + commons-cli + commons-cli + 1.1 + test + + + commons-io + commons-io + 1.2 + test + + + junit + junit + 4.12 + test + + - + + + + + maven-clean-plugin + 3.0.0 + + + + ${basedir}/build + + **/* + + false + + + + + + maven-antrun-plugin + 1.7 + + + generate-sources + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + run + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.10 + + + add-source + generate-sources + + add-source + + + + build/gensrc + + + + + + + maven-compiler-plugin + 3.2 + + 1.6 + 1.6 + + -Xlint:deprecation + -Xlint:unchecked + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.9 + + + ${project.build.directory} + + true + + **/ClientTests.* + **/FunctionalTests.* + **/SSLTests.* + **/ServerTests.* + **/FunctionalTests.* + **/HATests.* + **/TestMain.* + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.6 + + true + + true + true + + true + + + + + + + jar + test-jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 2.4 + + + + jar + test-jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.3 + + -Xdoclint:none + + + + + jar + test-jar + + + + + + org.codehaus.mojo + versions-maven-plugin + 2.2 + + + - - - sonatype-nexus-staging - Nexus Release Repository - http://oss.sonatype.org/service/local/staging/deploy/maven2/ - - + + + sonatype-nexus-staging + Nexus Release Repository + http://oss.sonatype.org/service/local/staging/deploy/maven2/ + + diff --git a/scripts/runperftestMaven.sh b/scripts/runperftestMaven.sh new file mode 100755 index 0000000000..6bca7b6f7f --- /dev/null +++ b/scripts/runperftestMaven.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +cd `dirname $0`/.. +run() { + echo "=== running with '$2'" + mvn -q exec:java -Dexec.classpathScope=test -Dexec.mainClass="com.rabbitmq.examples.PerfTest" -Dexec.args=" -h $1 -z 10 -i 20 $2" + sleep 2 +} + +for sz in "" "-s 1000"; do + for pers in "" "-f persistent"; do + for args in \ + "" \ + "-a" \ + "-m 1" \ + "-m 1 -n 1" \ + "-m 10" \ + "-m 10 -n 10" \ + ; do + run $1 "${args} ${pers} ${sz}" + done + done +done + +for args in "-a -f mandatory" "-a -f mandatory -f immediate"; do + run $1 "$args" +done diff --git a/scripts/stresspersisterMaven.sh b/scripts/stresspersisterMaven.sh new file mode 100755 index 0000000000..a6e1182d04 --- /dev/null +++ b/scripts/stresspersisterMaven.sh @@ -0,0 +1,72 @@ +#!/bin/sh +cd `dirname $0`/.. +commentText=$1 +shift + +if [ -z "$commentText" ]; then + echo "Comment text must be supplied!" + exit 1 +fi + +echo "Comment text: $commentText. Press enter to continue." +read dummy + +function run1 { + (while true; do (date +%s.%N; ps ax -o '%mem rss sz vsz args' | grep "beam.*-s rabbit" | grep -v grep) | tr '\n' ' ' | awk '{print $1,$2/100,$3,$4,$5}'; sleep 1; done) > memlog.txt & + memlogger=$! + echo "STARTED MEMLOGGER $memlogger" + sleep 2 + mvn -q exec:java -Dexec.classpathScope=test -Dexec.mainClass="com.rabbitmq.examples.StressPersister" -Dexec.args=" -B $1 -b $2 -C $commentText "| tee stressoutput.txt + logfile=$(head -1 stressoutput.txt) + sleep 2 + kill $memlogger + echo "STOPPED MEMLOGGER $memlogger" + baselog=$(basename $logfile .out) + mv memlog.txt $baselog.mem + grep -v '^#' $logfile > stressoutput.txt + mv stressoutput.txt $logfile +} + +function run32b { + run1 32b 5000 + run1 32b 10000 + run1 32b 20000 + run1 32b 40000 + run1 32b 80000 +} + +function run1m { + run1 1m 125 + run1 1m 250 + run1 1m 500 + run1 1m 1000 + run1 1m 2000 + run1 1m 4000 +} + +function chartall { + for logfile in *.out + do + echo $logfile + baselog=$(basename $logfile .out) + firsttimestamp=$(cat $baselog.mem | head -1 | awk '{print $1}') + cat > $baselog.gnuplot < $baselog.png + done +} + +run32b +run1m +chartall diff --git a/src/com/rabbitmq/client/Address.java b/src/main/java/com/rabbitmq/client/Address.java similarity index 100% rename from src/com/rabbitmq/client/Address.java rename to src/main/java/com/rabbitmq/client/Address.java diff --git a/src/com/rabbitmq/client/AlreadyClosedException.java b/src/main/java/com/rabbitmq/client/AlreadyClosedException.java similarity index 100% rename from src/com/rabbitmq/client/AlreadyClosedException.java rename to src/main/java/com/rabbitmq/client/AlreadyClosedException.java diff --git a/src/com/rabbitmq/client/AuthenticationFailureException.java b/src/main/java/com/rabbitmq/client/AuthenticationFailureException.java similarity index 100% rename from src/com/rabbitmq/client/AuthenticationFailureException.java rename to src/main/java/com/rabbitmq/client/AuthenticationFailureException.java diff --git a/src/com/rabbitmq/client/BasicProperties.java b/src/main/java/com/rabbitmq/client/BasicProperties.java similarity index 100% rename from src/com/rabbitmq/client/BasicProperties.java rename to src/main/java/com/rabbitmq/client/BasicProperties.java diff --git a/src/com/rabbitmq/client/BlockedListener.java b/src/main/java/com/rabbitmq/client/BlockedListener.java similarity index 100% rename from src/com/rabbitmq/client/BlockedListener.java rename to src/main/java/com/rabbitmq/client/BlockedListener.java diff --git a/src/com/rabbitmq/client/Channel.java b/src/main/java/com/rabbitmq/client/Channel.java similarity index 100% rename from src/com/rabbitmq/client/Channel.java rename to src/main/java/com/rabbitmq/client/Channel.java diff --git a/src/com/rabbitmq/client/Command.java b/src/main/java/com/rabbitmq/client/Command.java similarity index 100% rename from src/com/rabbitmq/client/Command.java rename to src/main/java/com/rabbitmq/client/Command.java diff --git a/src/com/rabbitmq/client/ConfirmListener.java b/src/main/java/com/rabbitmq/client/ConfirmListener.java similarity index 100% rename from src/com/rabbitmq/client/ConfirmListener.java rename to src/main/java/com/rabbitmq/client/ConfirmListener.java diff --git a/src/com/rabbitmq/client/Connection.java b/src/main/java/com/rabbitmq/client/Connection.java similarity index 100% rename from src/com/rabbitmq/client/Connection.java rename to src/main/java/com/rabbitmq/client/Connection.java diff --git a/src/com/rabbitmq/client/ConnectionFactory.java b/src/main/java/com/rabbitmq/client/ConnectionFactory.java similarity index 100% rename from src/com/rabbitmq/client/ConnectionFactory.java rename to src/main/java/com/rabbitmq/client/ConnectionFactory.java diff --git a/src/com/rabbitmq/client/Consumer.java b/src/main/java/com/rabbitmq/client/Consumer.java similarity index 100% rename from src/com/rabbitmq/client/Consumer.java rename to src/main/java/com/rabbitmq/client/Consumer.java diff --git a/src/com/rabbitmq/client/ConsumerCancelledException.java b/src/main/java/com/rabbitmq/client/ConsumerCancelledException.java similarity index 100% rename from src/com/rabbitmq/client/ConsumerCancelledException.java rename to src/main/java/com/rabbitmq/client/ConsumerCancelledException.java diff --git a/src/com/rabbitmq/client/ContentHeader.java b/src/main/java/com/rabbitmq/client/ContentHeader.java similarity index 100% rename from src/com/rabbitmq/client/ContentHeader.java rename to src/main/java/com/rabbitmq/client/ContentHeader.java diff --git a/src/com/rabbitmq/client/DefaultConsumer.java b/src/main/java/com/rabbitmq/client/DefaultConsumer.java similarity index 100% rename from src/com/rabbitmq/client/DefaultConsumer.java rename to src/main/java/com/rabbitmq/client/DefaultConsumer.java diff --git a/src/com/rabbitmq/client/DefaultSaslConfig.java b/src/main/java/com/rabbitmq/client/DefaultSaslConfig.java similarity index 100% rename from src/com/rabbitmq/client/DefaultSaslConfig.java rename to src/main/java/com/rabbitmq/client/DefaultSaslConfig.java diff --git a/src/com/rabbitmq/client/DefaultSocketConfigurator.java b/src/main/java/com/rabbitmq/client/DefaultSocketConfigurator.java similarity index 100% rename from src/com/rabbitmq/client/DefaultSocketConfigurator.java rename to src/main/java/com/rabbitmq/client/DefaultSocketConfigurator.java diff --git a/src/com/rabbitmq/client/Envelope.java b/src/main/java/com/rabbitmq/client/Envelope.java similarity index 100% rename from src/com/rabbitmq/client/Envelope.java rename to src/main/java/com/rabbitmq/client/Envelope.java diff --git a/src/com/rabbitmq/client/ExceptionHandler.java b/src/main/java/com/rabbitmq/client/ExceptionHandler.java similarity index 100% rename from src/com/rabbitmq/client/ExceptionHandler.java rename to src/main/java/com/rabbitmq/client/ExceptionHandler.java diff --git a/src/com/rabbitmq/client/FlowListener.java b/src/main/java/com/rabbitmq/client/FlowListener.java similarity index 100% rename from src/com/rabbitmq/client/FlowListener.java rename to src/main/java/com/rabbitmq/client/FlowListener.java diff --git a/src/com/rabbitmq/client/GetResponse.java b/src/main/java/com/rabbitmq/client/GetResponse.java similarity index 100% rename from src/com/rabbitmq/client/GetResponse.java rename to src/main/java/com/rabbitmq/client/GetResponse.java diff --git a/src/com/rabbitmq/client/JDKSaslConfig.java b/src/main/java/com/rabbitmq/client/JDKSaslConfig.java similarity index 100% rename from src/com/rabbitmq/client/JDKSaslConfig.java rename to src/main/java/com/rabbitmq/client/JDKSaslConfig.java diff --git a/src/com/rabbitmq/client/LongString.java b/src/main/java/com/rabbitmq/client/LongString.java similarity index 100% rename from src/com/rabbitmq/client/LongString.java rename to src/main/java/com/rabbitmq/client/LongString.java diff --git a/src/com/rabbitmq/client/MalformedFrameException.java b/src/main/java/com/rabbitmq/client/MalformedFrameException.java similarity index 100% rename from src/com/rabbitmq/client/MalformedFrameException.java rename to src/main/java/com/rabbitmq/client/MalformedFrameException.java diff --git a/src/com/rabbitmq/client/MapRpcServer.java b/src/main/java/com/rabbitmq/client/MapRpcServer.java similarity index 100% rename from src/com/rabbitmq/client/MapRpcServer.java rename to src/main/java/com/rabbitmq/client/MapRpcServer.java diff --git a/src/com/rabbitmq/client/MessageProperties.java b/src/main/java/com/rabbitmq/client/MessageProperties.java similarity index 100% rename from src/com/rabbitmq/client/MessageProperties.java rename to src/main/java/com/rabbitmq/client/MessageProperties.java diff --git a/src/com/rabbitmq/client/Method.java b/src/main/java/com/rabbitmq/client/Method.java similarity index 100% rename from src/com/rabbitmq/client/Method.java rename to src/main/java/com/rabbitmq/client/Method.java diff --git a/src/com/rabbitmq/client/MissedHeartbeatException.java b/src/main/java/com/rabbitmq/client/MissedHeartbeatException.java similarity index 100% rename from src/com/rabbitmq/client/MissedHeartbeatException.java rename to src/main/java/com/rabbitmq/client/MissedHeartbeatException.java diff --git a/src/com/rabbitmq/client/NullTrustManager.java b/src/main/java/com/rabbitmq/client/NullTrustManager.java similarity index 100% rename from src/com/rabbitmq/client/NullTrustManager.java rename to src/main/java/com/rabbitmq/client/NullTrustManager.java diff --git a/src/com/rabbitmq/client/PossibleAuthenticationFailureException.java b/src/main/java/com/rabbitmq/client/PossibleAuthenticationFailureException.java similarity index 100% rename from src/com/rabbitmq/client/PossibleAuthenticationFailureException.java rename to src/main/java/com/rabbitmq/client/PossibleAuthenticationFailureException.java diff --git a/src/com/rabbitmq/client/ProtocolVersionMismatchException.java b/src/main/java/com/rabbitmq/client/ProtocolVersionMismatchException.java similarity index 100% rename from src/com/rabbitmq/client/ProtocolVersionMismatchException.java rename to src/main/java/com/rabbitmq/client/ProtocolVersionMismatchException.java diff --git a/src/com/rabbitmq/client/QueueingConsumer.java b/src/main/java/com/rabbitmq/client/QueueingConsumer.java similarity index 100% rename from src/com/rabbitmq/client/QueueingConsumer.java rename to src/main/java/com/rabbitmq/client/QueueingConsumer.java diff --git a/src/com/rabbitmq/client/Recoverable.java b/src/main/java/com/rabbitmq/client/Recoverable.java similarity index 100% rename from src/com/rabbitmq/client/Recoverable.java rename to src/main/java/com/rabbitmq/client/Recoverable.java diff --git a/src/com/rabbitmq/client/RecoveryListener.java b/src/main/java/com/rabbitmq/client/RecoveryListener.java similarity index 100% rename from src/com/rabbitmq/client/RecoveryListener.java rename to src/main/java/com/rabbitmq/client/RecoveryListener.java diff --git a/src/com/rabbitmq/client/ReturnListener.java b/src/main/java/com/rabbitmq/client/ReturnListener.java similarity index 100% rename from src/com/rabbitmq/client/ReturnListener.java rename to src/main/java/com/rabbitmq/client/ReturnListener.java diff --git a/src/com/rabbitmq/client/RpcClient.java b/src/main/java/com/rabbitmq/client/RpcClient.java similarity index 100% rename from src/com/rabbitmq/client/RpcClient.java rename to src/main/java/com/rabbitmq/client/RpcClient.java diff --git a/src/com/rabbitmq/client/RpcServer.java b/src/main/java/com/rabbitmq/client/RpcServer.java similarity index 100% rename from src/com/rabbitmq/client/RpcServer.java rename to src/main/java/com/rabbitmq/client/RpcServer.java diff --git a/src/com/rabbitmq/client/SaslConfig.java b/src/main/java/com/rabbitmq/client/SaslConfig.java similarity index 100% rename from src/com/rabbitmq/client/SaslConfig.java rename to src/main/java/com/rabbitmq/client/SaslConfig.java diff --git a/src/com/rabbitmq/client/SaslMechanism.java b/src/main/java/com/rabbitmq/client/SaslMechanism.java similarity index 100% rename from src/com/rabbitmq/client/SaslMechanism.java rename to src/main/java/com/rabbitmq/client/SaslMechanism.java diff --git a/src/com/rabbitmq/client/ShutdownListener.java b/src/main/java/com/rabbitmq/client/ShutdownListener.java similarity index 100% rename from src/com/rabbitmq/client/ShutdownListener.java rename to src/main/java/com/rabbitmq/client/ShutdownListener.java diff --git a/src/com/rabbitmq/client/ShutdownNotifier.java b/src/main/java/com/rabbitmq/client/ShutdownNotifier.java similarity index 100% rename from src/com/rabbitmq/client/ShutdownNotifier.java rename to src/main/java/com/rabbitmq/client/ShutdownNotifier.java diff --git a/src/com/rabbitmq/client/ShutdownSignalException.java b/src/main/java/com/rabbitmq/client/ShutdownSignalException.java similarity index 100% rename from src/com/rabbitmq/client/ShutdownSignalException.java rename to src/main/java/com/rabbitmq/client/ShutdownSignalException.java diff --git a/src/com/rabbitmq/client/SocketConfigurator.java b/src/main/java/com/rabbitmq/client/SocketConfigurator.java similarity index 100% rename from src/com/rabbitmq/client/SocketConfigurator.java rename to src/main/java/com/rabbitmq/client/SocketConfigurator.java diff --git a/src/com/rabbitmq/client/StringRpcServer.java b/src/main/java/com/rabbitmq/client/StringRpcServer.java similarity index 100% rename from src/com/rabbitmq/client/StringRpcServer.java rename to src/main/java/com/rabbitmq/client/StringRpcServer.java diff --git a/src/com/rabbitmq/client/TopologyRecoveryException.java b/src/main/java/com/rabbitmq/client/TopologyRecoveryException.java similarity index 100% rename from src/com/rabbitmq/client/TopologyRecoveryException.java rename to src/main/java/com/rabbitmq/client/TopologyRecoveryException.java diff --git a/src/com/rabbitmq/client/UnexpectedFrameError.java b/src/main/java/com/rabbitmq/client/UnexpectedFrameError.java similarity index 100% rename from src/com/rabbitmq/client/UnexpectedFrameError.java rename to src/main/java/com/rabbitmq/client/UnexpectedFrameError.java diff --git a/src/com/rabbitmq/client/UnexpectedMethodError.java b/src/main/java/com/rabbitmq/client/UnexpectedMethodError.java similarity index 100% rename from src/com/rabbitmq/client/UnexpectedMethodError.java rename to src/main/java/com/rabbitmq/client/UnexpectedMethodError.java diff --git a/src/com/rabbitmq/client/UnknownClassOrMethodId.java b/src/main/java/com/rabbitmq/client/UnknownClassOrMethodId.java similarity index 100% rename from src/com/rabbitmq/client/UnknownClassOrMethodId.java rename to src/main/java/com/rabbitmq/client/UnknownClassOrMethodId.java diff --git a/src/com/rabbitmq/client/impl/AMQBasicProperties.java b/src/main/java/com/rabbitmq/client/impl/AMQBasicProperties.java similarity index 100% rename from src/com/rabbitmq/client/impl/AMQBasicProperties.java rename to src/main/java/com/rabbitmq/client/impl/AMQBasicProperties.java diff --git a/src/com/rabbitmq/client/impl/AMQChannel.java b/src/main/java/com/rabbitmq/client/impl/AMQChannel.java similarity index 100% rename from src/com/rabbitmq/client/impl/AMQChannel.java rename to src/main/java/com/rabbitmq/client/impl/AMQChannel.java diff --git a/src/com/rabbitmq/client/impl/AMQCommand.java b/src/main/java/com/rabbitmq/client/impl/AMQCommand.java similarity index 100% rename from src/com/rabbitmq/client/impl/AMQCommand.java rename to src/main/java/com/rabbitmq/client/impl/AMQCommand.java diff --git a/src/com/rabbitmq/client/impl/AMQConnection.java b/src/main/java/com/rabbitmq/client/impl/AMQConnection.java similarity index 100% rename from src/com/rabbitmq/client/impl/AMQConnection.java rename to src/main/java/com/rabbitmq/client/impl/AMQConnection.java diff --git a/src/com/rabbitmq/client/impl/AMQContentHeader.java b/src/main/java/com/rabbitmq/client/impl/AMQContentHeader.java similarity index 100% rename from src/com/rabbitmq/client/impl/AMQContentHeader.java rename to src/main/java/com/rabbitmq/client/impl/AMQContentHeader.java diff --git a/src/com/rabbitmq/client/impl/CRDemoMechanism.java b/src/main/java/com/rabbitmq/client/impl/CRDemoMechanism.java similarity index 100% rename from src/com/rabbitmq/client/impl/CRDemoMechanism.java rename to src/main/java/com/rabbitmq/client/impl/CRDemoMechanism.java diff --git a/src/com/rabbitmq/client/impl/ChannelManager.java b/src/main/java/com/rabbitmq/client/impl/ChannelManager.java similarity index 100% rename from src/com/rabbitmq/client/impl/ChannelManager.java rename to src/main/java/com/rabbitmq/client/impl/ChannelManager.java diff --git a/src/com/rabbitmq/client/impl/ChannelN.java b/src/main/java/com/rabbitmq/client/impl/ChannelN.java similarity index 100% rename from src/com/rabbitmq/client/impl/ChannelN.java rename to src/main/java/com/rabbitmq/client/impl/ChannelN.java diff --git a/src/com/rabbitmq/client/impl/ClientVersion.java.in b/src/main/java/com/rabbitmq/client/impl/ClientVersion.java.in similarity index 100% rename from src/com/rabbitmq/client/impl/ClientVersion.java.in rename to src/main/java/com/rabbitmq/client/impl/ClientVersion.java.in diff --git a/src/com/rabbitmq/client/impl/CommandAssembler.java b/src/main/java/com/rabbitmq/client/impl/CommandAssembler.java similarity index 100% rename from src/com/rabbitmq/client/impl/CommandAssembler.java rename to src/main/java/com/rabbitmq/client/impl/CommandAssembler.java diff --git a/src/com/rabbitmq/client/impl/ConnectionParams.java b/src/main/java/com/rabbitmq/client/impl/ConnectionParams.java similarity index 100% rename from src/com/rabbitmq/client/impl/ConnectionParams.java rename to src/main/java/com/rabbitmq/client/impl/ConnectionParams.java diff --git a/src/com/rabbitmq/client/impl/ConsumerDispatcher.java b/src/main/java/com/rabbitmq/client/impl/ConsumerDispatcher.java similarity index 100% rename from src/com/rabbitmq/client/impl/ConsumerDispatcher.java rename to src/main/java/com/rabbitmq/client/impl/ConsumerDispatcher.java diff --git a/src/com/rabbitmq/client/impl/ConsumerWorkService.java b/src/main/java/com/rabbitmq/client/impl/ConsumerWorkService.java similarity index 100% rename from src/com/rabbitmq/client/impl/ConsumerWorkService.java rename to src/main/java/com/rabbitmq/client/impl/ConsumerWorkService.java diff --git a/src/com/rabbitmq/client/impl/ContentHeaderPropertyReader.java b/src/main/java/com/rabbitmq/client/impl/ContentHeaderPropertyReader.java similarity index 100% rename from src/com/rabbitmq/client/impl/ContentHeaderPropertyReader.java rename to src/main/java/com/rabbitmq/client/impl/ContentHeaderPropertyReader.java diff --git a/src/com/rabbitmq/client/impl/ContentHeaderPropertyWriter.java b/src/main/java/com/rabbitmq/client/impl/ContentHeaderPropertyWriter.java similarity index 100% rename from src/com/rabbitmq/client/impl/ContentHeaderPropertyWriter.java rename to src/main/java/com/rabbitmq/client/impl/ContentHeaderPropertyWriter.java diff --git a/src/com/rabbitmq/client/impl/DefaultExceptionHandler.java b/src/main/java/com/rabbitmq/client/impl/DefaultExceptionHandler.java similarity index 100% rename from src/com/rabbitmq/client/impl/DefaultExceptionHandler.java rename to src/main/java/com/rabbitmq/client/impl/DefaultExceptionHandler.java diff --git a/src/com/rabbitmq/client/impl/Environment.java b/src/main/java/com/rabbitmq/client/impl/Environment.java similarity index 100% rename from src/com/rabbitmq/client/impl/Environment.java rename to src/main/java/com/rabbitmq/client/impl/Environment.java diff --git a/src/com/rabbitmq/client/impl/ExternalMechanism.java b/src/main/java/com/rabbitmq/client/impl/ExternalMechanism.java similarity index 100% rename from src/com/rabbitmq/client/impl/ExternalMechanism.java rename to src/main/java/com/rabbitmq/client/impl/ExternalMechanism.java diff --git a/src/com/rabbitmq/client/impl/ForgivingExceptionHandler.java b/src/main/java/com/rabbitmq/client/impl/ForgivingExceptionHandler.java similarity index 100% rename from src/com/rabbitmq/client/impl/ForgivingExceptionHandler.java rename to src/main/java/com/rabbitmq/client/impl/ForgivingExceptionHandler.java diff --git a/src/com/rabbitmq/client/impl/Frame.java b/src/main/java/com/rabbitmq/client/impl/Frame.java similarity index 100% rename from src/com/rabbitmq/client/impl/Frame.java rename to src/main/java/com/rabbitmq/client/impl/Frame.java diff --git a/src/com/rabbitmq/client/impl/FrameHandler.java b/src/main/java/com/rabbitmq/client/impl/FrameHandler.java similarity index 100% rename from src/com/rabbitmq/client/impl/FrameHandler.java rename to src/main/java/com/rabbitmq/client/impl/FrameHandler.java diff --git a/src/com/rabbitmq/client/impl/FrameHandlerFactory.java b/src/main/java/com/rabbitmq/client/impl/FrameHandlerFactory.java similarity index 100% rename from src/com/rabbitmq/client/impl/FrameHandlerFactory.java rename to src/main/java/com/rabbitmq/client/impl/FrameHandlerFactory.java diff --git a/src/com/rabbitmq/client/impl/HeartbeatSender.java b/src/main/java/com/rabbitmq/client/impl/HeartbeatSender.java similarity index 100% rename from src/com/rabbitmq/client/impl/HeartbeatSender.java rename to src/main/java/com/rabbitmq/client/impl/HeartbeatSender.java diff --git a/src/com/rabbitmq/client/impl/LongStringHelper.java b/src/main/java/com/rabbitmq/client/impl/LongStringHelper.java similarity index 100% rename from src/com/rabbitmq/client/impl/LongStringHelper.java rename to src/main/java/com/rabbitmq/client/impl/LongStringHelper.java diff --git a/src/com/rabbitmq/client/impl/Method.java b/src/main/java/com/rabbitmq/client/impl/Method.java similarity index 100% rename from src/com/rabbitmq/client/impl/Method.java rename to src/main/java/com/rabbitmq/client/impl/Method.java diff --git a/src/com/rabbitmq/client/impl/MethodArgumentReader.java b/src/main/java/com/rabbitmq/client/impl/MethodArgumentReader.java similarity index 100% rename from src/com/rabbitmq/client/impl/MethodArgumentReader.java rename to src/main/java/com/rabbitmq/client/impl/MethodArgumentReader.java diff --git a/src/com/rabbitmq/client/impl/MethodArgumentWriter.java b/src/main/java/com/rabbitmq/client/impl/MethodArgumentWriter.java similarity index 100% rename from src/com/rabbitmq/client/impl/MethodArgumentWriter.java rename to src/main/java/com/rabbitmq/client/impl/MethodArgumentWriter.java diff --git a/src/com/rabbitmq/client/impl/NetworkConnection.java b/src/main/java/com/rabbitmq/client/impl/NetworkConnection.java similarity index 100% rename from src/com/rabbitmq/client/impl/NetworkConnection.java rename to src/main/java/com/rabbitmq/client/impl/NetworkConnection.java diff --git a/src/com/rabbitmq/client/impl/PlainMechanism.java b/src/main/java/com/rabbitmq/client/impl/PlainMechanism.java similarity index 100% rename from src/com/rabbitmq/client/impl/PlainMechanism.java rename to src/main/java/com/rabbitmq/client/impl/PlainMechanism.java diff --git a/src/com/rabbitmq/client/impl/SetQueue.java b/src/main/java/com/rabbitmq/client/impl/SetQueue.java similarity index 100% rename from src/com/rabbitmq/client/impl/SetQueue.java rename to src/main/java/com/rabbitmq/client/impl/SetQueue.java diff --git a/src/com/rabbitmq/client/impl/ShutdownNotifierComponent.java b/src/main/java/com/rabbitmq/client/impl/ShutdownNotifierComponent.java similarity index 100% rename from src/com/rabbitmq/client/impl/ShutdownNotifierComponent.java rename to src/main/java/com/rabbitmq/client/impl/ShutdownNotifierComponent.java diff --git a/src/com/rabbitmq/client/impl/SocketFrameHandler.java b/src/main/java/com/rabbitmq/client/impl/SocketFrameHandler.java similarity index 100% rename from src/com/rabbitmq/client/impl/SocketFrameHandler.java rename to src/main/java/com/rabbitmq/client/impl/SocketFrameHandler.java diff --git a/src/com/rabbitmq/client/impl/StrictExceptionHandler.java b/src/main/java/com/rabbitmq/client/impl/StrictExceptionHandler.java similarity index 100% rename from src/com/rabbitmq/client/impl/StrictExceptionHandler.java rename to src/main/java/com/rabbitmq/client/impl/StrictExceptionHandler.java diff --git a/src/com/rabbitmq/client/impl/TruncatedInputStream.java b/src/main/java/com/rabbitmq/client/impl/TruncatedInputStream.java similarity index 100% rename from src/com/rabbitmq/client/impl/TruncatedInputStream.java rename to src/main/java/com/rabbitmq/client/impl/TruncatedInputStream.java diff --git a/src/com/rabbitmq/client/impl/UnknownChannelException.java b/src/main/java/com/rabbitmq/client/impl/UnknownChannelException.java similarity index 100% rename from src/com/rabbitmq/client/impl/UnknownChannelException.java rename to src/main/java/com/rabbitmq/client/impl/UnknownChannelException.java diff --git a/src/com/rabbitmq/client/impl/ValueReader.java b/src/main/java/com/rabbitmq/client/impl/ValueReader.java similarity index 100% rename from src/com/rabbitmq/client/impl/ValueReader.java rename to src/main/java/com/rabbitmq/client/impl/ValueReader.java diff --git a/src/com/rabbitmq/client/impl/ValueWriter.java b/src/main/java/com/rabbitmq/client/impl/ValueWriter.java similarity index 100% rename from src/com/rabbitmq/client/impl/ValueWriter.java rename to src/main/java/com/rabbitmq/client/impl/ValueWriter.java diff --git a/src/com/rabbitmq/client/impl/VariableLinkedBlockingQueue.java b/src/main/java/com/rabbitmq/client/impl/VariableLinkedBlockingQueue.java similarity index 100% rename from src/com/rabbitmq/client/impl/VariableLinkedBlockingQueue.java rename to src/main/java/com/rabbitmq/client/impl/VariableLinkedBlockingQueue.java diff --git a/src/com/rabbitmq/client/impl/Version.java b/src/main/java/com/rabbitmq/client/impl/Version.java similarity index 100% rename from src/com/rabbitmq/client/impl/Version.java rename to src/main/java/com/rabbitmq/client/impl/Version.java diff --git a/src/com/rabbitmq/client/impl/WorkPool.java b/src/main/java/com/rabbitmq/client/impl/WorkPool.java similarity index 100% rename from src/com/rabbitmq/client/impl/WorkPool.java rename to src/main/java/com/rabbitmq/client/impl/WorkPool.java diff --git a/src/com/rabbitmq/client/impl/package.html b/src/main/java/com/rabbitmq/client/impl/package.html similarity index 100% rename from src/com/rabbitmq/client/impl/package.html rename to src/main/java/com/rabbitmq/client/impl/package.html diff --git a/src/com/rabbitmq/client/impl/recovery/AutorecoveringChannel.java b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringChannel.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/AutorecoveringChannel.java rename to src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringChannel.java diff --git a/src/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java rename to src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java diff --git a/src/com/rabbitmq/client/impl/recovery/ConsumerRecoveryListener.java b/src/main/java/com/rabbitmq/client/impl/recovery/ConsumerRecoveryListener.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/ConsumerRecoveryListener.java rename to src/main/java/com/rabbitmq/client/impl/recovery/ConsumerRecoveryListener.java diff --git a/src/com/rabbitmq/client/impl/recovery/QueueRecoveryListener.java b/src/main/java/com/rabbitmq/client/impl/recovery/QueueRecoveryListener.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/QueueRecoveryListener.java rename to src/main/java/com/rabbitmq/client/impl/recovery/QueueRecoveryListener.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecordedBinding.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecordedBinding.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecordedBinding.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecordedBinding.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecordedConsumer.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecordedConsumer.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecordedConsumer.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecordedConsumer.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecordedEntity.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecordedEntity.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecordedEntity.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecordedEntity.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecordedExchange.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecordedExchange.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecordedExchange.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecordedExchange.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecordedExchangeBinding.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecordedExchangeBinding.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecordedExchangeBinding.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecordedExchangeBinding.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecordedNamedEntity.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecordedNamedEntity.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecordedNamedEntity.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecordedNamedEntity.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecordedQueue.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecordedQueue.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecordedQueue.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecordedQueue.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecordedQueueBinding.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecordedQueueBinding.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecordedQueueBinding.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecordedQueueBinding.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnection.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnection.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnection.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnection.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecoveryAwareChannelManager.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareChannelManager.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecoveryAwareChannelManager.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareChannelManager.java diff --git a/src/com/rabbitmq/client/impl/recovery/RecoveryAwareChannelN.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareChannelN.java similarity index 100% rename from src/com/rabbitmq/client/impl/recovery/RecoveryAwareChannelN.java rename to src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareChannelN.java diff --git a/src/com/rabbitmq/client/package.html b/src/main/java/com/rabbitmq/client/package.html similarity index 100% rename from src/com/rabbitmq/client/package.html rename to src/main/java/com/rabbitmq/client/package.html diff --git a/src/com/rabbitmq/tools/Tracer.java b/src/main/java/com/rabbitmq/tools/Tracer.java similarity index 100% rename from src/com/rabbitmq/tools/Tracer.java rename to src/main/java/com/rabbitmq/tools/Tracer.java diff --git a/src/com/rabbitmq/tools/json/JSONReader.java b/src/main/java/com/rabbitmq/tools/json/JSONReader.java similarity index 100% rename from src/com/rabbitmq/tools/json/JSONReader.java rename to src/main/java/com/rabbitmq/tools/json/JSONReader.java diff --git a/src/com/rabbitmq/tools/json/JSONSerializable.java b/src/main/java/com/rabbitmq/tools/json/JSONSerializable.java similarity index 100% rename from src/com/rabbitmq/tools/json/JSONSerializable.java rename to src/main/java/com/rabbitmq/tools/json/JSONSerializable.java diff --git a/src/com/rabbitmq/tools/json/JSONUtil.java b/src/main/java/com/rabbitmq/tools/json/JSONUtil.java similarity index 100% rename from src/com/rabbitmq/tools/json/JSONUtil.java rename to src/main/java/com/rabbitmq/tools/json/JSONUtil.java diff --git a/src/com/rabbitmq/tools/json/JSONWriter.java b/src/main/java/com/rabbitmq/tools/json/JSONWriter.java similarity index 100% rename from src/com/rabbitmq/tools/json/JSONWriter.java rename to src/main/java/com/rabbitmq/tools/json/JSONWriter.java diff --git a/src/com/rabbitmq/tools/json/package.html b/src/main/java/com/rabbitmq/tools/json/package.html similarity index 100% rename from src/com/rabbitmq/tools/json/package.html rename to src/main/java/com/rabbitmq/tools/json/package.html diff --git a/src/com/rabbitmq/tools/jsonrpc/JsonRpcClient.java b/src/main/java/com/rabbitmq/tools/jsonrpc/JsonRpcClient.java similarity index 100% rename from src/com/rabbitmq/tools/jsonrpc/JsonRpcClient.java rename to src/main/java/com/rabbitmq/tools/jsonrpc/JsonRpcClient.java diff --git a/src/com/rabbitmq/tools/jsonrpc/JsonRpcException.java b/src/main/java/com/rabbitmq/tools/jsonrpc/JsonRpcException.java similarity index 100% rename from src/com/rabbitmq/tools/jsonrpc/JsonRpcException.java rename to src/main/java/com/rabbitmq/tools/jsonrpc/JsonRpcException.java diff --git a/src/com/rabbitmq/tools/jsonrpc/JsonRpcServer.java b/src/main/java/com/rabbitmq/tools/jsonrpc/JsonRpcServer.java similarity index 100% rename from src/com/rabbitmq/tools/jsonrpc/JsonRpcServer.java rename to src/main/java/com/rabbitmq/tools/jsonrpc/JsonRpcServer.java diff --git a/src/com/rabbitmq/tools/jsonrpc/ParameterDescription.java b/src/main/java/com/rabbitmq/tools/jsonrpc/ParameterDescription.java similarity index 100% rename from src/com/rabbitmq/tools/jsonrpc/ParameterDescription.java rename to src/main/java/com/rabbitmq/tools/jsonrpc/ParameterDescription.java diff --git a/src/com/rabbitmq/tools/jsonrpc/ProcedureDescription.java b/src/main/java/com/rabbitmq/tools/jsonrpc/ProcedureDescription.java similarity index 100% rename from src/com/rabbitmq/tools/jsonrpc/ProcedureDescription.java rename to src/main/java/com/rabbitmq/tools/jsonrpc/ProcedureDescription.java diff --git a/src/com/rabbitmq/tools/jsonrpc/ServiceDescription.java b/src/main/java/com/rabbitmq/tools/jsonrpc/ServiceDescription.java similarity index 100% rename from src/com/rabbitmq/tools/jsonrpc/ServiceDescription.java rename to src/main/java/com/rabbitmq/tools/jsonrpc/ServiceDescription.java diff --git a/src/com/rabbitmq/tools/jsonrpc/package.html b/src/main/java/com/rabbitmq/tools/jsonrpc/package.html similarity index 100% rename from src/com/rabbitmq/tools/jsonrpc/package.html rename to src/main/java/com/rabbitmq/tools/jsonrpc/package.html diff --git a/src/com/rabbitmq/tools/package.html b/src/main/java/com/rabbitmq/tools/package.html similarity index 100% rename from src/com/rabbitmq/tools/package.html rename to src/main/java/com/rabbitmq/tools/package.html diff --git a/src/com/rabbitmq/utility/BlockingCell.java b/src/main/java/com/rabbitmq/utility/BlockingCell.java similarity index 100% rename from src/com/rabbitmq/utility/BlockingCell.java rename to src/main/java/com/rabbitmq/utility/BlockingCell.java diff --git a/src/com/rabbitmq/utility/BlockingValueOrException.java b/src/main/java/com/rabbitmq/utility/BlockingValueOrException.java similarity index 100% rename from src/com/rabbitmq/utility/BlockingValueOrException.java rename to src/main/java/com/rabbitmq/utility/BlockingValueOrException.java diff --git a/src/com/rabbitmq/utility/IntAllocator.java b/src/main/java/com/rabbitmq/utility/IntAllocator.java similarity index 100% rename from src/com/rabbitmq/utility/IntAllocator.java rename to src/main/java/com/rabbitmq/utility/IntAllocator.java diff --git a/src/com/rabbitmq/utility/SensibleClone.java b/src/main/java/com/rabbitmq/utility/SensibleClone.java similarity index 100% rename from src/com/rabbitmq/utility/SensibleClone.java rename to src/main/java/com/rabbitmq/utility/SensibleClone.java diff --git a/src/com/rabbitmq/utility/SingleShotLinearTimer.java b/src/main/java/com/rabbitmq/utility/SingleShotLinearTimer.java similarity index 100% rename from src/com/rabbitmq/utility/SingleShotLinearTimer.java rename to src/main/java/com/rabbitmq/utility/SingleShotLinearTimer.java diff --git a/src/com/rabbitmq/utility/Utility.java b/src/main/java/com/rabbitmq/utility/Utility.java similarity index 100% rename from src/com/rabbitmq/utility/Utility.java rename to src/main/java/com/rabbitmq/utility/Utility.java diff --git a/src/com/rabbitmq/utility/ValueOrException.java b/src/main/java/com/rabbitmq/utility/ValueOrException.java similarity index 100% rename from src/com/rabbitmq/utility/ValueOrException.java rename to src/main/java/com/rabbitmq/utility/ValueOrException.java diff --git a/src/com/rabbitmq/utility/package.html b/src/main/java/com/rabbitmq/utility/package.html similarity index 100% rename from src/com/rabbitmq/utility/package.html rename to src/main/java/com/rabbitmq/utility/package.html diff --git a/test/src/com/rabbitmq/client/impl/WorkPoolTests.java b/src/test/java/com/rabbitmq/client/impl/WorkPoolTests.java similarity index 100% rename from test/src/com/rabbitmq/client/impl/WorkPoolTests.java rename to src/test/java/com/rabbitmq/client/impl/WorkPoolTests.java diff --git a/test/src/com/rabbitmq/client/test/AMQBuilderApiTest.java b/src/test/java/com/rabbitmq/client/test/AMQBuilderApiTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/AMQBuilderApiTest.java rename to src/test/java/com/rabbitmq/client/test/AMQBuilderApiTest.java diff --git a/test/src/com/rabbitmq/client/test/AMQConnectionTest.java b/src/test/java/com/rabbitmq/client/test/AMQConnectionTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/AMQConnectionTest.java rename to src/test/java/com/rabbitmq/client/test/AMQConnectionTest.java diff --git a/src/test/java/com/rabbitmq/client/test/AbstractRMQTestSuite.java b/src/test/java/com/rabbitmq/client/test/AbstractRMQTestSuite.java new file mode 100644 index 0000000000..16614b4f7f --- /dev/null +++ b/src/test/java/com/rabbitmq/client/test/AbstractRMQTestSuite.java @@ -0,0 +1,114 @@ +package com.rabbitmq.client.test; + +import java.io.File; +import java.io.IOException; +import java.net.Socket; +import java.nio.file.FileSystems; +import java.util.Properties; + +import junit.framework.Test; +import junit.framework.TestResult; +import junit.framework.TestSuite; + +import com.rabbitmq.tools.Host; + +public abstract class AbstractRMQTestSuite extends TestSuite { + private static final String DEFAULT_SSL_HOSTNAME = "localhost"; + private static final int DEFAULT_SSL_PORT = 5671; + + private static boolean buildSSLPropertiesFound = false; + + static { + Properties TESTS_PROPS = new Properties(System.getProperties()); + TESTS_PROPS.setProperty("make.bin", + System.getenv("MAKE") == null ? "make" : System.getenv("MAKE")); + try { + TESTS_PROPS.load(Host.class.getClassLoader().getResourceAsStream("build.properties")); + TESTS_PROPS.load(Host.class.getClassLoader().getResourceAsStream("config.properties")); + } catch (Exception e) { + System.out.println( + "\"build.properties\" or \"config.properties\" not found" + + " in classpath. Please copy \"build.properties\" and" + + " \"config.properties\" into src/test/resources. Ignore" + + " this message if running with ant."); + } finally { + System.setProperties(TESTS_PROPS); + } + } + + public static boolean requiredProperties() { + /* GNU Make. */ + String make = Host.makeCommand(); + boolean isGNUMake = false; + if (make != null) { + try { + Process makeProc = Host.executeCommandIgnoringErrors(make + " --version"); + String makeVersion = Host.capture(makeProc.getInputStream()); + isGNUMake = makeVersion.startsWith("GNU Make"); + } catch (IOException e) {} + } + if (!isGNUMake) { + System.err.println( + "GNU Make required; please set \"make.bin\" system property" + + " or \"$MAKE\" environment variable"); + return false; + } + + /* Path to rabbitmq_test. */ + String rabbitmq_test = Host.rabbitmqTestDir(); + if (rabbitmq_test == null || !new File(rabbitmq_test).isDirectory()) { + System.err.println( + "rabbitmq_test required; please set \"sibling.rabbitmq_test.dir\" system" + + " property"); + return false; + } + + /* Path to rabbitmqctl. */ + String rabbitmqctl = Host.rabbitmqctlCommand(); + if (rabbitmqctl == null || !new File(rabbitmqctl).isFile()) { + System.err.println( + "rabbitmqctl required; please set \"rabbitmqctl.bin\" system" + + " property"); + return false; + } + + return true; + } + + public static boolean isUnderUmbrella() { + return new File("../../UMBRELLA.md").isFile(); + } + + public static boolean isSSLAvailable() { + String SSL_CERTS_DIR = System.getenv("SSL_CERTS_DIR"); + String hostname = System.getProperty("broker.hostname"); + String port = System.getProperty("broker.sslport"); + if (SSL_CERTS_DIR == null || hostname == null || port == null) + return false; + + String sslClientCertsDir = SSL_CERTS_DIR + + FileSystems.getDefault().getSeparator() + "client"; + // If certificate is present and some server is listening on port 5671 + if (new File(sslClientCertsDir).exists() && + checkServerListening(hostname, Integer.parseInt(port))) { + return true; + } else + return false; + } + + private static boolean checkServerListening(String host, int port) { + Socket s = null; + try { + s = new Socket(host, port); + return true; + } catch (Exception e) { + return false; + } finally { + if (s != null) + try { + s.close(); + } catch (Exception e) { + } + } + } +} diff --git a/test/src/com/rabbitmq/client/test/AmqpUriTest.java b/src/test/java/com/rabbitmq/client/test/AmqpUriTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/AmqpUriTest.java rename to src/test/java/com/rabbitmq/client/test/AmqpUriTest.java diff --git a/test/src/com/rabbitmq/client/test/BlockingCellTest.java b/src/test/java/com/rabbitmq/client/test/BlockingCellTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/BlockingCellTest.java rename to src/test/java/com/rabbitmq/client/test/BlockingCellTest.java diff --git a/test/src/com/rabbitmq/client/test/BrokenFramesTest.java b/src/test/java/com/rabbitmq/client/test/BrokenFramesTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/BrokenFramesTest.java rename to src/test/java/com/rabbitmq/client/test/BrokenFramesTest.java diff --git a/test/src/com/rabbitmq/client/test/BrokerTestCase.java b/src/test/java/com/rabbitmq/client/test/BrokerTestCase.java similarity index 99% rename from test/src/com/rabbitmq/client/test/BrokerTestCase.java rename to src/test/java/com/rabbitmq/client/test/BrokerTestCase.java index 2f342f0238..4f1dd54ebb 100644 --- a/test/src/com/rabbitmq/client/test/BrokerTestCase.java +++ b/src/test/java/com/rabbitmq/client/test/BrokerTestCase.java @@ -24,23 +24,21 @@ import java.util.UUID; import java.util.concurrent.TimeoutException; +import javax.net.ssl.SSLContext; + import junit.framework.TestCase; +import com.rabbitmq.client.AMQP; +import com.rabbitmq.client.AlreadyClosedException; import com.rabbitmq.client.Channel; -import com.rabbitmq.client.Command; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.GetResponse; import com.rabbitmq.client.MessageProperties; import com.rabbitmq.client.Method; import com.rabbitmq.client.ShutdownSignalException; -import com.rabbitmq.client.AlreadyClosedException; -import com.rabbitmq.client.impl.ShutdownNotifierComponent; -import com.rabbitmq.client.AMQP; import com.rabbitmq.tools.Host; -import javax.net.ssl.SSLContext; - public class BrokerTestCase extends TestCase { protected ConnectionFactory connectionFactory = newConnectionFactory(); diff --git a/test/src/com/rabbitmq/client/test/Bug20004Test.java b/src/test/java/com/rabbitmq/client/test/Bug20004Test.java similarity index 100% rename from test/src/com/rabbitmq/client/test/Bug20004Test.java rename to src/test/java/com/rabbitmq/client/test/Bug20004Test.java diff --git a/test/src/com/rabbitmq/client/test/ChannelNumberAllocationTests.java b/src/test/java/com/rabbitmq/client/test/ChannelNumberAllocationTests.java similarity index 100% rename from test/src/com/rabbitmq/client/test/ChannelNumberAllocationTests.java rename to src/test/java/com/rabbitmq/client/test/ChannelNumberAllocationTests.java diff --git a/test/src/com/rabbitmq/client/test/ClientTests.java b/src/test/java/com/rabbitmq/client/test/ClientTests.java similarity index 93% rename from test/src/com/rabbitmq/client/test/ClientTests.java rename to src/test/java/com/rabbitmq/client/test/ClientTests.java index af38902083..ef2bf97710 100644 --- a/test/src/com/rabbitmq/client/test/ClientTests.java +++ b/src/test/java/com/rabbitmq/client/test/ClientTests.java @@ -17,11 +17,11 @@ package com.rabbitmq.client.test; -import junit.framework.TestCase; import junit.framework.TestSuite; -public class ClientTests extends TestCase { - public static TestSuite suite() { +public class ClientTests extends AbstractRMQTestSuite { + + public static TestSuite suite() { TestSuite suite = new TestSuite("client"); suite.addTest(TableTest.suite()); suite.addTest(LongStringTest.suite()); diff --git a/test/src/com/rabbitmq/client/test/ClonePropertiesTest.java b/src/test/java/com/rabbitmq/client/test/ClonePropertiesTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/ClonePropertiesTest.java rename to src/test/java/com/rabbitmq/client/test/ClonePropertiesTest.java diff --git a/test/src/com/rabbitmq/client/test/CloseInMainLoop.java b/src/test/java/com/rabbitmq/client/test/CloseInMainLoop.java similarity index 100% rename from test/src/com/rabbitmq/client/test/CloseInMainLoop.java rename to src/test/java/com/rabbitmq/client/test/CloseInMainLoop.java diff --git a/test/src/com/rabbitmq/client/test/ConfirmBase.java b/src/test/java/com/rabbitmq/client/test/ConfirmBase.java similarity index 100% rename from test/src/com/rabbitmq/client/test/ConfirmBase.java rename to src/test/java/com/rabbitmq/client/test/ConfirmBase.java diff --git a/test/src/com/rabbitmq/client/test/JSONReadWriteTest.java b/src/test/java/com/rabbitmq/client/test/JSONReadWriteTest.java similarity index 96% rename from test/src/com/rabbitmq/client/test/JSONReadWriteTest.java rename to src/test/java/com/rabbitmq/client/test/JSONReadWriteTest.java index b385dc0b13..ad0b143dfa 100644 --- a/test/src/com/rabbitmq/client/test/JSONReadWriteTest.java +++ b/src/test/java/com/rabbitmq/client/test/JSONReadWriteTest.java @@ -17,15 +17,10 @@ package com.rabbitmq.client.test; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; +import junit.framework.TestCase; -import com.rabbitmq.tools.json.JSONWriter; import com.rabbitmq.tools.json.JSONReader; - -import junit.framework.TestCase; +import com.rabbitmq.tools.json.JSONWriter; public class JSONReadWriteTest extends TestCase { diff --git a/test/src/com/rabbitmq/client/test/LongStringTest.java b/src/test/java/com/rabbitmq/client/test/LongStringTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/LongStringTest.java rename to src/test/java/com/rabbitmq/client/test/LongStringTest.java diff --git a/test/src/com/rabbitmq/client/test/MultiThreadedChannel.java b/src/test/java/com/rabbitmq/client/test/MultiThreadedChannel.java similarity index 100% rename from test/src/com/rabbitmq/client/test/MultiThreadedChannel.java rename to src/test/java/com/rabbitmq/client/test/MultiThreadedChannel.java diff --git a/test/src/com/rabbitmq/client/test/QueueingConsumerShutdownTests.java b/src/test/java/com/rabbitmq/client/test/QueueingConsumerShutdownTests.java similarity index 100% rename from test/src/com/rabbitmq/client/test/QueueingConsumerShutdownTests.java rename to src/test/java/com/rabbitmq/client/test/QueueingConsumerShutdownTests.java diff --git a/test/src/com/rabbitmq/client/test/SharedThreadPoolTest.java b/src/test/java/com/rabbitmq/client/test/SharedThreadPoolTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/SharedThreadPoolTest.java rename to src/test/java/com/rabbitmq/client/test/SharedThreadPoolTest.java diff --git a/test/src/com/rabbitmq/client/test/TableTest.java b/src/test/java/com/rabbitmq/client/test/TableTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/TableTest.java rename to src/test/java/com/rabbitmq/client/test/TableTest.java diff --git a/test/src/com/rabbitmq/client/test/TruncatedInputStreamTest.java b/src/test/java/com/rabbitmq/client/test/TruncatedInputStreamTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/TruncatedInputStreamTest.java rename to src/test/java/com/rabbitmq/client/test/TruncatedInputStreamTest.java diff --git a/test/src/com/rabbitmq/client/test/ValueOrExceptionTest.java b/src/test/java/com/rabbitmq/client/test/ValueOrExceptionTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/ValueOrExceptionTest.java rename to src/test/java/com/rabbitmq/client/test/ValueOrExceptionTest.java diff --git a/test/src/com/rabbitmq/client/test/functional/AbstractRejectTest.java b/src/test/java/com/rabbitmq/client/test/functional/AbstractRejectTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/AbstractRejectTest.java rename to src/test/java/com/rabbitmq/client/test/functional/AbstractRejectTest.java diff --git a/test/src/com/rabbitmq/client/test/functional/AlternateExchange.java b/src/test/java/com/rabbitmq/client/test/functional/AlternateExchange.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/AlternateExchange.java rename to src/test/java/com/rabbitmq/client/test/functional/AlternateExchange.java diff --git a/test/src/com/rabbitmq/client/test/functional/BasicGet.java b/src/test/java/com/rabbitmq/client/test/functional/BasicGet.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/BasicGet.java rename to src/test/java/com/rabbitmq/client/test/functional/BasicGet.java diff --git a/test/src/com/rabbitmq/client/test/functional/BindingLifecycle.java b/src/test/java/com/rabbitmq/client/test/functional/BindingLifecycle.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/BindingLifecycle.java rename to src/test/java/com/rabbitmq/client/test/functional/BindingLifecycle.java diff --git a/test/src/com/rabbitmq/client/test/functional/BindingLifecycleBase.java b/src/test/java/com/rabbitmq/client/test/functional/BindingLifecycleBase.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/BindingLifecycleBase.java rename to src/test/java/com/rabbitmq/client/test/functional/BindingLifecycleBase.java diff --git a/test/src/com/rabbitmq/client/test/functional/CcRoutes.java b/src/test/java/com/rabbitmq/client/test/functional/CcRoutes.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/CcRoutes.java rename to src/test/java/com/rabbitmq/client/test/functional/CcRoutes.java diff --git a/test/src/com/rabbitmq/client/test/functional/ClusteredTestBase.java b/src/test/java/com/rabbitmq/client/test/functional/ClusteredTestBase.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ClusteredTestBase.java rename to src/test/java/com/rabbitmq/client/test/functional/ClusteredTestBase.java diff --git a/test/src/com/rabbitmq/client/test/functional/Confirm.java b/src/test/java/com/rabbitmq/client/test/functional/Confirm.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/Confirm.java rename to src/test/java/com/rabbitmq/client/test/functional/Confirm.java diff --git a/test/src/com/rabbitmq/client/test/functional/ConnectionOpen.java b/src/test/java/com/rabbitmq/client/test/functional/ConnectionOpen.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ConnectionOpen.java rename to src/test/java/com/rabbitmq/client/test/functional/ConnectionOpen.java diff --git a/test/src/com/rabbitmq/client/test/functional/ConnectionRecovery.java b/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ConnectionRecovery.java rename to src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java diff --git a/test/src/com/rabbitmq/client/test/functional/ConsumerCancelNotification.java b/src/test/java/com/rabbitmq/client/test/functional/ConsumerCancelNotification.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ConsumerCancelNotification.java rename to src/test/java/com/rabbitmq/client/test/functional/ConsumerCancelNotification.java diff --git a/test/src/com/rabbitmq/client/test/functional/ConsumerCount.java b/src/test/java/com/rabbitmq/client/test/functional/ConsumerCount.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ConsumerCount.java rename to src/test/java/com/rabbitmq/client/test/functional/ConsumerCount.java diff --git a/test/src/com/rabbitmq/client/test/functional/ConsumerPriorities.java b/src/test/java/com/rabbitmq/client/test/functional/ConsumerPriorities.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ConsumerPriorities.java rename to src/test/java/com/rabbitmq/client/test/functional/ConsumerPriorities.java diff --git a/test/src/com/rabbitmq/client/test/functional/DeadLetterExchange.java b/src/test/java/com/rabbitmq/client/test/functional/DeadLetterExchange.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/DeadLetterExchange.java rename to src/test/java/com/rabbitmq/client/test/functional/DeadLetterExchange.java diff --git a/test/src/com/rabbitmq/client/test/functional/DefaultExchange.java b/src/test/java/com/rabbitmq/client/test/functional/DefaultExchange.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/DefaultExchange.java rename to src/test/java/com/rabbitmq/client/test/functional/DefaultExchange.java diff --git a/test/src/com/rabbitmq/client/test/functional/DirectReplyTo.java b/src/test/java/com/rabbitmq/client/test/functional/DirectReplyTo.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/DirectReplyTo.java rename to src/test/java/com/rabbitmq/client/test/functional/DirectReplyTo.java diff --git a/test/src/com/rabbitmq/client/test/functional/DoubleDeletion.java b/src/test/java/com/rabbitmq/client/test/functional/DoubleDeletion.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/DoubleDeletion.java rename to src/test/java/com/rabbitmq/client/test/functional/DoubleDeletion.java diff --git a/test/src/com/rabbitmq/client/test/functional/DurableOnTransient.java b/src/test/java/com/rabbitmq/client/test/functional/DurableOnTransient.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/DurableOnTransient.java rename to src/test/java/com/rabbitmq/client/test/functional/DurableOnTransient.java diff --git a/test/src/com/rabbitmq/client/test/functional/ExceptionHandling.java b/src/test/java/com/rabbitmq/client/test/functional/ExceptionHandling.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ExceptionHandling.java rename to src/test/java/com/rabbitmq/client/test/functional/ExceptionHandling.java diff --git a/test/src/com/rabbitmq/client/test/functional/ExceptionMessages.java b/src/test/java/com/rabbitmq/client/test/functional/ExceptionMessages.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ExceptionMessages.java rename to src/test/java/com/rabbitmq/client/test/functional/ExceptionMessages.java diff --git a/test/src/com/rabbitmq/client/test/functional/ExchangeDeclare.java b/src/test/java/com/rabbitmq/client/test/functional/ExchangeDeclare.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ExchangeDeclare.java rename to src/test/java/com/rabbitmq/client/test/functional/ExchangeDeclare.java diff --git a/test/src/com/rabbitmq/client/test/functional/ExchangeDeleteIfUnused.java b/src/test/java/com/rabbitmq/client/test/functional/ExchangeDeleteIfUnused.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ExchangeDeleteIfUnused.java rename to src/test/java/com/rabbitmq/client/test/functional/ExchangeDeleteIfUnused.java diff --git a/test/src/com/rabbitmq/client/test/functional/ExchangeDeletePredeclared.java b/src/test/java/com/rabbitmq/client/test/functional/ExchangeDeletePredeclared.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ExchangeDeletePredeclared.java rename to src/test/java/com/rabbitmq/client/test/functional/ExchangeDeletePredeclared.java diff --git a/test/src/com/rabbitmq/client/test/functional/ExchangeEquivalenceBase.java b/src/test/java/com/rabbitmq/client/test/functional/ExchangeEquivalenceBase.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ExchangeEquivalenceBase.java rename to src/test/java/com/rabbitmq/client/test/functional/ExchangeEquivalenceBase.java diff --git a/test/src/com/rabbitmq/client/test/functional/ExchangeExchangeBindings.java b/src/test/java/com/rabbitmq/client/test/functional/ExchangeExchangeBindings.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ExchangeExchangeBindings.java rename to src/test/java/com/rabbitmq/client/test/functional/ExchangeExchangeBindings.java diff --git a/test/src/com/rabbitmq/client/test/functional/ExchangeExchangeBindingsAutoDelete.java b/src/test/java/com/rabbitmq/client/test/functional/ExchangeExchangeBindingsAutoDelete.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/ExchangeExchangeBindingsAutoDelete.java rename to src/test/java/com/rabbitmq/client/test/functional/ExchangeExchangeBindingsAutoDelete.java diff --git a/test/src/com/rabbitmq/client/test/functional/FrameMax.java b/src/test/java/com/rabbitmq/client/test/functional/FrameMax.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/FrameMax.java rename to src/test/java/com/rabbitmq/client/test/functional/FrameMax.java diff --git a/src/test/java/com/rabbitmq/client/test/functional/FunctionalTests.java b/src/test/java/com/rabbitmq/client/test/functional/FunctionalTests.java new file mode 100644 index 0000000000..c44138e940 --- /dev/null +++ b/src/test/java/com/rabbitmq/client/test/functional/FunctionalTests.java @@ -0,0 +1,93 @@ +// The contents of this file are subject to the Mozilla Public License +// Version 1.1 (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.mozilla.org/MPL/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +// the License for the specific language governing rights and +// limitations under the License. +// +// The Original Code is RabbitMQ. +// +// The Initial Developer of the Original Code is GoPivotal, Inc. +// Copyright (c) 2007-2016 Pivotal Software, Inc. All rights reserved. +// + + +package com.rabbitmq.client.test.functional; + +import com.rabbitmq.client.impl.WorkPoolTests; +import com.rabbitmq.client.test.AbstractRMQTestSuite; +import com.rabbitmq.client.test.Bug20004Test; + +import junit.framework.TestCase; +import junit.framework.TestSuite; + +public class FunctionalTests extends AbstractRMQTestSuite { + public static TestSuite suite() { + TestSuite suite = new TestSuite("functional"); + if (!requiredProperties()) return suite; + if (!isUnderUmbrella()) return suite; + add(suite); + return suite; + } + + public static void add(TestSuite suite) { + suite.addTestSuite(ConnectionOpen.class); + suite.addTestSuite(Heartbeat.class); + suite.addTestSuite(Tables.class); + suite.addTestSuite(DoubleDeletion.class); + suite.addTestSuite(Routing.class); + suite.addTestSuite(BindingLifecycle.class); + suite.addTestSuite(Recover.class); + suite.addTestSuite(Reject.class); + suite.addTestSuite(Transactions.class); + suite.addTestSuite(RequeueOnConnectionClose.class); + suite.addTestSuite(RequeueOnChannelClose.class); + suite.addTestSuite(DurableOnTransient.class); + suite.addTestSuite(NoRequeueOnCancel.class); + suite.addTestSuite(Bug20004Test.class); + suite.addTestSuite(ExchangeDeleteIfUnused.class); + suite.addTestSuite(QosTests.class); + suite.addTestSuite(AlternateExchange.class); + suite.addTestSuite(ExchangeExchangeBindings.class); + suite.addTestSuite(ExchangeExchangeBindingsAutoDelete.class); + suite.addTestSuite(ExchangeDeclare.class); + suite.addTestSuite(FrameMax.class); + suite.addTestSuite(QueueLifecycle.class); + suite.addTestSuite(QueueLease.class); + suite.addTestSuite(QueueExclusivity.class); + suite.addTestSuite(QueueSizeLimit.class); + suite.addTestSuite(InvalidAcks.class); + suite.addTestSuite(InvalidAcksTx.class); + suite.addTestSuite(DefaultExchange.class); + suite.addTestSuite(UnbindAutoDeleteExchange.class); + suite.addTestSuite(Confirm.class); + suite.addTestSuite(ConsumerCancelNotification.class); + suite.addTestSuite(UnexpectedFrames.class); + suite.addTestSuite(PerQueueTTL.class); + //needs rabbitmqctl + if (isUnderUmbrella()) { + suite.addTestSuite(PerMessageTTL.class); + suite.addTestSuite(PerQueueVsPerMessageTTL.class); + } + suite.addTestSuite(DeadLetterExchange.class); + suite.addTestSuite(SaslMechanisms.class); + //needs rabbitmqctl + if (isUnderUmbrella()) suite.addTestSuite(UserIDHeader.class); + suite.addTestSuite(InternalExchange.class); + suite.addTestSuite(CcRoutes.class); + suite.addTestSuite(WorkPoolTests.class); + suite.addTestSuite(HeadersExchangeValidation.class); + suite.addTestSuite(ConsumerPriorities.class); + //needs rabbitmqctl + if (isUnderUmbrella()) { + suite.addTestSuite(Policies.class); + suite.addTestSuite(ConnectionRecovery.class); + } + suite.addTestSuite(ExceptionHandling.class); + suite.addTestSuite(PerConsumerPrefetch.class); + suite.addTestSuite(DirectReplyTo.class); + } +} diff --git a/test/src/com/rabbitmq/client/test/functional/HeadersExchangeValidation.java b/src/test/java/com/rabbitmq/client/test/functional/HeadersExchangeValidation.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/HeadersExchangeValidation.java rename to src/test/java/com/rabbitmq/client/test/functional/HeadersExchangeValidation.java diff --git a/test/src/com/rabbitmq/client/test/functional/Heartbeat.java b/src/test/java/com/rabbitmq/client/test/functional/Heartbeat.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/Heartbeat.java rename to src/test/java/com/rabbitmq/client/test/functional/Heartbeat.java diff --git a/test/src/com/rabbitmq/client/test/functional/InternalExchange.java b/src/test/java/com/rabbitmq/client/test/functional/InternalExchange.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/InternalExchange.java rename to src/test/java/com/rabbitmq/client/test/functional/InternalExchange.java diff --git a/test/src/com/rabbitmq/client/test/functional/InvalidAcks.java b/src/test/java/com/rabbitmq/client/test/functional/InvalidAcks.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/InvalidAcks.java rename to src/test/java/com/rabbitmq/client/test/functional/InvalidAcks.java diff --git a/test/src/com/rabbitmq/client/test/functional/InvalidAcksBase.java b/src/test/java/com/rabbitmq/client/test/functional/InvalidAcksBase.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/InvalidAcksBase.java rename to src/test/java/com/rabbitmq/client/test/functional/InvalidAcksBase.java diff --git a/test/src/com/rabbitmq/client/test/functional/InvalidAcksTx.java b/src/test/java/com/rabbitmq/client/test/functional/InvalidAcksTx.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/InvalidAcksTx.java rename to src/test/java/com/rabbitmq/client/test/functional/InvalidAcksTx.java diff --git a/test/src/com/rabbitmq/client/test/functional/MessageCount.java b/src/test/java/com/rabbitmq/client/test/functional/MessageCount.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/MessageCount.java rename to src/test/java/com/rabbitmq/client/test/functional/MessageCount.java diff --git a/test/src/com/rabbitmq/client/test/functional/Nack.java b/src/test/java/com/rabbitmq/client/test/functional/Nack.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/Nack.java rename to src/test/java/com/rabbitmq/client/test/functional/Nack.java diff --git a/test/src/com/rabbitmq/client/test/functional/NoRequeueOnCancel.java b/src/test/java/com/rabbitmq/client/test/functional/NoRequeueOnCancel.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/NoRequeueOnCancel.java rename to src/test/java/com/rabbitmq/client/test/functional/NoRequeueOnCancel.java diff --git a/test/src/com/rabbitmq/client/test/functional/Nowait.java b/src/test/java/com/rabbitmq/client/test/functional/Nowait.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/Nowait.java rename to src/test/java/com/rabbitmq/client/test/functional/Nowait.java diff --git a/test/src/com/rabbitmq/client/test/functional/PerConsumerPrefetch.java b/src/test/java/com/rabbitmq/client/test/functional/PerConsumerPrefetch.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/PerConsumerPrefetch.java rename to src/test/java/com/rabbitmq/client/test/functional/PerConsumerPrefetch.java diff --git a/test/src/com/rabbitmq/client/test/functional/PerMessageTTL.java b/src/test/java/com/rabbitmq/client/test/functional/PerMessageTTL.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/PerMessageTTL.java rename to src/test/java/com/rabbitmq/client/test/functional/PerMessageTTL.java diff --git a/test/src/com/rabbitmq/client/test/functional/PerQueueTTL.java b/src/test/java/com/rabbitmq/client/test/functional/PerQueueTTL.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/PerQueueTTL.java rename to src/test/java/com/rabbitmq/client/test/functional/PerQueueTTL.java diff --git a/test/src/com/rabbitmq/client/test/functional/PerQueueVsPerMessageTTL.java b/src/test/java/com/rabbitmq/client/test/functional/PerQueueVsPerMessageTTL.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/PerQueueVsPerMessageTTL.java rename to src/test/java/com/rabbitmq/client/test/functional/PerQueueVsPerMessageTTL.java diff --git a/test/src/com/rabbitmq/client/test/functional/Policies.java b/src/test/java/com/rabbitmq/client/test/functional/Policies.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/Policies.java rename to src/test/java/com/rabbitmq/client/test/functional/Policies.java diff --git a/test/src/com/rabbitmq/client/test/functional/QosTests.java b/src/test/java/com/rabbitmq/client/test/functional/QosTests.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/QosTests.java rename to src/test/java/com/rabbitmq/client/test/functional/QosTests.java diff --git a/test/src/com/rabbitmq/client/test/functional/QueueExclusivity.java b/src/test/java/com/rabbitmq/client/test/functional/QueueExclusivity.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/QueueExclusivity.java rename to src/test/java/com/rabbitmq/client/test/functional/QueueExclusivity.java diff --git a/test/src/com/rabbitmq/client/test/functional/QueueLease.java b/src/test/java/com/rabbitmq/client/test/functional/QueueLease.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/QueueLease.java rename to src/test/java/com/rabbitmq/client/test/functional/QueueLease.java diff --git a/test/src/com/rabbitmq/client/test/functional/QueueLifecycle.java b/src/test/java/com/rabbitmq/client/test/functional/QueueLifecycle.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/QueueLifecycle.java rename to src/test/java/com/rabbitmq/client/test/functional/QueueLifecycle.java diff --git a/test/src/com/rabbitmq/client/test/functional/QueueSizeLimit.java b/src/test/java/com/rabbitmq/client/test/functional/QueueSizeLimit.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/QueueSizeLimit.java rename to src/test/java/com/rabbitmq/client/test/functional/QueueSizeLimit.java diff --git a/test/src/com/rabbitmq/client/test/functional/Recover.java b/src/test/java/com/rabbitmq/client/test/functional/Recover.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/Recover.java rename to src/test/java/com/rabbitmq/client/test/functional/Recover.java diff --git a/test/src/com/rabbitmq/client/test/functional/Reject.java b/src/test/java/com/rabbitmq/client/test/functional/Reject.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/Reject.java rename to src/test/java/com/rabbitmq/client/test/functional/Reject.java diff --git a/test/src/com/rabbitmq/client/test/functional/RequeueOnChannelClose.java b/src/test/java/com/rabbitmq/client/test/functional/RequeueOnChannelClose.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/RequeueOnChannelClose.java rename to src/test/java/com/rabbitmq/client/test/functional/RequeueOnChannelClose.java diff --git a/test/src/com/rabbitmq/client/test/functional/RequeueOnClose.java b/src/test/java/com/rabbitmq/client/test/functional/RequeueOnClose.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/RequeueOnClose.java rename to src/test/java/com/rabbitmq/client/test/functional/RequeueOnClose.java diff --git a/test/src/com/rabbitmq/client/test/functional/RequeueOnConnectionClose.java b/src/test/java/com/rabbitmq/client/test/functional/RequeueOnConnectionClose.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/RequeueOnConnectionClose.java rename to src/test/java/com/rabbitmq/client/test/functional/RequeueOnConnectionClose.java diff --git a/test/src/com/rabbitmq/client/test/functional/Routing.java b/src/test/java/com/rabbitmq/client/test/functional/Routing.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/Routing.java rename to src/test/java/com/rabbitmq/client/test/functional/Routing.java diff --git a/test/src/com/rabbitmq/client/test/functional/SaslMechanisms.java b/src/test/java/com/rabbitmq/client/test/functional/SaslMechanisms.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/SaslMechanisms.java rename to src/test/java/com/rabbitmq/client/test/functional/SaslMechanisms.java diff --git a/test/src/com/rabbitmq/client/test/functional/TTLHandling.java b/src/test/java/com/rabbitmq/client/test/functional/TTLHandling.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/TTLHandling.java rename to src/test/java/com/rabbitmq/client/test/functional/TTLHandling.java diff --git a/test/src/com/rabbitmq/client/test/functional/Tables.java b/src/test/java/com/rabbitmq/client/test/functional/Tables.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/Tables.java rename to src/test/java/com/rabbitmq/client/test/functional/Tables.java diff --git a/test/src/com/rabbitmq/client/test/functional/Transactions.java b/src/test/java/com/rabbitmq/client/test/functional/Transactions.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/Transactions.java rename to src/test/java/com/rabbitmq/client/test/functional/Transactions.java diff --git a/test/src/com/rabbitmq/client/test/functional/UnbindAutoDeleteExchange.java b/src/test/java/com/rabbitmq/client/test/functional/UnbindAutoDeleteExchange.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/UnbindAutoDeleteExchange.java rename to src/test/java/com/rabbitmq/client/test/functional/UnbindAutoDeleteExchange.java diff --git a/test/src/com/rabbitmq/client/test/functional/UnexpectedFrames.java b/src/test/java/com/rabbitmq/client/test/functional/UnexpectedFrames.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/UnexpectedFrames.java rename to src/test/java/com/rabbitmq/client/test/functional/UnexpectedFrames.java diff --git a/test/src/com/rabbitmq/client/test/functional/UserIDHeader.java b/src/test/java/com/rabbitmq/client/test/functional/UserIDHeader.java similarity index 100% rename from test/src/com/rabbitmq/client/test/functional/UserIDHeader.java rename to src/test/java/com/rabbitmq/client/test/functional/UserIDHeader.java diff --git a/test/src/com/rabbitmq/client/test/performance/CLIHelper.java b/src/test/java/com/rabbitmq/client/test/performance/CLIHelper.java similarity index 100% rename from test/src/com/rabbitmq/client/test/performance/CLIHelper.java rename to src/test/java/com/rabbitmq/client/test/performance/CLIHelper.java diff --git a/test/src/com/rabbitmq/client/test/performance/QosScaling.java b/src/test/java/com/rabbitmq/client/test/performance/QosScaling.java similarity index 100% rename from test/src/com/rabbitmq/client/test/performance/QosScaling.java rename to src/test/java/com/rabbitmq/client/test/performance/QosScaling.java diff --git a/test/src/com/rabbitmq/client/test/performance/ScalabilityTest.java b/src/test/java/com/rabbitmq/client/test/performance/ScalabilityTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/performance/ScalabilityTest.java rename to src/test/java/com/rabbitmq/client/test/performance/ScalabilityTest.java diff --git a/test/src/com/rabbitmq/client/test/performance/StressManagement.java b/src/test/java/com/rabbitmq/client/test/performance/StressManagement.java similarity index 100% rename from test/src/com/rabbitmq/client/test/performance/StressManagement.java rename to src/test/java/com/rabbitmq/client/test/performance/StressManagement.java diff --git a/test/src/com/rabbitmq/client/test/server/AbsentQueue.java b/src/test/java/com/rabbitmq/client/test/server/AbsentQueue.java similarity index 99% rename from test/src/com/rabbitmq/client/test/server/AbsentQueue.java rename to src/test/java/com/rabbitmq/client/test/server/AbsentQueue.java index 0aedd45411..d0c586dbb5 100644 --- a/test/src/com/rabbitmq/client/test/server/AbsentQueue.java +++ b/src/test/java/com/rabbitmq/client/test/server/AbsentQueue.java @@ -17,13 +17,12 @@ package com.rabbitmq.client.test.server; -import com.rabbitmq.client.AMQP; -import com.rabbitmq.client.test.functional.ClusteredTestBase; -import com.rabbitmq.tools.Host; - import java.io.IOException; import java.util.concurrent.TimeoutException; +import com.rabbitmq.client.AMQP; +import com.rabbitmq.client.test.functional.ClusteredTestBase; + /** * This tests whether 'absent' queues - durable queues whose home node * is down - are handled properly. diff --git a/test/src/com/rabbitmq/client/test/server/AlternateExchangeEquivalence.java b/src/test/java/com/rabbitmq/client/test/server/AlternateExchangeEquivalence.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/AlternateExchangeEquivalence.java rename to src/test/java/com/rabbitmq/client/test/server/AlternateExchangeEquivalence.java diff --git a/test/src/com/rabbitmq/client/test/server/BlockedConnection.java b/src/test/java/com/rabbitmq/client/test/server/BlockedConnection.java similarity index 98% rename from test/src/com/rabbitmq/client/test/server/BlockedConnection.java rename to src/test/java/com/rabbitmq/client/test/server/BlockedConnection.java index 45f9652ceb..3880e5ffb0 100644 --- a/test/src/com/rabbitmq/client/test/server/BlockedConnection.java +++ b/src/test/java/com/rabbitmq/client/test/server/BlockedConnection.java @@ -17,18 +17,17 @@ package com.rabbitmq.client.test.server; +import java.io.IOException; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + import com.rabbitmq.client.BlockedListener; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.MessageProperties; import com.rabbitmq.client.test.BrokerTestCase; -import com.rabbitmq.tools.Host; - -import java.io.IOException; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; public class BlockedConnection extends BrokerTestCase { protected void releaseResources() throws IOException { diff --git a/test/src/com/rabbitmq/client/test/server/Bug19219Test.java b/src/test/java/com/rabbitmq/client/test/server/Bug19219Test.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/Bug19219Test.java rename to src/test/java/com/rabbitmq/client/test/server/Bug19219Test.java diff --git a/test/src/com/rabbitmq/client/test/server/ChannelLimitNegotiation.java b/src/test/java/com/rabbitmq/client/test/server/ChannelLimitNegotiation.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/ChannelLimitNegotiation.java rename to src/test/java/com/rabbitmq/client/test/server/ChannelLimitNegotiation.java diff --git a/test/src/com/rabbitmq/client/test/server/DeadLetterExchangeDurable.java b/src/test/java/com/rabbitmq/client/test/server/DeadLetterExchangeDurable.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/DeadLetterExchangeDurable.java rename to src/test/java/com/rabbitmq/client/test/server/DeadLetterExchangeDurable.java diff --git a/test/src/com/rabbitmq/client/test/server/DurableBindingLifecycle.java b/src/test/java/com/rabbitmq/client/test/server/DurableBindingLifecycle.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/DurableBindingLifecycle.java rename to src/test/java/com/rabbitmq/client/test/server/DurableBindingLifecycle.java diff --git a/test/src/com/rabbitmq/client/test/server/EffectVisibilityCrossNodeTest.java b/src/test/java/com/rabbitmq/client/test/server/EffectVisibilityCrossNodeTest.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/EffectVisibilityCrossNodeTest.java rename to src/test/java/com/rabbitmq/client/test/server/EffectVisibilityCrossNodeTest.java diff --git a/test/src/com/rabbitmq/client/test/server/ExclusiveQueueDurability.java b/src/test/java/com/rabbitmq/client/test/server/ExclusiveQueueDurability.java similarity index 98% rename from test/src/com/rabbitmq/client/test/server/ExclusiveQueueDurability.java rename to src/test/java/com/rabbitmq/client/test/server/ExclusiveQueueDurability.java index 202271b15d..93f61199a7 100644 --- a/test/src/com/rabbitmq/client/test/server/ExclusiveQueueDurability.java +++ b/src/test/java/com/rabbitmq/client/test/server/ExclusiveQueueDurability.java @@ -23,7 +23,6 @@ import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel; import com.rabbitmq.client.test.BrokerTestCase; -import com.rabbitmq.tools.Host; /** * This tests whether exclusive, durable queues are deleted when appropriate diff --git a/test/src/com/rabbitmq/client/test/server/Firehose.java b/src/test/java/com/rabbitmq/client/test/server/Firehose.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/Firehose.java rename to src/test/java/com/rabbitmq/client/test/server/Firehose.java diff --git a/test/src/com/rabbitmq/client/test/server/HATests.java b/src/test/java/com/rabbitmq/client/test/server/HATests.java similarity index 90% rename from test/src/com/rabbitmq/client/test/server/HATests.java rename to src/test/java/com/rabbitmq/client/test/server/HATests.java index a6fcc793c7..5a9226addf 100644 --- a/test/src/com/rabbitmq/client/test/server/HATests.java +++ b/src/test/java/com/rabbitmq/client/test/server/HATests.java @@ -16,17 +16,21 @@ package com.rabbitmq.client.test.server; -import com.rabbitmq.client.test.functional.FunctionalTests; -import com.rabbitmq.tools.Host; import junit.framework.TestCase; import junit.framework.TestSuite; -public class HATests extends TestSuite { +import com.rabbitmq.client.test.AbstractRMQTestSuite; +import com.rabbitmq.client.test.functional.FunctionalTests; +import com.rabbitmq.tools.Host; + +public class HATests extends AbstractRMQTestSuite { // this is horrific public static boolean HA_TESTS_RUNNING = false; public static TestSuite suite() { TestSuite suite = new TestSuite("server-tests"); + if (!requiredProperties()) return suite; + if (!isUnderUmbrella()) return suite; suite.addTestSuite(SetUp.class); FunctionalTests.add(suite); ServerTests.add(suite); diff --git a/test/src/com/rabbitmq/client/test/server/LoopbackUsers.java b/src/test/java/com/rabbitmq/client/test/server/LoopbackUsers.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/LoopbackUsers.java rename to src/test/java/com/rabbitmq/client/test/server/LoopbackUsers.java diff --git a/test/src/com/rabbitmq/client/test/server/MemoryAlarms.java b/src/test/java/com/rabbitmq/client/test/server/MemoryAlarms.java similarity index 99% rename from test/src/com/rabbitmq/client/test/server/MemoryAlarms.java rename to src/test/java/com/rabbitmq/client/test/server/MemoryAlarms.java index ca0bde4db8..b44235d9a9 100644 --- a/test/src/com/rabbitmq/client/test/server/MemoryAlarms.java +++ b/src/test/java/com/rabbitmq/client/test/server/MemoryAlarms.java @@ -23,7 +23,6 @@ import com.rabbitmq.client.Connection; import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.test.BrokerTestCase; -import com.rabbitmq.tools.Host; public class MemoryAlarms extends BrokerTestCase { diff --git a/test/src/com/rabbitmq/client/test/server/MessageRecovery.java b/src/test/java/com/rabbitmq/client/test/server/MessageRecovery.java similarity index 98% rename from test/src/com/rabbitmq/client/test/server/MessageRecovery.java rename to src/test/java/com/rabbitmq/client/test/server/MessageRecovery.java index 271c4c3bed..24d5ff01c4 100644 --- a/test/src/com/rabbitmq/client/test/server/MessageRecovery.java +++ b/src/test/java/com/rabbitmq/client/test/server/MessageRecovery.java @@ -15,13 +15,12 @@ package com.rabbitmq.client.test.server; +import java.io.IOException; + import com.rabbitmq.client.AMQP; -import com.rabbitmq.client.Channel; import com.rabbitmq.client.MessageProperties; import com.rabbitmq.client.test.ConfirmBase; -import java.io.IOException; - public class MessageRecovery extends ConfirmBase { diff --git a/test/src/com/rabbitmq/client/test/server/Permissions.java b/src/test/java/com/rabbitmq/client/test/server/Permissions.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/Permissions.java rename to src/test/java/com/rabbitmq/client/test/server/Permissions.java diff --git a/test/src/com/rabbitmq/client/test/server/PersistenceGuarantees.java b/src/test/java/com/rabbitmq/client/test/server/PersistenceGuarantees.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/PersistenceGuarantees.java rename to src/test/java/com/rabbitmq/client/test/server/PersistenceGuarantees.java diff --git a/test/src/com/rabbitmq/client/test/server/PriorityQueues.java b/src/test/java/com/rabbitmq/client/test/server/PriorityQueues.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/PriorityQueues.java rename to src/test/java/com/rabbitmq/client/test/server/PriorityQueues.java diff --git a/src/test/java/com/rabbitmq/client/test/server/ServerTests.java b/src/test/java/com/rabbitmq/client/test/server/ServerTests.java new file mode 100644 index 0000000000..4e77517cb0 --- /dev/null +++ b/src/test/java/com/rabbitmq/client/test/server/ServerTests.java @@ -0,0 +1,52 @@ +// The contents of this file are subject to the Mozilla Public License +// Version 1.1 (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.mozilla.org/MPL/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +// the License for the specific language governing rights and +// limitations under the License. +// +// The Original Code is RabbitMQ. +// +// The Initial Developer of the Original Code is GoPivotal, Inc. +// Copyright (c) 2007-2016 Pivotal Software, Inc. All rights reserved. +// + +package com.rabbitmq.client.test.server; + +import junit.framework.TestSuite; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +import com.rabbitmq.client.test.AbstractRMQTestSuite; + +public class ServerTests extends AbstractRMQTestSuite { + + public static TestSuite suite() { + TestSuite suite = new TestSuite("server-tests"); + if (!requiredProperties()) return suite; + if (!isUnderUmbrella()) return suite; + add(suite); + return suite; + } + + public static void add(TestSuite suite) { + suite.addTestSuite(Permissions.class); + suite.addTestSuite(DurableBindingLifecycle.class); + suite.addTestSuite(DeadLetterExchangeDurable.class); + suite.addTestSuite(EffectVisibilityCrossNodeTest.class); + suite.addTestSuite(ExclusiveQueueDurability.class); + suite.addTestSuite(AbsentQueue.class); + suite.addTestSuite(AlternateExchangeEquivalence.class); + suite.addTestSuite(MemoryAlarms.class); + suite.addTestSuite(MessageRecovery.class); + suite.addTestSuite(Firehose.class); + suite.addTestSuite(PersistenceGuarantees.class); + suite.addTestSuite(Shutdown.class); + suite.addTestSuite(BlockedConnection.class); + suite.addTestSuite(ChannelLimitNegotiation.class); + suite.addTestSuite(LoopbackUsers.class); + } +} diff --git a/test/src/com/rabbitmq/client/test/server/Shutdown.java b/src/test/java/com/rabbitmq/client/test/server/Shutdown.java similarity index 74% rename from test/src/com/rabbitmq/client/test/server/Shutdown.java rename to src/test/java/com/rabbitmq/client/test/server/Shutdown.java index 7280eb8be8..e077ce0394 100644 --- a/test/src/com/rabbitmq/client/test/server/Shutdown.java +++ b/src/test/java/com/rabbitmq/client/test/server/Shutdown.java @@ -1,11 +1,7 @@ package com.rabbitmq.client.test.server; -import com.rabbitmq.client.test.BrokerTestCase; import com.rabbitmq.client.AMQP; -import com.rabbitmq.client.Channel; -import com.rabbitmq.client.Connection; - -import java.io.IOException; +import com.rabbitmq.client.test.BrokerTestCase; public class Shutdown extends BrokerTestCase { diff --git a/test/src/com/rabbitmq/client/test/server/XDeathHeaderGrowth.java b/src/test/java/com/rabbitmq/client/test/server/XDeathHeaderGrowth.java similarity index 100% rename from test/src/com/rabbitmq/client/test/server/XDeathHeaderGrowth.java rename to src/test/java/com/rabbitmq/client/test/server/XDeathHeaderGrowth.java diff --git a/test/src/com/rabbitmq/client/test/ssl/BadVerifiedConnection.java b/src/test/java/com/rabbitmq/client/test/ssl/BadVerifiedConnection.java similarity index 100% rename from test/src/com/rabbitmq/client/test/ssl/BadVerifiedConnection.java rename to src/test/java/com/rabbitmq/client/test/ssl/BadVerifiedConnection.java diff --git a/test/src/com/rabbitmq/client/test/ssl/SSLTests.java b/src/test/java/com/rabbitmq/client/test/ssl/SSLTests.java similarity index 77% rename from test/src/com/rabbitmq/client/test/ssl/SSLTests.java rename to src/test/java/com/rabbitmq/client/test/ssl/SSLTests.java index 611df1ec40..b3b660dd95 100644 --- a/test/src/com/rabbitmq/client/test/ssl/SSLTests.java +++ b/src/test/java/com/rabbitmq/client/test/ssl/SSLTests.java @@ -17,12 +17,16 @@ package com.rabbitmq.client.test.ssl; -import junit.framework.TestCase; import junit.framework.TestSuite; -public class SSLTests extends TestCase { +import com.rabbitmq.client.test.AbstractRMQTestSuite; + +public class SSLTests extends AbstractRMQTestSuite { public static TestSuite suite() { TestSuite suite = new TestSuite("ssl"); + //Skip the tests if not under umbrella and not SSL available + if (!requiredProperties()) return suite; + if (!(isUnderUmbrella() && isSSLAvailable())) return suite; suite.addTestSuite(UnverifiedConnection.class); suite.addTestSuite(VerifiedConnection.class); suite.addTestSuite(BadVerifiedConnection.class); diff --git a/test/src/com/rabbitmq/client/test/ssl/UnverifiedConnection.java b/src/test/java/com/rabbitmq/client/test/ssl/UnverifiedConnection.java similarity index 100% rename from test/src/com/rabbitmq/client/test/ssl/UnverifiedConnection.java rename to src/test/java/com/rabbitmq/client/test/ssl/UnverifiedConnection.java diff --git a/test/src/com/rabbitmq/client/test/ssl/VerifiedConnection.java b/src/test/java/com/rabbitmq/client/test/ssl/VerifiedConnection.java similarity index 100% rename from test/src/com/rabbitmq/client/test/ssl/VerifiedConnection.java rename to src/test/java/com/rabbitmq/client/test/ssl/VerifiedConnection.java diff --git a/test/src/com/rabbitmq/examples/BufferPerformanceMetrics.java b/src/test/java/com/rabbitmq/examples/BufferPerformanceMetrics.java similarity index 100% rename from test/src/com/rabbitmq/examples/BufferPerformanceMetrics.java rename to src/test/java/com/rabbitmq/examples/BufferPerformanceMetrics.java diff --git a/test/src/com/rabbitmq/examples/ChannelCreationPerformance.java b/src/test/java/com/rabbitmq/examples/ChannelCreationPerformance.java similarity index 100% rename from test/src/com/rabbitmq/examples/ChannelCreationPerformance.java rename to src/test/java/com/rabbitmq/examples/ChannelCreationPerformance.java diff --git a/test/src/com/rabbitmq/examples/ConfirmDontLoseMessages.java b/src/test/java/com/rabbitmq/examples/ConfirmDontLoseMessages.java similarity index 100% rename from test/src/com/rabbitmq/examples/ConfirmDontLoseMessages.java rename to src/test/java/com/rabbitmq/examples/ConfirmDontLoseMessages.java diff --git a/test/src/com/rabbitmq/examples/ConsumerMain.java b/src/test/java/com/rabbitmq/examples/ConsumerMain.java similarity index 100% rename from test/src/com/rabbitmq/examples/ConsumerMain.java rename to src/test/java/com/rabbitmq/examples/ConsumerMain.java diff --git a/test/src/com/rabbitmq/examples/DirectReplyToPerformance.java b/src/test/java/com/rabbitmq/examples/DirectReplyToPerformance.java similarity index 100% rename from test/src/com/rabbitmq/examples/DirectReplyToPerformance.java rename to src/test/java/com/rabbitmq/examples/DirectReplyToPerformance.java diff --git a/test/src/com/rabbitmq/examples/FileConsumer.java b/src/test/java/com/rabbitmq/examples/FileConsumer.java similarity index 100% rename from test/src/com/rabbitmq/examples/FileConsumer.java rename to src/test/java/com/rabbitmq/examples/FileConsumer.java diff --git a/test/src/com/rabbitmq/examples/FileProducer.java b/src/test/java/com/rabbitmq/examples/FileProducer.java similarity index 100% rename from test/src/com/rabbitmq/examples/FileProducer.java rename to src/test/java/com/rabbitmq/examples/FileProducer.java diff --git a/test/src/com/rabbitmq/examples/HelloClient.java b/src/test/java/com/rabbitmq/examples/HelloClient.java similarity index 100% rename from test/src/com/rabbitmq/examples/HelloClient.java rename to src/test/java/com/rabbitmq/examples/HelloClient.java diff --git a/test/src/com/rabbitmq/examples/HelloJsonClient.java b/src/test/java/com/rabbitmq/examples/HelloJsonClient.java similarity index 100% rename from test/src/com/rabbitmq/examples/HelloJsonClient.java rename to src/test/java/com/rabbitmq/examples/HelloJsonClient.java diff --git a/test/src/com/rabbitmq/examples/HelloJsonServer.java b/src/test/java/com/rabbitmq/examples/HelloJsonServer.java similarity index 100% rename from test/src/com/rabbitmq/examples/HelloJsonServer.java rename to src/test/java/com/rabbitmq/examples/HelloJsonServer.java diff --git a/test/src/com/rabbitmq/examples/HelloJsonService.java b/src/test/java/com/rabbitmq/examples/HelloJsonService.java similarity index 100% rename from test/src/com/rabbitmq/examples/HelloJsonService.java rename to src/test/java/com/rabbitmq/examples/HelloJsonService.java diff --git a/test/src/com/rabbitmq/examples/HelloServer.java b/src/test/java/com/rabbitmq/examples/HelloServer.java similarity index 100% rename from test/src/com/rabbitmq/examples/HelloServer.java rename to src/test/java/com/rabbitmq/examples/HelloServer.java diff --git a/test/src/com/rabbitmq/examples/LogTail.java b/src/test/java/com/rabbitmq/examples/LogTail.java similarity index 100% rename from test/src/com/rabbitmq/examples/LogTail.java rename to src/test/java/com/rabbitmq/examples/LogTail.java diff --git a/test/src/com/rabbitmq/examples/MulticastMain.java b/src/test/java/com/rabbitmq/examples/MulticastMain.java similarity index 100% rename from test/src/com/rabbitmq/examples/MulticastMain.java rename to src/test/java/com/rabbitmq/examples/MulticastMain.java diff --git a/test/src/com/rabbitmq/examples/PerQueueTTLGetter.java b/src/test/java/com/rabbitmq/examples/PerQueueTTLGetter.java similarity index 100% rename from test/src/com/rabbitmq/examples/PerQueueTTLGetter.java rename to src/test/java/com/rabbitmq/examples/PerQueueTTLGetter.java diff --git a/test/src/com/rabbitmq/examples/PerQueueTTLPublisher.java b/src/test/java/com/rabbitmq/examples/PerQueueTTLPublisher.java similarity index 100% rename from test/src/com/rabbitmq/examples/PerQueueTTLPublisher.java rename to src/test/java/com/rabbitmq/examples/PerQueueTTLPublisher.java diff --git a/test/src/com/rabbitmq/examples/PerfTest.java b/src/test/java/com/rabbitmq/examples/PerfTest.java similarity index 100% rename from test/src/com/rabbitmq/examples/PerfTest.java rename to src/test/java/com/rabbitmq/examples/PerfTest.java diff --git a/test/src/com/rabbitmq/examples/PerfTestMulti.java b/src/test/java/com/rabbitmq/examples/PerfTestMulti.java similarity index 100% rename from test/src/com/rabbitmq/examples/PerfTestMulti.java rename to src/test/java/com/rabbitmq/examples/PerfTestMulti.java diff --git a/test/src/com/rabbitmq/examples/ProducerMain.java b/src/test/java/com/rabbitmq/examples/ProducerMain.java similarity index 100% rename from test/src/com/rabbitmq/examples/ProducerMain.java rename to src/test/java/com/rabbitmq/examples/ProducerMain.java diff --git a/test/src/com/rabbitmq/examples/SendString.java b/src/test/java/com/rabbitmq/examples/SendString.java similarity index 100% rename from test/src/com/rabbitmq/examples/SendString.java rename to src/test/java/com/rabbitmq/examples/SendString.java diff --git a/test/src/com/rabbitmq/examples/SimpleConsumer.java b/src/test/java/com/rabbitmq/examples/SimpleConsumer.java similarity index 100% rename from test/src/com/rabbitmq/examples/SimpleConsumer.java rename to src/test/java/com/rabbitmq/examples/SimpleConsumer.java diff --git a/test/src/com/rabbitmq/examples/SimpleProducer.java b/src/test/java/com/rabbitmq/examples/SimpleProducer.java similarity index 100% rename from test/src/com/rabbitmq/examples/SimpleProducer.java rename to src/test/java/com/rabbitmq/examples/SimpleProducer.java diff --git a/test/src/com/rabbitmq/examples/SimpleTopicConsumer.java b/src/test/java/com/rabbitmq/examples/SimpleTopicConsumer.java similarity index 100% rename from test/src/com/rabbitmq/examples/SimpleTopicConsumer.java rename to src/test/java/com/rabbitmq/examples/SimpleTopicConsumer.java diff --git a/test/src/com/rabbitmq/examples/SimpleTopicProducer.java b/src/test/java/com/rabbitmq/examples/SimpleTopicProducer.java similarity index 100% rename from test/src/com/rabbitmq/examples/SimpleTopicProducer.java rename to src/test/java/com/rabbitmq/examples/SimpleTopicProducer.java diff --git a/test/src/com/rabbitmq/examples/SpammyTopicProducer.java b/src/test/java/com/rabbitmq/examples/SpammyTopicProducer.java similarity index 100% rename from test/src/com/rabbitmq/examples/SpammyTopicProducer.java rename to src/test/java/com/rabbitmq/examples/SpammyTopicProducer.java diff --git a/test/src/com/rabbitmq/examples/StressPersister.java b/src/test/java/com/rabbitmq/examples/StressPersister.java similarity index 100% rename from test/src/com/rabbitmq/examples/StressPersister.java rename to src/test/java/com/rabbitmq/examples/StressPersister.java diff --git a/test/src/com/rabbitmq/examples/TestMain.java b/src/test/java/com/rabbitmq/examples/TestMain.java similarity index 94% rename from test/src/com/rabbitmq/examples/TestMain.java rename to src/test/java/com/rabbitmq/examples/TestMain.java index 2cd08136c1..cd12760af7 100644 --- a/test/src/com/rabbitmq/examples/TestMain.java +++ b/src/test/java/com/rabbitmq/examples/TestMain.java @@ -42,26 +42,46 @@ import com.rabbitmq.client.impl.FrameHandler; import com.rabbitmq.client.impl.FrameHandlerFactory; import com.rabbitmq.client.impl.SocketFrameHandler; +import com.rabbitmq.client.test.AbstractRMQTestSuite; import com.rabbitmq.utility.BlockingCell; import javax.net.SocketFactory; +import org.junit.Test; +//FIXME needs to get the arguments from System.getProperty +//FIXME this test needs to be transform into Junit public class TestMain { - public static void main(String[] args) throws IOException, URISyntaxException { + //Ugly patch to initialize system properties + static{ + new AbstractRMQTestSuite(){}; + } + + static String URI = "amqp://localhost"; + + public static void main(String[] args) throws IOException, URISyntaxException { + if (args.length > 0) URI = args[0]; + new TestMain().test(); + } + + + @Test + public void test() throws IOException, URISyntaxException { // Show what version this class was compiled with, to check conformance testing Class clazz = TestMain.class; String javaVersion = System.getProperty("java.version"); System.out.println(clazz.getName() + " : javac v" + getCompilerVersion(clazz) + " on " + javaVersion); try { boolean silent = Boolean.getBoolean("silent"); - final String uri = (args.length > 0) ? args[0] : "amqp://localhost"; + final String uri = URI; runConnectionNegotiationTest(uri); final Connection conn = new ConnectionFactory(){{setUri(uri);}}.newConnection(); if (!silent) { System.out.println("Channel 0 fully open."); } - new TestMain(conn, silent).run(); + set_connection(conn); + set_silent(silent); + run(); runProducerConsumerTest(uri, 500); runProducerConsumerTest(uri, 0); @@ -218,19 +238,29 @@ public static void sleep(int ms) { } } - private final Connection _connection; + private Connection _connection; private Channel _ch1; private int _messageId = 0; - private final boolean _silent; + private boolean _silent; private volatile BlockingCell returnCell; - public TestMain(Connection connection, boolean silent) { - _connection = connection; - _silent = silent; + public TestMain() { + } +// public TestMain(Connection connection, boolean silent) { +// _connection = connection; +// _silent = silent; +// } + + public void set_connection(Connection _connection) { + this._connection = _connection; + } + + public void set_silent(boolean _silent) { + this._silent = _silent; } public Channel createChannel() throws IOException { diff --git a/test/src/com/rabbitmq/examples/TracerConcurrencyTest.java b/src/test/java/com/rabbitmq/examples/TracerConcurrencyTest.java similarity index 100% rename from test/src/com/rabbitmq/examples/TracerConcurrencyTest.java rename to src/test/java/com/rabbitmq/examples/TracerConcurrencyTest.java diff --git a/test/src/com/rabbitmq/examples/perf/Broker.java b/src/test/java/com/rabbitmq/examples/perf/Broker.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/Broker.java rename to src/test/java/com/rabbitmq/examples/perf/Broker.java diff --git a/test/src/com/rabbitmq/examples/perf/BrokerValue.java b/src/test/java/com/rabbitmq/examples/perf/BrokerValue.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/BrokerValue.java rename to src/test/java/com/rabbitmq/examples/perf/BrokerValue.java diff --git a/test/src/com/rabbitmq/examples/perf/BrokerVariable.java b/src/test/java/com/rabbitmq/examples/perf/BrokerVariable.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/BrokerVariable.java rename to src/test/java/com/rabbitmq/examples/perf/BrokerVariable.java diff --git a/test/src/com/rabbitmq/examples/perf/Consumer.java b/src/test/java/com/rabbitmq/examples/perf/Consumer.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/Consumer.java rename to src/test/java/com/rabbitmq/examples/perf/Consumer.java diff --git a/test/src/com/rabbitmq/examples/perf/MulticastParams.java b/src/test/java/com/rabbitmq/examples/perf/MulticastParams.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/MulticastParams.java rename to src/test/java/com/rabbitmq/examples/perf/MulticastParams.java diff --git a/test/src/com/rabbitmq/examples/perf/MulticastSet.java b/src/test/java/com/rabbitmq/examples/perf/MulticastSet.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/MulticastSet.java rename to src/test/java/com/rabbitmq/examples/perf/MulticastSet.java diff --git a/test/src/com/rabbitmq/examples/perf/MulticastValue.java b/src/test/java/com/rabbitmq/examples/perf/MulticastValue.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/MulticastValue.java rename to src/test/java/com/rabbitmq/examples/perf/MulticastValue.java diff --git a/test/src/com/rabbitmq/examples/perf/MulticastVariable.java b/src/test/java/com/rabbitmq/examples/perf/MulticastVariable.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/MulticastVariable.java rename to src/test/java/com/rabbitmq/examples/perf/MulticastVariable.java diff --git a/test/src/com/rabbitmq/examples/perf/PerfUtil.java b/src/test/java/com/rabbitmq/examples/perf/PerfUtil.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/PerfUtil.java rename to src/test/java/com/rabbitmq/examples/perf/PerfUtil.java diff --git a/test/src/com/rabbitmq/examples/perf/Producer.java b/src/test/java/com/rabbitmq/examples/perf/Producer.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/Producer.java rename to src/test/java/com/rabbitmq/examples/perf/Producer.java diff --git a/test/src/com/rabbitmq/examples/perf/ProducerConsumerBase.java b/src/test/java/com/rabbitmq/examples/perf/ProducerConsumerBase.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/ProducerConsumerBase.java rename to src/test/java/com/rabbitmq/examples/perf/ProducerConsumerBase.java diff --git a/test/src/com/rabbitmq/examples/perf/RateVsLatencyScenario.java b/src/test/java/com/rabbitmq/examples/perf/RateVsLatencyScenario.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/RateVsLatencyScenario.java rename to src/test/java/com/rabbitmq/examples/perf/RateVsLatencyScenario.java diff --git a/test/src/com/rabbitmq/examples/perf/Scenario.java b/src/test/java/com/rabbitmq/examples/perf/Scenario.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/Scenario.java rename to src/test/java/com/rabbitmq/examples/perf/Scenario.java diff --git a/test/src/com/rabbitmq/examples/perf/ScenarioFactory.java b/src/test/java/com/rabbitmq/examples/perf/ScenarioFactory.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/ScenarioFactory.java rename to src/test/java/com/rabbitmq/examples/perf/ScenarioFactory.java diff --git a/test/src/com/rabbitmq/examples/perf/ScenarioStats.java b/src/test/java/com/rabbitmq/examples/perf/ScenarioStats.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/ScenarioStats.java rename to src/test/java/com/rabbitmq/examples/perf/ScenarioStats.java diff --git a/test/src/com/rabbitmq/examples/perf/SimpleScenario.java b/src/test/java/com/rabbitmq/examples/perf/SimpleScenario.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/SimpleScenario.java rename to src/test/java/com/rabbitmq/examples/perf/SimpleScenario.java diff --git a/test/src/com/rabbitmq/examples/perf/SimpleScenarioStats.java b/src/test/java/com/rabbitmq/examples/perf/SimpleScenarioStats.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/SimpleScenarioStats.java rename to src/test/java/com/rabbitmq/examples/perf/SimpleScenarioStats.java diff --git a/test/src/com/rabbitmq/examples/perf/Stats.java b/src/test/java/com/rabbitmq/examples/perf/Stats.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/Stats.java rename to src/test/java/com/rabbitmq/examples/perf/Stats.java diff --git a/test/src/com/rabbitmq/examples/perf/Variable.java b/src/test/java/com/rabbitmq/examples/perf/Variable.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/Variable.java rename to src/test/java/com/rabbitmq/examples/perf/Variable.java diff --git a/test/src/com/rabbitmq/examples/perf/VariableValue.java b/src/test/java/com/rabbitmq/examples/perf/VariableValue.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/VariableValue.java rename to src/test/java/com/rabbitmq/examples/perf/VariableValue.java diff --git a/test/src/com/rabbitmq/examples/perf/VaryingScenario.java b/src/test/java/com/rabbitmq/examples/perf/VaryingScenario.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/VaryingScenario.java rename to src/test/java/com/rabbitmq/examples/perf/VaryingScenario.java diff --git a/test/src/com/rabbitmq/examples/perf/VaryingScenarioStats.java b/src/test/java/com/rabbitmq/examples/perf/VaryingScenarioStats.java similarity index 100% rename from test/src/com/rabbitmq/examples/perf/VaryingScenarioStats.java rename to src/test/java/com/rabbitmq/examples/perf/VaryingScenarioStats.java diff --git a/test/src/com/rabbitmq/tools/Host.java b/src/test/java/com/rabbitmq/tools/Host.java similarity index 96% rename from test/src/com/rabbitmq/tools/Host.java rename to src/test/java/com/rabbitmq/tools/Host.java index 2bac5cb01c..e4ea1129ee 100644 --- a/test/src/com/rabbitmq/tools/Host.java +++ b/src/test/java/com/rabbitmq/tools/Host.java @@ -17,20 +17,19 @@ package com.rabbitmq.tools; -import com.rabbitmq.client.impl.NetworkConnection; - import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; +import com.rabbitmq.client.impl.NetworkConnection; + public class Host { - private static String capture(InputStream is) + public static String capture(InputStream is) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(is)); @@ -109,17 +108,17 @@ public static Process invokeMakeTarget(String command) throws IOException { " " + command); } - private static String makeCommand() + public static String makeCommand() { return System.getProperty("make.bin"); } - private static String rabbitmqctlCommand() + public static String rabbitmqctlCommand() { return System.getProperty("rabbitmqctl.bin"); } - private static String rabbitmqTestDir() + public static String rabbitmqTestDir() { return System.getProperty("sibling.rabbitmq_test.dir"); } diff --git a/test/src/com/rabbitmq/utility/IntAllocatorTests.java b/src/test/java/com/rabbitmq/utility/IntAllocatorTests.java similarity index 100% rename from test/src/com/rabbitmq/utility/IntAllocatorTests.java rename to src/test/java/com/rabbitmq/utility/IntAllocatorTests.java diff --git a/build.properties b/src/test/resources/build.properties similarity index 86% rename from build.properties rename to src/test/resources/build.properties index 21ba4ff08a..acfbd12a33 100644 --- a/build.properties +++ b/src/test/resources/build.properties @@ -7,7 +7,7 @@ bundle.symbolicName=com.rabbitmq.client bundlor.home=bundlor dist.out=${build.out}/dist impl.version=0.0.0 -javac.debug=true +javac.debug=false javac.out=${build.out}/classes javadoc.out=build/doc/api lib.out=${build.out}/lib @@ -20,4 +20,5 @@ src.generated=${build.out}/gensrc standard.javac.source=1.6 standard.javac.target=1.6 test.javac.out=${build.out}/test/classes -test.src.home=test/src +test.src.home=${basedir}/src/test/java +maven.src.home=${basedir}/src/main/java diff --git a/config.properties b/src/test/resources/config.properties similarity index 91% rename from config.properties rename to src/test/resources/config.properties index c9851fb271..1f2f6018a1 100644 --- a/config.properties +++ b/src/test/resources/config.properties @@ -1,5 +1,6 @@ broker.hostname=localhost broker.port=5672 +broker.sslport=5671 test.main=com.rabbitmq.examples.TestMain test.producer.rate-limit=100000 test.producer.message-count=30000 diff --git a/test/src/com/rabbitmq/client/test/functional/FunctionalTests.java b/test/src/com/rabbitmq/client/test/functional/FunctionalTests.java deleted file mode 100644 index a44b44e6f6..0000000000 --- a/test/src/com/rabbitmq/client/test/functional/FunctionalTests.java +++ /dev/null @@ -1,83 +0,0 @@ -// The contents of this file are subject to the Mozilla Public License -// Version 1.1 (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.mozilla.org/MPL/ -// -// Software distributed under the License is distributed on an "AS IS" -// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -// the License for the specific language governing rights and -// limitations under the License. -// -// The Original Code is RabbitMQ. -// -// The Initial Developer of the Original Code is GoPivotal, Inc. -// Copyright (c) 2007-2016 Pivotal Software, Inc. All rights reserved. -// - - -package com.rabbitmq.client.test.functional; - -import com.rabbitmq.client.impl.WorkPoolTests; -import com.rabbitmq.client.test.Bug20004Test; - -import junit.framework.TestCase; -import junit.framework.TestSuite; - -public class FunctionalTests extends TestCase { - public static TestSuite suite() { - TestSuite suite = new TestSuite("functional"); - add(suite); - return suite; - } - - public static void add(TestSuite suite) { - suite.addTestSuite(ConnectionOpen.class); - suite.addTestSuite(Heartbeat.class); - suite.addTestSuite(Tables.class); - suite.addTestSuite(DoubleDeletion.class); - suite.addTestSuite(Routing.class); - suite.addTestSuite(BindingLifecycle.class); - suite.addTestSuite(Recover.class); - suite.addTestSuite(Reject.class); - suite.addTestSuite(Transactions.class); - suite.addTestSuite(RequeueOnConnectionClose.class); - suite.addTestSuite(RequeueOnChannelClose.class); - suite.addTestSuite(DurableOnTransient.class); - suite.addTestSuite(NoRequeueOnCancel.class); - suite.addTestSuite(Bug20004Test.class); - suite.addTestSuite(ExchangeDeleteIfUnused.class); - suite.addTestSuite(QosTests.class); - suite.addTestSuite(AlternateExchange.class); - suite.addTestSuite(ExchangeExchangeBindings.class); - suite.addTestSuite(ExchangeExchangeBindingsAutoDelete.class); - suite.addTestSuite(ExchangeDeclare.class); - suite.addTestSuite(FrameMax.class); - suite.addTestSuite(QueueLifecycle.class); - suite.addTestSuite(QueueLease.class); - suite.addTestSuite(QueueExclusivity.class); - suite.addTestSuite(QueueSizeLimit.class); - suite.addTestSuite(InvalidAcks.class); - suite.addTestSuite(InvalidAcksTx.class); - suite.addTestSuite(DefaultExchange.class); - suite.addTestSuite(UnbindAutoDeleteExchange.class); - suite.addTestSuite(Confirm.class); - suite.addTestSuite(ConsumerCancelNotification.class); - suite.addTestSuite(UnexpectedFrames.class); - suite.addTestSuite(PerQueueTTL.class); - suite.addTestSuite(PerMessageTTL.class); - suite.addTestSuite(PerQueueVsPerMessageTTL.class); - suite.addTestSuite(DeadLetterExchange.class); - suite.addTestSuite(SaslMechanisms.class); - suite.addTestSuite(UserIDHeader.class); - suite.addTestSuite(InternalExchange.class); - suite.addTestSuite(CcRoutes.class); - suite.addTestSuite(WorkPoolTests.class); - suite.addTestSuite(HeadersExchangeValidation.class); - suite.addTestSuite(ConsumerPriorities.class); - suite.addTestSuite(Policies.class); - suite.addTestSuite(ConnectionRecovery.class); - suite.addTestSuite(ExceptionHandling.class); - suite.addTestSuite(PerConsumerPrefetch.class); - suite.addTestSuite(DirectReplyTo.class); - } -} diff --git a/test/src/com/rabbitmq/client/test/server/ServerTests.java b/test/src/com/rabbitmq/client/test/server/ServerTests.java deleted file mode 100644 index 7f46efb447..0000000000 --- a/test/src/com/rabbitmq/client/test/server/ServerTests.java +++ /dev/null @@ -1,47 +0,0 @@ -// The contents of this file are subject to the Mozilla Public License -// Version 1.1 (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.mozilla.org/MPL/ -// -// Software distributed under the License is distributed on an "AS IS" -// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -// the License for the specific language governing rights and -// limitations under the License. -// -// The Original Code is RabbitMQ. -// -// The Initial Developer of the Original Code is GoPivotal, Inc. -// Copyright (c) 2007-2016 Pivotal Software, Inc. All rights reserved. -// - - -package com.rabbitmq.client.test.server; - -import junit.framework.TestCase; -import junit.framework.TestSuite; - -public class ServerTests extends TestCase { - public static TestSuite suite() { - TestSuite suite = new TestSuite("server-tests"); - add(suite); - return suite; - } - - public static void add(TestSuite suite) { - suite.addTestSuite(Permissions.class); - suite.addTestSuite(DurableBindingLifecycle.class); - suite.addTestSuite(DeadLetterExchangeDurable.class); - suite.addTestSuite(EffectVisibilityCrossNodeTest.class); - suite.addTestSuite(ExclusiveQueueDurability.class); - suite.addTestSuite(AbsentQueue.class); - suite.addTestSuite(AlternateExchangeEquivalence.class); - suite.addTestSuite(MemoryAlarms.class); - suite.addTestSuite(MessageRecovery.class); - suite.addTestSuite(Firehose.class); - suite.addTestSuite(PersistenceGuarantees.class); - suite.addTestSuite(Shutdown.class); - suite.addTestSuite(BlockedConnection.class); - suite.addTestSuite(ChannelLimitNegotiation.class); - suite.addTestSuite(LoopbackUsers.class); - } -} From a4e879a0261ccd78af7f201206e09089fa6c44e7 Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Fri, 15 Jan 2016 00:27:33 +0300 Subject: [PATCH 02/17] 3.6.0 is out --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fb712fa298..f045113d86 100644 --- a/README.md +++ b/README.md @@ -14,14 +14,14 @@ Maven artifacts are [released to Maven Central](http://search.maven.org/#search% com.rabbitmq amqp-client - 3.5.5 + 3.6.0 ``` ### Gradle ``` groovy -compile 'com.rabbitmq:amqp-client:3.5.5' +compile 'com.rabbitmq:amqp-client:3.6.0' ``` From 1023b376b28c37d758e15846763111162790ec07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-S=C3=A9bastien=20P=C3=A9dron?= Date: Fri, 15 Jan 2016 17:05:20 +0100 Subject: [PATCH 03/17] Use File.separator instead of FileSystems.getDefault().getSeparator() This fixes the build with Java 1.7. --- .../java/com/rabbitmq/client/test/AbstractRMQTestSuite.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/com/rabbitmq/client/test/AbstractRMQTestSuite.java b/src/test/java/com/rabbitmq/client/test/AbstractRMQTestSuite.java index 16614b4f7f..f01e137bc8 100644 --- a/src/test/java/com/rabbitmq/client/test/AbstractRMQTestSuite.java +++ b/src/test/java/com/rabbitmq/client/test/AbstractRMQTestSuite.java @@ -3,7 +3,6 @@ import java.io.File; import java.io.IOException; import java.net.Socket; -import java.nio.file.FileSystems; import java.util.Properties; import junit.framework.Test; @@ -86,8 +85,7 @@ public static boolean isSSLAvailable() { if (SSL_CERTS_DIR == null || hostname == null || port == null) return false; - String sslClientCertsDir = SSL_CERTS_DIR + - FileSystems.getDefault().getSeparator() + "client"; + String sslClientCertsDir = SSL_CERTS_DIR + File.separator + "client"; // If certificate is present and some server is listening on port 5671 if (new File(sslClientCertsDir).exists() && checkServerListening(hostname, Integer.parseInt(port))) { From 8087e915fa113df764c355d644ca50f47830f362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-S=C3=A9bastien=20P=C3=A9dron?= Date: Mon, 18 Jan 2016 16:35:24 +0100 Subject: [PATCH 04/17] Makefile: Fix path to `build.properties` This should fix `make distclean` and `make srcdist`. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 867f7f7f69..3e3f8d0631 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ WEB_URL=http://www.rabbitmq.com/ NEXUS_STAGE_URL=http://oss.sonatype.org/service/local/staging/deploy/maven2 MAVEN_NEXUS_VERSION=1.7 -AMQP_CODEGEN_DIR=$(shell fgrep sibling.codegen.dir build.properties | sed -e 's:sibling\.codegen\.dir=::') +AMQP_CODEGEN_DIR=$(shell fgrep sibling.codegen.dir src/test/resources/build.properties | sed -e 's:sibling\.codegen\.dir=::') MAVEN_RSYNC_DESTINATION=maven@195.224.125.254:/home/maven/rabbitmq-java-client/ From 029c21278d7a7256bbd21af84dbc61432aeaa6fb Mon Sep 17 00:00:00 2001 From: Dominik Bruhn Date: Mon, 25 Jan 2016 18:52:12 +0100 Subject: [PATCH 05/17] RpcClient: Make reply-to queue name configurable --- .../java/com/rabbitmq/client/RpcClient.java | 52 ++++++++++++++++--- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/rabbitmq/client/RpcClient.java b/src/main/java/com/rabbitmq/client/RpcClient.java index fa3dd4c6ed..a4dee5ae3d 100644 --- a/src/main/java/com/rabbitmq/client/RpcClient.java +++ b/src/main/java/com/rabbitmq/client/RpcClient.java @@ -48,6 +48,8 @@ public class RpcClient { private final String _exchange; /** Routing key to use for requests */ private final String _routingKey; + /** Queue where the server should put the reply */ + private final String _replyTo; /** timeout to use on call responses */ private final int _timeout; /** NO_TIMEOUT value must match convention on {@link BlockingCell#uninterruptibleGet(int)} */ @@ -65,17 +67,20 @@ public class RpcClient { * Construct a new RpcClient that will communicate on the given channel, sending * requests to the given exchange with the given routing key. *

- * Causes the creation of a temporary private autodelete queue. + * Causes the creation of a temporary private autodelete queue. The name of this queue can be specified. * @param channel the channel to use for communication * @param exchange the exchange to connect to * @param routingKey the routing key + * @param replyTo the queue where the server should put the reply * @param timeout milliseconds before timing out on wait for response * @throws IOException if an error is encountered */ - public RpcClient(Channel channel, String exchange, String routingKey, int timeout) throws IOException { + public RpcClient(Channel channel, String exchange, String routingKey, String replyTo, int timeout) throws + IOException { _channel = channel; _exchange = exchange; _routingKey = routingKey; + _replyTo = replyTo; if (timeout < NO_TIMEOUT) throw new IllegalArgumentException("Timeout arguument must be NO_TIMEOUT(-1) or non-negative."); _timeout = timeout; _correlationId = 0; @@ -87,7 +92,24 @@ public RpcClient(Channel channel, String exchange, String routingKey, int timeou * Construct a new RpcClient that will communicate on the given channel, sending * requests to the given exchange with the given routing key. *

- * Causes the creation of a temporary private autodelete queue. + * Causes the creation of a temporary private autodelete queue. The name of the queue can be provided + *

+ * Waits forever for responses (that is, no timeout). + * @param channel the channel to use for communication + * @param exchange the exchange to connect to + * @param routingKey the routing key + * @param replyTo the queue where the server should put the reply + * @throws IOException if an error is encountered + */ + public RpcClient(Channel channel, String exchange, String routingKey, String replyTo) throws IOException { + this(channel, exchange, routingKey, replyTo, NO_TIMEOUT); + } + + /** + * Construct a new RpcClient that will communicate on the given channel, sending + * requests to the given exchange with the given routing key. + *

+ * Causes the creation of a temporary private autodelete queue. This queue will be named "amq.rabbitmq.reply-to". *

* Waits forever for responses (that is, no timeout). * @param channel the channel to use for communication @@ -96,9 +118,27 @@ public RpcClient(Channel channel, String exchange, String routingKey, int timeou * @throws IOException if an error is encountered */ public RpcClient(Channel channel, String exchange, String routingKey) throws IOException { - this(channel, exchange, routingKey, NO_TIMEOUT); + this(channel, exchange, routingKey, "amq.rabbitmq.reply-to", NO_TIMEOUT); } + + /** + * Construct a new RpcClient that will communicate on the given channel, sending + * requests to the given exchange with the given routing key. + *

+ * Causes the creation of a temporary private autodelete queue. The name of this queue will be + * "amq.rabbitmq.reply-to". + * @param channel the channel to use for communication + * @param exchange the exchange to connect to + * @param routingKey the routing key + * @param timeout milliseconds before timing out on wait for response + * @throws IOException if an error is encountered + */ + public RpcClient(Channel channel, String exchange, String routingKey, int timeout) throws IOException { + this(channel, exchange, routingKey, "amq.rabbitmq.reply-to", timeout) + } + + /** * Private API - ensures the RpcClient is correctly open. * @throws IOException if an error is encountered @@ -152,7 +192,7 @@ public void handleDelivery(String consumerTag, } } }; - _channel.basicConsume("amq.rabbitmq.reply-to", true, consumer); + _channel.basicConsume(_replyTo, true, consumer); return consumer; } @@ -171,7 +211,7 @@ public byte[] primitiveCall(AMQP.BasicProperties props, byte[] message) _correlationId++; String replyId = "" + _correlationId; props = ((props==null) ? new AMQP.BasicProperties.Builder() : props.builder()) - .correlationId(replyId).replyTo("amq.rabbitmq.reply-to").build(); + .correlationId(replyId).replyTo(_replyTo).build(); _continuationMap.put(replyId, k); } publish(props, message); From 6d4e5bcbaaee256e80b717ce44d7b603e34d5853 Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Tue, 26 Jan 2016 08:56:34 -0800 Subject: [PATCH 06/17] Correct comment --- src/main/java/com/rabbitmq/client/RpcClient.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/rabbitmq/client/RpcClient.java b/src/main/java/com/rabbitmq/client/RpcClient.java index a4dee5ae3d..0d83ba6ef5 100644 --- a/src/main/java/com/rabbitmq/client/RpcClient.java +++ b/src/main/java/com/rabbitmq/client/RpcClient.java @@ -108,9 +108,10 @@ public RpcClient(Channel channel, String exchange, String routingKey, String rep /** * Construct a new RpcClient that will communicate on the given channel, sending * requests to the given exchange with the given routing key. - *

- * Causes the creation of a temporary private autodelete queue. This queue will be named "amq.rabbitmq.reply-to". - *

+ * + * Direct Reply-to will be used + * for response propagation. + * * Waits forever for responses (that is, no timeout). * @param channel the channel to use for communication * @param exchange the exchange to connect to From 01fce68d2047844a594b4026f38141087803faf2 Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Tue, 26 Jan 2016 08:57:41 -0800 Subject: [PATCH 07/17] Explicitly mention Direct Reply-to --- src/main/java/com/rabbitmq/client/RpcClient.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/rabbitmq/client/RpcClient.java b/src/main/java/com/rabbitmq/client/RpcClient.java index 0d83ba6ef5..b3b191a017 100644 --- a/src/main/java/com/rabbitmq/client/RpcClient.java +++ b/src/main/java/com/rabbitmq/client/RpcClient.java @@ -66,7 +66,7 @@ public class RpcClient { /** * Construct a new RpcClient that will communicate on the given channel, sending * requests to the given exchange with the given routing key. - *

+ * * Causes the creation of a temporary private autodelete queue. The name of this queue can be specified. * @param channel the channel to use for communication * @param exchange the exchange to connect to @@ -91,9 +91,11 @@ public RpcClient(Channel channel, String exchange, String routingKey, String rep /** * Construct a new RpcClient that will communicate on the given channel, sending * requests to the given exchange with the given routing key. - *

- * Causes the creation of a temporary private autodelete queue. The name of the queue can be provided - *

+ * + * Causes the creation of a temporary private autodelete queue. + * The name of the queue can be provided (only relevant for RabbitMQ servers + * that do not support Direct Reply-to. + * * Waits forever for responses (that is, no timeout). * @param channel the channel to use for communication * @param exchange the exchange to connect to From 56afacb40d414c70b4d66b10ab04fa5163946cf5 Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Tue, 26 Jan 2016 09:09:11 -0800 Subject: [PATCH 08/17] Compile --- src/main/java/com/rabbitmq/client/RpcClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rabbitmq/client/RpcClient.java b/src/main/java/com/rabbitmq/client/RpcClient.java index b3b191a017..379e36178c 100644 --- a/src/main/java/com/rabbitmq/client/RpcClient.java +++ b/src/main/java/com/rabbitmq/client/RpcClient.java @@ -138,7 +138,7 @@ public RpcClient(Channel channel, String exchange, String routingKey) throws IOE * @throws IOException if an error is encountered */ public RpcClient(Channel channel, String exchange, String routingKey, int timeout) throws IOException { - this(channel, exchange, routingKey, "amq.rabbitmq.reply-to", timeout) + this(channel, exchange, routingKey, "amq.rabbitmq.reply-to", timeout); } From f7dee0a84093de5ecff2227a355bd188e8094131 Mon Sep 17 00:00:00 2001 From: Brandon Shroyer Date: Mon, 25 Jan 2016 15:57:53 -0500 Subject: [PATCH 09/17] Overload ConnectionFactory.newConnection methods to use lists as well as arrays. * Public newConnection() methods that took arrays as inputs are still present, but wrap around list-based invocations. Addresses [issue #125](https://github.com/rabbitmq/rabbitmq-java-client/issues/125). --- build.xml | 3 +- .../rabbitmq/client/ConnectionFactory.java | 53 ++++++++++--- .../recovery/AutorecoveringConnection.java | 7 ++ .../RecoveryAwareAMQConnectionFactory.java | 74 ++++++++++--------- .../test/functional/ConnectionRecovery.java | 33 ++++++++- .../client/test/functional/FrameMax.java | 18 +---- 6 files changed, 125 insertions(+), 63 deletions(-) diff --git a/build.xml b/build.xml index 383567a549..847bfef516 100644 --- a/build.xml +++ b/build.xml @@ -87,7 +87,8 @@ - automatic connection recovery + * is enabled, the connection returned by this method will be {@link Recoverable}. Future + * reconnection attempts will pick a random accessible address from the provided list. + * + * @param addr_list a List of known broker addresses (hostname/port pairs) to try in order + * @return an interface to the connection + * @throws IOException if it encounters a problem + */ + public Connection newConnection(List

addr_list) throws IOException, TimeoutException { + return newConnection(this.sharedExecutor, addr_list); } /** @@ -658,7 +676,25 @@ public Connection newConnection(Address[] addrs) throws IOException, TimeoutExce * @throws java.io.IOException if it encounters a problem * @see Automatic Recovery */ - public Connection newConnection(ExecutorService executor, Address[] addrs) + public Connection newConnection(ExecutorService executor, Address[] addrs) throws IOException, TimeoutException { + return newConnection(executor, Arrays.asList(addrs)); + } + + /** + * Create a new broker connection, picking the first available address from + * the list. + * + * If automatic connection recovery + * is enabled, the connection returned by this method will be {@link Recoverable}. Future + * reconnection attempts will pick a random accessible address from the provided list. + * + * @param executor thread execution service for consumers on the connection + * @param addr_list a List of known broker addresses (hostname/port pairs) to try in order + * @return an interface to the connection + * @throws java.io.IOException if it encounters a problem + * @see Automatic Recovery + */ + public Connection newConnection(ExecutorService executor, List
addr_list) throws IOException, TimeoutException { // make sure we respect the provided thread factory FrameHandlerFactory fhFactory = createFrameHandlerFactory(); @@ -666,12 +702,13 @@ public Connection newConnection(ExecutorService executor, Address[] addrs) if (isAutomaticRecoveryEnabled()) { // see com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory#newConnection - AutorecoveringConnection conn = new AutorecoveringConnection(params, fhFactory, addrs); + AutorecoveringConnection conn = new AutorecoveringConnection(params, fhFactory, addr_list); + conn.init(); return conn; } else { IOException lastException = null; - for (Address addr : addrs) { + for (Address addr : addr_list) { try { FrameHandler handler = fhFactory.create(addr); AMQConnection conn = new AMQConnection(params, handler); @@ -719,9 +756,7 @@ public ConnectionParams params(ExecutorService consumerWorkServiceExecutor) { * @throws IOException if it encounters a problem */ public Connection newConnection() throws IOException, TimeoutException { - return newConnection(this.sharedExecutor, - new Address[] {new Address(getHost(), getPort())} - ); + return newConnection(this.sharedExecutor, Arrays.asList(new Address(getHost(), getPort()))); } /** @@ -736,9 +771,7 @@ public Connection newConnection() throws IOException, TimeoutException { * @throws IOException if it encounters a problem */ public Connection newConnection(ExecutorService executor) throws IOException, TimeoutException { - return newConnection(executor, - new Address[] {new Address(getHost(), getPort())} - ); + return newConnection(executor, Arrays.asList(new Address(getHost(), getPort()))); } @Override public ConnectionFactory clone(){ diff --git a/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java index 145b3aa14c..9fc5dd0da0 100644 --- a/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java +++ b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java @@ -82,6 +82,13 @@ public AutorecoveringConnection(ConnectionParams params, FrameHandlerFactory f, this.channels = new ConcurrentHashMap(); } + public AutorecoveringConnection(ConnectionParams params, FrameHandlerFactory f, List
addr_list) { + this.cf = new RecoveryAwareAMQConnectionFactory(params, f, addr_list); + this.params = params; + + this.channels = new ConcurrentHashMap(); + } + /** * Private API. * @throws IOException diff --git a/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java index 4910d1ff5e..99fc17bf55 100644 --- a/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java +++ b/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java @@ -13,42 +13,46 @@ import java.util.concurrent.TimeoutException; public class RecoveryAwareAMQConnectionFactory { - private final ConnectionParams params; - private final FrameHandlerFactory factory; - private final Address[] addrs; - - public RecoveryAwareAMQConnectionFactory(ConnectionParams params, FrameHandlerFactory factory, Address[] addrs) { - this.params = params; - this.factory = factory; - this.addrs = addrs; - } + private final ConnectionParams params; + private final FrameHandlerFactory factory; + private final List
addrs; - /** - * @return an interface to the connection - * @throws java.io.IOException if it encounters a problem - */ - RecoveryAwareAMQConnection newConnection() throws IOException, TimeoutException { - IOException lastException = null; - Address[] shuffled = shuffle(addrs); - for (Address addr : shuffled) { - try { - FrameHandler frameHandler = factory.create(addr); - RecoveryAwareAMQConnection conn = new RecoveryAwareAMQConnection(params, frameHandler); - conn.start(); - return conn; - } catch (IOException e) { - lastException = e; - } - } - - throw (lastException != null) ? lastException : new IOException("failed to connect"); - } + public RecoveryAwareAMQConnectionFactory(ConnectionParams params, FrameHandlerFactory factory, Address[] addrs) { + this.params = params; + this.factory = factory; + this.addrs = Arrays.asList(addrs); + } + + public RecoveryAwareAMQConnectionFactory(ConnectionParams params, FrameHandlerFactory factory, List
addrs){ + this.params = params; + this.factory = factory; + this.addrs = addrs; + } + /** + * @return an interface to the connection + * @throws java.io.IOException if it encounters a problem + */ + RecoveryAwareAMQConnection newConnection() throws IOException, TimeoutException { + IOException lastException = null; + List
shuffled = shuffle(addrs); - private Address[] shuffle(Address[] addrs) { - List
list = new ArrayList
(Arrays.asList(addrs)); - Collections.shuffle(list); - Address[] result = new Address[addrs.length]; - list.toArray(result); - return result; + for (Address addr : shuffled) { + try { + FrameHandler frameHandler = factory.create(addr); + RecoveryAwareAMQConnection conn = new RecoveryAwareAMQConnection(params, frameHandler); + conn.start(); + return conn; + } catch (IOException e) { + lastException = e; + } } + + throw (lastException != null) ? lastException : new IOException("failed to connect"); + } + + private List
shuffle(List
addrs) { + List
list = new ArrayList
(addrs); + Collections.shuffle(list); + return list; + } } diff --git a/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java b/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java index c310c81c1b..68dcb4f1a2 100644 --- a/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java +++ b/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java @@ -11,6 +11,7 @@ import com.rabbitmq.tools.Host; import java.io.IOException; +import java.util.Arrays; import java.util.List; import java.util.ArrayList; import java.util.UUID; @@ -35,7 +36,7 @@ public void testConnectionRecoveryWithServerRestart() throws IOException, Interr assertTrue(connection.isOpen()); } - public void testConnectionRecoveryWithMultipleAddresses() + public void testConnectionRecoveryWithArrayOfAddresses() throws IOException, InterruptedException, TimeoutException { final Address[] addresses = {new Address("127.0.0.1"), new Address("127.0.0.1", 5672)}; AutorecoveringConnection c = newRecoveringConnection(addresses); @@ -49,6 +50,21 @@ public void testConnectionRecoveryWithMultipleAddresses() } + public void testConnectionRecoveryWithListOfAddresses() + throws IOException, InterruptedException, TimeoutException { + + final List
addresses = Arrays.asList(new Address("127.0.0.1"), new Address("127.0.0.1", 5672)); + + AutorecoveringConnection c = newRecoveringConnection(addresses); + try { + assertTrue(c.isOpen()); + closeAndWaitForRecovery(c); + assertTrue(c.isOpen()); + } finally { + c.abort(); + } + } + public void testConnectionRecoveryWithDisabledTopologyRecovery() throws IOException, InterruptedException, TimeoutException { AutorecoveringConnection c = newRecoveringConnection(true); @@ -705,17 +721,28 @@ private AutorecoveringConnection newRecoveringConnection(boolean disableTopology return (AutorecoveringConnection) cf.newConnection(); } + private AutorecoveringConnection newRecoveringConnection(boolean disableTopologyRecovery, Address[] addresses) + throws IOException, TimeoutException { + ConnectionFactory cf = buildConnectionFactoryWithRecoveryEnabled(disableTopologyRecovery); + return (AutorecoveringConnection) cf.newConnection(addresses); + } + private AutorecoveringConnection newRecoveringConnection(Address[] addresses) throws IOException, TimeoutException { - return newRecoveringConnection(false, addresses); + return newRecoveringConnection(false, Arrays.asList(addresses)); } - private AutorecoveringConnection newRecoveringConnection(boolean disableTopologyRecovery, Address[] addresses) + private AutorecoveringConnection newRecoveringConnection(boolean disableTopologyRecovery, List
addresses) throws IOException, TimeoutException { ConnectionFactory cf = buildConnectionFactoryWithRecoveryEnabled(disableTopologyRecovery); return (AutorecoveringConnection) cf.newConnection(addresses); } + private AutorecoveringConnection newRecoveringConnection(List
addresses) + throws IOException, TimeoutException { + return newRecoveringConnection(false, addresses); + } + private ConnectionFactory buildConnectionFactoryWithRecoveryEnabled(boolean disableTopologyRecovery) { ConnectionFactory cf = new ConnectionFactory(); cf.setNetworkRecoveryInterval(RECOVERY_INTERVAL); diff --git a/src/test/java/com/rabbitmq/client/test/functional/FrameMax.java b/src/test/java/com/rabbitmq/client/test/functional/FrameMax.java index d6f31fc5db..9a388a93ca 100644 --- a/src/test/java/com/rabbitmq/client/test/functional/FrameMax.java +++ b/src/test/java/com/rabbitmq/client/test/functional/FrameMax.java @@ -17,26 +17,16 @@ package com.rabbitmq.client.test.functional; -import com.rabbitmq.client.impl.ConnectionParams; +import com.rabbitmq.client.*; +import com.rabbitmq.client.impl.*; import com.rabbitmq.client.test.BrokerTestCase; import java.io.IOException; import java.net.Socket; +import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeoutException; -import com.rabbitmq.client.Address; -import com.rabbitmq.client.AMQP; -import com.rabbitmq.client.Connection; -import com.rabbitmq.client.ConnectionFactory; -import com.rabbitmq.client.GetResponse; -import com.rabbitmq.client.impl.AMQConnection; -import com.rabbitmq.client.impl.AMQCommand; -import com.rabbitmq.client.impl.Frame; -import com.rabbitmq.client.impl.FrameHandler; -import com.rabbitmq.client.impl.LongStringHelper; -import com.rabbitmq.client.impl.SocketFrameHandler; - public class FrameMax extends BrokerTestCase { /* This value for FrameMax is larger than the minimum and less * than what Rabbit suggests. */ @@ -147,7 +137,7 @@ public GenerousAMQConnection(ConnectionFactory factory, private static class GenerousConnectionFactory extends ConnectionFactory { - @Override public Connection newConnection(ExecutorService executor, Address[] addrs) + @Override public Connection newConnection(ExecutorService executor, List
addrs) throws IOException, TimeoutException { IOException lastException = null; for (Address addr : addrs) { From 0b6229e8a306e3d3891027913bd08681b314ad06 Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Wed, 27 Jan 2016 00:56:14 +0300 Subject: [PATCH 10/17] Cosmetics --- .../com/rabbitmq/client/ConnectionFactory.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/rabbitmq/client/ConnectionFactory.java b/src/main/java/com/rabbitmq/client/ConnectionFactory.java index e6f3588180..70010ba343 100644 --- a/src/main/java/com/rabbitmq/client/ConnectionFactory.java +++ b/src/main/java/com/rabbitmq/client/ConnectionFactory.java @@ -654,12 +654,12 @@ public Connection newConnection(Address[] addrs) throws IOException, TimeoutExce * is enabled, the connection returned by this method will be {@link Recoverable}. Future * reconnection attempts will pick a random accessible address from the provided list. * - * @param addr_list a List of known broker addresses (hostname/port pairs) to try in order + * @param addrs a List of known broker addresses (hostname/port pairs) to try in order * @return an interface to the connection * @throws IOException if it encounters a problem */ - public Connection newConnection(List
addr_list) throws IOException, TimeoutException { - return newConnection(this.sharedExecutor, addr_list); + public Connection newConnection(List
addrs) throws IOException, TimeoutException { + return newConnection(this.sharedExecutor, addrs); } /** @@ -689,12 +689,12 @@ public Connection newConnection(ExecutorService executor, Address[] addrs) throw * reconnection attempts will pick a random accessible address from the provided list. * * @param executor thread execution service for consumers on the connection - * @param addr_list a List of known broker addresses (hostname/port pairs) to try in order + * @param addrs a List of known broker addrs (hostname/port pairs) to try in order * @return an interface to the connection * @throws java.io.IOException if it encounters a problem * @see Automatic Recovery */ - public Connection newConnection(ExecutorService executor, List
addr_list) + public Connection newConnection(ExecutorService executor, List
addrs) throws IOException, TimeoutException { // make sure we respect the provided thread factory FrameHandlerFactory fhFactory = createFrameHandlerFactory(); @@ -702,13 +702,13 @@ public Connection newConnection(ExecutorService executor, List
addr_lis if (isAutomaticRecoveryEnabled()) { // see com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory#newConnection - AutorecoveringConnection conn = new AutorecoveringConnection(params, fhFactory, addr_list); + AutorecoveringConnection conn = new AutorecoveringConnection(params, fhFactory, addrs); conn.init(); return conn; } else { IOException lastException = null; - for (Address addr : addr_list) { + for (Address addr : addrs) { try { FrameHandler handler = fhFactory.create(addr); AMQConnection conn = new AMQConnection(params, handler); From 5a2a5fda27568bcdc8445fb51d43f9ff33b2a960 Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Wed, 27 Jan 2016 01:05:23 +0300 Subject: [PATCH 11/17] Cosmetics --- .../impl/recovery/AutorecoveringConnection.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java index 9fc5dd0da0..32e875fce4 100644 --- a/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java +++ b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java @@ -74,16 +74,9 @@ public class AutorecoveringConnection implements Connection, Recoverable, Networ // This lock guards the manuallyClosed flag and the delegate connection. Guarding these two ensures that a new connection can never // be created after application code has initiated shutdown. private final Object recoveryLock = new Object(); - - public AutorecoveringConnection(ConnectionParams params, FrameHandlerFactory f, Address[] addrs) { - this.cf = new RecoveryAwareAMQConnectionFactory(params, f, addrs); - this.params = params; - this.channels = new ConcurrentHashMap(); - } - - public AutorecoveringConnection(ConnectionParams params, FrameHandlerFactory f, List
addr_list) { - this.cf = new RecoveryAwareAMQConnectionFactory(params, f, addr_list); + public AutorecoveringConnection(ConnectionParams params, FrameHandlerFactory f, List
addrs) { + this.cf = new RecoveryAwareAMQConnectionFactory(params, f, addrs); this.params = params; this.channels = new ConcurrentHashMap(); From 5edfb82674e9a9d68e7872cdc1a810f7489939b8 Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Wed, 27 Jan 2016 01:07:51 +0300 Subject: [PATCH 12/17] Cosmetics, remove unused code * The Address[] constructor is not used by user apps. --- .../RecoveryAwareAMQConnectionFactory.java | 74 +++++++++---------- 1 file changed, 34 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java b/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java index 99fc17bf55..54bda056bb 100644 --- a/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java +++ b/src/main/java/com/rabbitmq/client/impl/recovery/RecoveryAwareAMQConnectionFactory.java @@ -7,52 +7,46 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.concurrent.TimeoutException; public class RecoveryAwareAMQConnectionFactory { - private final ConnectionParams params; - private final FrameHandlerFactory factory; - private final List
addrs; - - public RecoveryAwareAMQConnectionFactory(ConnectionParams params, FrameHandlerFactory factory, Address[] addrs) { - this.params = params; - this.factory = factory; - this.addrs = Arrays.asList(addrs); - } - - public RecoveryAwareAMQConnectionFactory(ConnectionParams params, FrameHandlerFactory factory, List
addrs){ - this.params = params; - this.factory = factory; - this.addrs = addrs; - } - /** - * @return an interface to the connection - * @throws java.io.IOException if it encounters a problem - */ - RecoveryAwareAMQConnection newConnection() throws IOException, TimeoutException { - IOException lastException = null; - List
shuffled = shuffle(addrs); - - for (Address addr : shuffled) { - try { - FrameHandler frameHandler = factory.create(addr); - RecoveryAwareAMQConnection conn = new RecoveryAwareAMQConnection(params, frameHandler); - conn.start(); - return conn; - } catch (IOException e) { - lastException = e; - } + private final ConnectionParams params; + private final FrameHandlerFactory factory; + private final List
addrs; + + public RecoveryAwareAMQConnectionFactory(ConnectionParams params, FrameHandlerFactory factory, List
addrs) { + this.params = params; + this.factory = factory; + this.addrs = addrs; } - throw (lastException != null) ? lastException : new IOException("failed to connect"); - } + /** + * @return an interface to the connection + * @throws java.io.IOException if it encounters a problem + */ + RecoveryAwareAMQConnection newConnection() throws IOException, TimeoutException { + IOException lastException = null; + List
shuffled = shuffle(addrs); + + for (Address addr : shuffled) { + try { + FrameHandler frameHandler = factory.create(addr); + RecoveryAwareAMQConnection conn = new RecoveryAwareAMQConnection(params, frameHandler); + conn.start(); + return conn; + } catch (IOException e) { + lastException = e; + } + } + + throw (lastException != null) ? lastException : new IOException("failed to connect"); + } - private List
shuffle(List
addrs) { - List
list = new ArrayList
(addrs); - Collections.shuffle(list); - return list; - } + private List
shuffle(List
addrs) { + List
list = new ArrayList
(addrs); + Collections.shuffle(list); + return list; + } } From a975c3ecaf71d744e610a8cb552fce160b67c19f Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Wed, 27 Jan 2016 01:08:22 +0300 Subject: [PATCH 13/17] Specifically invoke the Address[] version Otherwise we test a test helper method. --- .../client/test/functional/ConnectionRecovery.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java b/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java index 68dcb4f1a2..efb944a347 100644 --- a/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java +++ b/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java @@ -721,15 +721,11 @@ private AutorecoveringConnection newRecoveringConnection(boolean disableTopology return (AutorecoveringConnection) cf.newConnection(); } - private AutorecoveringConnection newRecoveringConnection(boolean disableTopologyRecovery, Address[] addresses) - throws IOException, TimeoutException { - ConnectionFactory cf = buildConnectionFactoryWithRecoveryEnabled(disableTopologyRecovery); - return (AutorecoveringConnection) cf.newConnection(addresses); - } - private AutorecoveringConnection newRecoveringConnection(Address[] addresses) throws IOException, TimeoutException { - return newRecoveringConnection(false, Arrays.asList(addresses)); + ConnectionFactory cf = buildConnectionFactoryWithRecoveryEnabled(false); + // specifically use the Address[] overload + return (AutorecoveringConnection) cf.newConnection(addresses); } private AutorecoveringConnection newRecoveringConnection(boolean disableTopologyRecovery, List
addresses) From 75695731f279a4312d692b274c27f44179ce702d Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Wed, 27 Jan 2016 01:37:45 +0300 Subject: [PATCH 14/17] Cosmetics --- src/main/java/com/rabbitmq/client/ConnectionFactory.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/rabbitmq/client/ConnectionFactory.java b/src/main/java/com/rabbitmq/client/ConnectionFactory.java index 70010ba343..191175180b 100644 --- a/src/main/java/com/rabbitmq/client/ConnectionFactory.java +++ b/src/main/java/com/rabbitmq/client/ConnectionFactory.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; +import java.util.Collections; import java.util.Map; import java.util.concurrent.*; import java.util.List; @@ -756,7 +757,7 @@ public ConnectionParams params(ExecutorService consumerWorkServiceExecutor) { * @throws IOException if it encounters a problem */ public Connection newConnection() throws IOException, TimeoutException { - return newConnection(this.sharedExecutor, Arrays.asList(new Address(getHost(), getPort()))); + return newConnection(this.sharedExecutor, Collections.singletonList(new Address(getHost(), getPort()))); } /** @@ -771,7 +772,7 @@ public Connection newConnection() throws IOException, TimeoutException { * @throws IOException if it encounters a problem */ public Connection newConnection(ExecutorService executor) throws IOException, TimeoutException { - return newConnection(executor, Arrays.asList(new Address(getHost(), getPort()))); + return newConnection(executor, Collections.singletonList(new Address(getHost(), getPort()))); } @Override public ConnectionFactory clone(){ From 484414ebd425e06dca269f173e64b19d9b8890bc Mon Sep 17 00:00:00 2001 From: Karl Andersson Date: Sat, 6 Feb 2016 16:31:45 +0100 Subject: [PATCH 15/17] Added Closable-inteface to Connection-class for future try-with-resource support in JDK7 (automatic on compile with JDK7) --- src/main/java/com/rabbitmq/client/Connection.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/rabbitmq/client/Connection.java b/src/main/java/com/rabbitmq/client/Connection.java index e733ce957a..203ae7d73d 100644 --- a/src/main/java/com/rabbitmq/client/Connection.java +++ b/src/main/java/com/rabbitmq/client/Connection.java @@ -16,6 +16,7 @@ package com.rabbitmq.client; +import java.io.Closeable; import java.io.IOException; import java.net.InetAddress; import java.util.Map; @@ -50,7 +51,7 @@ * Current implementations are thread-safe for code at the client API level, * and in fact thread-safe internally except for code within RPC calls. */ -public interface Connection extends ShutdownNotifier { // rename to AMQPConnection later, this is a temporary name +public interface Connection extends ShutdownNotifier, Closeable { // rename to AMQPConnection later, this is a temporary name /** * Retrieve the host. * @return the hostname of the peer we're connected to. From 53567ce631b593c50c6ccd47c708e0f0b9afb73b Mon Sep 17 00:00:00 2001 From: Zac Farrell Date: Fri, 19 Feb 2016 12:19:43 -0800 Subject: [PATCH 16/17] Enhance RpcClient: Provide access to msg metadata This provides a simple way to get at the other parameters from the Consumer's `handleDelivery` method (e.g. consumerTag, envelope, properties). It is backwards compatible, and only those using the new interface `responseCall` will have access to the additional data. --- .../java/com/rabbitmq/client/RpcClient.java | 70 +++++++++++++++++-- 1 file changed, 64 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/rabbitmq/client/RpcClient.java b/src/main/java/com/rabbitmq/client/RpcClient.java index 379e36178c..230fec93b7 100644 --- a/src/main/java/com/rabbitmq/client/RpcClient.java +++ b/src/main/java/com/rabbitmq/client/RpcClient.java @@ -191,7 +191,7 @@ public void handleDelivery(String consumerTag, String replyId = properties.getCorrelationId(); BlockingCell blocker = _continuationMap.get(replyId); _continuationMap.remove(replyId); - blocker.set(body); + blocker.set(new Response(consumerTag, envelope, properties, body)); } } }; @@ -205,16 +205,15 @@ public void publish(AMQP.BasicProperties props, byte[] message) _channel.basicPublish(_exchange, _routingKey, props, message); } - public byte[] primitiveCall(AMQP.BasicProperties props, byte[] message) - throws IOException, ShutdownSignalException, TimeoutException - { + public Response doCall(AMQP.BasicProperties props, byte[] message) + throws IOException, ShutdownSignalException, TimeoutException { checkConsumer(); BlockingCell k = new BlockingCell(); synchronized (_continuationMap) { _correlationId++; String replyId = "" + _correlationId; props = ((props==null) ? new AMQP.BasicProperties.Builder() : props.builder()) - .correlationId(replyId).replyTo(_replyTo).build(); + .correlationId(replyId).replyTo(_replyTo).build(); _continuationMap.put(replyId, k); } publish(props, message); @@ -229,10 +228,16 @@ public byte[] primitiveCall(AMQP.BasicProperties props, byte[] message) wrapper.initCause(sig); throw wrapper; } else { - return (byte[]) reply; + return (Response) reply; } } + public byte[] primitiveCall(AMQP.BasicProperties props, byte[] message) + throws IOException, ShutdownSignalException, TimeoutException + { + return doCall(props, message).getBody(); + } + /** * Perform a simple byte-array-based RPC roundtrip. * @param message the byte array request message to send @@ -246,6 +251,21 @@ public byte[] primitiveCall(byte[] message) return primitiveCall(null, message); } + /** + * Perform a simple byte-array-based RPC roundtrip + * + * Useful if you need to get at more than just the body of the message + * + * @param message the byte array request message to send + * @return The response object is an envelope that contains all of the data provided to the `handleDelivery` consumer + * @throws ShutdownSignalException if the connection dies during our wait + * @throws IOException if an error is encountered + * @throws TimeoutException if a response is not received within the configured timeout + */ + public Response responseCall(byte[] message) throws IOException, ShutdownSignalException, TimeoutException { + return doCall(null, message); + } + /** * Perform a simple string-based RPC roundtrip. * @param message the string request message to send @@ -368,5 +388,43 @@ public int getCorrelationId() { public Consumer getConsumer() { return _consumer; } + + /** + * The response object is an envelope that contains all of the data provided to the `handleDelivery` consumer + */ + public static class Response { + protected String consumerTag; + protected Envelope envelope; + protected AMQP.BasicProperties properties; + protected byte[] body; + + public Response() { + } + + public Response( + final String consumerTag, final Envelope envelope, final AMQP.BasicProperties properties, + final byte[] body) { + this.consumerTag = consumerTag; + this.envelope = envelope; + this.properties = properties; + this.body = body; + } + + public String getConsumerTag() { + return consumerTag; + } + + public Envelope getEnvelope() { + return envelope; + } + + public AMQP.BasicProperties getProperties() { + return properties; + } + + public byte[] getBody() { + return body; + } + } } From 7bb9443fbea68758ebffeae1570bd8c712c9352a Mon Sep 17 00:00:00 2001 From: nick Date: Tue, 8 Mar 2016 16:21:23 -0800 Subject: [PATCH 17/17] PR 132: inform recovery listeners when recovery has started in case an app wants to log something / set a flag / fire an event when recovery has begun but before it has completed. --- .../java/com/rabbitmq/client/RecoveryListener.java | 1 + .../client/impl/recovery/AutorecoveringChannel.java | 11 +++++++++-- .../impl/recovery/AutorecoveringConnection.java | 13 +++++++++++-- .../client/test/functional/ConnectionRecovery.java | 8 ++++++++ 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/rabbitmq/client/RecoveryListener.java b/src/main/java/com/rabbitmq/client/RecoveryListener.java index 88b0ece2e5..756075a55a 100644 --- a/src/main/java/com/rabbitmq/client/RecoveryListener.java +++ b/src/main/java/com/rabbitmq/client/RecoveryListener.java @@ -8,4 +8,5 @@ */ public interface RecoveryListener { public void handleRecovery(Recoverable recoverable); + public void handleRecoveryStarted(Recoverable recoverable); } diff --git a/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringChannel.java b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringChannel.java index a07c78f5f5..5faeefe604 100644 --- a/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringChannel.java +++ b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringChannel.java @@ -489,12 +489,13 @@ public void automaticallyRecover(AutorecoveringConnection connection, Connection this.delegate = (RecoveryAwareChannelN) connDelegate.createChannel(this.getChannelNumber()); this.delegate.inheritOffsetFrom(defunctChannel); + this.notifyRecoveryListenersStarted(); this.recoverShutdownListeners(); this.recoverReturnListeners(); this.recoverConfirmListeners(); this.recoverFlowListeners(); this.recoverState(); - this.notifyRecoveryListeners(); + this.notifyRecoveryListenersComplete(); } private void recoverShutdownListeners() { @@ -538,12 +539,18 @@ private void recoverState() throws IOException { } } - private void notifyRecoveryListeners() { + private void notifyRecoveryListenersComplete() { for (RecoveryListener f : this.recoveryListeners) { f.handleRecovery(this); } } + private void notifyRecoveryListenersStarted() { + for (RecoveryListener f : this.recoveryListeners) { + f.handleRecoveryStarted(this); + } + } + private void recordQueueBinding(String queue, String exchange, String routingKey, Map arguments) { this.connection.recordQueueBinding(this, queue, exchange, routingKey, arguments); } diff --git a/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java index b559625fb5..aba249d5d4 100644 --- a/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java +++ b/src/main/java/com/rabbitmq/client/impl/recovery/AutorecoveringConnection.java @@ -441,6 +441,9 @@ public void removeConsumerRecoveryListener(ConsumerRecoveryListener listener) { synchronized private void beginAutomaticRecovery() throws InterruptedException, IOException, TopologyRecoveryException { Thread.sleep(this.params.getNetworkRecoveryInterval()); + + this.notifyRecoveryListenersStarted(); + if (!this.recoverConnection()) return; @@ -452,7 +455,7 @@ synchronized private void beginAutomaticRecovery() throws InterruptedException, this.recoverConsumers(); } - this.notifyRecoveryListeners(); + this.notifyRecoveryListenersComplete(); } private void recoverShutdownListeners() { @@ -506,12 +509,18 @@ private void recoverChannels() { } } - private void notifyRecoveryListeners() { + private void notifyRecoveryListenersComplete() { for (RecoveryListener f : this.recoveryListeners) { f.handleRecovery(this); } } + private void notifyRecoveryListenersStarted() { + for (RecoveryListener f : this.recoveryListeners) { + f.handleRecoveryStarted(this); + } + } + private void recoverEntities() throws TopologyRecoveryException { // The recovery sequence is the following: // diff --git a/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java b/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java index efb944a347..546d7efc6f 100644 --- a/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java +++ b/src/test/java/com/rabbitmq/client/test/functional/ConnectionRecovery.java @@ -550,10 +550,14 @@ public void testQueueRecoveryWithManyQueues() throws IOException, InterruptedExc public void testChannelRecoveryCallback() throws IOException, InterruptedException { final CountDownLatch latch = new CountDownLatch(2); + final CountDownLatch startLatch = new CountDownLatch(2); final RecoveryListener listener = new RecoveryListener() { public void handleRecovery(Recoverable recoverable) { latch.countDown(); } + public void handleRecoveryStarted(Recoverable recoverable) { + startLatch.countDown(); + } }; AutorecoveringChannel ch1 = (AutorecoveringChannel) connection.createChannel(); ch1.addRecoveryListener(listener); @@ -566,6 +570,7 @@ public void handleRecovery(Recoverable recoverable) { expectChannelRecovery(ch1); expectChannelRecovery(ch2); wait(latch); + wait(startLatch); } public void testBasicAckAfterChannelRecovery() throws IOException, InterruptedException, TimeoutException { @@ -670,6 +675,9 @@ private CountDownLatch prepareForRecovery(Connection conn) { public void handleRecovery(Recoverable recoverable) { latch.countDown(); } + public void handleRecoveryStarted(Recoverable recoverable) { + // No-op + } }); return latch; }