qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ai...@apache.org
Subject svn commit: r886998 [11/14] - in /qpid/trunk: ./ qpid/dotnet/Qpid.Buffer.Tests/ qpid/dotnet/Qpid.Buffer.Tests/Properties/ qpid/dotnet/Qpid.Buffer/ qpid/dotnet/Qpid.Client.Tests/BrokerDetails/ qpid/dotnet/Qpid.Client.Tests/Channel/ qpid/dotnet/Qpid.Clie...
Date Thu, 03 Dec 2009 23:55:56 GMT
Modified: qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/ProducerMultiConsumerTest.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/ProducerMultiConsumerTest.cs?rev=886998&r1=886997&r2=886998&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/ProducerMultiConsumerTest.cs (original)
+++ qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/ProducerMultiConsumerTest.cs Thu Dec  3 23:55:48 2009
@@ -1,167 +1,167 @@
-/*
- *
- * 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;
-using Apache.Qpid.Client.Qms;
-using Apache.Qpid.Client;
-
-namespace Apache.Qpid.Integration.Tests.testcases
-{
-    /// ProducerMultiConsumerTest provides some tests for one producer and multiple consumers.
-    ///
-    /// <p><table id="crc"><caption>CRC Card</caption>
-    /// <tr><th> Responsibilities <th> Collaborations
-    /// <tr><td> Check that all consumers on a topic each receive all message on it.
-    /// <tr><td> Check that consumers on the same queue receive each message once accross all consumers.
-    /// </table>
-    /// </summary>
-    [TestFixture, Category("Integration")]
-    public class ProducerMultiConsumerTest : BaseMessagingTestFixture
-    {
-        private static readonly ILog _logger = LogManager.GetLogger(typeof(ProducerMultiConsumerTest));
-        
-        /// <summary>Base name for the routing key used for this test (made unique by adding in test id).</summary>
-        private const string TEST_ROUTING_KEY = "ProducerMultiConsumerTest";
-
-        /// <summary>The number of consumers to test.</summary>
-        private const int CONSUMER_COUNT = 5;
-
-        /// <summary>The number of test messages to send.</summary>
-        private const int MESSAGE_COUNT = 10;
-
-        /// <summary>Monitor used to signal succesfull receipt of all test messages.</summary>
-        AutoResetEvent _finishedEvent;
-
-        /// <summary>Used to count test messages received so far.</summary>
-        private int _messageReceivedCount;
-
-        /// <summary>Used to hold the expected number of messages to receive.</summary>
-        private int expectedMessageCount;
-
-        /// <summary>Flag used to indicate that all messages really were received, and that the test did not just time out. </summary>
-        private bool allReceived;
-
-        /// <summary> Creates one producing end-point and many consuming end-points connected on a topic. </summary>
-        [SetUp]
-        public override void Init()
-        {
-            base.Init();
-
-            // Reset all test counts and flags.
-            _messageReceivedCount = 0;
-            allReceived = false;
-            _finishedEvent = new AutoResetEvent(false);
-        }
-
-        /// <summary> Cleans up all test end-points. </summary>
-        [TearDown]
-        public override void Shutdown()
-        {
-            try
-            {
-                // Close all end points for producer and consumers. 
-                // Producer is on 0, and consumers on 1 .. n, so loop is from 0 to n inclusive.
-                for (int i = 0; i <= CONSUMER_COUNT; i++)
-                {
-                    CloseEndPoint(i);
-                }
-            } 
-            finally 
-            {
-                base.Shutdown();
-            }
-        }
-
-        /// <summary> Check that all consumers on a topic each receive all message on it. </summary>
-        [Test]
-        public void AllConsumerReceiveAllMessagesOnTopic()
-        {
-            // Create end-points for all the consumers in the test.
-            for (int i = 1; i <= CONSUMER_COUNT; i++)
-            {
-                SetUpEndPoint(i, false, true, TEST_ROUTING_KEY + testId, AcknowledgeMode.AutoAcknowledge, false, ExchangeNameDefaults.TOPIC,
-                              true, false, null);
-                testConsumer[i].OnMessage += new MessageReceivedDelegate(OnMessage);
-            }
-
-            // Create an end-point to publish to the test topic.
-            SetUpEndPoint(0, true, false, TEST_ROUTING_KEY + testId, AcknowledgeMode.AutoAcknowledge, false, ExchangeNameDefaults.TOPIC,
-                          true, false, null);
-
-            expectedMessageCount = (MESSAGE_COUNT * CONSUMER_COUNT);
-
-            for (int i = 0; i < MESSAGE_COUNT; i++)
-            {
-                testProducer[0].Send(testChannel[0].CreateTextMessage("A"));
-            }
-
-            _finishedEvent.WaitOne(new TimeSpan(0, 0, 0, 30), false);
-
-            // Check that all messages really were received.
-            Assert.IsTrue(allReceived, "All messages were not received, only got " + _messageReceivedCount + " but wanted " + expectedMessageCount);
-        }
-
-        /// <summary> Check that consumers on the same queue receive each message once accross all consumers. </summary>
-        [Test]
-        public void AllConsumerReceiveAllMessagesOnDirect()
-        {
-            // Create end-points for all the consumers in the test.
-            for (int i = 1; i <= CONSUMER_COUNT; i++)
-            {
-                SetUpEndPoint(i, false, true, TEST_ROUTING_KEY + testId, AcknowledgeMode.AutoAcknowledge, false, ExchangeNameDefaults.DIRECT,
-                              true, false, null);
-                testConsumer[i].OnMessage += new MessageReceivedDelegate(OnMessage);
-            }
-
-            // Create an end-point to publish to the test topic.
-            SetUpEndPoint(0, true, false, TEST_ROUTING_KEY + testId, AcknowledgeMode.AutoAcknowledge, false, ExchangeNameDefaults.DIRECT,
-                          true, false, null);
-
-            expectedMessageCount = (MESSAGE_COUNT * CONSUMER_COUNT);
-
-            for (int i = 0; i < MESSAGE_COUNT; i++)
-            {
-                testProducer[0].Send(testChannel[0].CreateTextMessage("A"));
-            }
-
-            _finishedEvent.WaitOne(new TimeSpan(0, 0, 0, 30), false);
-
-            // Check that all messages really were received.
-            Assert.IsTrue(allReceived, "All messages were not received, only got: " + _messageReceivedCount + " but wanted " + expectedMessageCount);
-        }
-
-        /// <summary> Atomically increments the message count on every message, and signals once all messages in the test are received. </summary>
-        public void OnMessage(IMessage m)
-        {
-            int newCount = Interlocked.Increment(ref _messageReceivedCount);
-
-            if (newCount >= expectedMessageCount)
-            {
-                allReceived = true;
-                _finishedEvent.Set();
-            }
-        }        
-    }
-}
+/*
+ *
+ * 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;
+using Apache.Qpid.Client.Qms;
+using Apache.Qpid.Client;
+
+namespace Apache.Qpid.Integration.Tests.testcases
+{
+    /// ProducerMultiConsumerTest provides some tests for one producer and multiple consumers.
+    ///
+    /// <p><table id="crc"><caption>CRC Card</caption>
+    /// <tr><th> Responsibilities <th> Collaborations
+    /// <tr><td> Check that all consumers on a topic each receive all message on it.
+    /// <tr><td> Check that consumers on the same queue receive each message once accross all consumers.
+    /// </table>
+    /// </summary>
+    [TestFixture, Category("Integration")]
+    public class ProducerMultiConsumerTest : BaseMessagingTestFixture
+    {
+        private static readonly ILog _logger = LogManager.GetLogger(typeof(ProducerMultiConsumerTest));
+        
+        /// <summary>Base name for the routing key used for this test (made unique by adding in test id).</summary>
+        private const string TEST_ROUTING_KEY = "ProducerMultiConsumerTest";
+
+        /// <summary>The number of consumers to test.</summary>
+        private const int CONSUMER_COUNT = 5;
+
+        /// <summary>The number of test messages to send.</summary>
+        private const int MESSAGE_COUNT = 10;
+
+        /// <summary>Monitor used to signal succesfull receipt of all test messages.</summary>
+        AutoResetEvent _finishedEvent;
+
+        /// <summary>Used to count test messages received so far.</summary>
+        private int _messageReceivedCount;
+
+        /// <summary>Used to hold the expected number of messages to receive.</summary>
+        private int expectedMessageCount;
+
+        /// <summary>Flag used to indicate that all messages really were received, and that the test did not just time out. </summary>
+        private bool allReceived;
+
+        /// <summary> Creates one producing end-point and many consuming end-points connected on a topic. </summary>
+        [SetUp]
+        public override void Init()
+        {
+            base.Init();
+
+            // Reset all test counts and flags.
+            _messageReceivedCount = 0;
+            allReceived = false;
+            _finishedEvent = new AutoResetEvent(false);
+        }
+
+        /// <summary> Cleans up all test end-points. </summary>
+        [TearDown]
+        public override void Shutdown()
+        {
+            try
+            {
+                // Close all end points for producer and consumers. 
+                // Producer is on 0, and consumers on 1 .. n, so loop is from 0 to n inclusive.
+                for (int i = 0; i <= CONSUMER_COUNT; i++)
+                {
+                    CloseEndPoint(i);
+                }
+            } 
+            finally 
+            {
+                base.Shutdown();
+            }
+        }
+
+        /// <summary> Check that all consumers on a topic each receive all message on it. </summary>
+        [Test]
+        public void AllConsumerReceiveAllMessagesOnTopic()
+        {
+            // Create end-points for all the consumers in the test.
+            for (int i = 1; i <= CONSUMER_COUNT; i++)
+            {
+                SetUpEndPoint(i, false, true, TEST_ROUTING_KEY + testId, AcknowledgeMode.AutoAcknowledge, false, ExchangeNameDefaults.TOPIC,
+                              true, false, null);
+                testConsumer[i].OnMessage += new MessageReceivedDelegate(OnMessage);
+            }
+
+            // Create an end-point to publish to the test topic.
+            SetUpEndPoint(0, true, false, TEST_ROUTING_KEY + testId, AcknowledgeMode.AutoAcknowledge, false, ExchangeNameDefaults.TOPIC,
+                          true, false, null);
+
+            expectedMessageCount = (MESSAGE_COUNT * CONSUMER_COUNT);
+
+            for (int i = 0; i < MESSAGE_COUNT; i++)
+            {
+                testProducer[0].Send(testChannel[0].CreateTextMessage("A"));
+            }
+
+            _finishedEvent.WaitOne(new TimeSpan(0, 0, 0, 30), false);
+
+            // Check that all messages really were received.
+            Assert.IsTrue(allReceived, "All messages were not received, only got " + _messageReceivedCount + " but wanted " + expectedMessageCount);
+        }
+
+        /// <summary> Check that consumers on the same queue receive each message once accross all consumers. </summary>
+        [Test]
+        public void AllConsumerReceiveAllMessagesOnDirect()
+        {
+            // Create end-points for all the consumers in the test.
+            for (int i = 1; i <= CONSUMER_COUNT; i++)
+            {
+                SetUpEndPoint(i, false, true, TEST_ROUTING_KEY + testId, AcknowledgeMode.AutoAcknowledge, false, ExchangeNameDefaults.DIRECT,
+                              true, false, null);
+                testConsumer[i].OnMessage += new MessageReceivedDelegate(OnMessage);
+            }
+
+            // Create an end-point to publish to the test topic.
+            SetUpEndPoint(0, true, false, TEST_ROUTING_KEY + testId, AcknowledgeMode.AutoAcknowledge, false, ExchangeNameDefaults.DIRECT,
+                          true, false, null);
+
+            expectedMessageCount = (MESSAGE_COUNT * CONSUMER_COUNT);
+
+            for (int i = 0; i < MESSAGE_COUNT; i++)
+            {
+                testProducer[0].Send(testChannel[0].CreateTextMessage("A"));
+            }
+
+            _finishedEvent.WaitOne(new TimeSpan(0, 0, 0, 30), false);
+
+            // Check that all messages really were received.
+            Assert.IsTrue(allReceived, "All messages were not received, only got: " + _messageReceivedCount + " but wanted " + expectedMessageCount);
+        }
+
+        /// <summary> Atomically increments the message count on every message, and signals once all messages in the test are received. </summary>
+        public void OnMessage(IMessage m)
+        {
+            int newCount = Interlocked.Increment(ref _messageReceivedCount);
+
+            if (newCount >= expectedMessageCount)
+            {
+                allReceived = true;
+                _finishedEvent.Set();
+            }
+        }        
+    }
+}

Propchange: qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/ProducerMultiConsumerTest.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/SslConnectionTest.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/SslConnectionTest.cs?rev=886998&r1=886997&r2=886998&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/SslConnectionTest.cs (original)
+++ qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/SslConnectionTest.cs Thu Dec  3 23:55:48 2009
@@ -1,64 +1,64 @@
-/*
- *
- * 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.Client;
-using Apache.Qpid.Messaging;
-
-namespace Apache.Qpid.Integration.Tests.testcases
-{
-    /// <summary>
-    /// Test SSL/TLS connections to the broker
-    /// </summary>
-    [TestFixture, Category("Integration")]
-    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);
-            }
-        }
-    }
-}
+/*
+ *
+ * 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.Client;
+using Apache.Qpid.Messaging;
+
+namespace Apache.Qpid.Integration.Tests.testcases
+{
+    /// <summary>
+    /// Test SSL/TLS connections to the broker
+    /// </summary>
+    [TestFixture, Category("Integration")]
+    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);
+            }
+        }
+    }
+}

Propchange: qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/SslConnectionTest.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/SustainedTest.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/SustainedTest.cs?rev=886998&r1=886997&r2=886998&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/SustainedTest.cs (original)
+++ qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/SustainedTest.cs Thu Dec  3 23:55:48 2009
@@ -1,109 +1,109 @@
-/*
- *
- * 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.Threading;
-using NUnit.Framework;
-using Apache.Qpid.Client.Qms;
-using Apache.Qpid.Client;
-using Apache.Qpid.Messaging;
-using log4net;
-
-namespace Apache.Qpid.Integration.Tests.testcases
-{
-	/// <summary>
-	/// Runs through the range of ack modes for each test case, sending and recieving a large number of messages
-	/// </summary>
-	[TestFixture, Category("Integration")]
-	public class SustainedTest : BaseMessagingTestFixture
-	{
-		/// <summary>The number of test messages to send.</summary>
-        private const int MESSAGE_COUNT = 50;//00;
-        
-        /// <summary>Base name for the routing key used for this test (made unique by adding in test id).</summary>
-        private const string TEST_ROUTING_KEY = "MessageOrderTest";
-        
-        /// <summary>
-        /// The logger
-        /// </summary>
-        private static ILog _logger = LogManager.GetLogger(typeof(SustainedTest));
-        
-        [Test]
-        public void MessageOrderTestAutoAck()
-        {
-        	MessageOrderTest(AcknowledgeMode.AutoAcknowledge);
-        }
-        
-        [Test]
-        public void MessageOrderTestNoAck()
-        {
-        	MessageOrderTest(AcknowledgeMode.NoAcknowledge);
-        }
-        
-        public void MessageOrderTest(AcknowledgeMode consumerMode)
-        {
-        	
-        	// Consumer
-        	SetUpEndPoint(1, false, true, TEST_ROUTING_KEY, consumerMode, false, ExchangeNameDefaults.DIRECT,
-                              true, false, null);
-        	
-        	
-        	Console.WriteLine("Starting producer thread");
-        	Thread prodThread = new Thread(new ThreadStart(SendMessages));
-        	prodThread.Start();
-        	
-        	Thread.Sleep(2000);
-        	Console.WriteLine("Starting consuming");
-        	for (int i = 0; i < MESSAGE_COUNT; i++)
-        	{
-        		if ((i % 10) == 0)
-        		{
-        			Console.WriteLine("Consuming message "+i);
-        		}
-        		ConsumeNMessages(1, "Msg"+i, testConsumer[1]);
-        	}
-        	prodThread.Join();
-        	CloseEndPoint(0);
-        	CloseEndPoint(1);
-        }
-        
-        private static void SendMessages()
-        {
-        	AMQConnection conn = new AMQConnection(QpidConnectionInfo.FromUrl(BaseMessagingTestFixture.connectionUri));
-        	conn.Start();
-        	IChannel channel = conn.CreateChannel(false, AcknowledgeMode.AutoAcknowledge);
-        	IMessagePublisher producer = channel.CreatePublisherBuilder().
-        		WithExchangeName(ExchangeNameDefaults.DIRECT).
-        		WithRoutingKey(TEST_ROUTING_KEY).
-        		Create();
-        	
-        	for (int i = 0; i < MESSAGE_COUNT ; i++)
-        	{
-        		if ((i % 10) == 0) 
-        		{
-        			Console.WriteLine("Sending message "+i);
-        		}
-        		producer.Send(channel.CreateTextMessage("Msg" + i));
-        	}
-        }
-	}
-}
+/*
+ *
+ * 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.Threading;
+using NUnit.Framework;
+using Apache.Qpid.Client.Qms;
+using Apache.Qpid.Client;
+using Apache.Qpid.Messaging;
+using log4net;
+
+namespace Apache.Qpid.Integration.Tests.testcases
+{
+	/// <summary>
+	/// Runs through the range of ack modes for each test case, sending and recieving a large number of messages
+	/// </summary>
+	[TestFixture, Category("Integration")]
+	public class SustainedTest : BaseMessagingTestFixture
+	{
+		/// <summary>The number of test messages to send.</summary>
+        private const int MESSAGE_COUNT = 50;//00;
+        
+        /// <summary>Base name for the routing key used for this test (made unique by adding in test id).</summary>
+        private const string TEST_ROUTING_KEY = "MessageOrderTest";
+        
+        /// <summary>
+        /// The logger
+        /// </summary>
+        private static ILog _logger = LogManager.GetLogger(typeof(SustainedTest));
+        
+        [Test]
+        public void MessageOrderTestAutoAck()
+        {
+        	MessageOrderTest(AcknowledgeMode.AutoAcknowledge);
+        }
+        
+        [Test]
+        public void MessageOrderTestNoAck()
+        {
+        	MessageOrderTest(AcknowledgeMode.NoAcknowledge);
+        }
+        
+        public void MessageOrderTest(AcknowledgeMode consumerMode)
+        {
+        	
+        	// Consumer
+        	SetUpEndPoint(1, false, true, TEST_ROUTING_KEY, consumerMode, false, ExchangeNameDefaults.DIRECT,
+                              true, false, null);
+        	
+        	
+        	Console.WriteLine("Starting producer thread");
+        	Thread prodThread = new Thread(new ThreadStart(SendMessages));
+        	prodThread.Start();
+        	
+        	Thread.Sleep(2000);
+        	Console.WriteLine("Starting consuming");
+        	for (int i = 0; i < MESSAGE_COUNT; i++)
+        	{
+        		if ((i % 10) == 0)
+        		{
+        			Console.WriteLine("Consuming message "+i);
+        		}
+        		ConsumeNMessages(1, "Msg"+i, testConsumer[1]);
+        	}
+        	prodThread.Join();
+        	CloseEndPoint(0);
+        	CloseEndPoint(1);
+        }
+        
+        private static void SendMessages()
+        {
+        	AMQConnection conn = new AMQConnection(QpidConnectionInfo.FromUrl(BaseMessagingTestFixture.connectionUri));
+        	conn.Start();
+        	IChannel channel = conn.CreateChannel(false, AcknowledgeMode.AutoAcknowledge);
+        	IMessagePublisher producer = channel.CreatePublisherBuilder().
+        		WithExchangeName(ExchangeNameDefaults.DIRECT).
+        		WithRoutingKey(TEST_ROUTING_KEY).
+        		Create();
+        	
+        	for (int i = 0; i < MESSAGE_COUNT ; i++)
+        	{
+        		if ((i % 10) == 0) 
+        		{
+        			Console.WriteLine("Sending message "+i);
+        		}
+        		producer.Send(channel.CreateTextMessage("Msg" + i));
+        	}
+        }
+	}
+}

Propchange: qpid/trunk/qpid/dotnet/Qpid.Integration.Tests/testcases/SustainedTest.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/trunk/qpid/dotnet/Qpid.Messaging/ICloseable.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/Qpid.Messaging/ICloseable.cs?rev=886998&r1=886997&r2=886998&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/Qpid.Messaging/ICloseable.cs (original)
+++ qpid/trunk/qpid/dotnet/Qpid.Messaging/ICloseable.cs Thu Dec  3 23:55:48 2009
@@ -1,38 +1,38 @@
-/*
- *
- * 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;
-
-namespace Apache.Qpid.Messaging
-{
-    /// <summary>An ICloseable is a resource that can be explicitly closed. Generally speaking a closed resource can no longer be used, and the
-    /// act of closing a resource is usually interpreted as a signal that the closed item can have its resource cleaned up and de-allocated.
-    ///
-    /// <p/><table id="crc"><caption>CRC Card</caption>
-    /// <tr><th> Responsibilities <th> Collaborations
-    /// <tr><td> Close (and clean-up) a resource.
-    /// </table>
-    /// </summary>
-    public interface ICloseable
-    {
-        /// <summary> Close the resource. </summary>
-        void Close();
-    }
-}
+/*
+ *
+ * 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;
+
+namespace Apache.Qpid.Messaging
+{
+    /// <summary>An ICloseable is a resource that can be explicitly closed. Generally speaking a closed resource can no longer be used, and the
+    /// act of closing a resource is usually interpreted as a signal that the closed item can have its resource cleaned up and de-allocated.
+    ///
+    /// <p/><table id="crc"><caption>CRC Card</caption>
+    /// <tr><th> Responsibilities <th> Collaborations
+    /// <tr><td> Close (and clean-up) a resource.
+    /// </table>
+    /// </summary>
+    public interface ICloseable
+    {
+        /// <summary> Close the resource. </summary>
+        void Close();
+    }
+}

Propchange: qpid/trunk/qpid/dotnet/Qpid.Messaging/ICloseable.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/AnonymousSaslClientTests.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/AnonymousSaslClientTests.cs?rev=886998&r1=886997&r2=886998&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/AnonymousSaslClientTests.cs (original)
+++ qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/AnonymousSaslClientTests.cs Thu Dec  3 23:55:48 2009
@@ -1,72 +1,72 @@
-/*
- *
- * 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.Collections;
-using System.Text;
-
-using NUnit.Framework;
-using Apache.Qpid.Sasl;
-using Apache.Qpid.Sasl.Mechanisms;
-
-namespace Apache.Qpid.Sasl.Tests.Mechanisms
-{
-   [TestFixture]
-   public class AnonymousSaslClientTests : ISaslCallbackHandler
-   {
-      private const string AUTHID = "nobody@nowhere.com";
-      
-      [Test]
-      public void ReturnsRightMechanismName()
-      {
-         ISaslClient client = new AnonymousSaslClient(AUTHID, new Hashtable(), this);
-
-         Assert.AreEqual("ANONYMOUS", client.MechanismName);
-      }
-
-      [Test]
-      public void HasInitialResponseReturnsTrue()
-      {
-         ISaslClient client = new AnonymousSaslClient(AUTHID, new Hashtable(), this);
-
-         Assert.IsTrue(client.HasInitialResponse);
-      }
-
-      [Test]
-      public void CanEvaluateChallenge()
-      {
-         Hashtable props = new Hashtable();
-         ISaslClient client = new AnonymousSaslClient(AUTHID, props, this);
-
-         Assert.IsFalse(client.IsComplete);
-         byte[] response = client.EvaluateChallenge(new byte[0]);
-         Assert.AreEqual(AUTHID, Encoding.UTF8.GetString(response));
-         
-         Assert.IsTrue(client.IsComplete);
-      }
-
-      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
-      {
-      }
-
-   } // class AnonymousSaslClientTests
-
-} // namespace Apache.Qpid.Sasl.Tests.Mechanisms
+/*
+ *
+ * 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.Collections;
+using System.Text;
+
+using NUnit.Framework;
+using Apache.Qpid.Sasl;
+using Apache.Qpid.Sasl.Mechanisms;
+
+namespace Apache.Qpid.Sasl.Tests.Mechanisms
+{
+   [TestFixture]
+   public class AnonymousSaslClientTests : ISaslCallbackHandler
+   {
+      private const string AUTHID = "nobody@nowhere.com";
+      
+      [Test]
+      public void ReturnsRightMechanismName()
+      {
+         ISaslClient client = new AnonymousSaslClient(AUTHID, new Hashtable(), this);
+
+         Assert.AreEqual("ANONYMOUS", client.MechanismName);
+      }
+
+      [Test]
+      public void HasInitialResponseReturnsTrue()
+      {
+         ISaslClient client = new AnonymousSaslClient(AUTHID, new Hashtable(), this);
+
+         Assert.IsTrue(client.HasInitialResponse);
+      }
+
+      [Test]
+      public void CanEvaluateChallenge()
+      {
+         Hashtable props = new Hashtable();
+         ISaslClient client = new AnonymousSaslClient(AUTHID, props, this);
+
+         Assert.IsFalse(client.IsComplete);
+         byte[] response = client.EvaluateChallenge(new byte[0]);
+         Assert.AreEqual(AUTHID, Encoding.UTF8.GetString(response));
+         
+         Assert.IsTrue(client.IsComplete);
+      }
+
+      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
+      {
+      }
+
+   } // class AnonymousSaslClientTests
+
+} // namespace Apache.Qpid.Sasl.Tests.Mechanisms

Propchange: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/AnonymousSaslClientTests.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/CramMD5SaslClientTests.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/CramMD5SaslClientTests.cs?rev=886998&r1=886997&r2=886998&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/CramMD5SaslClientTests.cs (original)
+++ qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/CramMD5SaslClientTests.cs Thu Dec  3 23:55:48 2009
@@ -1,90 +1,90 @@
-/*
- *
- * 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.Collections;
-using System.Text;
-
-using NUnit.Framework;
-using Apache.Qpid.Sasl;
-using Apache.Qpid.Sasl.Mechanisms;
-
-namespace Apache.Qpid.Sasl.Tests.Mechanisms
-{
-   [TestFixture]
-   public class CramMD5SaslClientTests : ISaslCallbackHandler
-   {
-      private const string USERNAME = "testuser";
-      private const string PASSWORD = "tanstaaftanstaaf";
-      private const string AUTHID = "test";
-      
-      [Test]
-      public void ReturnsRightMechanismName()
-      {
-         ISaslClient client = new CramMD5SaslClient(AUTHID, new Hashtable(), this);
-
-         Assert.AreEqual("CRAM-MD5", client.MechanismName);
-      }
-
-      [Test]
-      public void HasInitialResponseReturnsFalse()
-      {
-         ISaslClient client = new CramMD5SaslClient(AUTHID, new Hashtable(), this);
-
-         Assert.IsFalse(client.HasInitialResponse);
-      }
-
-      [Test]
-      public void CanEvaluateChallenge()
-      {
-         Hashtable props = new Hashtable();
-
-         ISaslClient client = new CramMD5SaslClient(AUTHID, props, this);
-
-         Assert.IsFalse(client.IsComplete);
-
-         byte[] challenge = 
-            Encoding.UTF8.GetBytes("<1896.697170952@postoffice.reston.mci.net>");
-         byte[] response = client.EvaluateChallenge(challenge);
-         string[] parts = Encoding.UTF8.GetString(response).Split(' ');
-         
-         Assert.AreEqual(2, parts.Length);
-         Assert.AreEqual(USERNAME, parts[0]);
-         Assert.AreEqual("b913a602c7eda7a495b4e6e7334d3890", parts[1]);
-         Assert.IsTrue(client.IsComplete);
-      }
-
-      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
-      {
-         foreach ( ISaslCallback cb in callbacks )
-         {
-            if ( cb is NameCallback )
-            {
-               ((NameCallback)cb).Text = USERNAME;
-            } else if ( cb is PasswordCallback )
-            {
-               ((PasswordCallback)cb).Text = PASSWORD;
-            }
-         }
-      }
-   } // class CramMD5SaslClientTests
-
-} // namespace Apache.Qpid.Sasl.Tests.Mechanisms
+/*
+ *
+ * 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.Collections;
+using System.Text;
+
+using NUnit.Framework;
+using Apache.Qpid.Sasl;
+using Apache.Qpid.Sasl.Mechanisms;
+
+namespace Apache.Qpid.Sasl.Tests.Mechanisms
+{
+   [TestFixture]
+   public class CramMD5SaslClientTests : ISaslCallbackHandler
+   {
+      private const string USERNAME = "testuser";
+      private const string PASSWORD = "tanstaaftanstaaf";
+      private const string AUTHID = "test";
+      
+      [Test]
+      public void ReturnsRightMechanismName()
+      {
+         ISaslClient client = new CramMD5SaslClient(AUTHID, new Hashtable(), this);
+
+         Assert.AreEqual("CRAM-MD5", client.MechanismName);
+      }
+
+      [Test]
+      public void HasInitialResponseReturnsFalse()
+      {
+         ISaslClient client = new CramMD5SaslClient(AUTHID, new Hashtable(), this);
+
+         Assert.IsFalse(client.HasInitialResponse);
+      }
+
+      [Test]
+      public void CanEvaluateChallenge()
+      {
+         Hashtable props = new Hashtable();
+
+         ISaslClient client = new CramMD5SaslClient(AUTHID, props, this);
+
+         Assert.IsFalse(client.IsComplete);
+
+         byte[] challenge = 
+            Encoding.UTF8.GetBytes("<1896.697170952@postoffice.reston.mci.net>");
+         byte[] response = client.EvaluateChallenge(challenge);
+         string[] parts = Encoding.UTF8.GetString(response).Split(' ');
+         
+         Assert.AreEqual(2, parts.Length);
+         Assert.AreEqual(USERNAME, parts[0]);
+         Assert.AreEqual("b913a602c7eda7a495b4e6e7334d3890", parts[1]);
+         Assert.IsTrue(client.IsComplete);
+      }
+
+      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
+      {
+         foreach ( ISaslCallback cb in callbacks )
+         {
+            if ( cb is NameCallback )
+            {
+               ((NameCallback)cb).Text = USERNAME;
+            } else if ( cb is PasswordCallback )
+            {
+               ((PasswordCallback)cb).Text = PASSWORD;
+            }
+         }
+      }
+   } // class CramMD5SaslClientTests
+
+} // namespace Apache.Qpid.Sasl.Tests.Mechanisms

Propchange: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/CramMD5SaslClientTests.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/DigestSaslClientTests.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/DigestSaslClientTests.cs?rev=886998&r1=886997&r2=886998&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/DigestSaslClientTests.cs (original)
+++ qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/DigestSaslClientTests.cs Thu Dec  3 23:55:48 2009
@@ -1,249 +1,249 @@
-/*
- *
- * 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.Collections;
-using System.Collections.Specialized;
-using System.Text;
-
-using NUnit.Framework;
-using Apache.Qpid.Sasl;
-using Apache.Qpid.Sasl.Mechanisms;
-
-namespace Apache.Qpid.Sasl.Tests.Mechanisms
-{
-   [TestFixture]
-   public class DigestSaslClientTests : ISaslCallbackHandler
-   {
-      private const string USERNAME = "chris";
-      private const string PASSWORD = "secret";
-      private const string AUTHID = null;
-      private const string PROTOCOL = "IMAP";
-      private const string SERVERNAME = "elwood.innosoft.com";
-
-      #region Digest Challenge Parsing Tests
-      //
-      // Digest Challenge Parsing Tests
-      //
-
-      [Test]
-      public void CanParseSimpleString()
-      {
-         string challenge = "realm=\"elwood.innosoft.com\", algorithm=md5-sess";
-         StringDictionary values = DigestChallenge.ParseParameters(challenge);
-         Assert.AreEqual(2, values.Count);
-         Assert.AreEqual("elwood.innosoft.com", values["realm"]);
-         Assert.AreEqual("md5-sess", values["algorithm"]);
-      }
-
-      [Test]
-      public void CanParseEscapedQuotes()
-      {
-         string challenge = "realm=\"elwood\\\".innosoft.com\", algorithm=md5-sess";
-         StringDictionary values = DigestChallenge.ParseParameters(challenge);
-         Assert.AreEqual(2, values.Count);
-         Assert.AreEqual("elwood\\\".innosoft.com", values["realm"]);
-         Assert.AreEqual("md5-sess", values["algorithm"]);
-      }
-
-      [Test]
-      public void CanParseEmbeddedDelimiter()
-      {
-         string challenge = "realm=\"elwood,innosoft.com\", algorithm=md5-sess";
-         StringDictionary values = DigestChallenge.ParseParameters(challenge);
-         Assert.AreEqual(2, values.Count);
-         Assert.AreEqual("elwood,innosoft.com", values["realm"]);
-         Assert.AreEqual("md5-sess", values["algorithm"]);
-      }
-
-      [Test]
-      public void CanParse1()
-      {
-         string challenge = "realm=\"elwood.innosoft.com\",nonce=\"OA6MG9tEQGm2hh\",qop=\"auth\",algorithm=md5-sess,charset=utf-8";
-         DigestChallenge parsed = DigestChallenge.Parse(challenge);
-
-         Assert.AreEqual("elwood.innosoft.com", parsed.Realm);
-         Assert.AreEqual("OA6MG9tEQGm2hh", parsed.Nonce);
-         Assert.Contains("auth", parsed.QopOptions);
-         Assert.AreEqual("md5-sess", parsed.Algorithm);
-         Assert.AreEqual("utf-8", parsed.Charset);
-      }
-
-      #endregion // Digest Challenge Parsing Tests
-
-
-      #region Digest Response Tests
-      //
-      // Digest Response Tests
-      //
-
-      [Test]
-      public void CanWriteResponse()
-      {
-         DigestResponse resp = new DigestResponse();
-         resp.Username = "user";
-         resp.Realm = "nowhere.com";
-         resp.Nonce = "OA9BSXrbuRhWay";
-         resp.Cnonce = "OA9BSuZWMSpW8m";
-         resp.NonceCount = 16;
-         resp.DigestUri = "acap/elwood.innosoft.com";
-         resp.Response = "6084c6db3fede7352c551284490fd0fc";
-         resp.Qop = "auth";
-         resp.MaxBuffer = 65536;
-         resp.Cipher = "3des";
-         resp.Authzid = "user2";
-         resp.AuthParam = "ap";
-         resp.Charset = "utf-8";
-
-         string expected = "username=\"user\",realm=\"nowhere.com\",nonce=\"OA9BSXrbuRhWay\",cnonce=\"OA9BSuZWMSpW8m\",nc=00000010,qop=auth,digest-uri=\"acap/elwood.innosoft.com\",response=\"6084c6db3fede7352c551284490fd0fc\",maxbuf=65536,charset=utf-8,cipher=3des,authzid=\"user2\",auth-param=\"ap\"";
-         Assert.AreEqual(expected, resp.ToString());
-      }
-
-      [Test]
-      public void CanWriteEscapedSecuence()
-      {
-         DigestResponse resp = new DigestResponse();
-         resp.Username = "us\"er";
-
-         string expected = "username=\"us\\\"er\",nc=00000000,maxbuf=0";
-         Assert.AreEqual(expected, resp.ToString());
-      }
-
-      #endregion // Digest Response Tests
-
-
-      #region Authentication Tests
-      //
-      // Authentication Tests
-      //
-
-      [Test]
-      public void ReturnsRightMechanismName()
-      {
-         ISaslClient client = CreateClient();
-
-         Assert.AreEqual("DIGEST-MD5", client.MechanismName);
-      }
-
-      [Test]
-      public void HasInitialResponseReturnsFalse()
-      {
-         ISaslClient client = CreateClient();
-
-         Assert.IsFalse(client.HasInitialResponse);
-      }
-
-      [Test]
-      public void CanAuthenticate()
-      {
-         string challenge = "realm=\"elwood.innosoft.com\",nonce=\"OA6MG9tEQGm2hh\",qop=\"auth\",algorithm=md5-sess,charset=utf-8";
-         DigestSaslClient client = CreateClient();
-         client.Cnonce = "OA6MHXh6VqTrRk";
-
-         byte[] bresp = client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge));
-         string response = Encoding.UTF8.GetString(bresp);
-         string expectedResp = "username=\"chris\",realm=\"elwood.innosoft.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"" +
-            client.Cnonce + "\",nc=00000001,qop=auth,digest-uri=\"imap/elwood.innosoft.com\",response=\"d388dad90d4bbd760a152321f2143af7\",maxbuf=65536,charset=utf-8";
-
-         Assert.AreEqual(expectedResp, response);
-         Assert.IsFalse(client.IsComplete);
-
-         string challenge2 = "rspauth=ea40f60335c427b5527b84dbabcdfffd";
-         bresp = client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge2));
-         // client responds with zero-length array
-         Assert.AreEqual(0, bresp.Length);
-         Assert.IsTrue(client.IsComplete);
-      }
-
-      [Test]
-      [ExpectedException(typeof(ArgumentNullException))]
-      public void ThrowsExceptionWhenChallengeIsMissing()
-      {
-         DigestSaslClient client = CreateClient();
-         client.EvaluateChallenge(null);
-      }
-
-
-      [Test]
-      [ExpectedException(typeof(SaslException))]
-      public void ThrowsExceptionWhenNonceMissing()
-      {
-         string challenge = "realm=\"elwood.innosoft.com\"";
-         DigestSaslClient client = CreateClient();
-
-         client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge));
-      }
-
-      [Test]
-      [ExpectedException(typeof(SaslException))]
-      public void ThrowsExceptionWhenAlgorithmMissing()
-      {
-         string challenge = "realm=\"elwood.innosoft.com\",nonce=\"asdasadsad\"";
-         DigestSaslClient client = CreateClient();
-
-         client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge));
-      }
-
-      [Test]
-      [ExpectedException(typeof(SaslException))]
-      public void ThrowsExceptionWhenSecondChallengeInvalid()
-      {
-         string challenge = "realm=\"elwood.innosoft.com\",nonce=\"OA6MG9tEQGm2hh\",qop=\"auth\",algorithm=md5-sess,charset=utf-8";
-         DigestSaslClient client = CreateClient();
-
-         byte[] bresp = client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge));
-         Encoding.UTF8.GetString(bresp);
-
-         // repeat challenge 1, which is incorrect
-         client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge));
-      }
-
-      private DigestSaslClient CreateClient()
-      {
-         return new DigestSaslClient(
-            AUTHID, SERVERNAME, PROTOCOL, 
-            new Hashtable(), this
-            );
-      }
-
-      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
-      {
-         foreach ( ISaslCallback cb in callbacks )
-         {
-            if ( cb is NameCallback )
-            {
-               ((NameCallback)cb).Text = USERNAME;
-            } else if ( cb is PasswordCallback )
-            {
-               ((PasswordCallback)cb).Text = PASSWORD;
-            } else if ( cb is RealmCallback )
-            {
-               ((RealmCallback)cb).Text = SERVERNAME;
-            }
-         }
-      }
-
-      #endregion // Authentication Tests
-
-
-   } // class DigestSaslClientTests
-
-} // namespace Apache.Qpid.Sasl.Tests.Mechanisms
+/*
+ *
+ * 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.Collections;
+using System.Collections.Specialized;
+using System.Text;
+
+using NUnit.Framework;
+using Apache.Qpid.Sasl;
+using Apache.Qpid.Sasl.Mechanisms;
+
+namespace Apache.Qpid.Sasl.Tests.Mechanisms
+{
+   [TestFixture]
+   public class DigestSaslClientTests : ISaslCallbackHandler
+   {
+      private const string USERNAME = "chris";
+      private const string PASSWORD = "secret";
+      private const string AUTHID = null;
+      private const string PROTOCOL = "IMAP";
+      private const string SERVERNAME = "elwood.innosoft.com";
+
+      #region Digest Challenge Parsing Tests
+      //
+      // Digest Challenge Parsing Tests
+      //
+
+      [Test]
+      public void CanParseSimpleString()
+      {
+         string challenge = "realm=\"elwood.innosoft.com\", algorithm=md5-sess";
+         StringDictionary values = DigestChallenge.ParseParameters(challenge);
+         Assert.AreEqual(2, values.Count);
+         Assert.AreEqual("elwood.innosoft.com", values["realm"]);
+         Assert.AreEqual("md5-sess", values["algorithm"]);
+      }
+
+      [Test]
+      public void CanParseEscapedQuotes()
+      {
+         string challenge = "realm=\"elwood\\\".innosoft.com\", algorithm=md5-sess";
+         StringDictionary values = DigestChallenge.ParseParameters(challenge);
+         Assert.AreEqual(2, values.Count);
+         Assert.AreEqual("elwood\\\".innosoft.com", values["realm"]);
+         Assert.AreEqual("md5-sess", values["algorithm"]);
+      }
+
+      [Test]
+      public void CanParseEmbeddedDelimiter()
+      {
+         string challenge = "realm=\"elwood,innosoft.com\", algorithm=md5-sess";
+         StringDictionary values = DigestChallenge.ParseParameters(challenge);
+         Assert.AreEqual(2, values.Count);
+         Assert.AreEqual("elwood,innosoft.com", values["realm"]);
+         Assert.AreEqual("md5-sess", values["algorithm"]);
+      }
+
+      [Test]
+      public void CanParse1()
+      {
+         string challenge = "realm=\"elwood.innosoft.com\",nonce=\"OA6MG9tEQGm2hh\",qop=\"auth\",algorithm=md5-sess,charset=utf-8";
+         DigestChallenge parsed = DigestChallenge.Parse(challenge);
+
+         Assert.AreEqual("elwood.innosoft.com", parsed.Realm);
+         Assert.AreEqual("OA6MG9tEQGm2hh", parsed.Nonce);
+         Assert.Contains("auth", parsed.QopOptions);
+         Assert.AreEqual("md5-sess", parsed.Algorithm);
+         Assert.AreEqual("utf-8", parsed.Charset);
+      }
+
+      #endregion // Digest Challenge Parsing Tests
+
+
+      #region Digest Response Tests
+      //
+      // Digest Response Tests
+      //
+
+      [Test]
+      public void CanWriteResponse()
+      {
+         DigestResponse resp = new DigestResponse();
+         resp.Username = "user";
+         resp.Realm = "nowhere.com";
+         resp.Nonce = "OA9BSXrbuRhWay";
+         resp.Cnonce = "OA9BSuZWMSpW8m";
+         resp.NonceCount = 16;
+         resp.DigestUri = "acap/elwood.innosoft.com";
+         resp.Response = "6084c6db3fede7352c551284490fd0fc";
+         resp.Qop = "auth";
+         resp.MaxBuffer = 65536;
+         resp.Cipher = "3des";
+         resp.Authzid = "user2";
+         resp.AuthParam = "ap";
+         resp.Charset = "utf-8";
+
+         string expected = "username=\"user\",realm=\"nowhere.com\",nonce=\"OA9BSXrbuRhWay\",cnonce=\"OA9BSuZWMSpW8m\",nc=00000010,qop=auth,digest-uri=\"acap/elwood.innosoft.com\",response=\"6084c6db3fede7352c551284490fd0fc\",maxbuf=65536,charset=utf-8,cipher=3des,authzid=\"user2\",auth-param=\"ap\"";
+         Assert.AreEqual(expected, resp.ToString());
+      }
+
+      [Test]
+      public void CanWriteEscapedSecuence()
+      {
+         DigestResponse resp = new DigestResponse();
+         resp.Username = "us\"er";
+
+         string expected = "username=\"us\\\"er\",nc=00000000,maxbuf=0";
+         Assert.AreEqual(expected, resp.ToString());
+      }
+
+      #endregion // Digest Response Tests
+
+
+      #region Authentication Tests
+      //
+      // Authentication Tests
+      //
+
+      [Test]
+      public void ReturnsRightMechanismName()
+      {
+         ISaslClient client = CreateClient();
+
+         Assert.AreEqual("DIGEST-MD5", client.MechanismName);
+      }
+
+      [Test]
+      public void HasInitialResponseReturnsFalse()
+      {
+         ISaslClient client = CreateClient();
+
+         Assert.IsFalse(client.HasInitialResponse);
+      }
+
+      [Test]
+      public void CanAuthenticate()
+      {
+         string challenge = "realm=\"elwood.innosoft.com\",nonce=\"OA6MG9tEQGm2hh\",qop=\"auth\",algorithm=md5-sess,charset=utf-8";
+         DigestSaslClient client = CreateClient();
+         client.Cnonce = "OA6MHXh6VqTrRk";
+
+         byte[] bresp = client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge));
+         string response = Encoding.UTF8.GetString(bresp);
+         string expectedResp = "username=\"chris\",realm=\"elwood.innosoft.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"" +
+            client.Cnonce + "\",nc=00000001,qop=auth,digest-uri=\"imap/elwood.innosoft.com\",response=\"d388dad90d4bbd760a152321f2143af7\",maxbuf=65536,charset=utf-8";
+
+         Assert.AreEqual(expectedResp, response);
+         Assert.IsFalse(client.IsComplete);
+
+         string challenge2 = "rspauth=ea40f60335c427b5527b84dbabcdfffd";
+         bresp = client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge2));
+         // client responds with zero-length array
+         Assert.AreEqual(0, bresp.Length);
+         Assert.IsTrue(client.IsComplete);
+      }
+
+      [Test]
+      [ExpectedException(typeof(ArgumentNullException))]
+      public void ThrowsExceptionWhenChallengeIsMissing()
+      {
+         DigestSaslClient client = CreateClient();
+         client.EvaluateChallenge(null);
+      }
+
+
+      [Test]
+      [ExpectedException(typeof(SaslException))]
+      public void ThrowsExceptionWhenNonceMissing()
+      {
+         string challenge = "realm=\"elwood.innosoft.com\"";
+         DigestSaslClient client = CreateClient();
+
+         client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge));
+      }
+
+      [Test]
+      [ExpectedException(typeof(SaslException))]
+      public void ThrowsExceptionWhenAlgorithmMissing()
+      {
+         string challenge = "realm=\"elwood.innosoft.com\",nonce=\"asdasadsad\"";
+         DigestSaslClient client = CreateClient();
+
+         client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge));
+      }
+
+      [Test]
+      [ExpectedException(typeof(SaslException))]
+      public void ThrowsExceptionWhenSecondChallengeInvalid()
+      {
+         string challenge = "realm=\"elwood.innosoft.com\",nonce=\"OA6MG9tEQGm2hh\",qop=\"auth\",algorithm=md5-sess,charset=utf-8";
+         DigestSaslClient client = CreateClient();
+
+         byte[] bresp = client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge));
+         Encoding.UTF8.GetString(bresp);
+
+         // repeat challenge 1, which is incorrect
+         client.EvaluateChallenge(Encoding.UTF8.GetBytes(challenge));
+      }
+
+      private DigestSaslClient CreateClient()
+      {
+         return new DigestSaslClient(
+            AUTHID, SERVERNAME, PROTOCOL, 
+            new Hashtable(), this
+            );
+      }
+
+      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
+      {
+         foreach ( ISaslCallback cb in callbacks )
+         {
+            if ( cb is NameCallback )
+            {
+               ((NameCallback)cb).Text = USERNAME;
+            } else if ( cb is PasswordCallback )
+            {
+               ((PasswordCallback)cb).Text = PASSWORD;
+            } else if ( cb is RealmCallback )
+            {
+               ((RealmCallback)cb).Text = SERVERNAME;
+            }
+         }
+      }
+
+      #endregion // Authentication Tests
+
+
+   } // class DigestSaslClientTests
+
+} // namespace Apache.Qpid.Sasl.Tests.Mechanisms

Propchange: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/DigestSaslClientTests.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/ExternalSaslClientTests.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/ExternalSaslClientTests.cs?rev=886998&r1=886997&r2=886998&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/ExternalSaslClientTests.cs (original)
+++ qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/ExternalSaslClientTests.cs Thu Dec  3 23:55:48 2009
@@ -1,71 +1,71 @@
-/*
- *
- * 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.Collections;
-using System.Text;
-
-using NUnit.Framework;
-using Apache.Qpid.Sasl;
-using Apache.Qpid.Sasl.Mechanisms;
-
-namespace Apache.Qpid.Sasl.Tests.Mechanisms
-{
-   [TestFixture]
-   public class ExternalSaslClientTests : ISaslCallbackHandler
-   {
-      private const string AUTHID = "nobody@nowhere.com";
-      
-      [Test]
-      public void ReturnsRightMechanismName()
-      {
-         ISaslClient client = new ExternalSaslClient(AUTHID, new Hashtable(), this);
-
-         Assert.AreEqual("EXTERNAL", client.MechanismName);
-      }
-
-      [Test]
-      public void HasInitialResponseReturnsTrue()
-      {
-         ISaslClient client = new ExternalSaslClient(AUTHID, new Hashtable(), this);
-
-         Assert.IsTrue(client.HasInitialResponse);
-      }
-
-      [Test]
-      public void CanEvaluateChallenge()
-      {
-         ISaslClient client = new ExternalSaslClient(AUTHID, new Hashtable(), this);
-
-         Assert.IsFalse(client.IsComplete);
-         byte[] response = client.EvaluateChallenge(new byte[0]);
-         Assert.AreEqual(AUTHID, Encoding.UTF8.GetString(response));
-         
-         Assert.IsTrue(client.IsComplete);
-      }
-
-      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
-      {
-      }
-
-   } // class AnonymousSaslClientTests
-
-} // namespace Apache.Qpid.Sasl.Tests.Mechanisms
+/*
+ *
+ * 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.Collections;
+using System.Text;
+
+using NUnit.Framework;
+using Apache.Qpid.Sasl;
+using Apache.Qpid.Sasl.Mechanisms;
+
+namespace Apache.Qpid.Sasl.Tests.Mechanisms
+{
+   [TestFixture]
+   public class ExternalSaslClientTests : ISaslCallbackHandler
+   {
+      private const string AUTHID = "nobody@nowhere.com";
+      
+      [Test]
+      public void ReturnsRightMechanismName()
+      {
+         ISaslClient client = new ExternalSaslClient(AUTHID, new Hashtable(), this);
+
+         Assert.AreEqual("EXTERNAL", client.MechanismName);
+      }
+
+      [Test]
+      public void HasInitialResponseReturnsTrue()
+      {
+         ISaslClient client = new ExternalSaslClient(AUTHID, new Hashtable(), this);
+
+         Assert.IsTrue(client.HasInitialResponse);
+      }
+
+      [Test]
+      public void CanEvaluateChallenge()
+      {
+         ISaslClient client = new ExternalSaslClient(AUTHID, new Hashtable(), this);
+
+         Assert.IsFalse(client.IsComplete);
+         byte[] response = client.EvaluateChallenge(new byte[0]);
+         Assert.AreEqual(AUTHID, Encoding.UTF8.GetString(response));
+         
+         Assert.IsTrue(client.IsComplete);
+      }
+
+      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
+      {
+      }
+
+   } // class AnonymousSaslClientTests
+
+} // namespace Apache.Qpid.Sasl.Tests.Mechanisms

Propchange: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/ExternalSaslClientTests.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/PlainSaslClientTests.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/PlainSaslClientTests.cs?rev=886998&r1=886997&r2=886998&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/PlainSaslClientTests.cs (original)
+++ qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/PlainSaslClientTests.cs Thu Dec  3 23:55:48 2009
@@ -1,88 +1,88 @@
-/*
- *
- * 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.Collections;
-using System.Text;
-
-using NUnit.Framework;
-using Apache.Qpid.Sasl;
-using Apache.Qpid.Sasl.Mechanisms;
-
-namespace Apache.Qpid.Sasl.Tests.Mechanisms
-{
-   [TestFixture]
-   public class PlainSaslClientTests : ISaslCallbackHandler
-   {
-      private const string USERNAME = "testuser";
-      private const string PASSWORD = "thepasswd";
-      private const string AUTHID = "theauth";
-      
-      [Test]
-      public void ReturnsRightMechanismName()
-      {
-         ISaslClient client = new PlainSaslClient(AUTHID, new Hashtable(), this);
-
-         Assert.AreEqual("PLAIN", client.MechanismName);
-      }
-
-      [Test]
-      public void HasInitialResponseReturnsTrue()
-      {
-         ISaslClient client = new PlainSaslClient(AUTHID, new Hashtable(), this);
-
-         Assert.IsTrue(client.HasInitialResponse);
-      }
-
-      [Test]
-      public void CanEvaluateChallenge()
-      {
-         Hashtable props = new Hashtable();
-         ISaslClient client = new PlainSaslClient(AUTHID, props, this);
-
-         Assert.IsFalse(client.IsComplete);
-         byte[] response = client.EvaluateChallenge(new byte[0]);
-         string[] parts = Encoding.UTF8.GetString(response).Split('\0');
-         
-         Assert.AreEqual(3, parts.Length);
-         Assert.AreEqual(AUTHID, parts[0]);
-         Assert.AreEqual(USERNAME, parts[1]);
-         Assert.AreEqual(PASSWORD, parts[2]);
-         Assert.IsTrue(client.IsComplete);
-      }
-
-      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
-      {
-         foreach ( ISaslCallback cb in callbacks )
-         {
-            if ( cb is NameCallback )
-            {
-               ((NameCallback)cb).Text = USERNAME;
-            } else if ( cb is PasswordCallback )
-            {
-               ((PasswordCallback)cb).Text = PASSWORD;
-            }
-         }
-      }
-
-   } // class PlainSaslClientTests
-
-} // namespace Apache.Qpid.Sasl.Tests.Mechanisms
+/*
+ *
+ * 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.Collections;
+using System.Text;
+
+using NUnit.Framework;
+using Apache.Qpid.Sasl;
+using Apache.Qpid.Sasl.Mechanisms;
+
+namespace Apache.Qpid.Sasl.Tests.Mechanisms
+{
+   [TestFixture]
+   public class PlainSaslClientTests : ISaslCallbackHandler
+   {
+      private const string USERNAME = "testuser";
+      private const string PASSWORD = "thepasswd";
+      private const string AUTHID = "theauth";
+      
+      [Test]
+      public void ReturnsRightMechanismName()
+      {
+         ISaslClient client = new PlainSaslClient(AUTHID, new Hashtable(), this);
+
+         Assert.AreEqual("PLAIN", client.MechanismName);
+      }
+
+      [Test]
+      public void HasInitialResponseReturnsTrue()
+      {
+         ISaslClient client = new PlainSaslClient(AUTHID, new Hashtable(), this);
+
+         Assert.IsTrue(client.HasInitialResponse);
+      }
+
+      [Test]
+      public void CanEvaluateChallenge()
+      {
+         Hashtable props = new Hashtable();
+         ISaslClient client = new PlainSaslClient(AUTHID, props, this);
+
+         Assert.IsFalse(client.IsComplete);
+         byte[] response = client.EvaluateChallenge(new byte[0]);
+         string[] parts = Encoding.UTF8.GetString(response).Split('\0');
+         
+         Assert.AreEqual(3, parts.Length);
+         Assert.AreEqual(AUTHID, parts[0]);
+         Assert.AreEqual(USERNAME, parts[1]);
+         Assert.AreEqual(PASSWORD, parts[2]);
+         Assert.IsTrue(client.IsComplete);
+      }
+
+      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
+      {
+         foreach ( ISaslCallback cb in callbacks )
+         {
+            if ( cb is NameCallback )
+            {
+               ((NameCallback)cb).Text = USERNAME;
+            } else if ( cb is PasswordCallback )
+            {
+               ((PasswordCallback)cb).Text = PASSWORD;
+            }
+         }
+      }
+
+   } // class PlainSaslClientTests
+
+} // namespace Apache.Qpid.Sasl.Tests.Mechanisms

Propchange: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Mechanisms/PlainSaslClientTests.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/Properties/AssemblyInfo.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/SaslTests.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/SaslTests.cs?rev=886998&r1=886997&r2=886998&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/SaslTests.cs (original)
+++ qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/SaslTests.cs Thu Dec  3 23:55:48 2009
@@ -1,133 +1,133 @@
-/*
- *
- * 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.Collections;
-using System.Text;
-
-using NUnit.Framework;
-using Apache.Qpid.Sasl;
-using Apache.Qpid.Sasl.Mechanisms;
-
-namespace Apache.Qpid.Sasl.Tests
-{
-   [TestFixture]
-   public class SaslTests : ISaslCallbackHandler
-   {
-
-      [Test]
-      public void CanCreatePlain()
-      {
-         Hashtable props = new Hashtable();
-         string[] mechanisms = new string[] { "PLAIN", "OTHER" };
-         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
-         
-         Assert.IsNotNull(client);
-         Assert.IsInstanceOfType(typeof(PlainSaslClient), client);
-      }
-
-      [Test]
-      public void CanCreateCramMD5()
-      {
-         Hashtable props = new Hashtable();
-         string[] mechanisms = new string[] { "CRAM-MD5", "OTHER" };
-         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
-
-         Assert.IsNotNull(client);
-         Assert.IsInstanceOfType(typeof(CramMD5SaslClient), client);
-      }
-
-      [Test]
-      public void CanCreateAnonymous()
-      {
-         Hashtable props = new Hashtable();
-         string[] mechanisms = new string[] { "ANONYMOUS", "OTHER" };
-         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
-
-         Assert.IsNotNull(client);
-         Assert.IsInstanceOfType(typeof(AnonymousSaslClient), client);
-      }
-
-      [Test]
-      public void CanCreateDigest()
-      {
-         Hashtable props = new Hashtable();
-         string[] mechanisms = new string[] { "DIGEST-MD5", "OTHER" };
-         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
-
-         Assert.IsNotNull(client);
-         Assert.IsInstanceOfType(typeof(DigestSaslClient), client);
-      }
-
-      [Test]
-      public void CanCreateExternal()
-      {
-         Hashtable props = new Hashtable();
-         string[] mechanisms = new string[] { "EXTERNAL", "OTHER" };
-         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
-
-         Assert.IsNotNull(client);
-         Assert.IsInstanceOfType(typeof(ExternalSaslClient), client);
-      }
-
-      [Test]
-      public void ReturnsNullIfNoFactoryFound()
-      {
-         Hashtable props = new Hashtable();
-         props.Add(SaslProperties.PolicyNoPlainText, true);
-         string[] mechanisms = new string[] { "PLAIN", "OTHER" };
-         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
-
-         Assert.IsNull(client);
-      }
-
-      [Test]
-      public void ParsesConfigurationSection()
-      {
-         // if the TEST mechanism is available, then we know
-         // the configuration section worked!
-         Hashtable props = new Hashtable();
-         string[] mechanisms = new string[] { "TEST" };
-         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
-
-         Assert.IsNotNull(client);
-         Assert.IsInstanceOfType(typeof(TestSaslClient), client);
-      }
-
-      [Test]
-      public void ChoosesStrongerMechanism()
-      {
-         Hashtable props = new Hashtable();
-         string[] mechanisms = new string[] { "PLAIN", "OTHER", "CRAM-MD5" };
-         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
-
-         Assert.IsNotNull(client);
-         Assert.IsInstanceOfType(typeof(CramMD5SaslClient), client);
-      }
-
-
-      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
-      {
-      }
-
-   } // class SaslTests
-
-} // namespace Apache.Qpid.Sasl.Tests
+/*
+ *
+ * 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.Collections;
+using System.Text;
+
+using NUnit.Framework;
+using Apache.Qpid.Sasl;
+using Apache.Qpid.Sasl.Mechanisms;
+
+namespace Apache.Qpid.Sasl.Tests
+{
+   [TestFixture]
+   public class SaslTests : ISaslCallbackHandler
+   {
+
+      [Test]
+      public void CanCreatePlain()
+      {
+         Hashtable props = new Hashtable();
+         string[] mechanisms = new string[] { "PLAIN", "OTHER" };
+         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
+         
+         Assert.IsNotNull(client);
+         Assert.IsInstanceOfType(typeof(PlainSaslClient), client);
+      }
+
+      [Test]
+      public void CanCreateCramMD5()
+      {
+         Hashtable props = new Hashtable();
+         string[] mechanisms = new string[] { "CRAM-MD5", "OTHER" };
+         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
+
+         Assert.IsNotNull(client);
+         Assert.IsInstanceOfType(typeof(CramMD5SaslClient), client);
+      }
+
+      [Test]
+      public void CanCreateAnonymous()
+      {
+         Hashtable props = new Hashtable();
+         string[] mechanisms = new string[] { "ANONYMOUS", "OTHER" };
+         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
+
+         Assert.IsNotNull(client);
+         Assert.IsInstanceOfType(typeof(AnonymousSaslClient), client);
+      }
+
+      [Test]
+      public void CanCreateDigest()
+      {
+         Hashtable props = new Hashtable();
+         string[] mechanisms = new string[] { "DIGEST-MD5", "OTHER" };
+         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
+
+         Assert.IsNotNull(client);
+         Assert.IsInstanceOfType(typeof(DigestSaslClient), client);
+      }
+
+      [Test]
+      public void CanCreateExternal()
+      {
+         Hashtable props = new Hashtable();
+         string[] mechanisms = new string[] { "EXTERNAL", "OTHER" };
+         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
+
+         Assert.IsNotNull(client);
+         Assert.IsInstanceOfType(typeof(ExternalSaslClient), client);
+      }
+
+      [Test]
+      public void ReturnsNullIfNoFactoryFound()
+      {
+         Hashtable props = new Hashtable();
+         props.Add(SaslProperties.PolicyNoPlainText, true);
+         string[] mechanisms = new string[] { "PLAIN", "OTHER" };
+         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
+
+         Assert.IsNull(client);
+      }
+
+      [Test]
+      public void ParsesConfigurationSection()
+      {
+         // if the TEST mechanism is available, then we know
+         // the configuration section worked!
+         Hashtable props = new Hashtable();
+         string[] mechanisms = new string[] { "TEST" };
+         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
+
+         Assert.IsNotNull(client);
+         Assert.IsInstanceOfType(typeof(TestSaslClient), client);
+      }
+
+      [Test]
+      public void ChoosesStrongerMechanism()
+      {
+         Hashtable props = new Hashtable();
+         string[] mechanisms = new string[] { "PLAIN", "OTHER", "CRAM-MD5" };
+         ISaslClient client = Sasl.CreateClient(mechanisms, "", "", "", props, this);
+
+         Assert.IsNotNull(client);
+         Assert.IsInstanceOfType(typeof(CramMD5SaslClient), client);
+      }
+
+
+      void ISaslCallbackHandler.Handle(ISaslCallback[] callbacks)
+      {
+      }
+
+   } // class SaslTests
+
+} // namespace Apache.Qpid.Sasl.Tests

Propchange: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/SaslTests.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/TestClientFactory.cs
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/TestClientFactory.cs?rev=886998&r1=886997&r2=886998&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/TestClientFactory.cs (original)
+++ qpid/trunk/qpid/dotnet/Qpid.Sasl.Tests/TestClientFactory.cs Thu Dec  3 23:55:48 2009
@@ -1,75 +1,75 @@
-/*
- *
- * 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.Collections;
-using System.Text;
-
-using NUnit.Framework;
-using Apache.Qpid.Sasl;
-using Apache.Qpid.Sasl.Mechanisms;
-
-namespace Apache.Qpid.Sasl.Tests
-{
-   public class TestClientFactory : ISaslClientFactory
-   {
-      public string[] GetSupportedMechanisms(IDictionary props)
-      {
-         return new string[] { TestSaslClient.Mechanism };
-      }
-
-      public ISaslClient CreateClient(string[] mechanisms, string authorizationId, string protocol, string serverName, IDictionary props, ISaslCallbackHandler handler)
-      {
-         foreach ( string mech in mechanisms )
-         {
-            if ( mech == TestSaslClient.Mechanism )
-               return new TestSaslClient(props, handler);
-         }
-         return null;
-      }
-
-   } // class TestClientFactory
-
-   internal class TestSaslClient : SaslClient
-   {
-      public const string Mechanism = "TEST";
-
-      public override string MechanismName
-      {
-         get { return Mechanism; }
-      }
-      public override bool HasInitialResponse
-      {
-         get { return false; }
-      }
-
-      public TestSaslClient(IDictionary props, ISaslCallbackHandler handler)
-         : base("", "", "", props, handler)
-      {
-      }
-
-      public override byte[] EvaluateChallenge(byte[] challenge)
-      {
-         throw new NotImplementedException();
-      }
-   } // class TestSaslClient
-
-} // namespace Apache.Qpid.Sasl.Tests
+/*
+ *
+ * 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.Collections;
+using System.Text;
+
+using NUnit.Framework;
+using Apache.Qpid.Sasl;
+using Apache.Qpid.Sasl.Mechanisms;
+
+namespace Apache.Qpid.Sasl.Tests
+{
+   public class TestClientFactory : ISaslClientFactory
+   {
+      public string[] GetSupportedMechanisms(IDictionary props)
+      {
+         return new string[] { TestSaslClient.Mechanism };
+      }
+
+      public ISaslClient CreateClient(string[] mechanisms, string authorizationId, string protocol, string serverName, IDictionary props, ISaslCallbackHandler handler)
+      {
+         foreach ( string mech in mechanisms )
+         {
+            if ( mech == TestSaslClient.Mechanism )
+               return new TestSaslClient(props, handler);
+         }
+         return null;
+      }
+
+   } // class TestClientFactory
+
+   internal class TestSaslClient : SaslClient
+   {
+      public const string Mechanism = "TEST";
+
+      public override string MechanismName
+      {
+         get { return Mechanism; }
+      }
+      public override bool HasInitialResponse
+      {
+         get { return false; }
+      }
+
+      public TestSaslClient(IDictionary props, ISaslCallbackHandler handler)
+         : base("", "", "", props, handler)
+      {
+      }
+
+      public override byte[] EvaluateChallenge(byte[] challenge)
+      {
+         throw new NotImplementedException();
+      }
+   } // class TestSaslClient
+
+} // namespace Apache.Qpid.Sasl.Tests



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org


Mime
View raw message