7 sys
.path
.insert(0, '../src/lib')
10 class LookupTestCase(unittest
.TestCase
):
12 self
.lm
= LookupManager
.get_instance()
15 "art.gnome.org", "b9.com", "blog.neoteny.com",
16 "diveintomark.org", "freshmeat.net", "home.comcast.net",
17 "imperialviolet.org", "inessential.com", "kode-fu.com",
18 "kt.zork.net", "lambda.weblogs.com",
19 "morenews.blogspot.com", "mpt.phrasewise.com",
20 "online.effbot.org", "patricklogan.blogspot.com",
21 "people.enginesofcreation.ie", "polydistortion.net",
22 "pragprog.com", "primates.ximian.com",
23 "radio.weblogs.com", "rover.cs.northwestern.edu",
24 "slashdot.org", "tbray.org", "toulouse.amber.org",
25 "usefulinc.com", "weblog.infoworld.com",
26 "weblogs.mozillazine.org", "wmf.editthispage.com",
27 "ww.telent.net", "www.advogato.org", "www.amk.ca",
28 "www.artima.com", "www.benhammersley.com",
29 "www.blackbeltjones.com", "www.burtonini.com",
30 "www.deadlybloodyserious.com", "www.debianplanet.net",
31 "www.gnomedesktop.org", "www.hole.fi", "www.iki.fi",
32 "www.inkstain.net", "www.lemonodor.com",
33 "www.markokarppinen.com", "www.markwatson.com",
34 "www.merrells.com", "www.mozillazine.org", "www.nat.org",
35 "www.nongnu.org", "www.orbtech.com",
36 "www.playbynumbers.com", "www.python.org",
37 "www.rekaksois.com", "www.s2.org", "www.sidhe.org",
38 "www.spacetoday.net", "www.sweetcode.org",
39 "www.textism.com", "www.toolshed.com", "www.zanthan.com")
41 def _callback(self
, name
, ip
, data
=None):
42 self
.response
= (name
, ip
)
44 def testGoodARecord(self
):
46 self
.lm
.lookup('www.google.com', self
._callback
)
48 while not self
.response
:
49 assert time
.time() - now
< self
.timeout
, 'Lookup timed out'
51 assert self
.response
[1] is not None
53 def testBadARecord(self
):
55 # this has, at least at some point, returned a cname even though
56 # asked for an a record
57 self
.lm
.lookup('www.morestuff4less.com', self
._callback
)
59 while not self
.response
:
60 assert time
.time() - now
< self
.timeout
, 'Lookup timed out'
62 assert self
.response
[1] is not None
64 def testEmptyDomain(self
):
66 self
.lm
.lookup('', self
._callback
)
68 while not self
.response
:
69 assert time
.time() - now
< self
.timeout
, 'Lookup timed out'
71 assert self
.response
[1] is None
73 def testInvalidDomain(self
):
75 self
.lm
.lookup('www.sdkfskdjjfsd.xcv', self
._callback
)
77 while not self
.response
:
78 assert time
.time() - now
< self
.timeout
, 'Lookup timed out'
80 assert self
.response
[1] is None
82 def _callback_multiple(self
, name
, ip
, data
=None):
83 print "received %s for %s" % (name
, ip
)
84 self
.multiple_responses
[name
] = (name
, ip
)
86 def testExtraNames(self
):
87 self
.multiple_responses
= {}
88 for n
in self
.extraNames
:
89 self
.multiple_responses
[n
] = None
90 self
.lm
.lookup(n
, self
._callback
_multiple
)
92 timeout
= self
.timeout
* len(self
.extraNames
)
93 while None in self
.multiple_responses
.values():
94 assert time
.time() - now
< self
.timeout
, 'Lookup timed out'
96 assert None not in self
.multiple_responses
.values()
99 suite
= unittest
.TestSuite()
100 suite
.addTest(LookupTestCase('testGoodARecord'))
101 suite
.addTest(LookupTestCase('testBadARecord'))
102 suite
.addTest(LookupTestCase('testEmptyDomain'))
103 suite
.addTest(LookupTestCase('testInvalidDomain'))
104 suite
.addTest(LookupTestCase('testExtraNames'))
107 if __name__
== '__main__':