1 // DnsTest.cs - NUnit Test Cases for the System.Net.Dns class
\r
4 // Mads Pultz (mpultz@diku.dk)
\r
5 // Martin Willemoes Hansen (mwh@sysrq.dk)
\r
7 // (C) 2001 Mads Pultz
\r
8 // (C) 2003 Martin Willemoes Hansen
\r
10 // This test assumes the following:
\r
11 // 1) The following Internet sites exist:
\r
12 // www.go-mono.com with IP address 64.14.94.188
\r
13 // info.diku.dk with IP address 130.225.96.4
\r
14 // 2) The following DNS name does not exist:
\r
15 // www.hopefullydoesnotexist.dk
\r
18 using NUnit.Framework;
\r
21 using System.Net.Sockets;
\r
22 using System.Threading;
\r
23 using System.Collections;
\r
25 namespace MonoTests.System.Net {
\r
28 public class DnsTest : Assertion {
\r
30 private String site1Name = "www.go-mono.com",
\r
31 site1Dot = "64.14.94.188",
\r
32 site2Name = "info.diku.dk",
\r
33 site2Dot = "130.225.96.4",
\r
34 noneExistingSite = "www.unlikely.novell.com";
\r
35 private uint site1IP = 2180692201, site2IP = 2195808260; // Big-Endian
\r
37 private void GetHostByNameCallback (IAsyncResult ar)
40 h = Dns.EndGetHostByName(ar);
\r
41 SubTestValidIPHostEntry(h);
\r
45 public void AsyncGetHostByName(){
\r
47 r = Dns.BeginGetHostByName (site1Name, new AsyncCallback (GetHostByNameCallback), null);
\r
49 IAsyncResult async = Dns.BeginGetHostByName (site1Name, null, null);
\r
50 IPHostEntry entry = Dns.EndGetHostByName (async);
\r
51 SubTestValidIPHostEntry(entry);
\r
52 AssertEquals ("#1", "www.go-mono.com", entry.HostName);
\r
55 private void ResolveCallback (IAsyncResult ar)
57 IPHostEntry h = Dns.EndResolve (ar);
\r
58 SubTestValidIPHostEntry (h);
\r
62 public void AsyncResolve() {
\r
64 r = Dns.BeginResolve (site1Name, new AsyncCallback (ResolveCallback), null);
\r
66 IAsyncResult async = Dns.BeginResolve (site1Dot, null, null);
\r
67 IPHostEntry entry = Dns.EndResolve (async);
\r
68 SubTestValidIPHostEntry(entry);
\r
69 AssertEquals ("#1", site1Dot, entry.HostName);
\r
73 public void GetHostName() {
\r
74 string hostName = Dns.GetHostName();
\r
75 AssertNotNull (hostName);
\r
78 private void SubTestGetHostByName(string siteName, string siteDot) {
\r
79 IPHostEntry h = Dns.GetHostByName(siteName);
\r
80 SubTestValidIPHostEntry(h);
\r
81 AssertEquals ("siteName", siteName, h.HostName);
\r
82 AssertEquals ("siteDot", siteDot, h.AddressList[0].ToString());
\r
86 public void GetHostByName() {
\r
87 SubTestGetHostByName(site1Name, site1Dot);
\r
88 SubTestGetHostByName(site2Name, site2Dot);
\r
90 Dns.GetHostByName(noneExistingSite);
\r
91 Fail("Should raise a SocketException (assuming that '" + noneExistingSite + "' does not exist)");
\r
92 } catch (SocketException) {
\r
95 Dns.GetHostByName(null);
\r
96 Fail("Should raise an ArgumentNullException");
\r
97 } catch (ArgumentNullException) {
\r
101 private void SubTestGetHostByAddressString(string addr) {
\r
102 IPHostEntry h = Dns.GetHostByAddress(addr);
\r
103 SubTestValidIPHostEntry(h);
\r
106 [Test, ExpectedException (typeof (ArgumentNullException))]
\r
107 public void GetHostByAddressString1() {
\r
108 String addr = null;
\r
109 Dns.GetHostByAddress(addr);
\r
112 [Test, ExpectedException (typeof (SocketException))]
\r
113 public void GetHostByAddressString2() {
\r
114 Dns.GetHostByAddress ("123.255.23");
\r
117 [Test, ExpectedException (typeof (FormatException))]
\r
118 public void GetHostByAddressString3() {
\r
119 Dns.GetHostByAddress ("123.256.34.10");
\r
122 [Test, ExpectedException (typeof (FormatException))]
\r
123 public void GetHostByAddressString4() {
\r
124 Dns.GetHostByAddress ("not an IP address");
\r
127 [Test, ExpectedException (typeof (SocketException))]
\r
128 public void GetHostByAddressString5() {
\r
129 Dns.GetHostByAddress (site1Dot);
\r
132 [Test, ExpectedException (typeof (ArgumentNullException))]
\r
133 public void GetHostByAddressIPAddress1() {
\r
134 IPAddress addr = null;
\r
135 Dns.GetHostByAddress(addr);
\r
138 public void GetHostByAddressIPAddress2() {
\r
139 IPAddress addr = new IPAddress(IPAddress.NetworkToHostOrder((int)site1IP));
\r
140 IPHostEntry h = Dns.GetHostByAddress(addr);
\r
141 SubTestValidIPHostEntry(h);
\r
142 AssertEquals (addr.ToString(), h.AddressList[0].ToString());
\r
145 public void GetHostByAddressIPAddress3() {
\r
146 IPAddress addr = new IPAddress(IPAddress.NetworkToHostOrder((int)site2IP));
\r
147 IPHostEntry h = Dns.GetHostByAddress(addr);
\r
148 SubTestValidIPHostEntry(h);
\r
149 AssertEquals (addr.ToString(), h.AddressList[0].ToString());
\r
152 private void SubTestResolve(string addr) {
\r
153 IPHostEntry h = Dns.Resolve(addr);
\r
154 SubTestValidIPHostEntry(h);
\r
158 public void Resolve() {
\r
159 SubTestResolve(site1Name);
\r
160 SubTestResolve(site2Name);
\r
161 SubTestResolve(site1Dot);
\r
162 SubTestResolve(site2Dot);
\r
167 public void GetHostEntry ()
\r
169 Dns.GetHostEntry (site1Name); // hostname
\r
170 Dns.GetHostEntry (site1Dot); // IP address
\r
174 private void SubTestValidIPHostEntry(IPHostEntry h) {
\r
175 AssertNotNull ("HostName not null", h.HostName);
\r
176 AssertNotNull ("AddressList not null", h.AddressList);
\r
177 Assert ("AddressList.Length", h.AddressList.Length > 0);
\r
179 /* This isn't used anymore, but could be useful for debugging
\r
180 private static void printIPHostEntry(IPHostEntry h)
\r
182 Console.WriteLine("----------------------------------------------------");
\r
183 Console.WriteLine("Host name:");
\r
184 Console.WriteLine(h.HostName);
\r
185 Console.WriteLine("IP addresses:");
\r
186 IPAddress[] list = h.AddressList;
\r
187 for(int i = 0; i < list.Length; ++i)
\r
188 Console.WriteLine(list[i]);
\r
189 Console.WriteLine("Aliases:");
\r
190 string[] aliases = h.Aliases;
\r
191 for(int i = 0; i < aliases.Length; ++i)
\r
192 Console.WriteLine(aliases[i]);
\r
193 Console.WriteLine("----------------------------------------------------");
\r