Imported Upstream version 4.3.2.467

Former-commit-id: 9c2cb47f45fa221e661ab616387c9cda183f283d
This commit is contained in:
Xamarin Public Jenkins
2016-02-22 11:00:01 -05:00
parent f302175246
commit f3e3aab35a
4097 changed files with 122406 additions and 82300 deletions

View File

@@ -341,7 +341,11 @@ namespace MonoTests.System.Net {
Thread thread = new Thread (ReadToEnd);
thread.Start ();
if (test_evt.WaitOne (3000, false) == false) {
#if MONO_FEATURE_THREAD_ABORT
thread.Abort ();
#else
thread.Interrupt ();
#endif
test_evt.Close ();
Assert.IsTrue (false, "Timed out");
}
@@ -774,5 +778,23 @@ namespace MonoTests.System.Net {
var c = new TcpClient ("localhost", port);
h.Stop ();
}
// Test case for bug #31209
[Test]
public void Test_EmptyLineAtStart ()
{
var listener = HttpListener2Test.CreateAndStartListener ("http://127.0.0.1:9124/");
var ns = HttpListener2Test.CreateNS (9124);
HttpListener2Test.Send (ns, "\r\nGET / HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n");
bool timedout;
HttpListener2Test.GetContextWithTimeout (listener, 1000, out timedout);
Assert.IsFalse (timedout, "timed out");
ns.Close ();
listener.Close ();
}
}
}

View File

@@ -27,9 +27,11 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using NUnit.Framework;
using MonoTests.Helpers;
@@ -476,7 +478,6 @@ namespace MonoTests.System.Net {
}
[Test]
[Category ("AndroidNotWorking")] // Fails ("reuse1") when ran as part of the entire BCL test suite. Works when only this fixture is ran
public void ConnectionReuse ()
{
var uri = "http://localhost:" + NetworkHelpers.FindFreePort () + "/";
@@ -494,7 +495,11 @@ namespace MonoTests.System.Net {
public IPEndPoint CreateListenerRequest (HttpListener listener, string uri)
{
IPEndPoint ipEndPoint = null;
listener.BeginGetContext ((result) => ipEndPoint = ListenerCallback (result), listener);
var mre = new ManualResetEventSlim ();
listener.BeginGetContext (result => {
ipEndPoint = ListenerCallback (result);
mre.Set ();
}, listener);
var request = (HttpWebRequest) WebRequest.Create (uri);
request.Method = "POST";
@@ -509,6 +514,8 @@ namespace MonoTests.System.Net {
// Close response so socket can be reused.
response.Close ();
mre.Wait ();
return ipEndPoint;
}
@@ -526,6 +533,53 @@ namespace MonoTests.System.Net {
return clientEndPoint;
}
[Test]
public void HttpClientIsDisconnectedCheckForWriteException()
{
string uri = "http://localhost:" + NetworkHelpers.FindFreePort () + "/";
AutoResetEvent exceptionOccuredEvent = new AutoResetEvent (false);
HttpListener listener = new HttpListener {
IgnoreWriteExceptions = false
};
listener.Prefixes.Add (uri);
listener.Start ();
listener.BeginGetContext (result =>
{
HttpListenerContext context = listener.EndGetContext (result);
context.Response.SendChunked = true;
context.Request.InputStream.Close ();
var bytes = new byte [1024];
using(Stream outputStream = context.Response.OutputStream) {
try {
while (true)
outputStream.Write (bytes, 0, bytes.Length);
} catch {
exceptionOccuredEvent.Set ();
}
}
}, null);
Task.Factory.StartNew (() =>
{
var webRequest = (HttpWebRequest)WebRequest.Create (uri);
webRequest.Method = "POST";
webRequest.KeepAlive = false;
Stream requestStream = webRequest.GetRequestStream ();
requestStream.WriteByte (1);
requestStream.Close ();
using (WebResponse response = webRequest.GetResponse ())
using (Stream stream = response.GetResponseStream ()) {
byte[] clientBytes = new byte [1024];
Assert.IsNotNull (stream, "#01");
stream.Read (clientBytes, 0, clientBytes.Length);
}
});
Assert.IsTrue (exceptionOccuredEvent.WaitOne (15 * 1000), "#02");
}
}
}

View File

@@ -1 +1 @@
3a7ce31d0c602f28af3549eefc482fcb33d7e65a
ea928e50b3028df3f637377e58caab11f8e20610

View File

@@ -29,9 +29,7 @@ namespace MonoTests.System.Net
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;
@@ -59,9 +57,7 @@ namespace MonoTests.System.Net
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;
@@ -80,9 +76,7 @@ namespace MonoTests.System.Net
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;
@@ -110,9 +104,7 @@ namespace MonoTests.System.Net
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;
@@ -132,9 +124,7 @@ namespace MonoTests.System.Net
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;
@@ -162,9 +152,7 @@ namespace MonoTests.System.Net
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;
@@ -202,9 +190,7 @@ namespace MonoTests.System.Net
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;
@@ -232,9 +218,7 @@ namespace MonoTests.System.Net
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;
@@ -262,9 +246,7 @@ namespace MonoTests.System.Net
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;
@@ -291,9 +273,7 @@ namespace MonoTests.System.Net
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;
@@ -321,9 +301,7 @@ namespace MonoTests.System.Net
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;
@@ -351,9 +329,7 @@ namespace MonoTests.System.Net
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;
@@ -381,9 +357,7 @@ namespace MonoTests.System.Net
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;
@@ -411,9 +385,7 @@ namespace MonoTests.System.Net
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;
@@ -441,9 +413,7 @@ namespace MonoTests.System.Net
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;
@@ -463,9 +433,7 @@ namespace MonoTests.System.Net
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;
@@ -516,9 +484,7 @@ namespace MonoTests.System.Net
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;
@@ -567,9 +533,7 @@ namespace MonoTests.System.Net
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;
@@ -602,9 +566,7 @@ namespace MonoTests.System.Net
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;
@@ -631,9 +593,7 @@ namespace MonoTests.System.Net
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;
@@ -660,9 +620,7 @@ namespace MonoTests.System.Net
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;
@@ -689,9 +647,7 @@ namespace MonoTests.System.Net
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;
@@ -718,9 +674,7 @@ namespace MonoTests.System.Net
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;
@@ -757,9 +711,7 @@ namespace MonoTests.System.Net
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;
@@ -808,9 +760,7 @@ namespace MonoTests.System.Net
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;
@@ -860,9 +810,7 @@ namespace MonoTests.System.Net
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;
@@ -912,9 +860,7 @@ namespace MonoTests.System.Net
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;
@@ -964,9 +910,7 @@ namespace MonoTests.System.Net
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;
@@ -1017,9 +961,7 @@ namespace MonoTests.System.Net
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);
@@ -1082,9 +1024,7 @@ namespace MonoTests.System.Net
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;
@@ -1111,9 +1051,7 @@ namespace MonoTests.System.Net
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;
@@ -1145,9 +1083,7 @@ namespace MonoTests.System.Net
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;

