Author: aidan
Date: Tue Dec 22 20:59:57 2009
New Revision: 893315

URL: http://svn.apache.org/viewvc?rev=893315&view=rev
Log:
QPID-2239: make sure the close() does not hand.

Also handle authentication failures properly, QPID-2240.

Patch by julien.lavigne

Added:
    qpid/trunk/qpid/dotnet/client-010/test/Helpers/
    qpid/trunk/qpid/dotnet/client-010/test/Helpers/ConfigHelpers.cs
    qpid/trunk/qpid/dotnet/client-010/test/interop/ConnectionTests.cs
Modified:
    qpid/trunk/qpid/dotnet/client-010/client/client/Client.cs
    qpid/trunk/qpid/dotnet/client-010/client/client/ClientConnectionDelegate.cs
    qpid/trunk/qpid/dotnet/client-010/client/client/IClient.cs
    qpid/trunk/qpid/dotnet/client-010/client/transport/Channel.cs
    qpid/trunk/qpid/dotnet/client-010/client/transport/ClientDelegate.cs
    qpid/trunk/qpid/dotnet/client-010/client/transport/Connection.cs
    qpid/trunk/qpid/dotnet/client-010/client/transport/ConnectionDelegate.cs
    qpid/trunk/qpid/dotnet/client-010/client/transport/network/Assembler.cs
    qpid/trunk/qpid/dotnet/client-010/client/transport/network/InputHandler.cs
    qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoReceiver.cs
    
qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoSSLTransport.cs
    qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoTransport.cs
    qpid/trunk/qpid/dotnet/client-010/test/Test.csproj
    qpid/trunk/qpid/dotnet/client-010/test/interop/TestCase.cs

Modified: qpid/trunk/qpid/dotnet/client-010/client/client/Client.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/client/Client.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/client/client/Client.cs (original)
+++ qpid/trunk/qpid/dotnet/client-010/client/client/Client.cs Tue Dec 22 
20:59:57 2009
@@ -34,11 +34,18 @@
         private readonly Object _closeOK;
         private IClosedListener _closedListner;
 
+        public event EventHandler<ExceptionArgs> ExceptionRaised;
+        public event EventHandler ConnectionLost;
 
         public bool IsClosed
         {
             get { return _isClosed; }
-            set { _isClosed = value; }
+            set
+            {
+                _isClosed = value;
+                if(_isClosed && ConnectionLost != null)
+                    ConnectionLost(this, EventArgs.Empty);
+            }
         }
 
         public Object CloseOk
@@ -67,14 +74,20 @@
         {
             _log.Debug(String.Format("Client Connecting to host {0}; port {1}; 
virtualHost {2}; username {3}", host,
                                      port, virtualHost, username));
-            ConnectionDelegate connectionDelegate = new 
ClientConnectionDelegate(this, username, password);
+            ClientConnectionDelegate connectionDelegate = new 
ClientConnectionDelegate(this, username, password);
             ManualResetEvent negotiationComplete = new ManualResetEvent(false);
-            connectionDelegate.setCondition(negotiationComplete);
+            connectionDelegate.SetCondition(negotiationComplete);
             connectionDelegate.VirtualHost = virtualHost;
             _conn = IoTransport.Connect(host, port, connectionDelegate);
             
             _conn.Send(new ProtocolHeader(1, 0, 10));
             negotiationComplete.WaitOne();
+
+            if (connectionDelegate.Exception != null)
+                throw connectionDelegate.Exception;
+
+            connectionDelegate.SetCondition(null);
+
         }
 
         /// <summary>
