From d8988a8acd974f58545bacb52496bb9dcc9fae6d Mon Sep 17 00:00:00 2001 From: Aidan Skinner Date: Wed, 23 Apr 2008 23:50:34 +0000 Subject: Delete stuff that's just going to get synced from M2.x git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@651111 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/dotnet/Qpid.Client.Tests/App.config | 13 - .../BrokerDetails/BrokerDetailsTest.cs | 65 --- .../Channel/ChannelMessageCreationTests.cs | 79 ---- .../Qpid.Client.Tests/Channel/ChannelQueueTest.cs | 237 ----------- .../Common/BaseMessagingTestFixture.cs | 85 ---- .../HeadersExchange/HeadersExchangeTest.cs | 268 ------------- .../Messages/MessageFactoryRegistryTests.cs | 114 ------ .../MultiConsumer/ProducerMultiConsumer.cs | 127 ------ .../Qpid.Client.Tests/Properties/AssemblyInfo.cs | 53 --- .../Qpid.Client.Tests/Qpid.Client.Tests.csproj | 114 ------ .../Qpid.Client.Tests/Qpid.Common.DLL.config | 5 - .../Security/CallbackHandlerRegistryTests.cs | 66 --- .../SimpleConsumer/TestSyncConsumer.cs | 127 ------ .../Qpid.Client.Tests/connection/ConnectionTest.cs | 72 ---- .../connection/SslConnectionTest.cs | 63 --- qpid/dotnet/Qpid.Client.Tests/default.build | 46 --- .../Qpid.Client.Tests/failover/FailoverTest.cs | 257 ------------ .../Qpid.Client.Tests/failover/FailoverTxTest.cs | 253 ------------ .../interop/InteropClientTestCase.cs | 67 ---- .../interop/TestCases/TestCase1DummyRun.cs | 69 ---- .../interop/TestCases/TestCase2BasicP2P.cs | 185 --------- .../interop/TestCases/TestCase3BasicPubSub.cs | 214 ---------- .../dotnet/Qpid.Client.Tests/interop/TestClient.cs | 340 ---------------- .../Qpid.Client.Tests/interop/TopicListener.cs | 211 ---------- .../Qpid.Client.Tests/interop/TopicPublisher.cs | 188 --------- .../Qpid.Client.Tests/lib/nunit/nunit-licence.txt | 23 -- .../lib/nunit/nunit.framework.dll | Bin 45056 -> 0 bytes qpid/dotnet/Qpid.Client.Tests/log4net.config | 62 --- .../requestreply1/ServiceProvidingClient.cs | 150 ------- .../requestreply1/ServiceRequestingClient.cs | 182 --------- .../undeliverable/UndeliverableTest.cs | 128 ------ .../Qpid.Client.Tests/url/ConnectionUrlTest.cs | 446 --------------------- 32 files changed, 4309 deletions(-) delete mode 100644 qpid/dotnet/Qpid.Client.Tests/App.config delete mode 100644 qpid/dotnet/Qpid.Client.Tests/BrokerDetails/BrokerDetailsTest.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/Channel/ChannelMessageCreationTests.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/Channel/ChannelQueueTest.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/Common/BaseMessagingTestFixture.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/HeadersExchange/HeadersExchangeTest.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/Messages/MessageFactoryRegistryTests.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/MultiConsumer/ProducerMultiConsumer.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/Properties/AssemblyInfo.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/Qpid.Client.Tests.csproj delete mode 100644 qpid/dotnet/Qpid.Client.Tests/Qpid.Common.DLL.config delete mode 100644 qpid/dotnet/Qpid.Client.Tests/Security/CallbackHandlerRegistryTests.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/SimpleConsumer/TestSyncConsumer.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/connection/ConnectionTest.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/connection/SslConnectionTest.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/default.build delete mode 100644 qpid/dotnet/Qpid.Client.Tests/failover/FailoverTest.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/failover/FailoverTxTest.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/interop/InteropClientTestCase.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase1DummyRun.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase2BasicP2P.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase3BasicPubSub.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/interop/TestClient.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/interop/TopicListener.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/interop/TopicPublisher.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/lib/nunit/nunit-licence.txt delete mode 100644 qpid/dotnet/Qpid.Client.Tests/lib/nunit/nunit.framework.dll delete mode 100644 qpid/dotnet/Qpid.Client.Tests/log4net.config delete mode 100644 qpid/dotnet/Qpid.Client.Tests/requestreply1/ServiceProvidingClient.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/requestreply1/ServiceRequestingClient.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/undeliverable/UndeliverableTest.cs delete mode 100644 qpid/dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs (limited to 'qpid/dotnet/Qpid.Client.Tests') diff --git a/qpid/dotnet/Qpid.Client.Tests/App.config b/qpid/dotnet/Qpid.Client.Tests/App.config deleted file mode 100644 index fd7c412a57..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/App.config +++ /dev/null @@ -1,13 +0,0 @@ - - - - -
- - - - - - - - diff --git a/qpid/dotnet/Qpid.Client.Tests/BrokerDetails/BrokerDetailsTest.cs b/qpid/dotnet/Qpid.Client.Tests/BrokerDetails/BrokerDetailsTest.cs deleted file mode 100644 index 8e8d8ced3b..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/BrokerDetails/BrokerDetailsTest.cs +++ /dev/null @@ -1,65 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.Net; -using NUnit.Framework; -using Apache.Qpid.Client.Qms; - -namespace Apache.Qpid.Client.Tests.BrokerDetails -{ - [TestFixture] - public class BrokerDetailsTest - { - - [Test] - public void ValidateBrokerInfoEqualsMethod() - { - AmqBrokerInfo broker = new AmqBrokerInfo("amqp", "localhost", 5672, true); - AmqBrokerInfo broker1 = new AmqBrokerInfo("Amqp", "localhost", 5672, true); - - Assert.IsTrue(broker.Equals(broker1),"The two AmqBrokerInfo objects are not equals"); - Console.WriteLine(string.Format("The object broker: {0} and broker1: {1} are equals", broker, broker1)); - } - - [Test] - public void ValidateBrokerInfoWithDifferentSSL() - { - AmqBrokerInfo broker = new AmqBrokerInfo("amqp", "localhost", 5672, true); - AmqBrokerInfo broker1 = new AmqBrokerInfo("amqp", "localhost", 5672, false); - - Assert.IsFalse(broker.Equals(broker1), "The two AmqBrokerInfo objects are equals"); - Console.WriteLine(string.Format("The object broker: {0} and broker1: {1} are not equals", broker, broker1)); - } - - [Test] - public void ValidateBrokerInfoFromToString() - { - String url = "tcp://localhost:5672?timeout='200',immediatedelivery='true'"; - - AmqBrokerInfo broker = new AmqBrokerInfo(url); - AmqBrokerInfo broker1 = new AmqBrokerInfo(broker.ToString()); - - Assert.AreEqual(broker.GetOption("timeout"), broker1.GetOption("timeout")); - Assert.AreEqual(broker.GetOption("immediatedelivery"), broker1.GetOption("immediatedelivery")); - } - - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/Channel/ChannelMessageCreationTests.cs b/qpid/dotnet/Qpid.Client.Tests/Channel/ChannelMessageCreationTests.cs deleted file mode 100644 index c27aa9a503..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/Channel/ChannelMessageCreationTests.cs +++ /dev/null @@ -1,79 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -using System; - -using log4net; -using NUnit.Framework; -using Apache.Qpid.Client; -using Apache.Qpid.Client.Message; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests.Channel -{ - /// - /// Test that channels can create messages correctly - /// - [TestFixture] - public class ChannelMessageCreationTests - { - [Test] - public void CanCreateTextMessage() - { - IChannel channel = AmqChannel.CreateDisconnectedChannel(); - ITextMessage msg = channel.CreateTextMessage(); - Assert.IsNotNull(msg); - } - [Test] - public void CanCreateTextMessageWithContent() - { - IChannel channel = AmqChannel.CreateDisconnectedChannel(); - const string CONTENT = "1234567890"; - ITextMessage msg = channel.CreateTextMessage(CONTENT); - Assert.IsNotNull(msg); - Assert.AreEqual(CONTENT, msg.Text); - } - [Test] - public void CanCreateBytesMessage() - { - IChannel channel = AmqChannel.CreateDisconnectedChannel(); - IBytesMessage msg = channel.CreateBytesMessage(); - Assert.IsNotNull(msg); - } - [Test] - public void CanCreateMessage() - { - IChannel channel = AmqChannel.CreateDisconnectedChannel(); - IMessage msg = channel.CreateMessage(); - Assert.IsNotNull(msg); - } - [Test] - public void CanCreateMessageFromMimeType() - { - IChannel channel = AmqChannel.CreateDisconnectedChannel(); - IMessage msg = channel.CreateMessage("text/xml"); - Assert.IsNotNull(msg); - Assert.IsInstanceOfType(typeof(ITextMessage), msg); - } - } -} // namespace Apache.Qpid.Client.Tests.Channel - - diff --git a/qpid/dotnet/Qpid.Client.Tests/Channel/ChannelQueueTest.cs b/qpid/dotnet/Qpid.Client.Tests/Channel/ChannelQueueTest.cs deleted file mode 100644 index a9a39f87f8..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/Channel/ChannelQueueTest.cs +++ /dev/null @@ -1,237 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.Net; -using System.Threading; -using log4net; -using Apache.Qpid.Client.Qms; -using Apache.Qpid.Messaging; -using NUnit.Framework; - -namespace Apache.Qpid.Client.Tests.Channel -{ - /// - /// Test the queue methods - /// - [TestFixture] - public class ChannelQueueTest - { - - private static ILog _logger = LogManager.GetLogger(typeof(ChannelQueueTest)); - - /// The default AMQ connection URL to use for tests. - const string DEFAULT_URI = "amqp://guest:guest@default/test?brokerlist='tcp://localhost:5672'"; - const string _routingKey = "ServiceQ1"; - - private ExceptionListenerDelegate _exceptionDelegate; - private AutoResetEvent _evt = new AutoResetEvent(false); - private Exception _lastException = null; - - private IMessageConsumer _consumer; - private IMessagePublisher _publisher; - private IChannel _channel; - private IConnection _connection; - - private string _queueName; - - [SetUp] - public virtual void Init() - { - _logger.Info("public virtual void Init(): called"); - - // Create a connection to the broker. - IConnectionInfo connectionInfo = QpidConnectionInfo.FromUrl(DEFAULT_URI); - _connection = new AMQConnection(connectionInfo); - _logger.Info("Starting..."); - - // Register this to listen for exceptions on the test connection. - _exceptionDelegate = new ExceptionListenerDelegate(OnException); - _connection.ExceptionListener += _exceptionDelegate; - - // Establish a session on the broker. - _channel = _connection.CreateChannel(false, AcknowledgeMode.AutoAcknowledge, 1); - - // Create a durable, non-temporary, non-exclusive queue. - _queueName = _channel.GenerateUniqueName(); - _channel.DeclareQueue(_queueName, true, false, false); - - _channel.Bind(_queueName, ExchangeNameDefaults.TOPIC, _routingKey); - - // Clear the most recent message and exception. - _lastException = null; - } - - [TearDown] - public virtual void ShutDown() - { - _logger.Info("public virtual void Shutdown(): called"); - - if (_connection != null) - { - _logger.Info("Disposing connection."); - _connection.Dispose(); - _logger.Info("Connection disposed."); - } - } - - [Test] - public void DeleteUsedQueue() - { - // Create the consumer - _consumer = _channel.CreateConsumerBuilder(_queueName) - .WithPrefetchLow(100) - .Create(); - _logger.Info("Consumer was created..."); - - // delete the queue - _channel.DeleteQueue(_queueName, false, true, true); - _logger.InfoFormat("Queue {0} was delete", _queueName); - - Assert.IsNull(_lastException); - } - - [Test] - public void DeleteUnusedQueue() - { - // delete the queue - _channel.DeleteQueue(_queueName, true, true, true); - _logger.InfoFormat("Queue {0} was delete", _queueName); - - Assert.IsNull(_lastException); - } - - [Test] - public void DeleteNonEmptyQueue() - { - // Create the publisher - _publisher = _channel.CreatePublisherBuilder() - .WithExchangeName(ExchangeNameDefaults.TOPIC) - .WithRoutingKey(_routingKey) - .Create(); - _logger.Info("Publisher created..."); - SendTestMessage("Message 1"); - - try - { - _channel.DeleteQueue(_queueName, true, false, true); - } - catch (AMQException) - { - Assert.Fail("The test fails"); - } - } - - [Test] - public void DeleteEmptyQueue() - { - // Create the publisher - _publisher = _channel.CreatePublisherBuilder() - .WithExchangeName(ExchangeNameDefaults.TOPIC) - .WithRoutingKey(_routingKey) - .Create(); - _logger.Info("Publisher created..."); - - // delete an empty queue with ifEmpty = true - _channel.DeleteQueue(_queueName, false, true, true); - - Assert.IsNull(_lastException); - } - - [Test] - public void DeleteQueueWithResponse() - { - // Create the publisher - _publisher = _channel.CreatePublisherBuilder() - .WithExchangeName(ExchangeNameDefaults.TOPIC) - .WithRoutingKey(_routingKey) - .Create(); - _logger.Info("Publisher created..."); - - SendTestMessage("Message 1"); - SendTestMessage("Message 2"); - - // delete the queue, the server must respond - _channel.DeleteQueue(_queueName, false, false, false); - } - - [Test] - public void PurgeQueueWithResponse() - { - _publisher = _channel.CreatePublisherBuilder() - .WithExchangeName(ExchangeNameDefaults.TOPIC) - .WithRoutingKey(_routingKey) - .Create(); - _logger.Info("Pubisher created"); - - SendTestMessage("Message 1"); - SendTestMessage("Message 2"); - - _channel.PurgeQueue(_queueName, false); - } - - [Test] - public void PurgeQueueWithOutResponse() - { - _publisher = _channel.CreatePublisherBuilder() - .WithExchangeName(ExchangeNameDefaults.TOPIC) - .WithRoutingKey(_routingKey) - .Create(); - _logger.Info("Pubisher created"); - - SendTestMessage("Message 1"); - SendTestMessage("Message 2"); - - _channel.PurgeQueue(_queueName, true); - } - - - /// - /// Callback method to handle any exceptions raised by the test connection. /// - /// The connection exception. - public void OnException(Exception e) - { - // Preserve the most recent exception in case test cases need to examine it. - _lastException = e; - - // Notify any waiting threads that an exception event has occurred. - _evt.Set(); - } - - /// - /// Sends the specified message to the test publisher, and confirms that it was received by the test consumer or not - /// depending on whether or not the message should be received by the consumer. - /// - /// Any exceptions raised by the connection will cause an Assert failure exception to be raised. - /// - /// - /// The message to send. - private void SendTestMessage(string msg) - { - // create the IMessage object - IMessage msgSend = _channel.CreateTextMessage(msg); - - // send the message - _publisher.Send(msgSend); - _logger.InfoFormat("The messages \"{0}\" was sent", msg); - } - - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/Common/BaseMessagingTestFixture.cs b/qpid/dotnet/Qpid.Client.Tests/Common/BaseMessagingTestFixture.cs deleted file mode 100644 index 9f91958028..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/Common/BaseMessagingTestFixture.cs +++ /dev/null @@ -1,85 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using log4net; -using NUnit.Framework; -using Apache.Qpid.Messaging; -using Apache.Qpid.Client.Qms; - -namespace Apache.Qpid.Client.Tests -{ - /// - /// Provides a basis for writing Unit tests that communicate with an AMQ protocol broker. By default it creates a connection - /// to a message broker running on localhost on the standard AMQ port, 5672, using guest:guest login credentials, on the default exchange, - /// 'test' queue. - /// - public class BaseMessagingTestFixture - { - private static ILog _logger = LogManager.GetLogger(typeof(BaseMessagingTestFixture)); - - /// The default AMQ connection URL to use for tests. - const string connectionUri = "amqp://guest:guest@default/test?brokerlist='tcp://localhost:5672'"; - - /// Holds the test connection. - protected IConnection _connection; - - /// Holds the test channel. - protected IChannel _channel; - - /// - /// Creates the test connection and channel. - /// - [SetUp] - public virtual void Init() - { - _logger.Info("public virtual void Init(): called"); - - try - { - IConnectionInfo connectionInfo = QpidConnectionInfo.FromUrl(connectionUri); - _connection = new AMQConnection(connectionInfo); - _channel = _connection.CreateChannel(false, AcknowledgeMode.NoAcknowledge, 500, 300); - } - catch (QpidException e) - { - _logger.Error("Error initialisng test fixture: " + e, e); - throw e; - } - } - - /// - /// Disposes the test connection. This is called manually because the connection is a field so dispose will not be automatically - /// called on it. - /// - [TearDown] - public virtual void Shutdown() - { - _logger.Info("public virtual void Shutdown(): called"); - - if (_connection != null) - { - _logger.Info("Disposing connection."); - _connection.Dispose(); - _logger.Info("Connection disposed."); - } - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/HeadersExchange/HeadersExchangeTest.cs b/qpid/dotnet/Qpid.Client.Tests/HeadersExchange/HeadersExchangeTest.cs deleted file mode 100644 index f3ce695de8..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/HeadersExchange/HeadersExchangeTest.cs +++ /dev/null @@ -1,268 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.Threading; -using log4net; -using NUnit.Framework; -using Apache.Qpid.Framing; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests -{ - /// - /// Sets up a producer/consumer pair to send test messages through a header exchange. The header exchange matching pattern is tested to - /// verify that it correctly matches or filters out messages based on their headers. - /// - /// Check that a message matching all fields of a headers exchange is passed by the exchange. - /// Check that a message containing values for empty fields of a headers exchange is passed by the exchange. - /// Check that a message matching only some fields of a headers exhcnage is not passed by the exchange. - /// Check that a message with additional fields to the correct matching fields of a headers exchange is passed by the exchange. - /// - /// - /// Remove the HeadersMatchingProducer class and rename this to HeaderExchangeTest. The producer and consumer are implemented - /// in a single test class to make running this as part of an automated test suite possible. - /// - /// Consider not using a delegate to callback the OnMessage method. Easier to just call receive on the consumer but using the - /// callback does demonstrate how to do so. - [TestFixture] - public class HeadersExchangeTest : BaseMessagingTestFixture - { - private static ILog _logger = LogManager.GetLogger(typeof(HeadersExchangeTest)); - - /// Holds the default test timeout for broker communications before tests give up. - private static readonly int TIMEOUT = 1000; - - /// Holds the name of the headers exchange to create to send test messages on. - private string _exchangeName = "ServiceQ1"; - - /// Used to preserve the most recent exception in case test cases need to examine it. - private Exception _lastException = null; - - /// Used to preserve the most recent message from the test consumer. - private IMessage _lastMessage = null; - - /// The test consumer to get messages from the broker with. - private IMessageConsumer _consumer; - - private IMessagePublisher _publisher; - - private AutoResetEvent _evt = new AutoResetEvent(false); - - private MessageReceivedDelegate _msgRecDelegate; - private ExceptionListenerDelegate _exceptionDelegate; - - [SetUp] - public override void Init() - { - // Ensure that the base init method is called. It establishes a connection with the broker. - base.Init(); - - _logger.Info("Starting..."); - _logger.Info("Exchange name is '" + _exchangeName + "'..."); - - // Register this to listen for exceptions on the test connection. - _exceptionDelegate = new ExceptionListenerDelegate(OnException); - _connection.ExceptionListener += _exceptionDelegate; - - // Declare a new headers exchange with the name of the test service. - _channel.DeclareExchange(_exchangeName, ExchangeClassConstants.HEADERS); - - // Create a non-durable, temporary (aka auto-delete), exclusive queue. - string queueName = _channel.GenerateUniqueName(); - _channel.DeclareQueue(queueName, false, true, true); - - // Bind the queue to the new headers exchange, setting up some header patterns for the exchange to match. - _channel.Bind(queueName, _exchangeName, null, CreatePatternAsFieldTable()); - - // Create a test consumer to consume messages from the test exchange. - _consumer = _channel.CreateConsumerBuilder(queueName) - .WithPrefetchLow(100) - .WithPrefetchHigh(500) - .WithNoLocal(false) // make sure we get our own messages - .Create(); - - // Register this to listen for messages on the consumer. - _msgRecDelegate = new MessageReceivedDelegate(OnMessage); - _consumer.OnMessage += _msgRecDelegate; - - // Clear the most recent message and exception. - _lastException = null; - _lastMessage = null; - - _publisher = _channel.CreatePublisherBuilder() - .WithExchangeName(_exchangeName) - .WithMandatory(true) - .Create(); - - _publisher.DeliveryMode = DeliveryMode.NonPersistent; - - // Start all channel - _connection.Start(); - } - - /// - /// Deregisters the on message delegate before closing the connection. - /// - [TearDown] - public override void Shutdown() - { - _logger.Info("public void Shutdown(): called"); - - //_consumer.OnMessage -= _msgRecDelegate; - //_connection.ExceptionListener -= _exceptionDelegate; - - _connection.Stop(); - - base.Shutdown(); - } - - /// - /// Callback method that is passed any messages received on the test channel. - /// - /// - /// The received message. - public void OnMessage(IMessage message) - { - _logger.Debug(string.Format("message.Type = {0}", message.GetType())); - _logger.Debug("Got message '" + message + "'"); - - // Preserve the most recent exception so that test cases can examine it. - _lastMessage = message; - - // Notify any waiting threads that a message has been received. - _evt.Set(); - } - - /// Callback method to handle any exceptions raised by the test connection. - /// - /// The connection exception. - public void OnException(Exception e) - { - // Preserve the most recent exception in case test cases need to examine it. - _lastException = e; - - // Notify any waiting threads that an exception event has occurred. - _evt.Set(); - } - - /// Check that a message matching all fields of a headers exchange is passed by the exchange. - [Test] - public void TestMatchAll() - { - IMessage msg = _channel.CreateTextMessage("matches match2=''"); - msg.Headers["match1"] = "foo"; - msg.Headers["match2"] = ""; - - // Use the SendTestMessage helper method to verify that the message was sent and received. - SendTestMessage(msg, true); - } - - /// Check that a message containing values for empty fields of a headers exchange is passed by the exchange. - [Test] - public void TestMatchEmptyMatchesAnything() - { - // Send a test message that matches the headers exchange. - IMessage msg = _channel.CreateTextMessage("matches match1='foo' and match2='bar'"); - msg.Headers["match1"] = "foo"; - msg.Headers["match2"] = "bar"; - - // Use the SendTestMessage helper method to verify that the message was sent and received. - SendTestMessage(msg, true); - } - - /// Check that a message matching only some fields of a headers exchange is not passed by the exchange. - [Test] - public void TestMatchOneFails() - { - IMessage msg = _channel.CreateTextMessage("not match - only match1"); - msg.Headers["match1"] = "foo"; - - // Use the SendTestMessage helper method to verify that the message was sent and not received. - SendTestMessage(msg, false); - } - - /// - /// Check that a message with additional fields to the correct matching fields of a headers exchange is passed by - /// the exchange. - /// - [Test] - public void TestMatchExtraFields() - { - IMessage msg = _channel.CreateTextMessage("matches - extra headers"); - msg.Headers["match1"] = "foo"; - msg.Headers["match2"] = "bar"; - msg.Headers["match3"] = "not required"; - - // Use the SendTestMessage helper method to verify that the message was sent and received. - SendTestMessage(msg, true); - } - - /// - /// Sends the specified message to the test publisher, and confirms that it was received by the test consumer or not - /// depending on whether or not the message should be received by the consumer. - /// - /// Any exceptions raised by the connection will cause an Assert failure exception to be raised. - /// - /// - /// The message to send. - /// A flag to indicate whether or not the message should be received by the consumer. - private void SendTestMessage(IMessage msgSend, bool shouldPass) - { - _publisher.Send(msgSend); - _evt.WaitOne(TIMEOUT, true); - - // Check that an exception other than not routable was raised in which case re-raise it as a test error. - if (_lastException != null && !(_lastException.InnerException is AMQUndeliveredException)) - { - Assert.Fail("Exception {0} was raised by the broker connection.", _lastException); - } - // Check that a message was returned if the test is expecting the message to pass. - else if (shouldPass) - { - Assert.IsNotNull(_lastMessage, "Did not get a matching message from the headers exchange."); - } - // Check that a not routable exception was raised if the test is expecting the message to fail. - else if (_lastException != null && _lastException.InnerException is AMQUndeliveredException) - { - Assert.IsNull(_lastMessage, "Message could not be routed so consumer should not have received it."); - } - // The broker did not respond within the test timeout so fail the test. - else - { - Assert.Fail("The test timed out without a response from the broker."); - } - } - - /// Returns a field table containing patterns to match the test header exchange against. - /// - /// A field table containing test patterns. - private FieldTable CreatePatternAsFieldTable() - { - FieldTable matchTable = new FieldTable(); - - matchTable["match1"] = "foo"; - matchTable["match2"] = ""; - matchTable["x-match"] = "all"; - - return matchTable; - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/Messages/MessageFactoryRegistryTests.cs b/qpid/dotnet/Qpid.Client.Tests/Messages/MessageFactoryRegistryTests.cs deleted file mode 100644 index 1211196541..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/Messages/MessageFactoryRegistryTests.cs +++ /dev/null @@ -1,114 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -using System; - -using log4net; -using NUnit.Framework; -using Apache.Qpid.Messaging; -using Apache.Qpid.Client.Message; - -namespace Apache.Qpid.Client.Tests.Messages -{ - /// - /// Ensure a factory creates messages correctly - /// - [TestFixture] - public class MessageFactoryRegistryTests - { - const string TEXT_PLAIN = "text/plain"; - const string TEXT_XML = "text/xml"; - const string OCTET_STREAM = "application/octet-stream"; - - /// - /// Check default registry can create text/plain messages - /// - [Test] - public void CanCreateTextPlain() - { - MessageFactoryRegistry registry = - MessageFactoryRegistry.NewDefaultRegistry(); - - IMessage message = registry.CreateMessage(TEXT_PLAIN); - Assert.IsNotNull(message); - Assert.AreEqual(TEXT_PLAIN, message.ContentType); - Assert.IsInstanceOfType(typeof(QpidTextMessage), message); - } - /// - /// Check default registry can create text/xml messages - /// - [Test] - public void CanCreateTextXml() - { - MessageFactoryRegistry registry = - MessageFactoryRegistry.NewDefaultRegistry(); - - IMessage message = registry.CreateMessage(TEXT_XML); - Assert.IsNotNull(message); - Assert.AreEqual(TEXT_XML, message.ContentType); - Assert.IsInstanceOfType(typeof(QpidTextMessage), message); - } - /// - /// Check default registry can create application/octet-stream messages - /// - [Test] - public void CanCreateBinary() - { - MessageFactoryRegistry registry = - MessageFactoryRegistry.NewDefaultRegistry(); - - IMessage message = registry.CreateMessage(OCTET_STREAM); - Assert.IsNotNull(message); - Assert.AreEqual(OCTET_STREAM, message.ContentType); - Assert.IsInstanceOfType(typeof(QpidBytesMessage), message); - } - /// - /// Check default registry can create messages for unknown types - /// - [Test] - public void CanCreateUnknownType() - { - MessageFactoryRegistry registry = - MessageFactoryRegistry.NewDefaultRegistry(); - - const string OTHER = "application/unknown"; - IMessage message = registry.CreateMessage(OTHER); - Assert.IsNotNull(message); - Assert.AreEqual(OTHER, message.ContentType); - Assert.IsInstanceOfType(typeof(QpidBytesMessage), message); - } - /// - /// Check that text messages default to UTF-8 encoding - /// - [Test] - public void TextMessagesDefaultToUTF8Encoding() - { - MessageFactoryRegistry registry = - MessageFactoryRegistry.NewDefaultRegistry(); - - IMessage message = registry.CreateMessage(TEXT_PLAIN); - Assert.AreEqual("utf-8", message.ContentEncoding.ToLower()); - } - - } -} // namespace Apache.Qpid.Client.Tests.Messages - - diff --git a/qpid/dotnet/Qpid.Client.Tests/MultiConsumer/ProducerMultiConsumer.cs b/qpid/dotnet/Qpid.Client.Tests/MultiConsumer/ProducerMultiConsumer.cs deleted file mode 100644 index dc3b436a41..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/MultiConsumer/ProducerMultiConsumer.cs +++ /dev/null @@ -1,127 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.Text; -using System.Threading; -using log4net; -using NUnit.Framework; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests -{ - [TestFixture] - public class ProducerMultiConsumer : BaseMessagingTestFixture - { - private static readonly ILog _logger = LogManager.GetLogger(typeof(ProducerMultiConsumer)); - - private string _commandQueueName = "ServiceQ1"; - - private const int CONSUMER_COUNT = 5; - - private const int MESSAGE_COUNT = 1000; - - private const string MESSAGE_DATA_BYTES = "****jfd ghljgl hjvhlj cvhvjf ldhfsj lhfdsjf hldsjfk hdslkfj hsdflk "; - - AutoResetEvent _finishedEvent = new AutoResetEvent(false); - - private static String GetData(int size) - { - StringBuilder buf = new StringBuilder(size); - int count = 0; - while (count < size + MESSAGE_DATA_BYTES.Length) - { - buf.Append(MESSAGE_DATA_BYTES); - count += MESSAGE_DATA_BYTES.Length; - } - if (count < size) - { - buf.Append(MESSAGE_DATA_BYTES, 0, size - count); - } - - return buf.ToString(); - } - - private IMessagePublisher _publisher; - - private IMessageConsumer[] _consumers = new IMessageConsumer[CONSUMER_COUNT]; - - private int _messageReceivedCount = 0; - - [SetUp] - public override void Init() - { - base.Init(); - _publisher = _channel.CreatePublisherBuilder() - .WithRoutingKey(_commandQueueName) - .WithExchangeName(ExchangeNameDefaults.TOPIC) - .Create(); - - _publisher.DisableMessageTimestamp = true; - _publisher.DeliveryMode = DeliveryMode.NonPersistent; - - for (int i = 0; i < CONSUMER_COUNT; i++) - { - string queueName = _channel.GenerateUniqueName(); - _channel.DeclareQueue(queueName, false, true, true); - - _channel.Bind(queueName, ExchangeNameDefaults.TOPIC, _commandQueueName); - - _consumers[i] = _channel.CreateConsumerBuilder(queueName) - .WithPrefetchLow(100).Create(); - _consumers[i].OnMessage = new MessageReceivedDelegate(OnMessage); - } - _connection.Start(); - } - - public void OnMessage(IMessage m) - { - int newCount = Interlocked.Increment(ref _messageReceivedCount); - if (newCount % 1000 == 0) _logger.Info("Received count=" + newCount); - if (newCount == (MESSAGE_COUNT * CONSUMER_COUNT)) - { - _logger.Info("All messages received"); - _finishedEvent.Set(); - } - if ( newCount % 100 == 0 ) - System.Diagnostics.Debug.WriteLine(((ITextMessage)m).Text); - } - - [Test] - public void RunTest() - { - for (int i = 0; i < MESSAGE_COUNT; i++) - { - ITextMessage msg; - try - { - msg = _channel.CreateTextMessage(GetData(512 + 8*i)); - } - catch (Exception e) - { - _logger.Error("Error creating message: " + e, e); - break; - } - _publisher.Send(msg); - } - _finishedEvent.WaitOne(); - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/Properties/AssemblyInfo.cs b/qpid/dotnet/Qpid.Client.Tests/Properties/AssemblyInfo.cs deleted file mode 100644 index b3648391c1..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,53 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System.Reflection; -using System.Runtime.InteropServices; -using log4net.Config; -[assembly: XmlConfigurator(ConfigFile="log4net.config")] - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Apache.Qpid.Client.Tests")] -[assembly: AssemblyDescription("Test Suite for Qpid Clients")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Apache Qpid")] -[assembly: AssemblyProduct("Apache.Qpid.Client.Tests")] -[assembly: AssemblyCopyright("Copyright (c) 2006 The Apache Software Foundation")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("7ebdea21-1352-4673-b66e-fdc0beff461f")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -[assembly: AssemblyVersion("0.5.*")] diff --git a/qpid/dotnet/Qpid.Client.Tests/Qpid.Client.Tests.csproj b/qpid/dotnet/Qpid.Client.Tests/Qpid.Client.Tests.csproj deleted file mode 100644 index a1a34d480d..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/Qpid.Client.Tests.csproj +++ /dev/null @@ -1,114 +0,0 @@ - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {BA1B0032-4CE6-40DD-A2DC-119F0FFA0A1D} - Library - Properties - Apache.Qpid.Client.Tests - Apache.Qpid.Client.Tests - - - - - true - full - false - ..\bin\net-2.0\debug\ - DEBUG;TRACE - prompt - 4 - true - - - pdbonly - true - ..\bin\net-2.0\release\ - TRACE - prompt - 4 - - - - False - ..\Qpid.Common\lib\log4net\log4net.dll - - - False - lib\nunit\nunit.framework.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {44384DF2-B0A4-4580-BDBC-EE4BAA87D995} - Qpid.Buffer - - - {6688F826-C58E-4C1B-AA1F-22AFAB4B7D07} - Qpid.Messaging - - - {68987C05-3768-452C-A6FC-6BA1D372852F} - Qpid.Client - - - {77064C42-24D2-4CEB-9EA2-0EF481A43205} - Qpid.Common - - - {1465B0EE-6452-42A6-AB73-B2F9EABEEE75} - Qpid.Sasl - - - - - PreserveNewest - - - - - - PreserveNewest - - - - - diff --git a/qpid/dotnet/Qpid.Client.Tests/Qpid.Common.DLL.config b/qpid/dotnet/Qpid.Client.Tests/Qpid.Common.DLL.config deleted file mode 100644 index e1300549d7..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/Qpid.Common.DLL.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/qpid/dotnet/Qpid.Client.Tests/Security/CallbackHandlerRegistryTests.cs b/qpid/dotnet/Qpid.Client.Tests/Security/CallbackHandlerRegistryTests.cs deleted file mode 100644 index 1345511cbf..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/Security/CallbackHandlerRegistryTests.cs +++ /dev/null @@ -1,66 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using NUnit.Framework; -using Apache.Qpid.Client.Security; - - -namespace Apache.Qpid.Client.Tests.Security -{ - [TestFixture] - public class CallbackRegistryHandlerTests - { - [Test] - public void ParsesConfiguration() - { - CallbackHandlerRegistry registry = CallbackHandlerRegistry.Instance; - Assert.AreEqual(4, registry.Mechanisms.Length); - Assert.Contains("TEST", registry.Mechanisms); - - Type handlerType = registry.GetCallbackHandler("TEST"); - Assert.IsNotNull(handlerType); - Assert.AreEqual(typeof(TestCallbackHandler), handlerType); - } - - [Test] - public void MechanimsInOrder() - { - CallbackHandlerRegistry registry = CallbackHandlerRegistry.Instance; - Assert.AreEqual(4, registry.Mechanisms.Length); - Assert.AreEqual("TEST", registry.Mechanisms[0]); - Assert.AreEqual("EXTERNAL", registry.Mechanisms[1]); - Assert.AreEqual("CRAM-MD5", registry.Mechanisms[2]); - Assert.AreEqual("PLAIN", registry.Mechanisms[3]); - } - } // class CallbackRegistryHandlerTests - - public class TestCallbackHandler : IAMQCallbackHandler - { - public void Initialize(Qpid.Client.Protocol.AMQProtocolSession session) - { - } - public void Handle(Qpid.Sasl.ISaslCallback[] callbacks) - { - } - - } // class TestCallbackHandler - -} // namespace Apache.Qpid.Client.Tests.Connection diff --git a/qpid/dotnet/Qpid.Client.Tests/SimpleConsumer/TestSyncConsumer.cs b/qpid/dotnet/Qpid.Client.Tests/SimpleConsumer/TestSyncConsumer.cs deleted file mode 100644 index f299812989..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/SimpleConsumer/TestSyncConsumer.cs +++ /dev/null @@ -1,127 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.Text; -using System.Threading; -using log4net; -using NUnit.Framework; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests -{ - [TestFixture] - public class TestSyncConsumer : BaseMessagingTestFixture - { - private static readonly ILog _logger = LogManager.GetLogger(typeof(TestSyncConsumer)); - - private string _commandQueueName = "ServiceQ1"; - private const int MESSAGE_COUNT = 1000; - private const string MESSAGE_DATA_BYTES = "jfd ghljgl hjvhlj cvhvjf ldhfsj lhfdsjf hldsjfk hdslkfj hsdflk "; - - private static String GetData(int size) - { - StringBuilder buf = new StringBuilder(size); - int count = 0; - while ( count < size + MESSAGE_DATA_BYTES.Length ) - { - buf.Append(MESSAGE_DATA_BYTES); - count += MESSAGE_DATA_BYTES.Length; - } - if ( count < size ) - { - buf.Append(MESSAGE_DATA_BYTES, 0, size - count); - } - - return buf.ToString(); - } - - private IMessageConsumer _consumer; - private IMessagePublisher _publisher; - - [SetUp] - public override void Init() - { - base.Init(); - _publisher = _channel.CreatePublisherBuilder() - .WithRoutingKey(_commandQueueName) - .WithExchangeName(ExchangeNameDefaults.TOPIC) - .Create(); - - _publisher.DisableMessageTimestamp = true; - _publisher.DeliveryMode = DeliveryMode.NonPersistent; - - string queueName = _channel.GenerateUniqueName(); - _channel.DeclareQueue(queueName, false, true, true); - - _channel.Bind(queueName, ExchangeNameDefaults.TOPIC, _commandQueueName); - - _consumer = _channel.CreateConsumerBuilder(queueName) - .WithPrefetchLow(100).Create(); - _connection.Start(); - } - - [Test] - public void ReceiveWithInfiniteWait() - { - // send all messages - for ( int i = 0; i < MESSAGE_COUNT; i++ ) - { - ITextMessage msg; - try - { - msg = _channel.CreateTextMessage(GetData(512 + 8 * i)); - } catch ( Exception e ) - { - _logger.Error("Error creating message: " + e, e); - break; - } - _publisher.Send(msg); - } - - _logger.Debug("All messages sent"); - // receive all messages - for ( int i = 0; i < MESSAGE_COUNT; i++ ) - { - try - { - IMessage msg = _consumer.Receive(); - Assert.IsNotNull(msg); - } catch ( Exception e ) - { - _logger.Error("Error receiving message: " + e, e); - Assert.Fail(e.ToString()); - } - } - } - - [Test] - public void ReceiveWithTimeout() - { - ITextMessage msg = _channel.CreateTextMessage(GetData(512 + 8)); - _publisher.Send(msg); - - IMessage recvMsg = _consumer.Receive(); - Assert.IsNotNull(recvMsg); - // empty queue, should timeout - Assert.IsNull(_consumer.Receive(1000)); - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/connection/ConnectionTest.cs b/qpid/dotnet/Qpid.Client.Tests/connection/ConnectionTest.cs deleted file mode 100644 index 165da62828..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/connection/ConnectionTest.cs +++ /dev/null @@ -1,72 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using NUnit.Framework; -using Apache.Qpid.Client.Qms; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests.Connection -{ - [TestFixture] - public class ConnectionTest - { - private AmqBrokerInfo _broker = - new AmqBrokerInfo("amqp", "localhost", 5672, false); - - [Test] - public void SimpleConnection() - { - IConnectionInfo connectionInfo = new QpidConnectionInfo(); - connectionInfo.VirtualHost = "test"; - connectionInfo.AddBrokerInfo(_broker); - using (IConnection connection = new AMQConnection(connectionInfo)) - { - Console.WriteLine("connection = " + connection); - } - } - - [Test] - [ExpectedException(typeof(AMQAuthenticationException))] - public void PasswordFailureConnection() - { - IConnectionInfo connectionInfo = new QpidConnectionInfo(); - connectionInfo.VirtualHost = "test"; - connectionInfo.Password = "rubbish"; - connectionInfo.AddBrokerInfo(_broker); - - using (IConnection connection = new AMQConnection(connectionInfo)) - { - Console.WriteLine("connection = " + connection); - // wrong - Assert.Fail("Authentication succeeded but should've failed"); - } - } - - [Test] - [ExpectedException(typeof(AMQConnectionException))] - public void ConnectionFailure() - { - string url = "amqp://guest:guest@clientid/testpath?brokerlist='tcp://localhost:5673?retries='0''"; - new AMQConnection(QpidConnectionInfo.FromUrl(url)); - Assert.Fail("Connection should not be established"); - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/connection/SslConnectionTest.cs b/qpid/dotnet/Qpid.Client.Tests/connection/SslConnectionTest.cs deleted file mode 100644 index e1c61f9059..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/connection/SslConnectionTest.cs +++ /dev/null @@ -1,63 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.IO; -using System.Reflection; -using System.Security.Cryptography.X509Certificates; -using NUnit.Framework; -using Apache.Qpid.Client.Qms; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests.Connection -{ - /// - /// Test SSL/TLS connections to the broker - /// - [TestFixture, Category("SSL")] - public class SslConnectionTest - { - /// - /// Make a test TLS connection to the broker - /// without using client-certificates - /// - [Test] - public void DoSslConnection() - { - // because for tests we don't usually trust the server certificate - // we need here to tell the client to ignore certificate validation errors - SslOptions sslConfig = new SslOptions(null, true); - - MakeBrokerConnection(sslConfig); - } - - private static void MakeBrokerConnection(SslOptions options) - { - IConnectionInfo connectionInfo = new QpidConnectionInfo(); - connectionInfo.VirtualHost = "test"; - connectionInfo.AddBrokerInfo(new AmqBrokerInfo("amqp", "localhost", 8672, options)); - - using ( IConnection connection = new AMQConnection(connectionInfo) ) - { - Console.WriteLine("connection = " + connection); - } - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/default.build b/qpid/dotnet/Qpid.Client.Tests/default.build deleted file mode 100644 index e7fb81dae5..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/default.build +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qpid/dotnet/Qpid.Client.Tests/failover/FailoverTest.cs b/qpid/dotnet/Qpid.Client.Tests/failover/FailoverTest.cs deleted file mode 100644 index 1f1e2f726c..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/failover/FailoverTest.cs +++ /dev/null @@ -1,257 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.Threading; -using log4net; -using NUnit.Framework; -using Apache.Qpid.Client.Qms; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests.failover -{ - [TestFixture, Category("Failover")] - public class FailoverTest : IConnectionListener - { - private static readonly ILog _logger = LogManager.GetLogger(typeof(FailoverTest)); - - private IConnection _connection; - private IChannel _channel; - private IMessagePublisher _publisher; - private int _count; - - private IMessageConsumer _consumerOfResponse; - - void DoFailoverTest(IConnectionInfo info) - { - DoFailoverTest(new AMQConnection(info)); - } - - void DoFailoverTest(IConnection connection) - { - AMQConnection amqConnection = (AMQConnection)connection; - amqConnection.ConnectionListener = this; - //Console.WriteLine("connection.url = " + amqConnection.ToURL()); - _connection = connection; - _connection.ExceptionListener = new ExceptionListenerDelegate(OnConnectionException); - _channel = _connection.CreateChannel(false, AcknowledgeMode.NoAcknowledge); - - string exchangeName = ExchangeNameDefaults.TOPIC; - string routingKey = "topic1"; - - string queueName = DeclareAndBindTemporaryQueue(exchangeName, routingKey); - - new MsgListener(_connection.CreateChannel(false, AcknowledgeMode.NoAcknowledge), queueName); - - IChannel channel = _channel; - - string tempQueueName = channel.GenerateUniqueName(); - channel.DeclareQueue(tempQueueName, false, true, true); - _consumerOfResponse = channel.CreateConsumerBuilder(tempQueueName).Create(); - _consumerOfResponse.OnMessage = new MessageReceivedDelegate(OnMessage); - - _connection.Start(); - - IMessage msg = _channel.CreateTextMessage("Init"); - // FIXME: Leaving ReplyToExchangeName as default (i.e. the default exchange) - // FIXME: but the implementation might not like this as it defaults to null rather than "". - msg.ReplyToRoutingKey = tempQueueName; -// msg.ReplyTo = new ReplyToDestination("" /* i.e. the default exchange */, tempQueueName); - _logger.Info(String.Format("sending msg.Text={0}", ((ITextMessage)msg).Text)); - -// _publisher = _channel.CreatePublisher(exchangeName, exchangeClass, routingKey); - _publisher = _channel.CreatePublisherBuilder() - .WithRoutingKey(routingKey) - .WithExchangeName(exchangeName) - .Create(); - _publisher.Send(msg); - } - - public string DeclareAndBindTemporaryQueue(string exchangeName, string routingKey) - { - string queueName = _channel.GenerateUniqueName(); - - // Queue.Declare - _channel.DeclareQueue(queueName, false, true, true); - - // Queue.Bind - _channel.Bind(queueName, exchangeName, routingKey); - return queueName; - } - - private void OnConnectionException(Exception e) - { - _logger.Error("Connection exception occurred", e); - } - - public void OnMessage(IMessage message) - { - try - { - _logger.Info("received message on temp queue msg.Text=" + ((ITextMessage)message).Text); - Thread.Sleep(1000); - _publisher.Send(_channel.CreateTextMessage("Message" + (++_count))); - } - catch (QpidException e) - { - error(e); - } - } - - private void error(Exception e) - { - _logger.Error("exception received", e); - stop(); - } - - private void stop() - { - _logger.Info("Stopping..."); - try - { - _connection.Dispose(); - } - catch (QpidException e) - { - _logger.Error("Failed to shutdown", e); - } - } - - public void BytesSent(long count) - { - } - - public void BytesReceived(long count) - { - } - - public bool PreFailover(bool redirect) - { - _logger.Info("preFailover(" + redirect + ") called"); - return true; - } - - public bool PreResubscribe() - { - _logger.Info("preResubscribe() called"); - return true; - } - - public void FailoverComplete() - { - _logger.Info("failoverComplete() called"); - } - - private class MsgListener - { - private IChannel _session; - private IMessagePublisher _publisher; - - internal MsgListener(IChannel session, string queueName) - { - _session = session; - _session.CreateConsumerBuilder(queueName).Create().OnMessage = - new MessageReceivedDelegate(OnMessage); - } - - public void OnMessage(IMessage message) - { - try - { - _logger.Info("Received: msg.Text = " + ((ITextMessage) message).Text); - if(_publisher == null) - { - _publisher = init(message); - } - reply(message); - } - catch (QpidException e) - { -// Error(e); - _logger.Error("yikes", e); // XXX - } - } - - private void reply(IMessage message) - { - string msg = ((ITextMessage) message).Text; - _logger.Info("sending reply - " + msg); - _publisher.Send(_session.CreateTextMessage(msg)); - } - - private IMessagePublisher init(IMessage message) - { - _logger.Info(string.Format("creating reply producer with dest = '{0}:{1}'", - message.ReplyToExchangeName, message.ReplyToRoutingKey)); - - string exchangeName = message.ReplyToExchangeName; - string routingKey = message.ReplyToRoutingKey; - - //return _channel.CreatePublisher(exchangeName, exchangeClass, routingKey); - return _session.CreatePublisherBuilder() - .WithExchangeName(exchangeName) - .WithRoutingKey(routingKey) - .Create(); - } - } - - [Test] - public void TestFail() - { - Assert.Fail("Tests in this class do not pass, but hang forever, so commented out until can be fixed."); - } - - /*[Test] - public void TestWithBasicInfo() - { - Console.WriteLine("TestWithBasicInfo"); - try - { - QpidConnectionInfo connectionInfo = new QpidConnectionInfo(); - connectionInfo.AddBrokerInfo(new AmqBrokerInfo("amqp", "localhost", 5672, false)); - connectionInfo.AddBrokerInfo(new AmqBrokerInfo("amqp", "localhost", 5673, false)); - DoFailoverTest(connectionInfo); - while (true) - { - Thread.Sleep(5000); - } - } - catch (Exception e) - { - _logger.Error("Exception caught", e); - } - }*/ - -// [Test] -// public void TestWithUrl() -// { -// String clientId = "failover" + DateTime.Now.Ticks; -// String defaultUrl = "amqp://guest:guest@" + clientId + "/test" + -// "?brokerlist='tcp://localhost:5672;tcp://localhost:5673'&failover='roundrobin'"; -// -// _logger.Info("url = [" + defaultUrl + "]"); -// -// // _logger.Info("connection url = [" + new AMQConnectionURL(defaultUrl) + "]"); -// -// String broker = defaultUrl; -// //new FailoverTest(broker); -// } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/failover/FailoverTxTest.cs b/qpid/dotnet/Qpid.Client.Tests/failover/FailoverTxTest.cs deleted file mode 100644 index a110891cfc..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/failover/FailoverTxTest.cs +++ /dev/null @@ -1,253 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.Runtime.InteropServices; -using System.Threading; -using log4net; -using NUnit.Framework; -using Apache.Qpid.Client.Qms; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests.failover -{ - [TestFixture, Category("Failover")] - public class FailoverTxTest : IConnectionListener - { - private static readonly ILog _log = LogManager.GetLogger(typeof(FailoverTxTest)); - - const int NUM_ITERATIONS = 10; - const int NUM_COMMITED_MESSAGES = 10; - const int NUM_ROLLEDBACK_MESSAGES = 3; - const int SLEEP_MILLIS = 50; - - // AutoAcknowledge, ClientAcknowledge, DupsOkAcknowledge, NoAcknowledge, PreAcknowledge - AcknowledgeMode _acknowledgeMode = AcknowledgeMode.DupsOkAcknowledge; - const bool _noWait = true; // use Receive or ReceiveNoWait - AMQConnection _connection; - - public void OnMessage(IMessage message) - { - try - { - _log.Info("Received: " + ((ITextMessage) message).Text); - if (_acknowledgeMode == AcknowledgeMode.ClientAcknowledge) - { - _log.Info("client acknowledging"); - message.Acknowledge(); - } - } - catch (QpidException e) - { - Error(e); - } - } - - class NoWaitConsumer - { - FailoverTxTest _failoverTxTest; - IMessageConsumer _consumer; - private bool _noWait; - - internal NoWaitConsumer(FailoverTxTest failoverTxTest, IMessageConsumer channel, bool noWait) - { - _failoverTxTest = failoverTxTest; - _consumer = channel; - _noWait = noWait; - } - - internal void Run() - { - int messages = 0; - while (messages < NUM_COMMITED_MESSAGES) - { - IMessage msg; - if (_noWait) msg = _consumer.ReceiveNoWait(); - else msg = _consumer.Receive(); - if (msg != null) - { - _log.Info("NoWait received message"); - ++messages; - _failoverTxTest.OnMessage(msg); - } - else - { - Thread.Sleep(1); - } - - } - - } - } - - void DoFailoverTxTest(IConnectionInfo connectionInfo) - { - _connection = new AMQConnection(connectionInfo); - _connection.ConnectionListener = this; - _log.Info("connection = " + _connection); - _log.Info("connectionInfo = " + connectionInfo); - _log.Info("connection.AsUrl = " + _connection.toURL()); - - _log.Info("AcknowledgeMode is " + _acknowledgeMode); - IChannel receivingChannel = _connection.CreateChannel(false, _acknowledgeMode); - - string queueName = receivingChannel.GenerateUniqueName(); - - // Queue.Declare - receivingChannel.DeclareQueue(queueName, false, true, true); - - // No need to call Queue.Bind as automatically bound to default direct exchange. - receivingChannel.Bind(queueName, "amq.direct", queueName); - - IMessageConsumer consumer = receivingChannel.CreateConsumerBuilder(queueName) - .WithPrefetchLow(30) - .WithPrefetchHigh(60).Create(); - bool useThread = false; - if (useThread) - { - NoWaitConsumer noWaitConsumer = new NoWaitConsumer(this, consumer, _noWait); - new Thread(new ThreadStart(noWaitConsumer.Run)).Start(); - } - else - { - consumer.OnMessage = new MessageReceivedDelegate(OnMessage); - } - - _connection.Start(); - - PublishInTx(queueName); - - Thread.Sleep(2000); // Wait a while for last messages. - - _connection.Close(); - _log.Info("FailoverTxText complete"); - } - - private void PublishInTx(string routingKey) - { - _log.Info("sendInTx"); - bool transacted = true; - IChannel publishingChannel = _connection.CreateChannel(transacted, AcknowledgeMode.NoAcknowledge); - IMessagePublisher publisher = publishingChannel.CreatePublisherBuilder() - .WithRoutingKey(routingKey) - .Create(); - - for (int i = 1; i <= NUM_ITERATIONS; ++i) - { - for (int j = 1; j <= NUM_ROLLEDBACK_MESSAGES; ++j) - { - ITextMessage msg = publishingChannel.CreateTextMessage("Tx=" + i + " rolledBackMsg=" + j); - _log.Info("sending message = " + msg.Text); - publisher.Send(msg); - Thread.Sleep(SLEEP_MILLIS); - } - if (transacted) publishingChannel.Rollback(); - - for (int j = 1; j <= NUM_COMMITED_MESSAGES; ++j) - { - ITextMessage msg = publishingChannel.CreateTextMessage("Tx=" + i + " commitedMsg=" + j); - _log.Info("sending message = " + msg.Text); - publisher.Send(msg); - Thread.Sleep(SLEEP_MILLIS); - } - if (transacted) publishingChannel.Commit(); - } - } - - private void Error(Exception e) - { - _log.Fatal("Exception received. About to stop.", e); - Stop(); - } - - private void Stop() - { - _log.Info("Stopping..."); - try - { - _connection.Close(); - } - catch (QpidException e) - { - _log.Info("Failed to shutdown: ", e); - } - } - - public void BytesSent(long count) - { - } - - public void BytesReceived(long count) - { - } - - public bool PreFailover(bool redirect) - { - _log.Info("preFailover(" + redirect + ") called"); - return true; - } - - public bool PreResubscribe() - { - _log.Info("preResubscribe() called"); - return true; - } - - public void FailoverComplete() - { - _log.Info("failoverComplete() called"); - } - - [Test] - public void TestFail() - { - Assert.Fail("Tests in this class do not pass, but hang forever, so commented out until can be fixed."); - } - - /*[Test] - public void TestWithBasicInfo() - { - Console.WriteLine("TestWithBasicInfo"); - Console.WriteLine(".NET Framework version: " + RuntimeEnvironment.GetSystemVersion()); - QpidConnectionInfo connectionInfo = new QpidConnectionInfo(); - - connectionInfo.AddBrokerInfo(new AmqBrokerInfo("amqp", "localhost", 5672, false)); - connectionInfo.AddBrokerInfo(new AmqBrokerInfo("amqp", "localhost", 5673, false)); - - DoFailoverTxTest(connectionInfo); - }*/ - - /*[Test] - public void runTestWithUrl() - { - String clientId = "failover" + DateTime.Now.Ticks; - string defaultUrl = "amqp://guest:guest@" + clientId + "/test" + - "?brokerlist='tcp://localhost:5672;tcp://localhost:5673'&failover='roundrobin'"; - - _log.Info("url = [" + defaultUrl + "]"); - - IConnectionInfo connectionInfo = QpidConnectionInfo.FromUrl(defaultUrl); - - _log.Info("connection url = [" + connectionInfo + "]"); - - DoFailoverTxTest(connectionInfo); - }*/ - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/interop/InteropClientTestCase.cs b/qpid/dotnet/Qpid.Client.Tests/interop/InteropClientTestCase.cs deleted file mode 100644 index a667265ba4..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/interop/InteropClientTestCase.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System; -using System.Text; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests.interop -{ - /// Defines the possible test case roles that an interop test case can take on. - public enum Roles { SENDER, RECEIVER }; - - /// - /// InteropClientTestCase provides an interface that classes implementing test cases from the interop testing spec - /// (http://cwiki.apache.org/confluence/display/qpid/Interop+Testing+Specification) should implement. - /// - ///

- ///
CRC Card
Responsibilities - ///
Supply the name of the test case that this implements. - ///
Accept/Reject invites based on test parameters. - ///
Adapt to assigned roles. - ///
Perform test case actions. - ///
Generate test reports. - ///
- ///

- interface InteropClientTestCase - { - /// - /// Should provide the name of the test case that this class implements. The exact names are defined in the - /// interop testing spec. - /// - /// - /// The name of the test case that this implements. - string GetName(); - - /// - /// Determines whether the test invite that matched this test case is acceptable. - /// - /// - /// The invitation to accept or reject. - /// - /// true to accept the invitation, false to reject it. - /// - /// @throws JMSException Any JMSException resulting from reading the message are allowed to fall through. - bool AcceptInvite(IMessage inviteMessage); - - /// - /// Assigns the role to be played by this test case. The test parameters are fully specified in the - /// assignment message. When this method return the test case will be ready to execute. - /// - /// - /// The role to be played; sender or receiver. - /// The role assingment message, contains the full test parameters. - void AssignRole(Roles role, IMessage assignRoleMessage); - - /// - /// Performs the test case actions. - /// - void Start(); - - /// - /// Gets a report on the actions performed by the test case in its assigned role. - /// - /// - /// The session to create the report message in. - /// - /// The report message. - IMessage GetReport(IChannel channel); - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase1DummyRun.cs b/qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase1DummyRun.cs deleted file mode 100644 index 7ff686e1cb..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase1DummyRun.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using System.Text; -using log4net; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests.interop.TestCases -{ - /// - /// Implements tet case 1, dummy run. This test case sends no test messages, it exists to confirm that the test harness - /// is interacting with the coordinator correctly. - /// - ///

- ///
CRC Card
Responsibilities Collaborations - ///
Supply the name of the test case that this implements. - ///
Accept/Reject invites based on test parameters. - ///
Adapt to assigned roles. - ///
Perform test case actions. - ///
Generate test reports. - ///
- ///

- public class TestCase1DummyRun : InteropClientTestCase - { - private static ILog log = LogManager.GetLogger(typeof(TestCase1DummyRun)); - - public String GetName() - { - log.Debug("public String getName(): called"); - - return "TC1_DummyRun"; - } - - public bool AcceptInvite(IMessage inviteMessage) - { - log.Debug("public boolean acceptInvite(Message inviteMessage): called"); - - // Test parameters don't matter, accept all invites. - return true; - } - - public void AssignRole(Roles role, IMessage assignRoleMessage) - { - log.Debug("public void assignRole(Roles role, Message assignRoleMessage): called"); - - // Do nothing, both roles are the same. - } - - public void Start() - { - log.Debug("public void start(): called"); - - // Do nothing. - } - - public IMessage GetReport(IChannel channel) - { - log.Debug("public Message getReport(Session session): called"); - - // Generate a dummy report, the coordinator expects a report but doesn't care what it is. - return channel.CreateTextMessage("Dummy Run, Ok."); - } - - public void OnMessage(IMessage message) - { - log.Debug("public void onMessage(Message message = " + message + "): called"); - - // Ignore any messages. - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase2BasicP2P.cs b/qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase2BasicP2P.cs deleted file mode 100644 index bc4501dea4..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase2BasicP2P.cs +++ /dev/null @@ -1,185 +0,0 @@ -using System; -using System.Text; -using log4net; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests.interop.TestCases -{ - /// - /// Implements test case 2, basic P2P. Sends/receives a specified number of messages to a specified route on the - /// default direct exchange. Produces reports on the actual number of messages sent/received. - /// - ///

- ///
CRC Card
Responsibilities Collaborations - ///
Supply the name of the test case that this implements. - ///
Accept/Reject invites based on test parameters. - ///
Adapt to assigned roles. - ///
Send required number of test messages. - ///
Generate test reports. - ///
- ///

- public class TestCase2BasicP2P : InteropClientTestCase - { - /// Used for debugging. - private static ILog log = LogManager.GetLogger(typeof(TestCase2BasicP2P)); - - /// Holds the count of test messages received. - private int messageCount; - - /// The role to be played by the test. - private Roles role; - - /// The number of test messages to send. - private int numMessages; - - /// The routing key to send them to on the default direct exchange. - private string sendDestination; - - /// The connection to send the test messages on. - private IConnection connection; - - /// The session to send the test messages on. - private IChannel channel; - - /// The producer to send the test messages with. - private IMessagePublisher publisher; - - /// - /// Should provide the name of the test case that this class implements. The exact names are defined in the - /// interop testing spec. - /// - /// - /// The name of the test case that this implements. - public String GetName() - { - log.Debug("public String GetName(): called"); - - return "TC2_BasicP2P"; - } - - /// - /// Determines whether the test invite that matched this test case is acceptable. - /// - /// - /// The invitation to accept or reject. - /// - /// true to accept the invitation, false to reject it. - public bool AcceptInvite(IMessage inviteMessage) - { - log.Debug("public boolean AcceptInvite(Message inviteMessage = " + inviteMessage + "): called"); - - // All invites are acceptable. - return true; - } - - /// - /// Assigns the role to be played by this test case. The test parameters are fully specified in the - /// assignment message. When this method return the test case will be ready to execute. - /// - /// - /// The role to be played; sender or receiver. - /// The role assingment message, contains the full test parameters. - public void AssignRole(Roles role, IMessage assignRoleMessage) - { - log.Debug("public void AssignRole(Roles role = " + role + ", Message assignRoleMessage = " + assignRoleMessage - + "): called"); - - // Reset the message count for a new test. - messageCount = 0; - - // Take note of the role to be played. - this.role = role; - - // Create a new connection to pass the test messages on. - connection = - TestClient.CreateConnection(TestClient.brokerUrl, TestClient.virtualHost); - channel = connection.CreateChannel(false, AcknowledgeMode.AutoAcknowledge); - - // Extract and retain the test parameters. - numMessages = assignRoleMessage.Headers.GetInt("P2P_NUM_MESSAGES"); - string queueAndKeyName = assignRoleMessage.Headers.GetString("P2P_QUEUE_AND_KEY_NAME"); - channel.DeclareQueue(queueAndKeyName, false, true, true); - channel.Bind(queueAndKeyName, ExchangeNameDefaults.DIRECT, queueAndKeyName); - sendDestination = queueAndKeyName; - - log.Debug("numMessages = " + numMessages); - log.Debug("sendDestination = " + sendDestination); - log.Debug("role = " + role); - - switch (role) - { - // Check if the sender role is being assigned, and set up a message producer if so. - case Roles.SENDER: - publisher = channel.CreatePublisherBuilder() - .WithExchangeName(ExchangeNameDefaults.DIRECT) - .WithRoutingKey(sendDestination) - .Create(); - break; - - // Otherwise the receiver role is being assigned, so set this up to listen for messages. - case Roles.RECEIVER: - IMessageConsumer consumer = channel.CreateConsumerBuilder(sendDestination).Create(); - consumer.OnMessage += new MessageReceivedDelegate(OnMessage); - - break; - } - - connection.Start(); - } - - /// Performs the test case actions. - public void Start() - { - log.Debug("public void start(): called"); - - // Check that the sender role is being performed. - if (role == Roles.SENDER) - { - IMessage testMessage = channel.CreateTextMessage("test"); - - for (int i = 0; i < numMessages; i++) - { - publisher.Send(testMessage); - - // Increment the message count. - messageCount++; - } - } - } - - /// - /// Gets a report on the actions performed by the test case in its assigned role. - /// - /// - /// The session to create the report message in. - /// - /// The report message. - public IMessage GetReport(IChannel channel) - { - log.Debug("public Message GetReport(IChannel channel): called"); - - // Close the test connection. - connection.Stop(); - - // Generate a report message containing the count of the number of messages passed. - IMessage report = channel.CreateMessage(); - report.Headers.SetString("CONTROL_TYPE", "REPORT"); - report.Headers.SetInt("MESSAGE_COUNT", messageCount); - - return report; - } - - /// - /// Counts incoming test messages. - /// - /// - /// The incoming test message. - public void OnMessage(IMessage message) - { - log.Debug("public void OnMessage(IMessage message = " + message + "): called"); - - // Increment the message count. - messageCount++; - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase3BasicPubSub.cs b/qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase3BasicPubSub.cs deleted file mode 100644 index 4e3dd6e53e..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/interop/TestCases/TestCase3BasicPubSub.cs +++ /dev/null @@ -1,214 +0,0 @@ -using System; -using System.Text; -using log4net; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests.interop.TestCases -{ - /// - /// Implements test case 3, basic pub/sub. Sends/received a specified number of messages to a specified route on the - /// default topic exchange, using the specified number of receiver connections. Produces reports on the actual number of - /// messages sent/received. - /// - ///

- ///
CRC Card
Responsibilities Collaborations - ///
Supply the name of the test case that this implements. - ///
Accept/Reject invites based on test parameters. - ///
Adapt to assigned roles. - ///
Send required number of test messages using pub/sub. - ///
Generate test reports. - ///
- ///

- public class TestCase3BasicPubSub : InteropClientTestCase - { - /// Used for debugging. - private static ILog log = LogManager.GetLogger(typeof(TestCase3BasicPubSub)); - - /// Holds the count of test messages received. - private int messageCount; - - /// The role to be played by the test. - private Roles role; - - /// The number of test messages to send. - private int numMessages; - - /// The number of receiver connection to use. - private int numReceivers; - - /// The routing key to send them to on the default direct exchange. - private string sendDestination; - - /// The connections to send/receive the test messages on. - private IConnection[] connection; - - /// The sessions to send/receive the test messages on. - private IChannel[] channel; - - /// The producer to send the test messages with. - IMessagePublisher publisher; - - /// - /// Should provide the name of the test case that this class implements. The exact names are defined in the - /// interop testing spec. - /// - /// - /// The name of the test case that this implements. - public String GetName() - { - log.Debug("public String GetName(): called"); - - return "TC3_BasicPubSub"; - } - - /// - /// Determines whether the test invite that matched this test case is acceptable. - /// - /// - /// The invitation to accept or reject. - /// - /// true to accept the invitation, false to reject it. - public bool AcceptInvite(IMessage inviteMessage) - { - log.Debug("public boolean AcceptInvite(IMessage inviteMessage = " + inviteMessage + "): called"); - - // All invites are acceptable. - return true; - } - - /// - /// Assigns the role to be played by this test case. The test parameters are fully specified in the - /// assignment message. When this method return the test case will be ready to execute. - /// - /// - /// The role to be played; sender or receiver. - /// The role assingment message, contains the full test parameters. - public void AssignRole(Roles role, IMessage assignRoleMessage) - { - log.Debug("public void assignRole(Roles role = " + role + ", IMessage assignRoleMessage = " + assignRoleMessage - + "): called"); - - // Reset the message count for a new test. - messageCount = 0; - - // Take note of the role to be played. - this.role = role; - - // Extract and retain the test parameters. - numMessages = assignRoleMessage.Headers.GetInt("PUBSUB_NUM_MESSAGES"); - numReceivers = assignRoleMessage.Headers.GetInt("PUBSUB_NUM_RECEIVERS"); - string sendKey = assignRoleMessage.Headers.GetString("PUBSUB_KEY"); - sendDestination = sendKey; - - log.Debug("numMessages = " + numMessages); - log.Debug("numReceivers = " + numReceivers); - log.Debug("sendKey = " + sendKey); - log.Debug("role = " + role); - - switch (role) - { - // Check if the sender role is being assigned, and set up a single message producer if so. - case Roles.SENDER: - // Create a new connection to pass the test messages on. - connection = new IConnection[1]; - channel = new IChannel[1]; - - connection[0] = - TestClient.CreateConnection(TestClient.brokerUrl, TestClient.virtualHost); - channel[0] = connection[0].CreateChannel(false, AcknowledgeMode.AutoAcknowledge); - - // Extract and retain the test parameters. - publisher = channel[0].CreatePublisherBuilder() - .WithExchangeName(ExchangeNameDefaults.TOPIC) - .WithRoutingKey(sendDestination) - .Create(); - break; - - // Otherwise the receiver role is being assigned, so set this up to listen for messages on the required number - // of receiver connections. - case Roles.RECEIVER: - // Create the required number of receiver connections. - connection = new IConnection[numReceivers]; - channel = new IChannel[numReceivers]; - - for (int i = 0; i < numReceivers; i++) - { - connection[i] = - TestClient.CreateConnection(TestClient.brokerUrl, TestClient.virtualHost); - channel[i] = connection[i].CreateChannel(false, AcknowledgeMode.AutoAcknowledge); - - IMessageConsumer consumer = channel[i].CreateConsumerBuilder(sendDestination).Create(); - consumer.OnMessage += new MessageReceivedDelegate(OnMessage); - } - - break; - } - - // Start all the connection dispatcher threads running. - foreach (IConnection con in connection) - { - con.Start(); - } - } - - /// - /// Performs the test case actions. - /// - public void Start() - { - log.Debug("public void Start(): called"); - - // Check that the sender role is being performed. - if (role == Roles.SENDER) - { - IMessage testMessage = channel[0].CreateTextMessage("test"); - - for (int i = 0; i < numMessages; i++) - { - publisher.Send(testMessage); - - // Increment the message count. - messageCount++; - } - } - } - - /// - /// Gets a report on the actions performed by the test case in its assigned role. - /// - /// - /// The session to create the report message in. - /// - /// The report message. - public IMessage GetReport(IChannel channel) - { - log.Debug("public IMessage getReport(IChannel channel): called"); - - // Close the test connections. - foreach (IConnection con in connection) - { - con.Stop(); - } - - // Generate a report message containing the count of the number of messages passed. - IMessage report = channel.CreateMessage(); - report.Headers.SetString("CONTROL_TYPE", "REPORT"); - report.Headers.SetInt("MESSAGE_COUNT", messageCount); - - return report; - } - - /// - /// Counts incoming test messages. - /// - /// - /// The incoming test message. - public void OnMessage(IMessage message) - { - log.Debug("public void onMessage(IMessage message = " + message + "): called"); - - // Increment the message count. - messageCount++; - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/interop/TestClient.cs b/qpid/dotnet/Qpid.Client.Tests/interop/TestClient.cs deleted file mode 100644 index b15f7fbda9..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/interop/TestClient.cs +++ /dev/null @@ -1,340 +0,0 @@ -using System; -using System.Collections; -using System.Text; -using Apache.Qpid.Messaging; -using Apache.Qpid.Client.Qms; -using log4net; -using Apache.Qpid.Client.Tests.interop.TestCases; - -namespace Apache.Qpid.Client.Tests.interop -{ - /// - /// Implements a test client as described in the interop testing spec - /// (http://cwiki.apache.org/confluence/display/qpid/Interop+Testing+Specification). A test client is an agent that - /// reacts to control message sequences send by the test coordinator. - /// - ///

- ///
Messages Handled by TestClient
Message Action - ///
Invite(compulsory) Reply with Enlist. - ///
Invite(test case) Reply with Enlist if test case available. - ///
AssignRole(test case) Reply with Accept Role if matches an enlisted test. Keep test parameters. - ///
Start Send test messages defined by test parameters. Send report on messages sent. - ///
Status Request Send report on messages received. - ///
- /// - ///

- ///
CRC Card
Responsibilities Collaborations - ///
Handle all incoming control messages. {@link InteropClientTestCase} - ///
Configure and look up test cases by name. {@link InteropClientTestCase} - ///
- ///

- class TestClient - { - private static ILog log = LogManager.GetLogger(typeof(TestClient)); - - /// Defines the default broker for the tests, localhost, default port. - public static string DEFAULT_BROKER_URL = "amqp://guest:guest@clientid/?brokerlist='tcp://localhost:5672'"; - - /// Defines the default virtual host to use for the tests, none. - public static string DEFAULT_VIRTUAL_HOST = ""; - - /// Defines the default identifying name of this test client. - public static string DEFAULT_CLIENT_NAME = ".net"; - - /// Holds the URL of the broker to run the tests on. - public static string brokerUrl; - - /// Holds the virtual host to run the tests on. If null, then the default virtual host is used. - public static string virtualHost; - - /// The clients identifying name to print in test results and to distinguish from other clients. - private string clientName; - - /// Holds all the test cases. - private IDictionary testCases = new Hashtable(); - - InteropClientTestCase currentTestCase; - - private MessagePublisherBuilder publisherBuilder; - - private IChannel channel; - - - /// - /// Creates a new interop test client, listenting to the specified broker and virtual host, with the specified - /// client identifying name. - /// - /// - /// The url of the broker to connect to. - /// The virtual host to conect to. - /// The client name to use. - public TestClient(string brokerUrl, string virtualHost, string clientName) - { - log.Debug("public TestClient(string brokerUrl = " + brokerUrl + ", string virtualHost = " + virtualHost - + ", string clientName = " + clientName + "): called"); - - // Retain the connection parameters. - TestClient.brokerUrl = brokerUrl; - TestClient.virtualHost = virtualHost; - this.clientName = clientName; - } - - - /// - /// The entry point for the interop test coordinator. This client accepts the following command line arguments: - /// - /// - ///

- ///
-b The broker URL. Optional. - ///
-h The virtual host. Optional. - ///
-n The test client name. Optional. - ///
name=value Trailing argument define name/value pairs. Added to system properties. Optional. - ///
- /// - /// The command line arguments. - public static void Main(string[] args) - { - // Extract the command line options (Not exactly Posix but it will do for now...). - string brokerUrl = DEFAULT_BROKER_URL; - string virtualHost = DEFAULT_VIRTUAL_HOST; - string clientName = DEFAULT_CLIENT_NAME; - - foreach (string nextArg in args) - { - if (nextArg.StartsWith("-b")) - { - brokerUrl = nextArg.Substring(2); - } - else if (nextArg.StartsWith("-h")) - { - virtualHost = nextArg.Substring(2); - } - else if (nextArg.StartsWith("-n")) - { - clientName = nextArg.Substring(2); - } - } - - // Create a test client and start it running. - TestClient client = new TestClient(brokerUrl, virtualHost, clientName); - - try - { - client.Start(); - } - catch (Exception e) - { - log.Error("The test client was unable to start.", e); - System.Environment.Exit(1); - } - } - - ///

- /// Starts the interop test client running. This causes it to start listening for incoming test invites. - /// - private void Start() - { - log.Debug("private void Start(): called"); - - // Use a class path scanner to find all the interop test case implementations. - ArrayList testCaseClasses = new ArrayList(); - - // ClasspathScanner.getMatches(InteropClientTestCase.class, "^TestCase.*", true); - // Hard code the test classes till the classpath scanner is fixed. - testCaseClasses.Add(typeof(TestCase1DummyRun)); - testCaseClasses.Add(typeof(TestCase2BasicP2P)); - testCaseClasses.Add(typeof(TestCase3BasicPubSub)); - - // Create all the test case implementations and index them by the test names. - foreach (Type testClass in testCaseClasses) - { - InteropClientTestCase testCase = (InteropClientTestCase)Activator.CreateInstance(testClass); - testCases.Add(testCase.GetName(), testCase); - } - - // Open a connection to communicate with the coordinator on. - IConnection connection = CreateConnection(brokerUrl, virtualHost); - - channel = connection.CreateChannel(false, AcknowledgeMode.AutoAcknowledge); - - // Set this up to listen for control messages. - string responseQueueName = channel.GenerateUniqueName(); - channel.DeclareQueue(responseQueueName, false, true, true); - - channel.Bind(responseQueueName, ExchangeNameDefaults.DIRECT, "iop.control." + clientName); - channel.Bind(responseQueueName, ExchangeNameDefaults.DIRECT, "iop.control"); - - IMessageConsumer consumer = channel.CreateConsumerBuilder(responseQueueName) - .Create(); - consumer.OnMessage += new MessageReceivedDelegate(OnMessage); - - // Create a publisher to send replies with. - publisherBuilder = channel.CreatePublisherBuilder() - .WithExchangeName(ExchangeNameDefaults.DIRECT); - - - // Start listening for incoming control messages. - connection.Start(); - Console.WriteLine("Test client " + clientName + " ready to receive test control messages..."); - } - - /// - /// Establishes an AMQ connection. This is a simple convenience method for code that does not anticipate handling connection failures. - /// All exceptions that indicate that the connection has failed, are allowed to fall through. - /// - /// - /// The broker url to connect to, null to use the default from the properties. - /// The virtual host to connectio to, null to use the default. - /// - /// A JMS conneciton. - public static IConnection CreateConnection(string brokerUrl, string virtualHost) - { - log.Debug("public static Connection createConnection(string brokerUrl = " + brokerUrl + ", string virtualHost = " - + virtualHost + "): called"); - - // Create a connection to the broker. - IConnectionInfo connectionInfo = QpidConnectionInfo.FromUrl(brokerUrl); - connectionInfo.VirtualHost = virtualHost; - IConnection connection = new AMQConnection(connectionInfo); - - return connection; - } - - /// - /// Handles all incoming control messages. - /// - /// - /// The incoming message. - public void OnMessage(IMessage message) - { - log.Debug("public void OnMessage(IMessage message = " + message + "): called"); - - try - { - string controlType = message.Headers.GetString("CONTROL_TYPE"); - string testName = message.Headers.GetString("TEST_NAME"); - - // Check if the message is a test invite. - if ("INVITE" == controlType) - { - string testCaseName = message.Headers.GetString("TEST_NAME"); - - // Flag used to indicate that an enlist should be sent. Only enlist to compulsory invites or invites - // for which test cases exist. - bool enlist = false; - - if (testCaseName != null) - { - log.Debug("Got an invite to test: " + testCaseName); - - // Check if the requested test case is available. - InteropClientTestCase testCase = (InteropClientTestCase)testCases[testCaseName]; - - if (testCase != null) - { - // Make the requested test case the current test case. - currentTestCase = testCase; - enlist = true; - } - } - else - { - log.Debug("Got a compulsory invite."); - - enlist = true; - } - - if (enlist) - { - // Reply with the client name in an Enlist message. - IMessage enlistMessage = channel.CreateMessage(); - enlistMessage.Headers.SetString("CONTROL_TYPE", "ENLIST"); - enlistMessage.Headers.SetString("CLIENT_NAME", clientName); - enlistMessage.Headers.SetString("CLIENT_PRIVATE_CONTROL_KEY", "iop.control." + clientName); - enlistMessage.CorrelationId = message.CorrelationId; - - Send(enlistMessage, message.ReplyToRoutingKey); - } - } - else if ("ASSIGN_ROLE" == controlType) - { - // Assign the role to the current test case. - string roleName = message.Headers.GetString("ROLE"); - - log.Debug("Got a role assignment to role: " + roleName); - - Roles role; - - if (roleName == "SENDER") - { - role = Roles.SENDER; - } - else - { - role = Roles.RECEIVER; - } - - currentTestCase.AssignRole(role, message); - - // Reply by accepting the role in an Accept Role message. - IMessage acceptRoleMessage = channel.CreateMessage(); - acceptRoleMessage.Headers.SetString("CONTROL_TYPE", "ACCEPT_ROLE"); - acceptRoleMessage.CorrelationId = message.CorrelationId; - - Send(acceptRoleMessage, message.ReplyToRoutingKey); - } - else if ("START" == controlType || "STATUS_REQUEST" == controlType) - { - if ("START" == controlType) - { - log.Debug("Got a start notification."); - - // Start the current test case. - currentTestCase.Start(); - } - else - { - log.Debug("Got a status request."); - } - - // Generate the report from the test case and reply with it as a Report message. - IMessage reportMessage = currentTestCase.GetReport(channel); - reportMessage.Headers.SetString("CONTROL_TYPE", "REPORT"); - reportMessage.CorrelationId = message.CorrelationId; - - Send(reportMessage, message.ReplyToRoutingKey); - } - else if ("TERMINATE" == controlType) - { - Console.WriteLine("Received termination instruction from coordinator."); - - // Is a cleaner shutdown needed? - System.Environment.Exit(1); - } - else - { - // Log a warning about this but otherwise ignore it. - log.Warn("Got an unknown control message, controlType = " + controlType + ", message = " + message); - } - } - catch (QpidException e) - { - // Log a warning about this, but otherwise ignore it. - log.Warn("A QpidException occurred whilst handling a message."); - log.Debug("Got QpidException whilst handling message: " + message, e); - } - } - - /// - /// Send the specified message using the specified routing key on the direct exchange. - /// - /// - /// The message to send. - /// The routing key to send the message with. - public void Send(IMessage message, string routingKey) - { - IMessagePublisher publisher = publisherBuilder.WithRoutingKey(routingKey).Create(); - publisher.Send(message); - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/interop/TopicListener.cs b/qpid/dotnet/Qpid.Client.Tests/interop/TopicListener.cs deleted file mode 100644 index 13141d52b8..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/interop/TopicListener.cs +++ /dev/null @@ -1,211 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using log4net; -using Apache.Qpid.Messaging; -using Apache.Qpid.Client.Qms; - -namespace Apache.Qpid.Client.Tests.interop -{ - public class TopicListener - { - private static ILog log = LogManager.GetLogger(typeof(TopicListener)); - - /// The default AMQ connection URL to use for tests. - const string DEFAULT_URI = "amqp://guest:guest@default/test?brokerlist='tcp://localhost:5672'"; - - /// Holds the routing key for the topic to receive test messages on. - public static string CONTROL_ROUTING_KEY = "topic_control"; - - /// Holds the routing key for the queue to send reports to. - public static string RESPONSE_ROUTING_KEY = "response"; - - /// Holds the connection to listen on. - private IConnection connection; - - /// Holds the channel for all test messages. - private IChannel channel; - - /// Holds the producer to send report messages on. - private IMessagePublisher publisher; - - /// Holds a flag to indicate that a timer has begun on the first message. Reset when report is sent. */ - private bool init; - - /// Holds the count of messages received by this listener. */ - private int count; - - /// Creates a topic listener using the specified broker URL. - /// - /// The broker URL to listen on. - TopicListener(string connectionUri) - { - log.Debug("TopicListener(string connectionUri = " + connectionUri + "): called"); - - // Create a connection to the broker. - IConnectionInfo connectionInfo = QpidConnectionInfo.FromUrl(connectionUri); - connection = new AMQConnection(connectionInfo); - - // Establish a session on the broker. - channel = connection.CreateChannel(false, AcknowledgeMode.AutoAcknowledge, 1); - - // Set up a queue to listen for test messages on. - string topicQueueName = channel.GenerateUniqueName(); - channel.DeclareQueue(topicQueueName, false, true, true); - - // Set this listener up to listen for incoming messages on the test topic queue. - channel.Bind(topicQueueName, ExchangeNameDefaults.TOPIC, CONTROL_ROUTING_KEY); - IMessageConsumer consumer = channel.CreateConsumerBuilder(topicQueueName) - .Create(); - consumer.OnMessage += new MessageReceivedDelegate(OnMessage); - - // Set up this listener with a producer to send the reports on. - publisher = channel.CreatePublisherBuilder() - .WithExchangeName(ExchangeNameDefaults.DIRECT) - .WithRoutingKey(RESPONSE_ROUTING_KEY) - .Create(); - - connection.Start(); - Console.WriteLine("Waiting for messages..."); - } - - public static void Main(String[] argv) - { - // Create an instance of this listener with the command line parameters. - new TopicListener(DEFAULT_URI); - } - - /// - /// Handles all message received by this listener. Test messages are counted, report messages result in a report being sent and - /// shutdown messages result in this listener being terminated. - /// - /// - /// The received message. - public void OnMessage(IMessage message) - { - log.Debug("public void onMessage(Message message = " + message + "): called"); - - // Take the start time of the first message if this is the first message. - if (!init) - { - count = 0; - init = true; - } - - // Check if the message is a control message telling this listener to shut down. - if (IsShutdown(message)) - { - log.Debug("Got a shutdown message."); - Shutdown(); - } - // Check if the message is a report request message asking this listener to respond with the message count. - else if (IsReport(message)) - { - log.Debug("Got a report request message."); - - // Send the message count report. - SendReport(); - - // Reset the initialization flag so that the next message is considered to be the first. - init = false; - } - // Otherwise it is an ordinary test message, so increment the message count. - else - { - count++; - } - } - - /// Checks a message to see if it is a shutdown control message. - /// - /// The message to check. - /// - /// true if it is a shutdown control message, false otherwise. - private bool IsShutdown(IMessage m) - { - bool result = CheckTextField(m, "TYPE", "TERMINATION_REQUEST"); - - //log.Debug("isShutdown = " + result); - - return result; - } - - /// Checks a message to see if it is a report request control message. - /// - /// The message to check. - /// - /// true if it is a report request control message, false otherwise. - private bool IsReport(IMessage m) - { - bool result = CheckTextField(m, "TYPE", "REPORT_REQUEST"); - - //log.Debug("isReport = " + result); - - return result; - } - - /// Checks whether or not a text field on a message has the specified value. - /// - /// The message to check. - /// The name of the field to check. - /// The expected value of the field to compare with. - /// - /// trueIf the specified field has the specified value, fals otherwise. - private static bool CheckTextField(IMessage m, string fieldName, string value) - { - /*log.Debug("private static boolean checkTextField(Message m = " + m + ", String fieldName = " + fieldName - + ", String value = " + value + "): called");*/ - - string comp = m.Headers.GetString(fieldName); - - return (comp != null) && comp == value; - } - - /// Stops the message consumer and closes the connection. - private void Shutdown() - { - connection.Stop(); - channel.Dispose(); - connection.Dispose(); - } - - /// Sends the report message to the response location. - private void SendReport() - { - string report = "Received " + count + "."; - - IMessage reportMessage = channel.CreateTextMessage(report); - - reportMessage.Headers.SetBoolean("BOOLEAN", false); - //reportMessage.Headers.SetByte("BYTE", 5); - reportMessage.Headers.SetDouble("DOUBLE", 3.141); - reportMessage.Headers.SetFloat("FLOAT", 1.0f); - reportMessage.Headers.SetInt("INT", 1); - reportMessage.Headers.SetLong("LONG", 1); - reportMessage.Headers.SetString("STRING", "hello"); - reportMessage.Headers.SetShort("SHORT", 2); - - publisher.Send(reportMessage); - - Console.WriteLine("Sent report: " + report); - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/interop/TopicPublisher.cs b/qpid/dotnet/Qpid.Client.Tests/interop/TopicPublisher.cs deleted file mode 100644 index ef5d39f0bc..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/interop/TopicPublisher.cs +++ /dev/null @@ -1,188 +0,0 @@ -using System; -using System.Threading; -using log4net; -using Apache.Qpid.Messaging; -using Apache.Qpid.Client.Qms; - -namespace Apache.Qpid.Client.Tests.interop -{ - public class TopicPublisher - { - private static ILog log = LogManager.GetLogger(typeof(TopicPublisher)); - - /// The default AMQ connection URL to use for tests. - const string DEFAULT_URI = "amqp://guest:guest@default/test?brokerlist='tcp://localhost:5672'"; - - /// Holds the default test timeout for broker communications before tests give up. - const int TIMEOUT = 10000; - - /// Holds the routing key for the topic to receive test messages on. - const string CONTROL_ROUTING_KEY = "topic_control"; - - /// Holds the routing key for the queue to send reports to. - const string RESPONSE_ROUTING_KEY = "response"; - - /// Holds the number of messages to send in each test run. - private int numMessages; - - /// Holds the number of subscribers listening to the messsages. - private int numSubscribers; - - /// A monitor used to wait for all reports to arrive back from consumers on. - private AutoResetEvent allReportsReceivedEvt = new AutoResetEvent(false); - - /// Holds the connection to listen on. - private IConnection connection; - - /// Holds the channel for all test messages. - private IChannel channel; - - /// Holds the producer to send test messages on. - private IMessagePublisher publisher; - - /// - /// Creates a topic publisher that will send the specifed number of messages and expect the specifed number of report back from test - /// subscribers. - /// - /// - /// The broker URL. - /// The number of messages to send in each test. - /// The number of subscribes that are expected to reply with a report. - TopicPublisher(string connectionUri, int numMessages, int numSubscribers) - { - log.Debug("TopicPublisher(string connectionUri = " + connectionUri + ", int numMessages = "+ numMessages + - ", int numSubscribers = " + numSubscribers + "): called"); - - // Create a connection to the broker. - IConnectionInfo connectionInfo = QpidConnectionInfo.FromUrl(connectionUri); - connection = new AMQConnection(connectionInfo); - - // Establish a session on the broker. - channel = connection.CreateChannel(false, AcknowledgeMode.AutoAcknowledge, 1); - - // Set up a queue to listen for reports on. - string responseQueueName = channel.GenerateUniqueName(); - channel.DeclareQueue(responseQueueName, false, true, true); - - // Set this listener up to listen for reports on the response queue. - channel.Bind(responseQueueName, ExchangeNameDefaults.DIRECT, RESPONSE_ROUTING_KEY); - //channel.Bind(responseQueueName, "<>", RESPONSE_ROUTING_KEY); - IMessageConsumer consumer = channel.CreateConsumerBuilder(responseQueueName) - .Create(); - consumer.OnMessage += new MessageReceivedDelegate(OnMessage); - - // Set up this listener with a producer to send the test messages and report requests on. - publisher = channel.CreatePublisherBuilder() - .WithExchangeName(ExchangeNameDefaults.TOPIC) - .WithRoutingKey(CONTROL_ROUTING_KEY) - .Create(); - - // Keep the test parameters. - this.numMessages = numMessages; - this.numSubscribers = numSubscribers; - - connection.Start(); - Console.WriteLine("Sending messages and waiting for reports..."); - } - - /// - /// Start a test subscriber. The broker URL must be specified as the first command line argument. - /// - /// - /// The command line arguments, broker URL first. - public static void Main(String[] argv) - { - // Create an instance of this publisher with the command line parameters. - TopicPublisher publisher = new TopicPublisher(DEFAULT_URI, 1, 1); - - // Publish the test messages. - publisher.DoTest(); - } - - /// - /// Sends the test messages and waits for all subscribers to reply with a report. - /// - public void DoTest() - { - log.Debug("public void DoTest(): called"); - - // Create a test message to send. - IMessage testMessage = channel.CreateTextMessage("test"); - - // Send the desired number of test messages. - for (int i = 0; i < numMessages; i++) - { - publisher.Send(testMessage); - } - - log.Debug("Sent " + numMessages + " test messages."); - - // Send the report request. - IMessage reportRequestMessage = channel.CreateTextMessage("Report request message."); - reportRequestMessage.Headers["TYPE"] = "REPORT_REQUEST"; - - reportRequestMessage.Headers.SetBoolean("BOOLEAN", false); - //reportRequestMessage.Headers.SetByte("BYTE", 5); - reportRequestMessage.Headers.SetDouble("DOUBLE", 3.141); - reportRequestMessage.Headers.SetFloat("FLOAT", 1.0f); - reportRequestMessage.Headers.SetInt("INT", 1); - reportRequestMessage.Headers.SetLong("LONG", 1); - reportRequestMessage.Headers.SetString("STRING", "hello"); - reportRequestMessage.Headers.SetShort("SHORT", 2); - - publisher.Send(reportRequestMessage); - - log.Debug("Sent the report request message, waiting for all replies..."); - - // Wait until all the reports come in. - allReportsReceivedEvt.WaitOne(TIMEOUT, true); - - // Check if all reports were really received or if the timeout occurred. - if (numSubscribers == 0) - { - log.Debug("Got all reports."); - } - else - { - log.Debug("Waiting for reports timed out, still waiting for " + numSubscribers + "."); - } - - // Send the termination request. - IMessage terminationRequestMessage = channel.CreateTextMessage("Termination request message."); - terminationRequestMessage.Headers["TYPE"] = "TERMINATION_REQUEST"; - publisher.Send(terminationRequestMessage); - - log.Debug("Sent the termination request message."); - - // Close all message producers and consumers and the connection to the broker. - Shutdown(); - } - - /// - /// Handles all report messages from subscribers. This decrements the count of subscribers that are still to reply, until this becomes - /// zero, at which time waiting threads are notified of this event. - /// - /// - /// The received report message. - public void OnMessage(IMessage message) - { - log.Debug("public void OnMessage(IMessage message = " + message + "): called"); - - // Decrement the count of expected messages and release the wait monitor when this becomes zero. - if (--numSubscribers == 0) - { - log.Debug("Got reports from all subscribers."); - allReportsReceivedEvt.Set(); - } - } - - /// Stops the message consumers and closes the connection. - private void Shutdown() - { - connection.Stop(); - publisher.Dispose(); - channel.Dispose(); - connection.Dispose(); - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/lib/nunit/nunit-licence.txt b/qpid/dotnet/Qpid.Client.Tests/lib/nunit/nunit-licence.txt deleted file mode 100644 index b2316295d3..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/lib/nunit/nunit-licence.txt +++ /dev/null @@ -1,23 +0,0 @@ -Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, - Charlie Poole -Copyright © 2000-2004 Philip A. Craig - -This software is provided 'as-is', without any express or implied warranty. In -no event will the authors be held liable for any damages arising from the use -of this software. - -Permission is granted to anyone to use this software for any purpose, including -commercial applications, and to alter it and redistribute it freely, subject to -the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim - that you wrote the original software. If you use this software in a product, an - acknowledgment (see the following) in the product documentation is required. - - Portions Copyright © 2002 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov - or Copyright © 2000-2002 Philip A. Craig - -2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. diff --git a/qpid/dotnet/Qpid.Client.Tests/lib/nunit/nunit.framework.dll b/qpid/dotnet/Qpid.Client.Tests/lib/nunit/nunit.framework.dll deleted file mode 100644 index 53666e74c9..0000000000 Binary files a/qpid/dotnet/Qpid.Client.Tests/lib/nunit/nunit.framework.dll and /dev/null differ diff --git a/qpid/dotnet/Qpid.Client.Tests/log4net.config b/qpid/dotnet/Qpid.Client.Tests/log4net.config deleted file mode 100644 index 4346e0eaeb..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/log4net.config +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/qpid/dotnet/Qpid.Client.Tests/requestreply1/ServiceProvidingClient.cs b/qpid/dotnet/Qpid.Client.Tests/requestreply1/ServiceProvidingClient.cs deleted file mode 100644 index cbc93ae2fe..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/requestreply1/ServiceProvidingClient.cs +++ /dev/null @@ -1,150 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.Threading; -using log4net; -using NUnit.Framework; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests -{ - [TestFixture] - public class ServiceProvidingClient : BaseMessagingTestFixture - { - private static ILog _logger = LogManager.GetLogger(typeof(ServiceProvidingClient)); - - private int _messageCount; - - private string _replyToExchangeName; - private string _replyToRoutingKey; - const int PACK = 100; - - private IMessagePublisher _destinationPublisher; - private IMessageConsumer _consumer; - - private string _serviceName = "ServiceQ1"; - - private string _selector = null; - - [SetUp] - public override void Init() - { - base.Init(); - - _logger.Info("Starting..."); - _logger.Info("Service (queue) name is '" + _serviceName + "'..."); - - _connection.ExceptionListener = new ExceptionListenerDelegate(OnConnectionException); - - _logger.Info("Message selector is <" + _selector + ">..."); - - _channel.DeclareQueue(_serviceName, false, false, false); - - _consumer = _channel.CreateConsumerBuilder(_serviceName) - .WithPrefetchLow(100) - .WithPrefetchHigh(500) - .WithNoLocal(true) - .Create(); - _consumer.OnMessage = new MessageReceivedDelegate(OnMessage); - } - - public override void Shutdown() - { - _consumer.Dispose(); - base.Shutdown(); - } - - private void OnConnectionException(Exception e) - { - _logger.Info("Connection exception occurred", e); - // XXX: Test still doesn't shutdown when broker terminates. Is there no heartbeat? - } - - [Test] - public void Test() - { - _connection.Start(); - _logger.Info("Waiting..."); - - ServiceRequestingClient client = new ServiceRequestingClient(); - client.Init(); - client.SendMessages(); - } - - private void OnMessage(IMessage message) - { -// _logger.Info("Got message '" + message + "'"); - - ITextMessage tm = (ITextMessage)message; - - try - { - string replyToExchangeName = tm.ReplyToExchangeName; - string replyToRoutingKey = tm.ReplyToRoutingKey; - - _replyToExchangeName = replyToExchangeName; - _replyToRoutingKey = replyToRoutingKey; - _logger.Debug("About to create a producer"); - -// Console.WriteLine("ReplyTo.ExchangeName = " + _replyToExchangeName); -// Console.WriteLine("ReplyTo.RoutingKey = " + _replyToRoutingKey); - - _destinationPublisher = _channel.CreatePublisherBuilder() - .WithExchangeName(_replyToExchangeName) - .WithRoutingKey(_replyToRoutingKey) - .WithDeliveryMode(DeliveryMode.NonPersistent) - .Create(); - _destinationPublisher.DisableMessageTimestamp = true; - _logger.Debug("After create a producer"); - } - catch (QpidException e) - { - _logger.Error("Error creating destination", e); - throw e; - } - _messageCount++; - if (_messageCount % PACK == 0) - { - _logger.Info("Received message total: " + _messageCount); - _logger.Info(string.Format("Sending response to '{0}:{1}'", - _replyToExchangeName, _replyToRoutingKey)); - } - - try - { - String payload = "This is a response: sing together: 'Mahnah mahnah...'" + tm.Text; - ITextMessage msg = _channel.CreateTextMessage(payload); - if ( tm.Headers.Contains("timeSent") ) - { - msg.Headers["timeSent"] = tm.Headers["timeSent"]; - } - _destinationPublisher.Send(msg); - } catch ( QpidException e ) - { - _logger.Error("Error sending message: " + e, e); - throw e; - } finally - { - _destinationPublisher.Dispose(); - } - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/requestreply1/ServiceRequestingClient.cs b/qpid/dotnet/Qpid.Client.Tests/requestreply1/ServiceRequestingClient.cs deleted file mode 100644 index f35fb2dac9..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/requestreply1/ServiceRequestingClient.cs +++ /dev/null @@ -1,182 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.Threading; -using log4net; -using NUnit.Framework; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests -{ - public class ServiceRequestingClient : BaseMessagingTestFixture - { - private const int MESSAGE_SIZE = 1024; - private static string MESSAGE_DATA = new string('x', MESSAGE_SIZE); - - private const int PACK = 100; - private const int NUM_MESSAGES = PACK*10; // increase when in standalone - - private static ILog _log = LogManager.GetLogger(typeof(ServiceRequestingClient)); - - ManualResetEvent _finishedEvent = new ManualResetEvent(false); - - private int _expectedMessageCount = NUM_MESSAGES; - - private long _startTime = 0; - - private string _commandQueueName = "ServiceQ1"; - - private IMessagePublisher _publisher; - - Avergager averager = new Avergager(); - - private void InitialiseProducer() - { - try - { - _publisher = _channel.CreatePublisherBuilder() - .WithRoutingKey(_commandQueueName) - .WithDeliveryMode(DeliveryMode.NonPersistent) - .Create(); - _publisher.DisableMessageTimestamp = true; // XXX: need a "with" for this in builder? - } - catch (QpidException e) - { - _log.Error("Error: " + e, e); - } - } - - [Test] - public void SendMessages() - { - InitialiseProducer(); - - string replyQueueName = _channel.GenerateUniqueName(); - - _channel.DeclareQueue(replyQueueName, false, true, true); - - IMessageConsumer messageConsumer = _channel.CreateConsumerBuilder(replyQueueName) - .WithPrefetchLow(100) - .WithPrefetchHigh(200) - .WithNoLocal(true) - .WithExclusive(true).Create(); - - _startTime = DateTime.Now.Ticks; - - messageConsumer.OnMessage = new MessageReceivedDelegate(OnMessage); - _connection.Start(); - for (int i = 0; i < _expectedMessageCount; i++) - { - ITextMessage msg; - try - { - msg = _channel.CreateTextMessage(MESSAGE_DATA + i); - } - catch (Exception e) - { - _log.Error("Error creating message: " + e, e); - break; - } - msg.ReplyToRoutingKey = replyQueueName; - - // Added timestamp. - long timeNow = DateTime.Now.Ticks; - string timeSentString = String.Format("{0:G}", timeNow); - msg.Headers.SetLong("timeSent", timeNow); - - _publisher.Send(msg); - } - - // Assert that the test finishes within a reasonable amount of time. - const int waitSeconds = 40; - const int waitMilliseconds = waitSeconds * 1000; - _log.Info("Finished sending " + _expectedMessageCount + " messages"); - _log.Info(String.Format("Waiting {0} seconds to receive last message...", waitSeconds)); - Assert.IsTrue(_finishedEvent.WaitOne(waitMilliseconds, false), - String.Format("Expected to finish in {0} seconds", waitSeconds)); - } - - public void OnMessage(IMessage m) - { - if (_log.IsDebugEnabled) - { - _log.Debug("Message received: " + m); - } - - if (!m.Headers.Contains("timeSent")) - { - throw new Exception("Set timeSent!"); - } - - long sentAt = m.Headers.GetLong("timeSent"); - long now = DateTime.Now.Ticks; - long latencyTicks = now - sentAt; - long latencyMilliseconds = latencyTicks / TimeSpan.TicksPerMillisecond; - - averager.Add(latencyMilliseconds); - - if (averager.Num % PACK == 0) - { - _log.Info("Ticks per millisecond = " + TimeSpan.TicksPerMillisecond); - _log.Info(String.Format("Average latency (ms) = {0}", averager)); - _log.Info("Received message count: " + averager.Num); - } - - if (averager.Num == _expectedMessageCount) - { - _log.Info(String.Format("Final average latency (ms) = {0}", averager)); - - double timeTakenSeconds = (DateTime.Now.Ticks - _startTime) * 1.0 / (TimeSpan.TicksPerMillisecond * 1000); - _log.Info("Total time taken to receive " + _expectedMessageCount + " messages was " + - timeTakenSeconds + "s, equivalent to " + - (_expectedMessageCount/timeTakenSeconds) + " messages per second"); - - _finishedEvent.Set(); // Notify main thread to quit. - } - } - } - - class Avergager - { - long num = 0; - long sum = 0; - - long min = long.MaxValue; - long max = long.MinValue; - - public void Add(long item) - { - ++num; - sum += item; - if (item < min) min = item; - if (item > max) max = item; - } - - public long Average { get { return sum/num; }} - - public long Num { get { return num; } } - - public override string ToString() - { - return String.Format("average={0} min={1} max={2}", Average, min, max); - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/undeliverable/UndeliverableTest.cs b/qpid/dotnet/Qpid.Client.Tests/undeliverable/UndeliverableTest.cs deleted file mode 100644 index bcf57e586e..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/undeliverable/UndeliverableTest.cs +++ /dev/null @@ -1,128 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.Threading; -using log4net; -using NUnit.Framework; -using Apache.Qpid.Messaging; - -namespace Apache.Qpid.Client.Tests -{ - /// - /// Tests that when sending undeliverable messages with the - /// mandatory flag set, an exception is raised on the connection - /// as the message is bounced back by the broker - /// - [TestFixture] - public class UndeliverableTest : BaseMessagingTestFixture - { - private static ILog _logger = LogManager.GetLogger(typeof(UndeliverableTest)); - private ManualResetEvent _event; - public const int TIMEOUT = 1000; - private Exception _lastException; - - [SetUp] - public override void Init() - { - base.Init(); - _event = new ManualResetEvent(false); - _lastException = null; - - try - { - _connection.ExceptionListener = new ExceptionListenerDelegate(OnException); - } catch ( QpidException e ) - { - _logger.Error("Could not add ExceptionListener", e); - } - } - - public void OnException(Exception e) - { - // Here we dig out the AMQUndelivered exception (if present) in order to log the returned message. - - _lastException = e; - _logger.Error("OnException handler received connection-level exception", e); - if ( e is QpidException ) - { - QpidException qe = (QpidException)e; - if ( qe.InnerException is AMQUndeliveredException ) - { - AMQUndeliveredException ue = (AMQUndeliveredException)qe.InnerException; - _logger.Error("inner exception is AMQUndeliveredException", ue); - _logger.Error(string.Format("Returned message = {0}", ue.GetUndeliveredMessage())); - } - } - _event.Set(); - } - - [Test] - public void SendUndeliverableMessageOnDefaultExchange() - { - SendOne("default exchange", null); - } - [Test] - public void SendUndeliverableMessageOnDirectExchange() - { - SendOne("direct exchange", ExchangeNameDefaults.DIRECT); - } - [Test] - public void SendUndeliverableMessageOnTopicExchange() - { - SendOne("topic exchange", ExchangeNameDefaults.TOPIC); - } - [Test] - public void SendUndeliverableMessageOnHeadersExchange() - { - SendOne("headers exchange", ExchangeNameDefaults.HEADERS); - } - - private void SendOne(string exchangeNameFriendly, string exchangeName) - { - _logger.Info("Sending undeliverable message to " + exchangeNameFriendly); - - // Send a test message to a non-existant queue - // on the specified exchange. See if message is returned! - MessagePublisherBuilder builder = _channel.CreatePublisherBuilder() - .WithRoutingKey("Non-existant route key!") - .WithMandatory(true); // necessary so that the server bounces the message back - if ( exchangeName != null ) - { - builder.WithExchangeName(exchangeName); - } - IMessagePublisher publisher = builder.Create(); - publisher.Send(_channel.CreateTextMessage("Hiya!")); - - // check we received an exception on the connection - // and that it is of the right type - _event.WaitOne(TIMEOUT, true); - - Type expectedException = typeof(AMQUndeliveredException); - Exception ex = _lastException; - Assert.IsNotNull(ex, "No exception was thrown by the test. Expected " + expectedException); - - if ( ex.InnerException != null ) - ex = ex.InnerException; - - Assert.IsInstanceOfType(expectedException, ex); - } - } -} diff --git a/qpid/dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs b/qpid/dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs deleted file mode 100644 index 3c9f8dd4e2..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs +++ /dev/null @@ -1,446 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -using System; -using System.Net; -using NUnit.Framework; -using Apache.Qpid.Client.Qms; - -namespace Apache.Qpid.Client.Tests.url -{ - [TestFixture] - public class connectionUrlTests - { - [Test] - public void FailoverURL() - { - //String url = "amqp://ritchiem:bob@/temp?brokerlist='tcp://localhost:5672;tcp://fancyserver:3000/',failover='roundrobin'"; - String url = "amqp://ritchiem:bob@default/temp?brokerlist='tcp://localhost:5672;tcp://fancyserver:3000/',failover='roundrobin'"; - - IConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url); - - Assert.AreEqual("roundrobin", connectionurl.FailoverMethod); - Assert.IsTrue(connectionurl.Username.Equals("ritchiem")); - Assert.IsTrue(connectionurl.Password.Equals("bob")); - Assert.IsTrue(connectionurl.VirtualHost.Equals("/temp")); - - Assert.IsTrue(connectionurl.BrokerCount == 2); - - IBrokerInfo service = connectionurl.GetBrokerInfo(0); - - Assert.IsTrue(service.Transport.Equals("tcp")); - Assert.IsTrue(service.Host.Equals("localhost")); - Assert.IsTrue(service.Port == 5672); - - service = connectionurl.GetBrokerInfo(1); - - Assert.IsTrue(service.Transport.Equals("tcp")); - Assert.IsTrue(service.Host.Equals("fancyserver")); - Assert.IsTrue(service.Port == 3000); - - } - - [Test] - public void SingleTransportUsernamePasswordURL() - { - String url = "amqp://ritchiem:bob@default/temp?brokerlist='tcp://localhost:5672'"; - - IConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url); - - Assert.IsTrue(connectionurl.FailoverMethod == null); - Assert.IsTrue(connectionurl.Username.Equals("ritchiem")); - Assert.IsTrue(connectionurl.Password.Equals("bob")); - Assert.IsTrue(connectionurl.VirtualHost.Equals("/temp")); - - Assert.IsTrue(connectionurl.BrokerCount == 1); - - IBrokerInfo service = connectionurl.GetBrokerInfo(0); - - Assert.IsTrue(service.Transport.Equals("tcp")); - Assert.IsTrue(service.Host.Equals("localhost")); - Assert.IsTrue(service.Port == 5672); - } - - [Test] - public void SingleTransportUsernameBlankPasswordURL() - { - String url = "amqp://ritchiem:@default/temp?brokerlist='tcp://localhost:5672'"; - - IConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url); - - Assert.IsTrue(connectionurl.FailoverMethod == null); - Assert.IsTrue(connectionurl.Username.Equals("ritchiem")); - Assert.IsTrue(connectionurl.Password.Equals("")); - Assert.IsTrue(connectionurl.VirtualHost.Equals("/temp")); - - Assert.IsTrue(connectionurl.BrokerCount == 1); - - IBrokerInfo service = connectionurl.GetBrokerInfo(0); - - Assert.IsTrue(service.Transport.Equals("tcp")); - Assert.IsTrue(service.Host.Equals("localhost")); - Assert.IsTrue(service.Port == 5672); - } - - [Test] - public void FailedURLNullPassword() - { - String url = "amqp://ritchiem@default/temp?brokerlist='tcp://localhost:5672'"; - - try - { - QpidConnectionInfo.FromUrl(url); - Assert.Fail("URL has null password"); - } - catch (UrlSyntaxException e) - { - Assert.AreEqual("Null password in user information not allowed.", e.Message); - Assert.IsTrue(e.GetIndex() == 7); - } - } - - [Test] - public void SingleTransportURL() - { - String url = "amqp://guest:guest@default/test?brokerlist='tcp://localhost:5672'"; - - IConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url); - - - Assert.IsTrue(connectionurl.FailoverMethod == null); - Assert.IsTrue(connectionurl.Username.Equals("guest")); - Assert.IsTrue(connectionurl.Password.Equals("guest")); - Assert.IsTrue(connectionurl.VirtualHost.Equals("/test")); - - - Assert.IsTrue(connectionurl.BrokerCount == 1); - - - IBrokerInfo service = connectionurl.GetBrokerInfo(0); - - Assert.IsTrue(service.Transport.Equals("tcp")); - Assert.IsTrue(service.Host.Equals("localhost")); - Assert.IsTrue(service.Port == 5672); - } - - [Test] - public void SingleTransportWithClientURLURL() - { - String url = "amqp://guest:guest@clientname/temp?brokerlist='tcp://localhost:5672'"; - - IConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url); - - - Assert.IsTrue(connectionurl.FailoverMethod == null); - Assert.IsTrue(connectionurl.Username.Equals("guest")); - Assert.IsTrue(connectionurl.Password.Equals("guest")); - Assert.IsTrue(connectionurl.VirtualHost.Equals("/temp")); - Assert.IsTrue(connectionurl.ClientName.Equals("clientname")); - - - Assert.IsTrue(connectionurl.BrokerCount == 1); - - - IBrokerInfo service = connectionurl.GetBrokerInfo(0); - - Assert.IsTrue(service.Transport.Equals("tcp")); - Assert.IsTrue(service.Host.Equals("localhost")); - Assert.IsTrue(service.Port == 5672); - } - - [Test] - public void SingleTransport1OptionURL() - { - String url = "amqp://guest:guest@default/temp?brokerlist='tcp://localhost:5672',routingkey='jim'"; - - IConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url); - - Assert.IsTrue(connectionurl.FailoverMethod == null); - Assert.IsTrue(connectionurl.Username.Equals("guest")); - Assert.IsTrue(connectionurl.Password.Equals("guest")); - Assert.IsTrue(connectionurl.VirtualHost.Equals("/temp")); - - - Assert.IsTrue(connectionurl.BrokerCount == 1); - - IBrokerInfo service = connectionurl.GetBrokerInfo(0); - - Assert.IsTrue(service.Transport.Equals("tcp")); - - Assert.IsTrue(service.Host.Equals("localhost")); - Assert.IsTrue(service.Port == 5672); - Assert.IsTrue(connectionurl.GetOption("routingkey").Equals("jim")); - } - - [Test] - public void SingleTransportDefaultedBroker() - { - String url = "amqp://guest:guest@default/temp?brokerlist='localhost:'"; - - IConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url); - - Assert.IsTrue(connectionurl.FailoverMethod == null); - Assert.IsTrue(connectionurl.Username.Equals("guest")); - Assert.IsTrue(connectionurl.Password.Equals("guest")); - Assert.IsTrue(connectionurl.VirtualHost.Equals("/temp")); - - - Assert.IsTrue(connectionurl.BrokerCount == 1); - - IBrokerInfo service = connectionurl.GetBrokerInfo(0); - - Assert.IsTrue(service.Transport.Equals("tcp")); - - Assert.IsTrue(service.Host.Equals("localhost")); - Assert.IsTrue(service.Port == 5672); - } - - [Test] - public void SingleTransportMultiOptionURL() - { - String url = "amqp://guest:guest@default/temp?brokerlist='tcp://localhost:5672',routingkey='jim',timeout='200',immediatedelivery='true'"; - - IConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url); - - Assert.IsTrue(connectionurl.FailoverMethod == null); - Assert.IsTrue(connectionurl.Username.Equals("guest")); - Assert.IsTrue(connectionurl.Password.Equals("guest")); - Assert.IsTrue(connectionurl.VirtualHost.Equals("/temp")); - - Assert.IsTrue(connectionurl.BrokerCount == 1); - - IBrokerInfo service = connectionurl.GetBrokerInfo(0); - - Assert.IsTrue(service.Transport.Equals("tcp")); - - Assert.IsTrue(service.Host.Equals("localhost")); - Assert.IsTrue(service.Port == 5672); - - Assert.IsTrue(connectionurl.GetOption("routingkey").Equals("jim")); - Assert.IsTrue(connectionurl.GetOption("timeout").Equals("200")); - Assert.IsTrue(connectionurl.GetOption("immediatedelivery").Equals("true")); - } - - [Test] - public void SinglevmURL() - { - String url = "amqp://guest:guest@default/messages?brokerlist='vm://default:2'"; - - IConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url); - - Assert.IsTrue(connectionurl.FailoverMethod == null); - Assert.IsTrue(connectionurl.Username.Equals("guest")); - Assert.IsTrue(connectionurl.Password.Equals("guest")); - Assert.IsTrue(connectionurl.VirtualHost.Equals("/messages")); - - Assert.IsTrue(connectionurl.BrokerCount == 1); - - IBrokerInfo service = connectionurl.GetBrokerInfo(0); - - Assert.IsTrue(service.Transport.Equals("vm")); - Assert.AreEqual("localhost", service.Host); - Assert.AreEqual(2, service.Port); - } - - [Test] - public void FailoverVMURL() - { - String url = "amqp://ritchiem:bob@default/temp?brokerlist='vm://default:2;vm://default:3',failover='roundrobin'"; - - IConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url); - - Assert.IsTrue(connectionurl.FailoverMethod.Equals("roundrobin")); - Assert.IsTrue(connectionurl.Username.Equals("ritchiem")); - Assert.IsTrue(connectionurl.Password.Equals("bob")); - Assert.IsTrue(connectionurl.VirtualHost.Equals("/temp")); - - Assert.AreEqual(2, connectionurl.BrokerCount); - - IBrokerInfo service = connectionurl.GetBrokerInfo(0); - - Assert.IsTrue(service.Transport.Equals("vm")); - Assert.AreEqual("localhost", service.Host); - Assert.IsTrue(service.Port == 2); - - service = connectionurl.GetBrokerInfo(1); - Assert.IsTrue(service.Transport.Equals("vm")); - Assert.AreEqual("localhost", service.Host); - Assert.IsTrue(service.Port == 3); - } - - [Test] - public void NoVirtualHostURL() - { - String url = "amqp://user@default?brokerlist='tcp://localhost:5672'"; - - try - { - QpidConnectionInfo.FromUrl(url); - Assert.Fail("URL has no virtual host should not parse"); - } - catch (UrlSyntaxException) - { - // This should occur. - } - } - - [Test] - public void NoClientID() - { - String url = "amqp://user:@default/test?brokerlist='tcp://localhost:5672'"; - - IConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url); - - Assert.IsTrue(connectionurl.Username.Equals("user")); - Assert.IsTrue(connectionurl.Password.Equals("")); - Assert.IsTrue(connectionurl.VirtualHost.Equals("/test")); - Assert.IsTrue(connectionurl.ClientName.StartsWith(Dns.GetHostName())); - - Assert.IsTrue(connectionurl.BrokerCount == 1); - } - - [Test] - public void WrongOptionSeparatorInOptions() - { - String url = "amqp://guest:guest@default/test?brokerlist='tcp://localhost:5672;tcp://localhost:5673'+failover='roundrobin'"; - try - { - QpidConnectionInfo.FromUrl(url); - Assert.Fail("URL Should not parse"); - } - catch (UrlSyntaxException urise) - { - Assert.IsTrue(urise.Message.Equals("Unterminated option. Possible illegal option separator:'+'")); - } - - } - - [Test] - public void NoUserDetailsProvidedWithClientID() - - { - String url = "amqp://clientID/test?brokerlist='tcp://localhost:5672;tcp://localhost:5673'"; - try - { - QpidConnectionInfo.FromUrl(url); - Assert.Fail("URL Should not parse"); - } - catch (UrlSyntaxException urise) - { - Assert.IsTrue(urise.Message.StartsWith("User information not found on url")); - } - - } - - [Test] - public void NoUserDetailsProvidedNOClientID() - - { - String url = "amqp:///test@default?brokerlist='tcp://localhost:5672;tcp://localhost:5673'"; - try - { - QpidConnectionInfo.FromUrl(url); - Assert.Fail("URL Should not parse"); - } - catch (UrlSyntaxException urise) - { - - Assert.IsTrue(urise.Message.StartsWith("User information not found on url")); - } - - } - - [Test] - public void CheckVirtualHostFormat() - { - String url = "amqp://guest:guest@default/t.-_+!=:?brokerlist='tcp://localhost:5672'"; - - IConnectionInfo connection = QpidConnectionInfo.FromUrl(url); - Assert.IsTrue(connection.VirtualHost.Equals("/t.-_+!=:")); - } - - [Test] - public void CheckDefaultPort() - { - String url = "amqp://guest:guest@default/test=:?brokerlist='tcp://localhost'"; - - IConnectionInfo connection = QpidConnectionInfo.FromUrl(url); - - IBrokerInfo broker = connection.GetBrokerInfo(0); - Assert.IsTrue(broker.Port == BrokerInfoConstants.DEFAULT_PORT); - - } - - [Test] - public void CheckMissingFinalQuote() - { - String url = "amqp://guest:guest@id/test" + "?brokerlist='tcp://localhost:5672"; - - try - { - QpidConnectionInfo.FromUrl(url); - } - catch (UrlSyntaxException e) - { -// Assert.AreEqual("Unterminated option at index 32: brokerlist='tcp://localhost:5672", -// e.Message); - Assert.AreEqual("Unterminated option", e.Message); - } - } - - [Test] - public void ValidateQpidConnectionInfoFromToString() - { - String url = "amqp://ritchiem:bob@default/temp?brokerlist='tcp://localhost:5672;tcp://fancyserver:3000/',failover='roundrobin'"; - - IConnectionInfo connectionInfo = QpidConnectionInfo.FromUrl(url); - IConnectionInfo connectionInfo1 = QpidConnectionInfo.FromUrl(connectionInfo.ToString()); - - Console.WriteLine(connectionInfo.ToString()); - Console.WriteLine(connectionInfo1.ToString()); - - Assert.AreEqual(connectionInfo.Username, connectionInfo1.Username); - Assert.AreEqual(connectionInfo.Password, connectionInfo1.Password); - Assert.AreEqual(connectionInfo.VirtualHost, connectionInfo1.VirtualHost); - - Assert.IsTrue((connectionInfo1.GetAllBrokerInfos().Count == 2)); - Assert.IsTrue(connectionInfo.GetBrokerInfo(0).Equals(connectionInfo1.GetBrokerInfo(0))); - Assert.IsTrue(connectionInfo.GetBrokerInfo(1).Equals(connectionInfo1.GetBrokerInfo(1))); - - } - - [Test] - public void EnsureVirtualHostStartsWithSlash() - { - IConnectionInfo connection = new QpidConnectionInfo(); - connection.VirtualHost = "test"; - Assert.AreEqual("/test", connection.VirtualHost); - - connection.VirtualHost = "/mytest"; - Assert.AreEqual("/mytest", connection.VirtualHost); - - connection.VirtualHost = ""; - Assert.AreEqual("/", connection.VirtualHost); - - connection.VirtualHost = null; - Assert.AreEqual("/", connection.VirtualHost); - } - } -} -- cgit v1.2.1