View File

@@ -160,7 +160,6 @@ public class IPAddressTest
"20.65535", "20.0.255.255",
"0313.027035210", "203.92.58.136", // bug #411920
"0313.0134.035210", "203.92.58.136", // too
"7848198702", "211.202.2.46", // too
"1434328179", "85.126.28.115", // too
"3397943208", "202.136.127.168", // too
};
@@ -186,9 +185,12 @@ public class IPAddressTest
"12.",
"12.1.2.",
"12...",
" "
" ",
"7848198702",
};
static byte [] ipv4MappedIPv6Prefix = new byte [] { 0,0, 0,0, 0,0, 0,0, 0,0, 0xFF,0xFF };
[Test]
public void PublicFields ()
{
@@ -613,7 +615,6 @@ public class IPAddressTest
Assert.IsFalse (IPAddress.Parse ("FE00::1").IsIPv6Multicast, "#3");
}
#if NET_4_0
[Test]
public void IsIPv6Teredo ()
{
@@ -640,7 +641,56 @@ public class IPAddressTest
}
}
}
#if NET_4_5
[Test]
public void MapToIPv6 ()
{
for (int i = 0; i < ipv4ParseOk.Length / 2; i++) {
IPAddress v4 = IPAddress.Parse (ipv4ParseOk [i * 2]);
byte [] v4bytes = v4.GetAddressBytes ();
IPAddress v6 = v4.MapToIPv6 ();
byte [] v6bytes = v6.GetAddressBytes ();
IPAddress v4back = v6.MapToIPv4 ();
Assert.IsTrue (StartsWith (v6bytes, ipv4MappedIPv6Prefix), "MapToIPv6 #" + i + ".1");
Assert.IsTrue (v6bytes [12] == v4bytes [0], "MapToIPv6 #" + i + ".2");
Assert.IsTrue (v6bytes [13] == v4bytes [1], "MapToIPv6 #" + i + ".3");
Assert.IsTrue (v6bytes [14] == v4bytes [2], "MapToIPv6 #" + i + ".4");
Assert.IsTrue (v6bytes [15] == v4bytes [3], "MapToIPv6 #" + i + ".5");
Assert.IsTrue (v4.Equals (v4back), "MapToIPv4 #" + i);
}
//TODO: Test using MapToIPv4/6 with anything other than IPv4/6 addresses.
//Currently it is not possible to do with the IPAddress implementation.
}
static bool StartsWith (byte [] a, byte [] b)
{
if (a.Length < b.Length)
return false;
for (int i = 0; i < b.Length; i++)
{
if (a [i] != b [i])
return false;
}
return true;
}
#endif
[Test]
public void EqualsFromBytes ()
{
for (int i = 0; i < ipv4ParseOk.Length / 2; i++) {
IPAddress ip = IPAddress.Parse (ipv4ParseOk [i * 2]);
IPAddress ipFromBytes = new IPAddress (ip.GetAddressBytes ());
Assert.IsTrue (ip.Equals (ipFromBytes), "EqualsFromBytes #" + i);
}
}
}
}