@@ -93,15 +106,20 @@
         {
             _log.Debug(String.Format("Client Connecting to host {0}; port {1}; 
virtualHost {2}; username {3}", host,
                                      port, virtualHost, username));
-            _log.Debug(String.Format("SSL paramters: serverName: {0}; 
certPath: {1}; rejectUntrusted: {2}", serverName, certPath, rejectUntrusted));  
        
-            ConnectionDelegate connectionDelegate = new 
ClientConnectionDelegate(this, username, password);
+            _log.Debug(String.Format("SSL paramters: serverName: {0}; 
certPath: {1}; rejectUntrusted: {2}", serverName, certPath, rejectUntrusted));
+            ClientConnectionDelegate connectionDelegate = new 
ClientConnectionDelegate(this, username, password);
             ManualResetEvent negotiationComplete = new ManualResetEvent(false);
-            connectionDelegate.setCondition(negotiationComplete);
+            connectionDelegate.SetCondition(negotiationComplete);
             connectionDelegate.VirtualHost = virtualHost;
             _conn = IoSSLTransport.Connect(host, port, serverName, certPath, 
rejectUntrusted, connectionDelegate);
 
             _conn.Send(new ProtocolHeader(1, 0, 10));
             negotiationComplete.WaitOne();
+
+            if (connectionDelegate.Exception != null)
+                throw connectionDelegate.Exception;
+
+            connectionDelegate.SetCondition(null);
         }
 
         public void Close()
@@ -142,5 +160,11 @@
         }       
 
         #endregion
+
+        public void RaiseException(Exception exception)
+        {
+            if (ExceptionRaised != null)
+                ExceptionRaised(this, new ExceptionArgs(exception));
+        }
     }
 }

Modified: 
qpid/trunk/qpid/dotnet/client-010/client/client/ClientConnectionDelegate.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/client/ClientConnectionDelegate.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/client/client/ClientConnectionDelegate.cs 
(original)
+++ qpid/trunk/qpid/dotnet/client-010/client/client/ClientConnectionDelegate.cs 
Tue Dec 22 20:59:57 2009
@@ -33,6 +33,7 @@
         private readonly Client _client;
         private string _username;
         private string _password;
+        private Exception _exception;
 
         public ClientConnectionDelegate(Client client, string username, string 
pasword)
         {
@@ -41,14 +42,24 @@
             _password = pasword;
         }
 
+        public Exception Exception
+        {
+            get { return _exception; }
+        }
+
         public override SessionDelegate GetSessionDelegate()
         {
             return new ClientSessionDelegate();
         }
 
-        public override void Exception(Exception t)
+        public override void RaiseException(Exception exception)
         {
-            throw t;
+            _exception = exception;
+
+            if (_negotiationComplete != null)
+                _negotiationComplete.Set();
+            else
+                _client.RaiseException(exception);
         }
 
         public override void ConnectionStart(Channel context, ConnectionStart 
mystruct)
@@ -78,7 +89,7 @@
                 catch (Exception e)
                 {
                     throw new SystemException("Error when closing client", e);
-                }
+                } 
             }
         }
 
@@ -86,12 +97,12 @@
         {
             base.ConnectionClose(context, connectionClose);
             ErrorCode errorCode = ErrorCode.GetErrorCode((int) 
connectionClose.GetReplyCode());
-            if (_client.ClosedListener == null && errorCode.Code != (int) 
QpidErrorCode.NO_ERROR)
-            {
-                throw new Exception ("Server Closed the connection: Reason " +
-                                       connectionClose.GetReplyText());
-            }           
-                _client.ClosedListener.OnClosed(errorCode, 
connectionClose.GetReplyText(), null);                   
+
+            if(_client.ClosedListener != null)
+                _client.ClosedListener.OnClosed(errorCode, 
connectionClose.GetReplyText(), null);
+
+            if (errorCode.Code != (int)QpidErrorCode.NO_ERROR)
+                throw new Exception ("Server Closed the connection: Reason " + 
connectionClose.GetReplyText());
         }
     }
 }

Modified: qpid/trunk/qpid/dotnet/client-010/client/client/IClient.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/client/IClient.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/client/client/IClient.cs (original)
+++ qpid/trunk/qpid/dotnet/client-010/client/client/IClient.cs Tue Dec 22 
20:59:57 2009
@@ -18,6 +18,7 @@
 */
 
 using System;
