// (C) 2001 Mads Pultz\r
// (C) 2003 Martin Willemoes Hansen\r
// \r
-// This test assumes the following:\r
-// 1) The following Internet sites exist:\r
-// www.go-mono.com with IP address 64.14.94.188\r
-// info.diku.dk with IP address 130.225.96.4\r
-// 2) The following DNS name does not exist:\r
-// www.hopefullydoesnotexist.dk\r
-//\r
\r
using System;\r
-using System.Collections;\r
+using System.Linq;\r
using System.Net;\r
using System.Net.Sockets;\r
using System.Threading;\r
[TestFixture]\r
public class DnsTest\r
{\r
- private String site1Name = "jenkins.mono-project.com",\r
- site1Dot = "162.253.133.196",\r
- site2Name = "info.diku.dk",\r
- site2Dot = "130.225.96.4",\r
+ private String site1Name = "google-public-dns-a.google.com",\r
+ site1Dot = "8.8.8.8",\r
+ site2Name = "google-public-dns-b.google.com",\r
+ site2Dot = "8.8.4.4",\r
noneExistingSite = "unlikely.xamarin.com";\r
- private uint site1IP = 1852407392, site2IP = 2195808260; // Big-Endian\r
+ private uint site1IP = 134744072, site2IP = 134743044; // Big-Endian\r
\r
[Test]\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
public void AsyncGetHostByName ()\r
{\r
- IAsyncResult r;\r
- r = Dns.BeginGetHostByName (site1Name, new AsyncCallback (GetHostByNameCallback), null);\r
-\r
IAsyncResult async = Dns.BeginGetHostByName (site1Name, null, null);\r
IPHostEntry entry = Dns.EndGetHostByName (async);\r
SubTestValidIPHostEntry (entry);\r
- Assert.IsTrue (entry.HostName == "jenkins.mono-project.com");\r
+ Assert.IsTrue (entry.HostName == "google-public-dns-a.google.com");\r
}\r
\r
- void GetHostByNameCallback (IAsyncResult ar)\r
- {\r
- IPHostEntry h;\r
- h = Dns.EndGetHostByName (ar);\r
- SubTestValidIPHostEntry (h);\r
+ [Test]\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
+ public void AsyncGetHostByNameCallback ()\r
+ {\r
+ var evt = new ManualResetEvent (false);\r
+ Exception ex = null;\r
+ Dns.BeginGetHostByName (site1Name, new AsyncCallback ((IAsyncResult ar) =>\r
+ {\r
+ try {\r
+ IPHostEntry h;\r
+ h = Dns.EndGetHostByName (ar);\r
+ SubTestValidIPHostEntry (h);\r
+ } catch (Exception e) {\r
+ ex = e;\r
+ } finally {\r
+ evt.Set ();\r
+ }\r
+ }), null);\r
+\r
+ Assert.IsTrue (evt.WaitOne (TimeSpan.FromSeconds (60)), "Wait");\r
+ Assert.IsNull (ex, "Exception");\r
}\r
\r
[Test]\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
public void AsyncResolve ()\r
{\r
- IAsyncResult r;\r
- r = Dns.BeginResolve (site1Name, new AsyncCallback (ResolveCallback), null);\r
-\r
IAsyncResult async = Dns.BeginResolve (site1Dot, null, null);\r
IPHostEntry entry = Dns.EndResolve (async);\r
SubTestValidIPHostEntry (entry);\r
- Assert.AreEqual (site1Dot, entry.AddressList [0].ToString ());\r
+ var ip = GetIPv4Address (entry);\r
+ Assert.AreEqual (site1Dot, ip.ToString ());\r
}\r
\r
- void ResolveCallback (IAsyncResult ar)\r
- {\r
- IPHostEntry h = Dns.EndResolve (ar);\r
- SubTestValidIPHostEntry (h);\r
+ [Test]\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
+ public void AsyncResolveCallback ()\r
+ {\r
+ var evt = new ManualResetEvent (false);\r
+ Exception ex = null;\r
+ Dns.BeginResolve (site1Name, new AsyncCallback ((IAsyncResult ar) =>\r
+ {\r
+ try {\r
+ IPHostEntry h = Dns.EndResolve (ar);\r
+ SubTestValidIPHostEntry (h);\r
+ } catch (Exception e) {\r
+ ex = e;\r
+ } finally {\r
+ evt.Set ();\r
+ }\r
+ }), null);\r
+\r
+ Assert.IsTrue (evt.WaitOne (TimeSpan.FromSeconds (60)), "Wait");\r
+ Assert.IsNull (ex, "Exception");\r
}\r
\r
[Test]\r
try {\r
Dns.BeginGetHostAddresses (\r
(string) null,\r
- new AsyncCallback (GetHostAddressesCallback),\r
+ new AsyncCallback (ShouldntBeCalled),\r
null);\r
Assert.Fail ("#1");\r
} catch (ArgumentNullException ex) {\r
try {\r
Dns.BeginGetHostAddresses (\r
"0.0.0.0",\r
- new AsyncCallback (GetHostAddressesCallback),\r
+ new AsyncCallback (ShouldntBeCalled),\r
null);\r
Assert.Fail ("#A1");\r
} catch (ArgumentException ex) {\r
try {\r
Dns.BeginGetHostAddresses (\r
"::0",\r
- new AsyncCallback (GetHostAddressesCallback),\r
+ new AsyncCallback (ShouldntBeCalled),\r
null);\r
Assert.Fail ("#B1");\r
} catch (ArgumentException ex) {\r
}\r
}\r
\r
- void GetHostAddressesCallback (IAsyncResult ar)\r
+ void ShouldntBeCalled (IAsyncResult ar)\r
{\r
- IPAddress [] addresses = Dns.EndGetHostAddresses (ar);\r
- Assert.IsNotNull (addresses);\r
+ Assert.Fail ("Should not be called");\r
}\r
\r
[Test]\r
}\r
\r
[Test]\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
public void GetHostByName ()\r
{\r
- SubTestGetHostByName ("jenkins.mono-project.com", site1Dot);\r
+ SubTestGetHostByName (site1Name, site1Dot);\r
SubTestGetHostByName (site2Name, site2Dot);\r
try {\r
var entry = Dns.GetHostByName (noneExistingSite);\r
}\r
}\r
\r
+ static IPAddress GetIPv4Address (IPHostEntry h)\r
+ {\r
+ var al = h.AddressList.FirstOrDefault (x => x.AddressFamily == AddressFamily.InterNetwork);\r
+ if (al == null)\r
+ Assert.Ignore ("Could not resolve an IPv4 address as required by this test case, e.g. running on an IPv6 only network");\r
+ return al;\r
+ }\r
+\r
void SubTestGetHostByName (string siteName, string siteDot)\r
{\r
IPHostEntry h = Dns.GetHostByName (siteName);\r
SubTestValidIPHostEntry (h);\r
Assert.AreEqual (siteName, h.HostName, "siteName");\r
- Assert.AreEqual (siteDot, h.AddressList [0].ToString (), "siteDot");\r
+ var ip = GetIPv4Address (h);\r
+ Assert.AreEqual (siteDot, ip.ToString (), "siteDot");\r
}\r
\r
[Test]\r
IPAddress addr = new IPAddress (IPAddress.NetworkToHostOrder ((int) site1IP));\r
IPHostEntry h = Dns.GetHostByAddress (addr);\r
SubTestValidIPHostEntry (h);\r
- Assert.AreEqual (addr.ToString (), h.AddressList [0].ToString ());\r
+ var ip = GetIPv4Address (h);\r
+ Assert.AreEqual (addr.ToString (), ip.ToString ());\r
}\r
\r
[Test]\r
IPAddress addr = new IPAddress (IPAddress.NetworkToHostOrder ((int) site2IP));\r
IPHostEntry h = Dns.GetHostByAddress (addr);\r
SubTestValidIPHostEntry (h);\r
- Assert.AreEqual (addr.ToString (), h.AddressList [0].ToString ());\r
+ var ip = GetIPv4Address (h);\r
+ Assert.AreEqual (addr.ToString (), ip.ToString ());\r
}\r
\r
[Test]\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
public void BeginResolve_HostName_Null ()\r
{\r
try {\r
Dns.BeginResolve ((string) null,\r
- new AsyncCallback (ResolveCallback),\r
+ new AsyncCallback (ShouldntBeCalled),\r
null);\r
Assert.Fail ("#1");\r
} catch (ArgumentNullException ex) {\r
}\r
\r
[Test]\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
public void Resolve ()\r
{\r
SubTestResolve (site1Name);\r
}\r
\r
[Test]\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
public void Resolve_HostName_Null ()\r
{\r
try {\r
}\r
\r
[Test] // BeginGetHostEntry (IPAddress, AsyncCallback, Object)\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
public void BeginGetHostEntry1_Address_Null ()\r
{\r
try {\r
Dns.BeginGetHostEntry (\r
(IPAddress) null,\r
- new AsyncCallback (GetHostAddressesCallback),\r
+ new AsyncCallback (ShouldntBeCalled),\r
null);\r
Assert.Fail ("#1");\r
} catch (ArgumentNullException ex) {\r
}\r
\r
[Test] // BeginGetHostEntry (String, AsyncCallback, Object)\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
public void BeginGetHostEntry2_HostNameOrAddress_Null ()\r
{\r
try {\r
Dns.BeginGetHostEntry (\r
(string) null,\r
- new AsyncCallback (GetHostAddressesCallback),\r
+ new AsyncCallback (ShouldntBeCalled),\r
null);\r
Assert.Fail ("#1");\r
} catch (ArgumentNullException ex) {\r
}\r
\r
[Test] // BeginGetHostEntry (String, AsyncCallback, Object)\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
public void BeginGetHostEntry2_HostNameOrAddress_UnspecifiedAddress ()\r
{\r
// IPv4\r
}\r
\r
[Test] // GetHostEntry (String)\r
+#if FEATURE_NO_BSD_SOCKETS\r
+ [ExpectedException (typeof (PlatformNotSupportedException))]\r
+#endif\r
public void GetHostEntry2 ()\r
{\r
Dns.GetHostEntry (site1Name); // hostname\r