View File

@@ -13,6 +13,7 @@ using System;
using System.Collections;
using System.IO;
using System.Net;
using System.Reflection;
using System.Threading;
namespace MonoTests.System.Net
@@ -205,6 +206,36 @@ public class ServicePointTest
}
}
[Test]
public void DnsRefreshTimeout ()
{
const int dnsRefreshTimeout = 2000;
ServicePoint sp;
IPHostEntry host0, host1, host2;
Uri uri;
PropertyInfo hostEntryProperty;
ServicePointManager.DnsRefreshTimeout = dnsRefreshTimeout;
uri = new Uri ("http://www.google.com/");
sp = ServicePointManager.FindServicePoint (uri);
hostEntryProperty = typeof (ServicePoint).GetProperty ("HostEntry", BindingFlags.NonPublic | BindingFlags.Instance);
host0 = hostEntryProperty.GetValue (sp, null) as IPHostEntry;
host1 = hostEntryProperty.GetValue (sp, null) as IPHostEntry;
Assert.AreSame (host0, host1, "HostEntry should result in the same IPHostEntry object.");
Thread.Sleep (dnsRefreshTimeout * 2);
host2 = hostEntryProperty.GetValue (sp, null) as IPHostEntry;
Assert.AreNotSame(host0, host2, "HostEntry should result in a new IPHostEntry " +
"object when DnsRefreshTimeout is reached.");
}
// Debug code not used now, but could be useful later
/*
private void WriteServicePoint (string label, ServicePoint sp)

View File

@@ -1,138 +0,0 @@
//
// SocketResponder.cs - Utility class for tests that require a listener
//
// Author:
// Gert Driesen (drieseng@users.sourceforge.net)
//
// Copyright (C) 2007 Gert Driesen
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Globalization;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
namespace MonoTests.System.Net
{
public delegate byte [] SocketRequestHandler (Socket socket);
public class SocketResponder : IDisposable
{
private TcpListener tcpListener;
private readonly IPEndPoint _localEndPoint;
private Thread listenThread;
private SocketRequestHandler _requestHandler;
private bool _stopped = true;
private readonly object _syncRoot = new object ();
private const int SOCKET_CLOSED = 10004;
private const int SOCKET_INVALID_ARGS = 10022;
public SocketResponder (IPEndPoint localEP, SocketRequestHandler requestHandler)
{
_localEndPoint = localEP;
_requestHandler = requestHandler;
}
public IPEndPoint LocalEndPoint
{
get { return _localEndPoint; }
}
public void Dispose ()
{
Stop ();
}
public bool IsStopped
{
get
{
lock (_syncRoot) {
return _stopped;
}
}
}
public void Start ()
{
lock (_syncRoot) {
if (!_stopped)
return;
_stopped = false;
tcpListener = new TcpListener (LocalEndPoint);
tcpListener.Start ();
listenThread = new Thread (new ThreadStart (Listen));
listenThread.Start ();
}
}
public void Stop ()
{
lock (_syncRoot) {
if (_stopped)
return;
_stopped = true;
if (tcpListener != null) {
tcpListener.Stop ();
tcpListener = null;
Thread.Sleep (50);
}
}
}
private void Listen ()
{
while (!_stopped) {
Socket socket = null;
try {
socket = tcpListener.AcceptSocket ();
socket.Send (_requestHandler (socket));
try {
socket.Shutdown (SocketShutdown.Receive);
socket.Shutdown (SocketShutdown.Send);
} catch {
}
} catch (SocketException ex) {
// ignore interruption of blocking call
if (ex.ErrorCode != SOCKET_CLOSED && ex.ErrorCode != SOCKET_INVALID_ARGS)
throw;
#if MOBILE
} catch (InvalidOperationException ex) {
// This breaks some tests running on Android. The problem is that the stack trace
// doesn't point to where the exception is actually thrown from but the entire process
// is aborted because of unhandled exception.
Console.WriteLine ("SocketResponder.Listen failed:");
Console.WriteLine (ex);
#endif
} finally {
Thread.Sleep (500);
if (socket != null)
socket.Close ();
}
}
}
}
}

View File

@@ -1423,9 +1423,7 @@ namespace MonoTests.System.Net
IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint ();
string url = "http://" + ep.ToString () + "/test/";
using (SocketResponder responder = new SocketResponder (ep, new SocketRequestHandler (EchoRequestHandler))) {
responder.Start ();
using (SocketResponder responder = new SocketResponder (ep, s => EchoRequestHandler (s))) {
WebClient wc = new WebClient ();
wc.Encoding = Encoding.ASCII;
@@ -1875,16 +1873,13 @@ namespace MonoTests.System.Net
}
#endif
#if NET_4_0
public void UploadAsyncCancelEventTest (int port, Action<WebClient, Uri, EventWaitHandle> uploadAction)
{
var ep = NetworkHelpers.LocalEphemeralEndPoint ();
string url = "http://" + ep.ToString() + "/test/";
using (var responder = new SocketResponder (ep, EchoRequestHandler))
using (var responder = new SocketResponder (ep, s => EchoRequestHandler (s)))
{
responder.Start ();
var webClient = new WebClient ();
var cancellationTokenSource = new CancellationTokenSource ();
@@ -1899,6 +1894,5 @@ namespace MonoTests.System.Net
Assert.IsTrue (cancelEvent.WaitOne (1000));
}
}
#endif
}
}

View File

@@ -203,6 +203,15 @@ namespace MonoTests.System.Net
Assert.AreEqual (3, w.GetValues ("Accept").Length, "#17");
}
[Test]
public void GetValuesForMultipleHeaderManyLines ()
{
WebHeaderCollection w = new WebHeaderCollection ();
w.Add ("Pragma", "H1, H2");
w.Add ("Pragma", "H3");
Assert.AreEqual (3, w.GetValues ("Pragma").Length, "#1");
}
[Test]
public void Indexers ()
{
@@ -373,10 +382,8 @@ namespace MonoTests.System.Net
0x49, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2c, 0x20, 0x56, 0x65,
#if MOBILE
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x32, 0x2e, 0x30, 0x2e, 0x35,
#elif NET_4_0
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x34, 0x2e, 0x30, 0x2e, 0x30,
#else
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x32, 0x2e, 0x30, 0x2e, 0x30,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x34, 0x2e, 0x30, 0x2e, 0x30,
#endif
0x2e, 0x30, 0x2c, 0x20, 0x43, 0x75, 0x6c, 0x74, 0x75, 0x72, 0x65,
0x3d, 0x6e, 0x65, 0x75, 0x74, 0x72, 0x61, 0x6c, 0x2c, 0x20, 0x50,

View File

@@ -45,7 +45,6 @@ namespace MonoTests.System.Net {
[Test]
public void Serialization ()
{
#if NET_4_0
string result1 = "<IPermission class=\"System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" +
"version=\"1\">\n" +
"<ConnectAccess>\n" +
@@ -59,21 +58,6 @@ namespace MonoTests.System.Net {
"<URI uri=\"Hello\"/>\n" +
"</AcceptAccess>\n" +
"</IPermission>\n";
#else
string result1 = "<IPermission class=\"System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" +
"version=\"1\">\n" +
"<ConnectAccess>\n" +
"<URI uri=\"Hello\"/>\n" +
"</ConnectAccess>\n" +
"</IPermission>\n";
string result2 = "<IPermission class=\"System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" +
"version=\"1\">\n" +
"<AcceptAccess>\n" +
"<URI uri=\"Hello\"/>\n" +
"</AcceptAccess>\n" +
"</IPermission>\n";
#endif
WebPermission pp = new WebPermission (NetworkAccess.Connect, "Hello");
Assert.AreEqual (result1, pp.ToXml ().ToString ().Replace ("\r", ""));

View File

@@ -29,7 +29,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
#if NET_4_0 && !MOBILE
#if !MOBILE
using System;
using System.Text;