+using org.apache.qpid.transport;
 
 namespace org.apache.qpid.client
 {
@@ -49,13 +50,18 @@
         /// <returns>A newly created (suspended) session.</returns>
         IClientSession CreateSession(long expiryInSeconds);
 
+
+        event EventHandler<ExceptionArgs> ExceptionRaised;
+        event EventHandler ConnectionLost;
+
         /// <summary>      
-        /// If the communication layer detects a serious problem with a 
connection, it
-        //  informs the client's ClosedListener
+        /// If the broker sends a disconnect message, it will notify the 
ClosedListener
         /// </summary>        
         /// 
         IClosedListener ClosedListener { set; }
 
+
+
         bool IsClosed { get; set; }
 
         /// <summary>

Modified: qpid/trunk/qpid/dotnet/client-010/client/transport/Channel.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/transport/Channel.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/client/transport/Channel.cs (original)
+++ qpid/trunk/qpid/dotnet/client-010/client/transport/Channel.cs Tue Dec 22 
20:59:57 2009
@@ -64,7 +64,7 @@
 
         public void Init(Object v, ProtocolHeader hdr)
         {
-            _connection.ConnectionDelegate.init(this, hdr);
+            _connection.ConnectionDelegate.Init(this, hdr);
         }
 
         public void Control(Object v, Method method)
@@ -171,4 +171,4 @@
             return String.Format("{0}:{1}", _connection, _channel);
         }
     }
-}
+}
\ No newline at end of file

Modified: qpid/trunk/qpid/dotnet/client-010/client/transport/ClientDelegate.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/transport/ClientDelegate.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/client/transport/ClientDelegate.cs 
(original)
+++ qpid/trunk/qpid/dotnet/client-010/client/transport/ClientDelegate.cs Tue 
Dec 22 20:59:57 2009
@@ -24,7 +24,7 @@
 {
     abstract class ClientDelegate : ConnectionDelegate
     {
-        public override void init(Channel ch, ProtocolHeader hdr)
+        public override void Init(Channel ch, ProtocolHeader hdr)
         {
             if (hdr.Major != 0 && hdr.Minor != 10)
             {

Modified: qpid/trunk/qpid/dotnet/client-010/client/transport/Connection.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/transport/Connection.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/client/transport/Connection.cs (original)
+++ qpid/trunk/qpid/dotnet/client-010/client/transport/Connection.cs Tue Dec 22 
20:59:57 2009
@@ -130,7 +130,7 @@
 
         public void On_ReceivedException(Object sender, ExceptionArgs arg)
         {
-            _connDdelegate.Exception(arg.Exception);
+            _connDdelegate.RaiseException(arg.Exception);
         }
 
         public void On_ReceivedClosed(Object sender, EventArgs arg)

Modified: 
qpid/trunk/qpid/dotnet/client-010/client/transport/ConnectionDelegate.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/transport/ConnectionDelegate.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/client/transport/ConnectionDelegate.cs 
(original)
+++ qpid/trunk/qpid/dotnet/client-010/client/transport/ConnectionDelegate.cs 
Tue Dec 22 20:59:57 2009
@@ -35,20 +35,20 @@
         private static readonly Logger log = 
Logger.Get(typeof(ConnectionDelegate));
         private String _virtualHost;
 
-        private ManualResetEvent _negotiationComplete;
+        protected ManualResetEvent _negotiationComplete;
 
         public abstract SessionDelegate GetSessionDelegate();
 
-        public abstract void Exception(Exception t);
+        public abstract void RaiseException(Exception t);
 
         public abstract void Closed();
 
-        public void setCondition(ManualResetEvent negotiationComplete)
+        public void SetCondition(ManualResetEvent negotiationComplete)
         {
             _negotiationComplete = negotiationComplete;
         }
 
-        public virtual void init(Channel ch, ProtocolHeader hdr)
+        public virtual void Init(Channel ch, ProtocolHeader hdr)
         {
             ch.Connection.Send(new ProtocolHeader((byte)1, hdr.Major, 
hdr.Minor));
             List<Object> plain = new List<Object>();
@@ -105,4 +105,4 @@
             ch.ConnectionCloseOk();
         }
     }
-}
+}
\ No newline at end of file

Modified: 
qpid/trunk/qpid/dotnet/client-010/client/transport/network/Assembler.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/transport/network/Assembler.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/client/transport/network/Assembler.cs 
(original)
+++ qpid/trunk/qpid/dotnet/client-010/client/transport/network/Assembler.cs Tue 
Dec 22 20:59:57 2009
@@ -42,8 +42,11 @@
 
         // the event raised when a buffer is read from the wire        
         public event EventHandler<ReceivedPayload<IProtocolEvent>> 
ReceivedEvent;
-        public event EventHandler<ExceptionArgs> ExceptionProcessing;
-        public event EventHandler HandlerClosed;
+        public event EventHandler Closed;
+
+
+        // Not in use : 
+        public event EventHandler<ExceptionArgs> Exception;
 
         event EventHandler<ReceivedPayload<IProtocolEvent>> 
IReceiver<ReceivedPayload<IProtocolEvent>>.Received
         {
@@ -63,42 +66,6 @@
             }
         }
 
