diff options
| author | Aidan Skinner <aidan@apache.org> | 2008-04-23 23:50:34 +0000 |
|---|---|---|
| committer | Aidan Skinner <aidan@apache.org> | 2008-04-23 23:50:34 +0000 |
| commit | d8988a8acd974f58545bacb52496bb9dcc9fae6d (patch) | |
| tree | 73433413b7350c18f2851cc8621c2d45306da863 /qpid/dotnet/Qpid.Client.Tests | |
| parent | 46d3a97ee717a63c7c688792520d01b04c7848c3 (diff) | |
| download | qpid-python-d8988a8acd974f58545bacb52496bb9dcc9fae6d.tar.gz | |
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
Diffstat (limited to 'qpid/dotnet/Qpid.Client.Tests')
32 files changed, 0 insertions, 4309 deletions
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 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
- <configSections>
- <sectionGroup name="qpid.client">
- <section name="authentication" type="Apache.Qpid.Client.Configuration.AuthenticationConfigurationSectionHandler, Apache.Qpid.Client"/>
- </sectionGroup>
- </configSections>
- <qpid.client>
- <authentication>
- <add key="TEST" value="Apache.Qpid.Client.Tests.Security.TestCallbackHandler, Apache.Qpid.Client.Tests"/>
- </authentication>
- </qpid.client>
-</configuration>
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
-{
- /// <summary>
- /// Test that channels can create messages correctly
- /// </summary>
- [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
-{
- /// <summary>
- /// Test the queue methods
- /// </summary>
- [TestFixture]
- public class ChannelQueueTest
- {
-
- private static ILog _logger = LogManager.GetLogger(typeof(ChannelQueueTest));
-
- /// <summary> The default AMQ connection URL to use for tests. </summary>
- 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);
- }
-
-
- /// <summary>
- /// Callback method to handle any exceptions raised by the test connection.</summary> ///
- /// <param name="e">The connection exception.</param>
- 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();
- }
-
- /// <summary>
- /// 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.
- /// </summary>
- ///
- /// <param name="msgSend">The message to send.</param>
- 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 -{ - /// <summary> - /// 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. - /// </summary> - public class BaseMessagingTestFixture - { - private static ILog _logger = LogManager.GetLogger(typeof(BaseMessagingTestFixture)); - - /// <summary> The default AMQ connection URL to use for tests. </summary> - const string connectionUri = "amqp://guest:guest@default/test?brokerlist='tcp://localhost:5672'"; - - /// <summary> Holds the test connection. </summary> - protected IConnection _connection; - - /// <summary> Holds the test channel. </summary> - protected IChannel _channel; - - /// <summary> - /// Creates the test connection and channel. - /// </summary> - [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; - } - } - - /// <summary> - /// Disposes the test connection. This is called manually because the connection is a field so dispose will not be automatically - /// called on it. - /// </summary> - [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
-{
- /// <summary>
- /// 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.
- /// </summary>
- ///
- /// <todo>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.</todo>
- ///
- /// <todo>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.</todo>
- [TestFixture]
- public class HeadersExchangeTest : BaseMessagingTestFixture
- {
- private static ILog _logger = LogManager.GetLogger(typeof(HeadersExchangeTest));
-
- /// <summary> Holds the default test timeout for broker communications before tests give up. </summary>
- private static readonly int TIMEOUT = 1000;
-
- /// <summary> Holds the name of the headers exchange to create to send test messages on. </summary>
- private string _exchangeName = "ServiceQ1";
-
- /// <summary> Used to preserve the most recent exception in case test cases need to examine it. </summary>
- private Exception _lastException = null;
-
- /// <summary> Used to preserve the most recent message from the test consumer. </summary>
- private IMessage _lastMessage = null;
-
- /// <summary> The test consumer to get messages from the broker with. </summary>
- 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();
- }
-
- /// <summary>
- /// Deregisters the on message delegate before closing the connection.
- /// </summary>
- [TearDown]
- public override void Shutdown()
- {
- _logger.Info("public void Shutdown(): called");
-
- //_consumer.OnMessage -= _msgRecDelegate;
- //_connection.ExceptionListener -= _exceptionDelegate;
-
- _connection.Stop();
-
- base.Shutdown();
- }
-
- /// <summary>
- /// Callback method that is passed any messages received on the test channel.
- /// </summary>
- ///
- /// <param name="message">The received message.</param>
- 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();
- }
-
- /// <summary>Callback method to handle any exceptions raised by the test connection.</summary>
- ///
- /// <param name="e">The connection exception.</param>
- 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();
- }
-
- /// <summary>Check that a message matching all fields of a headers exchange is passed by the exchange.</summary>
- [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);
- }
-
- /// <summary>Check that a message containing values for empty fields of a headers exchange is passed by the exchange.</summary>
- [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);
- }
-
- /// <summary>Check that a message matching only some fields of a headers exchange is not passed by the exchange.</summary>
- [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);
- }
-
- /// <summary>
- /// Check that a message with additional fields to the correct matching fields of a headers exchange is passed by
- /// the exchange.
- /// </summary>
- [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);
- }
-
- /// <summary>
- /// 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.
- /// </summary>
- ///
- /// <param name="msgSend">The message to send.</param>
- /// <param name="shouldPass">A flag to indicate whether or not the message should be received by the consumer.</param>
- 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.");
- }
- }
-
- /// <summary> Returns a field table containing patterns to match the test header exchange against. </summary>
- ///
- /// <returns> A field table containing test patterns. </returns>
- 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
-{
- /// <summary>
- /// Ensure a factory creates messages correctly
- /// </summary>
- [TestFixture]
- public class MessageFactoryRegistryTests
- {
- const string TEXT_PLAIN = "text/plain";
- const string TEXT_XML = "text/xml";
- const string OCTET_STREAM = "application/octet-stream";
-
- /// <summary>
- /// Check default registry can create text/plain messages
- /// </summary>
- [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);
- }
- /// <summary>
- /// Check default registry can create text/xml messages
- /// </summary>
- [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);
- }
- /// <summary>
- /// Check default registry can create application/octet-stream messages
- /// </summary>
- [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);
- }
- /// <summary>
- /// Check default registry can create messages for unknown types
- /// </summary>
- [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);
- }
- /// <summary>
- /// Check that text messages default to UTF-8 encoding
- /// </summary>
- [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 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProductVersion>8.0.50727</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{BA1B0032-4CE6-40DD-A2DC-119F0FFA0A1D}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Apache.Qpid.Client.Tests</RootNamespace>
- <AssemblyName>Apache.Qpid.Client.Tests</AssemblyName>
- <StartupObject>
- </StartupObject>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>..\bin\net-2.0\debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <UseVSHostingProcess>true</UseVSHostingProcess>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>..\bin\net-2.0\release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\Qpid.Common\lib\log4net\log4net.dll</HintPath>
- </Reference>
- <Reference Include="nunit.framework, Version=2.2.6.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>lib\nunit\nunit.framework.dll</HintPath>
- </Reference>
- <Reference Include="System" />
- <Reference Include="System.Data" />
- <Reference Include="System.Xml" />
- </ItemGroup>
- <ItemGroup>
- <Compile Include="BrokerDetails\BrokerDetailsTest.cs" />
- <Compile Include="Channel\ChannelMessageCreationTests.cs" />
- <Compile Include="Channel\ChannelQueueTest.cs" />
- <Compile Include="interop\InteropClientTestCase.cs" />
- <Compile Include="interop\TestCases\TestCase1DummyRun.cs" />
- <Compile Include="interop\TestCases\TestCase2BasicP2P.cs" />
- <Compile Include="interop\TestCases\TestCase3BasicPubSub.cs" />
- <Compile Include="interop\TestClient.cs" />
- <Compile Include="Messages\MessageFactoryRegistryTests.cs" />
- <Compile Include="connection\ConnectionTest.cs" />
- <Compile Include="connection\SslConnectionTest.cs" />
- <Compile Include="failover\FailoverTest.cs" />
- <Compile Include="failover\FailoverTxTest.cs" />
- <Compile Include="HeadersExchange\HeadersExchangeTest.cs" />
- <Compile Include="interop\TopicListener.cs" />
- <Compile Include="interop\TopicPublisher.cs" />
- <Compile Include="MultiConsumer\ProducerMultiConsumer.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="Common\BaseMessagingTestFixture.cs" />
- <Compile Include="requestreply1\ServiceProvidingClient.cs" />
- <Compile Include="requestreply1\ServiceRequestingClient.cs" />
- <Compile Include="Security\CallbackHandlerRegistryTests.cs" />
- <Compile Include="SimpleConsumer\TestSyncConsumer.cs" />
- <Compile Include="undeliverable\UndeliverableTest.cs" />
- <Compile Include="url\ConnectionUrlTest.cs" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\Qpid.Buffer\Qpid.Buffer.csproj">
- <Project>{44384DF2-B0A4-4580-BDBC-EE4BAA87D995}</Project>
- <Name>Qpid.Buffer</Name>
- </ProjectReference>
- <ProjectReference Include="..\Qpid.Messaging\Qpid.Messaging.csproj">
- <Project>{6688F826-C58E-4C1B-AA1F-22AFAB4B7D07}</Project>
- <Name>Qpid.Messaging</Name>
- </ProjectReference>
- <ProjectReference Include="..\Qpid.Client\Qpid.Client.csproj">
- <Project>{68987C05-3768-452C-A6FC-6BA1D372852F}</Project>
- <Name>Qpid.Client</Name>
- </ProjectReference>
- <ProjectReference Include="..\Qpid.Common\Qpid.Common.csproj">
- <Project>{77064C42-24D2-4CEB-9EA2-0EF481A43205}</Project>
- <Name>Qpid.Common</Name>
- </ProjectReference>
- <ProjectReference Include="..\Qpid.Sasl\Qpid.Sasl.csproj">
- <Project>{1465B0EE-6452-42A6-AB73-B2F9EABEEE75}</Project>
- <Name>Qpid.Sasl</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <None Include="log4net.config">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- </ItemGroup>
- <ItemGroup>
- <None Include="App.config" />
- <None Include="Qpid.Common.DLL.config">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- </ItemGroup>
- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
- Other similar extension points exist, see Microsoft.Common.targets.
- <Target Name="BeforeBuild">
- </Target>
- <Target Name="AfterBuild">
- </Target>
- -->
-</Project>
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 @@ -<configuration> - <assemblySettings> - <add key="OpenAMQ1d4Compatibility" value="false"/> - </assemblySettings> -</configuration>
\ 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
-{
- /// <summary>
- /// Test SSL/TLS connections to the broker
- /// </summary>
- [TestFixture, Category("SSL")]
- public class SslConnectionTest
- {
- /// <summary>
- /// Make a test TLS connection to the broker
- /// without using client-certificates
- /// </summary>
- [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 @@ -<?xml version="1.0"?> -<project name="Apache.Qpid.Client" default="test"> - - <target name="build"> - <csc target="library" - define="${build.defines}" - warnaserror="false" debug="${build.debug}" - output="${build.dir}/${project::get-name()}.Tests.dll"> - - <sources> - <include name="**/*.cs" /> - </sources> - <references> - <include name="${build.dir}/log4net.dll" /> - <include name="${build.dir}/nunit.framework.dll" /> - <include name="${build.dir}/${project::get-name()}.dll" /> - <include name="${build.dir}/Apache.Qpid.Common.dll" /> - <include name="${build.dir}/Apache.Qpid.Messaging.dll" /> - <include name="${build.dir}/Apache.Qpid.Sasl.dll" /> - </references> - </csc> - <copy - tofile="${build.dir}/${project::get-name()}.Tests.dll.config" - file="App.config" - /> - <copy - todir="${build.dir}" - file="log4net.config" - /> - </target> - <target name="test" depends="build"> - <nunit2> - <formatter type="${nant.formatter}" usefile="false" /> - <test> - <assemblies> - <include name="${build.dir}/${project::get-name()}.tests.dll"/> - </assemblies> - <categories> - <exclude name="Failover"/> - <exclude name="SSL" if="${framework::get-target-framework() == 'mono-2.0'}"/> - </categories> - </test> - </nunit2> - </target> -</project> - 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
-{
- /// <summary> Defines the possible test case roles that an interop test case can take on. </summary>
- public enum Roles { SENDER, RECEIVER };
-
- /// <summary>
- /// 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.
- ///
- /// <p><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities
- /// <tr><td> Supply the name of the test case that this implements.
- /// <tr><td> Accept/Reject invites based on test parameters.
- /// <tr><td> Adapt to assigned roles.
- /// <tr><td> Perform test case actions.
- /// <tr><td> Generate test reports.
- /// </table>
- /// </summary>
- interface InteropClientTestCase
- {
- /// <summary>
- /// Should provide the name of the test case that this class implements. The exact names are defined in the
- /// interop testing spec.
- /// </summary>
- ///
- /// <returns> The name of the test case that this implements. </returns>
- string GetName();
-
- /// <summary>
- /// Determines whether the test invite that matched this test case is acceptable.
- /// </summary>
- ///
- /// <param name="inviteMessage"> The invitation to accept or reject. </param>
- ///
- /// <returns> <tt>true</tt> to accept the invitation, <tt>false</tt> to reject it. </returns>
- ///
- /// @throws JMSException Any JMSException resulting from reading the message are allowed to fall through.
- bool AcceptInvite(IMessage inviteMessage);
-
- /// <summary>
- /// 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.
- /// </summary>
- ///
- /// <param name="role"> The role to be played; sender or receiver. </param>
- /// <param name="assignRoleMessage"> The role assingment message, contains the full test parameters. </param>
- void AssignRole(Roles role, IMessage assignRoleMessage);
-
- /// <summary>
- /// Performs the test case actions.
- /// </summary>
- void Start();
-
- /// <summary>
- /// Gets a report on the actions performed by the test case in its assigned role.
- /// </summary>
- ///
- /// <param name="session"> The session to create the report message in. </param>
- ///
- /// <returns> The report message. </returns>
- 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
-{
- /// <summary>
- /// 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.
- ///
- /// <p><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities <th> Collaborations
- /// <tr><td> Supply the name of the test case that this implements.
- /// <tr><td> Accept/Reject invites based on test parameters.
- /// <tr><td> Adapt to assigned roles.
- /// <tr><td> Perform test case actions.
- /// <tr><td> Generate test reports.
- /// </table>
- /// </summary>
- 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
-{
- /// <summary>
- /// 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.
- ///
- /// <p><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities <th> Collaborations
- /// <tr><td> Supply the name of the test case that this implements.
- /// <tr><td> Accept/Reject invites based on test parameters.
- /// <tr><td> Adapt to assigned roles.
- /// <tr><td> Send required number of test messages.
- /// <tr><td> Generate test reports.
- /// </table>
- /// </summary>
- public class TestCase2BasicP2P : InteropClientTestCase
- {
- /// <summary> Used for debugging. </summary>
- private static ILog log = LogManager.GetLogger(typeof(TestCase2BasicP2P));
-
- /// <summary> Holds the count of test messages received. </summary>
- private int messageCount;
-
- /// <summary> The role to be played by the test. </summary>
- private Roles role;
-
- /// <summary> The number of test messages to send. </summary>
- private int numMessages;
-
- /// <summary> The routing key to send them to on the default direct exchange. </summary>
- private string sendDestination;
-
- /// <summary> The connection to send the test messages on. </summary>
- private IConnection connection;
-
- /// <summary> The session to send the test messages on. </summary>
- private IChannel channel;
-
- /// <summary> The producer to send the test messages with. </summary>
- private IMessagePublisher publisher;
-
- /// <summary>
- /// Should provide the name of the test case that this class implements. The exact names are defined in the
- /// interop testing spec.
- /// </summary>
- ///
- /// <returns> The name of the test case that this implements. </returns>
- public String GetName()
- {
- log.Debug("public String GetName(): called");
-
- return "TC2_BasicP2P";
- }
-
- /// <summary>
- /// Determines whether the test invite that matched this test case is acceptable.
- /// </summary>
- ///
- /// <param name="inviteMessage"> The invitation to accept or reject. </param>
- ///
- /// <returns> <tt>true</tt> to accept the invitation, <tt>false</tt> to reject it. </returns>
- public bool AcceptInvite(IMessage inviteMessage)
- {
- log.Debug("public boolean AcceptInvite(Message inviteMessage = " + inviteMessage + "): called");
-
- // All invites are acceptable.
- return true;
- }
-
- /// <summary>
- /// 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.
- /// </summary>
- ///
- /// <param name="role"> The role to be played; sender or receiver. </param>
- /// <param name="assignRoleMessage"> The role assingment message, contains the full test parameters. </param>
- 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();
- }
-
- /// <summary> Performs the test case actions. </summary>
- 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++;
- }
- }
- }
-
- /// <summary>
- /// Gets a report on the actions performed by the test case in its assigned role.
- /// </summary>
- ///
- /// <param name="session"> The session to create the report message in. </param>
- ///
- /// <returns> The report message. </returns>
- 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;
- }
-
- /// <summary>
- /// Counts incoming test messages.
- /// </summary>
- ///
- /// <param name="message"> The incoming test message. </param>
- 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
-{
- /// <summary>
- /// 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.
- ///
- /// <p><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities <th> Collaborations
- /// <tr><td> Supply the name of the test case that this implements.
- /// <tr><td> Accept/Reject invites based on test parameters.
- /// <tr><td> Adapt to assigned roles.
- /// <tr><td> Send required number of test messages using pub/sub.
- /// <tr><td> Generate test reports.
- /// </table>
- /// </summary>
- public class TestCase3BasicPubSub : InteropClientTestCase
- {
- /// <summary> Used for debugging. </summary>
- private static ILog log = LogManager.GetLogger(typeof(TestCase3BasicPubSub));
-
- /// <summary> Holds the count of test messages received. </summary>
- private int messageCount;
-
- /// <summary> The role to be played by the test. </summary>
- private Roles role;
-
- /// <summary> The number of test messages to send. </summary>
- private int numMessages;
-
- /// <summary> The number of receiver connection to use. </summary>
- private int numReceivers;
-
- /// <summary> The routing key to send them to on the default direct exchange. </summary>
- private string sendDestination;
-
- /// <summary> The connections to send/receive the test messages on. </summary>
- private IConnection[] connection;
-
- /// <summary> The sessions to send/receive the test messages on. </summary>
- private IChannel[] channel;
-
- /// <summary> The producer to send the test messages with. </summary>
- IMessagePublisher publisher;
-
- /// <summary>
- /// Should provide the name of the test case that this class implements. The exact names are defined in the
- /// interop testing spec.
- /// </summary>
- ///
- /// <returns> The name of the test case that this implements. </returns>
- public String GetName()
- {
- log.Debug("public String GetName(): called");
-
- return "TC3_BasicPubSub";
- }
-
- /// <summary>
- /// Determines whether the test invite that matched this test case is acceptable.
- /// </summary>
- ///
- /// <param name="inviteMessage"> The invitation to accept or reject. </param>
- ///
- /// <returns> <tt>true</tt> to accept the invitation, <tt>false</tt> to reject it. </returns>
- public bool AcceptInvite(IMessage inviteMessage)
- {
- log.Debug("public boolean AcceptInvite(IMessage inviteMessage = " + inviteMessage + "): called");
-
- // All invites are acceptable.
- return true;
- }
-
- /// <summary>
- /// 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.
- /// </summary>
- ///
- /// <param name="role"> The role to be played; sender or receiver. </param>
- /// <param name="assignRoleMessage"> The role assingment message, contains the full test parameters. </param>
- 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();
- }
- }
-
- /// <summary>
- /// Performs the test case actions.
- /// </summary>
- 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++;
- }
- }
- }
-
- /// <summary>
- /// Gets a report on the actions performed by the test case in its assigned role.
- /// </summary>
- ///
- /// <param name="session"> The session to create the report message in. </param>
- ///
- /// <returns> The report message. </returns>
- 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;
- }
-
- /// <summary>
- /// Counts incoming test messages.
- /// </summary>
- ///
- /// <param name="message"> The incoming test message. </param>
- 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
-{
- /// <summary>
- /// 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.
- ///
- /// <p/><table><caption>Messages Handled by TestClient</caption>
- /// <tr><th> Message <th> Action
- /// <tr><td> Invite(compulsory) <td> Reply with Enlist.
- /// <tr><td> Invite(test case) <td> Reply with Enlist if test case available.
- /// <tr><td> AssignRole(test case) <td> Reply with Accept Role if matches an enlisted test. Keep test parameters.
- /// <tr><td> Start <td> Send test messages defined by test parameters. Send report on messages sent.
- /// <tr><td> Status Request <td> Send report on messages received.
- /// </table>
- ///
- /// <p><table id="crc"><caption>CRC Card</caption>
- /// <tr><th> Responsibilities <th> Collaborations
- /// <tr><td> Handle all incoming control messages. <td> {@link InteropClientTestCase}
- /// <tr><td> Configure and look up test cases by name. <td> {@link InteropClientTestCase}
- /// </table>
- /// </summary>
- class TestClient
- {
- private static ILog log = LogManager.GetLogger(typeof(TestClient));
-
- /// <summary> Defines the default broker for the tests, localhost, default port. </summary>
- public static string DEFAULT_BROKER_URL = "amqp://guest:guest@clientid/?brokerlist='tcp://localhost:5672'";
-
- /// <summary> Defines the default virtual host to use for the tests, none. </summary>
- public static string DEFAULT_VIRTUAL_HOST = "";
-
- /// <summary> Defines the default identifying name of this test client. </summary>
- public static string DEFAULT_CLIENT_NAME = ".net";
-
- /// <summary> Holds the URL of the broker to run the tests on. </summary>
- public static string brokerUrl;
-
- /// <summary> Holds the virtual host to run the tests on. If <tt>null</tt>, then the default virtual host is used. </summary>
- public static string virtualHost;
-
- /// <summary> The clients identifying name to print in test results and to distinguish from other clients. </summary>
- private string clientName;
-
- /// <summary> Holds all the test cases. </summary>
- private IDictionary testCases = new Hashtable();
-
- InteropClientTestCase currentTestCase;
-
- private MessagePublisherBuilder publisherBuilder;
-
- private IChannel channel;
-
-
- /// <summary>
- /// Creates a new interop test client, listenting to the specified broker and virtual host, with the specified
- /// client identifying name.
- /// </summary>
- ///
- /// <param name="brokerUrl"> The url of the broker to connect to. </param>
- /// <param name="virtualHost"> The virtual host to conect to. </param>
- /// <param name="clientName"> The client name to use. </param>
- 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;
- }
-
-
- /// <summary>
- /// The entry point for the interop test coordinator. This client accepts the following command line arguments:
- /// </summary>
- ///
- /// <p/><table>
- /// <tr><td> -b <td> The broker URL. <td> Optional.
- /// <tr><td> -h <td> The virtual host. <td> Optional.
- /// <tr><td> -n <td> The test client name. <td> Optional.
- /// <tr><td> name=value <td> Trailing argument define name/value pairs. Added to system properties. <td> Optional.
- /// </table>
- ///
- /// <param name="args"> The command line arguments. </param>
- 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);
- }
- }
-
- /// <summary>
- /// Starts the interop test client running. This causes it to start listening for incoming test invites.
- /// </summary>
- 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...");
- }
-
- /// <summary>
- /// 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.
- /// </summary>
- ///
- /// <param name="brokerUrl"> The broker url to connect to, <tt>null</tt> to use the default from the properties. </param>
- /// <param name="virtualHost"> The virtual host to connectio to, <tt>null</tt> to use the default. </param>
- ///
- /// <returns> A JMS conneciton. </returns>
- 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;
- }
-
- /// <summary>
- /// Handles all incoming control messages.
- /// </summary>
- ///
- /// <param name="message"> The incoming message. </param>
- 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);
- }
- }
-
- /// <summary>
- /// Send the specified message using the specified routing key on the direct exchange.
- /// </summary>
- ///
- /// <param name="message"> The message to send.</param>
- /// <param name="routingKey"> The routing key to send the message with.</param>
- 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));
-
- /// <summary> The default AMQ connection URL to use for tests. </summary>
- const string DEFAULT_URI = "amqp://guest:guest@default/test?brokerlist='tcp://localhost:5672'";
-
- /// <summary> Holds the routing key for the topic to receive test messages on. </summary>
- public static string CONTROL_ROUTING_KEY = "topic_control";
-
- /// <summary> Holds the routing key for the queue to send reports to. </summary>
- public static string RESPONSE_ROUTING_KEY = "response";
-
- /// <summary> Holds the connection to listen on. </summary>
- private IConnection connection;
-
- /// <summary> Holds the channel for all test messages.</summary>
- private IChannel channel;
-
- /// <summary> Holds the producer to send report messages on. </summary>
- private IMessagePublisher publisher;
-
- /// <summary> Holds a flag to indicate that a timer has begun on the first message. Reset when report is sent. </summary> */
- private bool init;
-
- /// <summary> Holds the count of messages received by this listener. </summary> */
- private int count;
-
- /// <summary> Creates a topic listener using the specified broker URL. </summary>
- ///
- /// <param name="connectionUri">The broker URL to listen on.</param>
- 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);
- }
-
- /// <summary>
- /// 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.
- /// </summary>
- ///
- /// <param name="message">The received message.</param>
- 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++;
- }
- }
-
- /// <summary> Checks a message to see if it is a shutdown control message. </summary>
- ///
- /// <param name="m">The message to check.</param>
- ///
- /// <returns><tt>true</tt> if it is a shutdown control message, <tt>false</tt> otherwise.</returns>
- private bool IsShutdown(IMessage m)
- {
- bool result = CheckTextField(m, "TYPE", "TERMINATION_REQUEST");
-
- //log.Debug("isShutdown = " + result);
-
- return result;
- }
-
- /// <summary> Checks a message to see if it is a report request control message. </summary>
- ///
- /// <param name="m">The message to check.</param>
- ///
- /// <returns><tt>true</tt> if it is a report request control message, <tt>false</tt> otherwise.</returns>
- private bool IsReport(IMessage m)
- {
- bool result = CheckTextField(m, "TYPE", "REPORT_REQUEST");
-
- //log.Debug("isReport = " + result);
-
- return result;
- }
-
- /// <summary> Checks whether or not a text field on a message has the specified value. </summary>
- ///
- /// <param name="e">The message to check.</param>
- /// <param name="e">The name of the field to check.</param>
- /// <param name="e">The expected value of the field to compare with.</param>
- ///
- /// <returns> <tt>true</tt>If the specified field has the specified value, <tt>fals</tt> otherwise. </returns>
- 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;
- }
-
- /// <summary> Stops the message consumer and closes the connection. </summary>
- private void Shutdown()
- {
- connection.Stop();
- channel.Dispose();
- connection.Dispose();
- }
-
- /// <summary> Sends the report message to the response location. </summary>
- 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));
-
- /// <summary> The default AMQ connection URL to use for tests. </summary>
- const string DEFAULT_URI = "amqp://guest:guest@default/test?brokerlist='tcp://localhost:5672'";
-
- /// <summary> Holds the default test timeout for broker communications before tests give up. </summary>
- const int TIMEOUT = 10000;
-
- /// <summary> Holds the routing key for the topic to receive test messages on. </summary>
- const string CONTROL_ROUTING_KEY = "topic_control";
-
- /// <summary> Holds the routing key for the queue to send reports to. </summary>
- const string RESPONSE_ROUTING_KEY = "response";
-
- /// <summary> Holds the number of messages to send in each test run. </summary>
- private int numMessages;
-
- /// <summary> Holds the number of subscribers listening to the messsages. </summary>
- private int numSubscribers;
-
- /// <summary> A monitor used to wait for all reports to arrive back from consumers on. </summary>
- private AutoResetEvent allReportsReceivedEvt = new AutoResetEvent(false);
-
- /// <summary> Holds the connection to listen on. </summary>
- private IConnection connection;
-
- /// <summary> Holds the channel for all test messages.</summary>
- private IChannel channel;
-
- /// <summary> Holds the producer to send test messages on. </summary>
- private IMessagePublisher publisher;
-
- /// <summary>
- /// Creates a topic publisher that will send the specifed number of messages and expect the specifed number of report back from test
- /// subscribers.
- /// </summary>
- ///
- /// <param name="connectionUri">The broker URL.</param>
- /// <param name="numMessages">The number of messages to send in each test.</param>
- /// <param name="numSubscribers">The number of subscribes that are expected to reply with a report.</param>
- 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, "<<default>>", 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...");
- }
-
- /// <summary>
- /// Start a test subscriber. The broker URL must be specified as the first command line argument.
- /// </summary>
- ///
- /// <param name="argv">The command line arguments, broker URL first.</param>
- 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();
- }
-
- /// <summary>
- /// Sends the test messages and waits for all subscribers to reply with a report.
- /// </summary>
- 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();
- }
-
- /// <summary>
- /// 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.
- /// </summary>
- ///
- /// <param name="message">The received report message.</param>
- 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();
- }
- }
-
- /// <summary> Stops the message consumers and closes the connection. </summary>
- 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 Binary files differdeleted file mode 100644 index 53666e74c9..0000000000 --- a/qpid/dotnet/Qpid.Client.Tests/lib/nunit/nunit.framework.dll +++ /dev/null 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 @@ -<log4net> - <appender name="console" type="log4net.Appender.ConsoleAppender" > - <layout type="log4net.Layout.PatternLayout"> - <conversionPattern value="%d [%t] %-5p %c:%M(%L) - %m%n" /> - </layout> - <threshold value="info"/> - </appender> - - <appender name="filelog" type="log4net.Appender.FileAppender"> - <file value="qpid_client.log"/> - <appendToFile value="false"/> - <layout type="log4net.Layout.PatternLayout"> - <conversionPattern value="%d [%t] %-5p %c:%M(%L) - %m%n" /> - </layout> - </appender> - - <appender name="protocolLog" type="log4net.Appender.FileAppender"> - <file value="protocol.log"/> - <appendToFile value="false"/> - <layout type="log4net.Layout.PatternLayout"> - <conversionPattern value="%date - %message%newline"/> - </layout> - </appender> - - <appender name="ioLog" type="log4net.Appender.FileAppender"> - <file value="io.log"/> - <appendToFile value="false"/> - <layout type="log4net.Layout.PatternLayout"> - <conversionPattern value="%date - %message%newline"/> - </layout> - <threshold value="info"/> - </appender> - - <appender name="UdpAppender" type="log4net.Appender.UdpAppender"> - <remoteAddress value="127.0.0.1" /> - <remotePort value="4445" /> - <layout type="log4net.Layout.XmlLayoutSchemaLog4j"> - <locationInfo value="true" /> - </layout> - <threshold value="debug"/> - </appender> - - <logger name="Qpid.Client.ProtocolChannel.Tracing" additivity="false"> - <level value="info"/> - <appender-ref ref="protocolLog"/> - </logger> - - <logger name="Qpid.Client.ByteChannel.Tracing" additivity="false"> - <level value="info" /> - <appender-ref ref="ioLog"/> - </logger> - <logger name="Qpid.Framing.FieldTable" additivity="false"> - <level value="debug" /> - <appender-ref ref="console"/> - </logger> - - <root> - <appender-ref ref="console"/> - <appender-ref ref="UdpAppender"/> - <appender-ref ref="filelog"/> - </root> -</log4net>
\ 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 -{ - /// <summary> - /// 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 - /// </summary> - [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); - } - } -} |
