2008-09-01 01:40:06 +02:00
|
|
|
import unittest
|
|
|
|
|
|
|
|
import time
|
|
|
|
|
|
|
|
import lib
|
|
|
|
lib.setup_env()
|
|
|
|
|
|
|
|
from common import resolver
|
|
|
|
|
|
|
|
from mock import Mock, expectParams
|
2009-01-11 14:49:03 +01:00
|
|
|
from gajim_mocks import *
|
|
|
|
from xmpp_mocks import IdleQueueThread
|
2008-09-01 01:40:06 +02:00
|
|
|
|
|
|
|
GMAIL_SRV_NAME = '_xmpp-client._tcp.gmail.com'
|
|
|
|
NONSENSE_NAME = 'sfsdfsdfsdf.sdfs.fsd'
|
|
|
|
JABBERCZ_TXT_NAME = '_xmppconnect.jabber.cz'
|
|
|
|
JABBERCZ_SRV_NAME = '_xmpp-client._tcp.jabber.cz'
|
|
|
|
|
2010-02-08 15:08:40 +01:00
|
|
|
TEST_LIST = [(GMAIL_SRV_NAME, 'srv', True),
|
|
|
|
(NONSENSE_NAME, 'srv', False),
|
|
|
|
(JABBERCZ_SRV_NAME, 'srv', True)]
|
2008-09-01 01:40:06 +02:00
|
|
|
|
|
|
|
class TestResolver(unittest.TestCase):
|
2010-02-08 15:08:40 +01:00
|
|
|
'''
|
|
|
|
Test for LibAsyncNSResolver and NSLookupResolver. Requires working
|
|
|
|
network connection.
|
|
|
|
'''
|
|
|
|
def setUp(self):
|
|
|
|
self.idlequeue_thread = IdleQueueThread()
|
|
|
|
self.idlequeue_thread.start()
|
|
|
|
|
|
|
|
self.iq = self.idlequeue_thread.iq
|
|
|
|
self._reset()
|
|
|
|
self.resolver = None
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
self.idlequeue_thread.stop_thread()
|
|
|
|
self.idlequeue_thread.join()
|
|
|
|
|
|
|
|
def _reset(self):
|
|
|
|
self.flag = False
|
|
|
|
self.expect_results = False
|
|
|
|
self.nslookup = False
|
|
|
|
self.resolver = None
|
|
|
|
|
|
|
|
def testLibAsyncNSResolver(self):
|
|
|
|
self._reset()
|
|
|
|
if not resolver.USE_LIBASYNCNS:
|
|
|
|
print 'testLibAsyncResolver: libasyncns-python not installed'
|
|
|
|
return
|
|
|
|
self.resolver = resolver.LibAsyncNSResolver()
|
|
|
|
|
|
|
|
for name, type, expect_results in TEST_LIST:
|
|
|
|
self.expect_results = expect_results
|
|
|
|
self._runLANSR(name, type)
|
|
|
|
self.flag = False
|
|
|
|
|
|
|
|
def _runLANSR(self, name, type):
|
|
|
|
self.resolver.resolve(
|
|
|
|
host = name,
|
|
|
|
type = type,
|
|
|
|
on_ready = self._myonready)
|
|
|
|
while not self.flag:
|
|
|
|
time.sleep(1)
|
|
|
|
self.resolver.process()
|
|
|
|
|
|
|
|
def _myonready(self, name, result_set):
|
|
|
|
if __name__ == '__main__':
|
|
|
|
from pprint import pprint
|
|
|
|
pprint('on_ready called ...')
|
|
|
|
pprint('hostname: %s' % name)
|
|
|
|
pprint('result set: %s' % result_set)
|
|
|
|
pprint('res.resolved_hosts: %s' % self.resolver.resolved_hosts)
|
|
|
|
pprint('')
|
|
|
|
if self.expect_results:
|
|
|
|
self.assert_(len(result_set) > 0)
|
|
|
|
else:
|
|
|
|
self.assert_(result_set == [])
|
|
|
|
self.flag = True
|
|
|
|
if self.nslookup:
|
|
|
|
self._testNSLR()
|
|
|
|
|
|
|
|
def testNSLookupResolver(self):
|
|
|
|
self._reset()
|
|
|
|
self.nslookup = True
|
|
|
|
self.resolver = resolver.NSLookupResolver(self.iq)
|
|
|
|
self.test_list = TEST_LIST
|
|
|
|
self._testNSLR()
|
|
|
|
|
|
|
|
def _testNSLR(self):
|
|
|
|
if self.test_list == []:
|
|
|
|
return
|
|
|
|
name, type, self.expect_results = self.test_list.pop()
|
|
|
|
self.resolver.resolve(
|
|
|
|
host = name,
|
|
|
|
type = type,
|
|
|
|
on_ready = self._myonready)
|
2008-09-01 01:40:06 +02:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2010-02-08 15:08:40 +01:00
|
|
|
unittest.main()
|