-        event EventHandler<ExceptionArgs> 
IReceiver<ReceivedPayload<IProtocolEvent>>.Exception
-        {
-            add
-            {
-                lock (m_objectLock)
-                {
-                    ExceptionProcessing += value;
-                }
-            }
-            remove
-            {
-                lock (m_objectLock)
-                {
-                    ExceptionProcessing -= value;
-                }
-            }
-        }
-
-        event EventHandler IReceiver<ReceivedPayload<IProtocolEvent>>.Closed
-        {
-            add
-            {
-                lock (m_objectLock)
-                {
-                    HandlerClosed += value;
-                }
-            }
-            remove
-            {
-                lock (m_objectLock)
-                {
-                    HandlerClosed -= value;
-                }
-            }
-        }
-
         public Assembler()
         {
             segments = new Dictionary<int, List<byte[]>>();
@@ -267,16 +234,21 @@
             log.Debug("Assembler: protocol event:", protevent);
             ReceivedPayload<IProtocolEvent> payload = new 
ReceivedPayload<IProtocolEvent>();
             payload.Payload = protevent;
-            if (ReceivedEvent != null)
+
+            if (protevent is ConnectionCloseOk)
             {
-                ReceivedEvent(this, payload);
+                if (Closed != null)
+                    Closed(this, EventArgs.Empty);
             }
             else
             {
-                log.Debug("No listener for event: {0}", protevent);
+                if (ReceivedEvent != null)
+                    ReceivedEvent(this, payload);
+                else
+                    log.Debug("No listener for event: {0}", protevent);
             }
         }
 
         #endregion
     }
-}
+}
\ No newline at end of file

Modified: 
qpid/trunk/qpid/dotnet/client-010/client/transport/network/InputHandler.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/transport/network/InputHandler.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/client/transport/network/InputHandler.cs 
(original)
+++ qpid/trunk/qpid/dotnet/client-010/client/transport/network/InputHandler.cs 
Tue Dec 22 20:59:57 2009
@@ -44,7 +44,9 @@
         // the event raised when a buffer is read from the wire        
         public event EventHandler<ReceivedPayload<INetworkEvent>> 
ReceivedEvent;
         public event EventHandler<ExceptionArgs> ExceptionProcessing;
-        public event EventHandler HandlerClosed;
+
+        // Not in used... This even is never raised in the code => the 
application will block on Close() until the timeout is reached 
+        public event EventHandler Closed;
 
         event EventHandler<ReceivedPayload<INetworkEvent>> 
IReceiver<ReceivedPayload<INetworkEvent>>.Received
         {
@@ -82,24 +84,6 @@
             }
         }
 
-        event EventHandler IReceiver<ReceivedPayload<INetworkEvent>>.Closed
-        {
-            add
-            {
-                lock (m_objectLock)
-                {
-                    HandlerClosed += value;
-                }
-            }
-            remove
-            {
-                lock (m_objectLock)
-                {
-                    HandlerClosed -= value;
-                }
-            }
-        }
-
         private State state;
         private MemoryStream input;
         private int needed;
@@ -279,4 +263,4 @@
 
         #endregion
     }
-}
+}
\ No newline at end of file

Modified: 
qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoReceiver.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoReceiver.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoReceiver.cs 
(original)
+++ qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoReceiver.cs 
Tue Dec 22 20:59:57 2009
@@ -166,10 +166,6 @@
                 }
                 log.Debug("Receiver thread terminating");
             }
-            catch (IOException)
-            {
-                // IOException is thrown when the socket is Closed according 
to the docs
-            }
             catch (Exception t)
             {
                 if (ExceptionReading != null)
@@ -186,4 +182,4 @@
             }
         }
     }
-}
+}
\ No newline at end of file

Modified: 
qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoSSLTransport.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoSSLTransport.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- 
qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoSSLTransport.cs 
(original)
+++ 
qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoSSLTransport.cs 
Tue Dec 22 20:59:57 2009
@@ -62,11 +62,9 @@
             inputHandler.ReceivedEvent += assembler.On_ReceivedEvent;
             // Connection listen to asembler protocol event 
             Receiver.Closed += Connection.On_ReceivedClosed;
