[System*] Add category for tests that use API that require BSD sockets.
[mono.git] / mcs / class / System / Test / System.Net / HttpWebResponseTest.cs
index 5866c34bbccbb17c63151bb8d76b6ea919ea7bba..10d7d807444ce7527e56c73b601788be68f08664 100644 (file)
@@ -14,22 +14,23 @@ using System.Net;
 using System.Net.Sockets;
 using System.Text;
 
+using MonoTests.Helpers;
+
 using NUnit.Framework;
 
 namespace MonoTests.System.Net
 {
        [TestFixture]
+       [Category ("RequiresBSDSockets")]
        public class HttpWebResponseTest
        {
                [Test]
                public void CharacterSet_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -54,12 +55,10 @@ namespace MonoTests.System.Net
                [Test]
                public void Close_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -75,12 +74,10 @@ namespace MonoTests.System.Net
                [Test]
                public void ContentEncoding_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -105,12 +102,10 @@ namespace MonoTests.System.Net
                [Test]
                public void ContentLength_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -127,12 +122,10 @@ namespace MonoTests.System.Net
                [Test]
                public void ContentType_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -157,12 +150,10 @@ namespace MonoTests.System.Net
                [Test]
                public void Cookies_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -197,12 +188,10 @@ namespace MonoTests.System.Net
                [Test]
                public void GetResponseHeader_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -227,12 +216,10 @@ namespace MonoTests.System.Net
                [Test]
                public void GetResponseStream_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -257,12 +244,10 @@ namespace MonoTests.System.Net
                [Test]
                public void Headers_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -272,7 +257,6 @@ namespace MonoTests.System.Net
                                HttpWebResponse resp = (HttpWebResponse) req.GetResponse ();
                                ((IDisposable) resp).Dispose ();
 
-#if NET_2_0
                                WebHeaderCollection headers = resp.Headers;
                                Assert.AreEqual (6, headers.Count, "#1");
                                Assert.AreEqual ("9", headers ["Content-Length"], "#2");
@@ -281,29 +265,16 @@ namespace MonoTests.System.Net
                                Assert.AreEqual ("Wed, 08 Jan 2003 23:11:55 GMT", headers ["Last-Modified"], "#5");
                                Assert.AreEqual ("UserID=Miguel,StoreProfile=true", headers ["Set-Cookie"], "#6");
                                Assert.AreEqual ("Mono/Test", headers ["Server"], "#7");
-#else
-                               try {
-                                       WebHeaderCollection headers = resp.Headers;
-                                       Assert.Fail ("#1:" + headers);
-                               } catch (ObjectDisposedException ex) {
-                                       Assert.AreEqual (typeof (ObjectDisposedException), ex.GetType (), "#2");
-                                       Assert.IsNull (ex.InnerException, "#3");
-                                       Assert.IsNotNull (ex.Message, "#4");
-                                       Assert.AreEqual (typeof (HttpWebResponse).FullName, ex.ObjectName, "#5");
-                               }
-#endif
                        }
                }
 
                [Test]
                public void LastModified_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -328,12 +299,10 @@ namespace MonoTests.System.Net
                [Test]
                public void Method_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -358,12 +327,10 @@ namespace MonoTests.System.Net
                [Test]
                public void ProtocolVersion_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -388,12 +355,10 @@ namespace MonoTests.System.Net
                [Test]
                public void ResponseUri_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -418,12 +383,10 @@ namespace MonoTests.System.Net
                [Test]
                public void Server_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -448,12 +411,10 @@ namespace MonoTests.System.Net
                [Test]
                public void StatusCode_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -470,12 +431,10 @@ namespace MonoTests.System.Net
                [Test]
                public void StatusDescription_Disposed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -518,17 +477,16 @@ namespace MonoTests.System.Net
        }
 
        [TestFixture]
+       [Category ("RequiresBSDSockets")]
        public class HttpResponseStreamTest
        {
                [Test]
                public void BeginRead_Buffer_Null ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -574,12 +532,10 @@ namespace MonoTests.System.Net
                [Test]
                public void BeginWrite ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -609,12 +565,10 @@ namespace MonoTests.System.Net
                [Category ("NotWorking")]
                public void CanRead ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -638,12 +592,10 @@ namespace MonoTests.System.Net
                [Test]
                public void CanSeek ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -664,16 +616,13 @@ namespace MonoTests.System.Net
                        }
                }
 
-#if NET_2_0
                [Test] // bug #324182
                public void CanTimeout ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -693,17 +642,14 @@ namespace MonoTests.System.Net
                                }
                        }
                }
-#endif
 
                [Test]
                public void CanWrite ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -727,12 +673,10 @@ namespace MonoTests.System.Net
                [Test]
                public void Read ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -766,12 +710,10 @@ namespace MonoTests.System.Net
                [Test]
                public void Read_Buffer_Null ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -817,12 +759,10 @@ namespace MonoTests.System.Net
                [Test]
                public void Read_Count_Negative ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -869,12 +809,10 @@ namespace MonoTests.System.Net
                [Test]
                public void Read_Count_Overflow ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -921,12 +859,10 @@ namespace MonoTests.System.Net
                [Test]
                public void Read_Offset_Negative ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -973,12 +909,10 @@ namespace MonoTests.System.Net
                [Test]
                public void Read_Offset_Overflow ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -1026,12 +960,10 @@ namespace MonoTests.System.Net
                [Category ("NotWorking")]
                public void Read_Stream_Closed ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req;
                                
                                req = (HttpWebRequest) WebRequest.Create (url);
@@ -1088,16 +1020,13 @@ namespace MonoTests.System.Net
                        }
                }
 
-#if NET_2_0
                [Test]
                public void ReadTimeout ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -1117,17 +1046,14 @@ namespace MonoTests.System.Net
                                }
                        }
                }
-#endif
 
                [Test]
                public void Write ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -1153,16 +1079,13 @@ namespace MonoTests.System.Net
                        }
                }
 
-#if NET_2_0
                [Test]
                public void WriteTimeout ()
                {
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 8000);
+                       IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint();
                        string url = "http://" + ep.ToString () + "/test/";
 
-                       using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (HttpWebResponseTest.FullResponseHandler))) {
-                               responder.Start ();
-
+                       using (SocketResponder responder = new SocketResponder (ep, s => HttpWebResponseTest.FullResponseHandler (s))) {
                                HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
                                req.Method = "GET";
                                req.Timeout = 2000;
@@ -1182,6 +1105,5 @@ namespace MonoTests.System.Net
                                }
                        }
                }
-#endif
        }
 }