1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
|
// DnsTest.cs - NUnit Test Cases for the System.Net.Dns class
//
// Authors:
// Mads Pultz (mpultz@diku.dk)
// Martin Willemoes Hansen (mwh@sysrq.dk)
//
// (C) 2001 Mads Pultz
// (C) 2003 Martin Willemoes Hansen
//
// This test assumes the following:
// 1) The following Internet sites exist:
// www.go-mono.com with IP address 64.14.94.188
// info.diku.dk with IP address 130.225.96.4
// 2) The following DNS name does not exist:
// www.hopefullydoesnotexist.dk
//
using NUnit.Framework;
using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Collections;
namespace MonoTests.System.Net {
[TestFixture]
public class DnsTest : Assertion {
private String site1Name = "www.go-mono.com",
site1Dot = "64.14.94.188",
site2Name = "info.diku.dk",
site2Dot = "130.225.96.4",
noneExistingSite = "www.unlikely.novell.com";
private uint site1IP = 2180692201, site2IP = 2195808260; // Big-Endian
private void GetHostByNameCallback (IAsyncResult ar)
{
IPHostEntry h;
h = Dns.EndGetHostByName(ar);
SubTestValidIPHostEntry(h);
}
[Test]
public void AsyncGetHostByName(){
IAsyncResult r;
r = Dns.BeginGetHostByName (site1Name, new AsyncCallback (GetHostByNameCallback), null);
IAsyncResult async = Dns.BeginGetHostByName (site1Name, null, null);
IPHostEntry entry = Dns.EndGetHostByName (async);
SubTestValidIPHostEntry(entry);
AssertEquals ("#1", "www.go-mono.com", entry.HostName);
}
private void ResolveCallback (IAsyncResult ar)
{
IPHostEntry h = Dns.EndResolve (ar);
SubTestValidIPHostEntry (h);
}
[Test]
public void AsyncResolve() {
IAsyncResult r;
r = Dns.BeginResolve (site1Name, new AsyncCallback (ResolveCallback), null);
IAsyncResult async = Dns.BeginResolve (site1Dot, null, null);
IPHostEntry entry = Dns.EndResolve (async);
SubTestValidIPHostEntry(entry);
AssertEquals ("#1", site1Dot, entry.HostName);
}
[Test]
public void GetHostName() {
string hostName = Dns.GetHostName();
AssertNotNull (hostName);
}
private void SubTestGetHostByName(string siteName, string siteDot) {
IPHostEntry h = Dns.GetHostByName(siteName);
SubTestValidIPHostEntry(h);
AssertEquals ("siteName", siteName, h.HostName);
AssertEquals ("siteDot", siteDot, h.AddressList[0].ToString());
}
[Test]
public void GetHostByName() {
SubTestGetHostByName(site1Name, site1Dot);
SubTestGetHostByName(site2Name, site2Dot);
try {
Dns.GetHostByName(noneExistingSite);
Fail("Should raise a SocketException (assuming that '" + noneExistingSite + "' does not exist)");
} catch (SocketException) {
}
try {
Dns.GetHostByName(null);
Fail("Should raise an ArgumentNullException");
} catch (ArgumentNullException) {
}
}
private void SubTestGetHostByAddressString(string addr) {
IPHostEntry h = Dns.GetHostByAddress(addr);
SubTestValidIPHostEntry(h);
}
[Test, ExpectedException (typeof (ArgumentNullException))]
public void GetHostByAddressString1() {
String addr = null;
Dns.GetHostByAddress(addr);
}
[Test, ExpectedException (typeof (SocketException))]
public void GetHostByAddressString2() {
Dns.GetHostByAddress ("123.255.23");
}
[Test, ExpectedException (typeof (FormatException))]
public void GetHostByAddressString3() {
Dns.GetHostByAddress ("123.256.34.10");
}
[Test, ExpectedException (typeof (FormatException))]
public void GetHostByAddressString4() {
Dns.GetHostByAddress ("not an IP address");
}
[Test]
#if ONLY_1_1
[ExpectedException (typeof (SocketException))]
#endif
public void GetHostByAddressString5() {
Dns.GetHostByAddress (site1Dot);
}
[Test, ExpectedException (typeof (ArgumentNullException))]
public void GetHostByAddressIPAddress1() {
IPAddress addr = null;
Dns.GetHostByAddress(addr);
}
public void GetHostByAddressIPAddress2() {
IPAddress addr = new IPAddress(IPAddress.NetworkToHostOrder((int)site1IP));
IPHostEntry h = Dns.GetHostByAddress(addr);
SubTestValidIPHostEntry(h);
AssertEquals (addr.ToString(), h.AddressList[0].ToString());
}
public void GetHostByAddressIPAddress3() {
IPAddress addr = new IPAddress(IPAddress.NetworkToHostOrder((int)site2IP));
IPHostEntry h = Dns.GetHostByAddress(addr);
SubTestValidIPHostEntry(h);
AssertEquals (addr.ToString(), h.AddressList[0].ToString());
}
private void SubTestResolve(string addr) {
IPHostEntry h = Dns.Resolve(addr);
SubTestValidIPHostEntry(h);
}
[Test]
public void Resolve() {
SubTestResolve(site1Name);
SubTestResolve(site2Name);
SubTestResolve(site1Dot);
SubTestResolve(site2Dot);
}
#if NET_2_0
[Test]
public void GetHostEntry ()
{
Dns.GetHostEntry (site1Name); // hostname
Dns.GetHostEntry (site1Dot); // IP address
}
#endif
private void SubTestValidIPHostEntry(IPHostEntry h) {
AssertNotNull ("HostName not null", h.HostName);
AssertNotNull ("AddressList not null", h.AddressList);
Assert ("AddressList.Length", h.AddressList.Length > 0);
}
/* This isn't used anymore, but could be useful for debugging
private static void printIPHostEntry(IPHostEntry h)
{
Console.WriteLine("----------------------------------------------------");
Console.WriteLine("Host name:");
Console.WriteLine(h.HostName);
Console.WriteLine("IP addresses:");
IPAddress[] list = h.AddressList;
for(int i = 0; i < list.Length; ++i)
Console.WriteLine(list[i]);
Console.WriteLine("Aliases:");
string[] aliases = h.Aliases;
for(int i = 0; i < aliases.Length; ++i)
Console.WriteLine(aliases[i]);
Console.WriteLine("----------------------------------------------------");
}
*/
}
}
|