+            assembler.Closed += Connection.On_ReceivedClosed;
             Receiver.Exception += Connection.On_ReceivedException;
-            inputHandler.HandlerClosed += Connection.On_ReceivedClosed;
             inputHandler.ExceptionProcessing += 
Connection.On_ReceivedException;
-            assembler.HandlerClosed += Connection.On_ReceivedClosed;
-            assembler.ExceptionProcessing += Connection.On_ReceivedException;
             assembler.ReceivedEvent += Connection.On_ReceivedEvent;
         }
 

Modified: 
qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoTransport.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoTransport.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- 
qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoTransport.cs 
(original)
+++ 
qpid/trunk/qpid/dotnet/client-010/client/transport/network/io/IoTransport.cs 
Tue Dec 22 20:59:57 2009
@@ -65,11 +65,9 @@
             inputHandler.ReceivedEvent += assembler.On_ReceivedEvent;          
  
             // Connection listen to asembler protocol event 
             Receiver.Closed += Connection.On_ReceivedClosed;
+            assembler.Closed += Connection.On_ReceivedClosed;
             Receiver.Exception += Connection.On_ReceivedException;            
-            inputHandler.HandlerClosed += Connection.On_ReceivedClosed;
             inputHandler.ExceptionProcessing += 
Connection.On_ReceivedException;
-            assembler.HandlerClosed += Connection.On_ReceivedClosed;
-            assembler.ExceptionProcessing += Connection.On_ReceivedException;
             assembler.ReceivedEvent += Connection.On_ReceivedEvent;
          }
 
@@ -140,4 +138,4 @@
 
         #endregion
     }
-}
+}
\ No newline at end of file

Added: qpid/trunk/qpid/dotnet/client-010/test/Helpers/ConfigHelpers.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/test/Helpers/ConfigHelpers.cs?rev=893315&view=auto
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/test/Helpers/ConfigHelpers.cs (added)
+++ qpid/trunk/qpid/dotnet/client-010/test/Helpers/ConfigHelpers.cs Tue Dec 22 
20:59:57 2009
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Xml;
+using log4net.Config;
+
+namespace test.Helpers
+{
+    class ConfigHelpers
+    {
+        public static Dictionary<string, string> LoadConfig()
+        {
+            Dictionary<string, string> properties = new Dictionary<string, 
string>();
+
+            XmlConfigurator.Configure(new FileInfo("/log.xml"));
+            // populate default properties
+            properties.Add("Username", "guest");
+            properties.Add("Password", "guest");
+            properties.Add("Host", "localhost");
+            properties.Add("Port", "5672");
+            properties.Add("VirtualHost", "test");
+            //Read the test config file  
+            XmlTextReader reader = new 
XmlTextReader(Environment.CurrentDirectory + "/Qpid Test.dll.config");
+            while (reader.Read())
+            {
+                // if node type is an element
+                if (reader.NodeType == XmlNodeType.Element && 
reader.Name.Equals("add"))
+                {
+                    if (properties.ContainsKey(reader.GetAttribute("key")))
+                    {
+                        properties[reader.GetAttribute("key")] = 
reader.GetAttribute("value");
+                    }
+                    else
+                    {
+                        properties.Add(reader.GetAttribute("key"), 
reader.GetAttribute("value"));
+                    }
+                }
+            }
+
+            return properties;
+        }
+    }
+}

Modified: qpid/trunk/qpid/dotnet/client-010/test/Test.csproj
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/test/Test.csproj?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/test/Test.csproj (original)
+++ qpid/trunk/qpid/dotnet/client-010/test/Test.csproj Tue Dec 22 20:59:57 2009
@@ -47,6 +47,8 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="interop\ConnectionTests.cs" />
+    <Compile Include="Helpers\ConfigHelpers.cs" />
     <Compile Include="interop\Admin.cs" />
     <Compile Include="interop\ApplicationHeaders.cs" />
     <Compile Include="interop\Message.cs" />
@@ -77,4 +79,4 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
+</Project>
\ No newline at end of file

Added: qpid/trunk/qpid/dotnet/client-010/test/interop/ConnectionTests.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/test/interop/ConnectionTests.cs?rev=893315&view=auto
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/test/interop/ConnectionTests.cs (added)
+++ qpid/trunk/qpid/dotnet/client-010/test/interop/ConnectionTests.cs Tue Dec 
22 20:59:57 2009
@@ -0,0 +1,59 @@
+using System;
+using System.Net.Sockets;
+using NUnit.Framework;
+using org.apache.qpid.client;
+using test.Helpers;
+
+namespace test
+{
+    [TestFixture]
+    public class ConnectionTests
+    {
+        [SetUp]
+        public void Setup()
+        {
+
+        }
+
+        [Test]
+        [ExpectedException(typeof(Exception))]
+        public void 
should_raise_exception_in_calling_thread_on_authentification_failure()
+        {
+            var properties = ConfigHelpers.LoadConfig();
+
+            var client = new Client();
+            client.Connect(properties["Host"], 
Convert.ToInt16(properties["Port"]), properties["VirtualHost"],
+                           properties["Username"], "some silly password to 
make sure the authentification fail");      
+        }
+
+        [Test]
+        [ExpectedException(typeof(Exception))]
+        public void 
should_raise_exception_in_calling_thread_on_authentification_failure_with_clodedListener()
+        {
+            var properties = ConfigHelpers.LoadConfig();
+
+            var client = new Client();
+            client.ClosedListener = new FakeListener();
+            client.Connect(properties["Host"], 
Convert.ToInt16(properties["Port"]), properties["VirtualHost"],
+                           properties["Username"], "some silly password to 
make sure the authentification fail");
+        }
+
+        [Test]
+        public void should_not_block_on_close()
+        {
+            var properties = ConfigHelpers.LoadConfig();
+
+            var client = new Client();
+            client.Connect(properties["Host"], 
Convert.ToInt16(properties["Port"]), properties["VirtualHost"],
+                           properties["Username"], properties["Password"]);
+            client.Close();
+        }
+    }
+
+    public class FakeListener : IClosedListener
+    {
+        public void OnClosed(ErrorCode errorCode, string reason, Exception t)
+        {
+        }
+    }
+}

Modified: qpid/trunk/qpid/dotnet/client-010/test/interop/TestCase.cs
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/test/interop/TestCase.cs?rev=893315&r1=893314&r2=893315&view=diff
==============================================================================
--- qpid/trunk/qpid/dotnet/client-010/test/interop/TestCase.cs (original)
+++ qpid/trunk/qpid/dotnet/client-010/test/interop/TestCase.cs Tue Dec 22 
20:59:57 2009
@@ -30,6 +30,7 @@
 using org.apache.qpid.client;
 using org.apache.qpid.transport;
 using org.apache.qpid.transport.util;
+using test.Helpers;
 
 namespace test.interop
 {
@@ -43,35 +44,11 @@
         [TestFixtureSetUp] 
         public void Init()
         {
-            XmlConfigurator.Configure(new FileInfo("/log.xml"));
-            // populate default properties
-            _properties.Add("Username", "guest");
-            _properties.Add("Password", "guest");
-            _properties.Add("Host", "localhost");
-            _properties.Add("Port", "5672");
-            _properties.Add("VirtualHost", "test");
-             //Read the test config file  
-            XmlTextReader reader = new 
XmlTextReader(Environment.CurrentDirectory + "/Qpid Test.dll.config");
-            while (reader.Read())
-            {                
-                // if node type is an element
-                if (reader.NodeType == XmlNodeType.Element && 
reader.Name.Equals("add"))
-                {
-                    if (_properties.ContainsKey(reader.GetAttribute("key")))
-                    {
-                        _properties[reader.GetAttribute("key")] = 
reader.GetAttribute("value");
-                    }
-                    else
-                    {
-                        _properties.Add(reader.GetAttribute("key"), 
reader.GetAttribute("value"));    
-                    }
-                    
-                }               
-            }
+            var properties = ConfigHelpers.LoadConfig();
             // create a client and connect to the broker
             _client = new Client();
-            _client.Connect(Properties["Host"], 
Convert.ToInt16(Properties["Port"]), Properties["VirtualHost"],
-                           Properties["Username"], Properties["Password"]);    
       
+            _client.Connect(properties["Host"], 
Convert.ToInt16(properties["Port"]), properties["VirtualHost"],
+                           properties["Username"], properties["Password"]);    
       
    
         }
 



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

Reply via email to