Update the test suite.

- monkey-patch our own monkey-patched idle_call to run events immediatly
  rather than adding them to the event queue, and add a fake transport
  with a fake socket.
- remove the test file related to xep_0059 as it relies on blocking
  behavior, and comment out one xep_0030 test uses xep_0059
- remove many instances of threading and sleep()s because they do
  nothing except waste time and introduce race conditions.
- keep exactly two sleep() in IoT xeps because they rely on timeouts
This commit is contained in:
mathieui
2015-02-12 12:23:47 +01:00
parent 4d063e287e
commit 1e2665df19
25 changed files with 211 additions and 684 deletions

View File

@@ -48,15 +48,15 @@ class TestHandlers(SlixTest):
iq['id'] = 'test'
iq['type'] = 'set'
iq['query'] = 'test'
reply = iq.send(block=True)
if reply:
def callback_waiter(result):
self.xmpp.send_raw("""
<message>
<body>Successful: %s</body>
</message>
""" % reply['query'])
""" % result['query'])
iq.send(callback=callback_waiter)
self.xmpp.add_event_handler('message', waiter_handler, threaded=True)
self.xmpp.add_event_handler('message', waiter_handler)
# Send message to trigger waiter_handler
self.recv("""
@@ -93,11 +93,11 @@ class TestHandlers(SlixTest):
iq['type'] = 'set'
iq['query'] = 'test2'
try:
reply = iq.send(block=True, timeout=0)
reply = iq.send(timeout=0)
except IqTimeout:
pass
self.xmpp.add_event_handler('message', waiter_handler, threaded=True)
self.xmpp.add_event_handler('message', waiter_handler)
# Start test by triggerig waiter_handler
self.recv("""<message><body>Start Test</body></message>""")
@@ -109,9 +109,6 @@ class TestHandlers(SlixTest):
iq['query'] = 'test2'
self.send(iq)
# Give the event queue time to process.
time.sleep(0.1)
# Check that the waiter is no longer registered
waiter_exists = self.xmpp.remove_handler('IqWait_test2')
@@ -148,41 +145,9 @@ class TestHandlers(SlixTest):
</iq>
""")
# Give event queue time to process
time.sleep(0.1)
self.failUnless(events == ['foo'],
"Iq callback was not executed: %s" % events)
def testIqTimeoutCallback(self):
"""Test that iq.send(tcallback=handle_foo, timeout_callback=handle_timeout) works."""
events = []
def handle_foo(iq):
events.append('foo')
def handle_timeout(iq):
events.append('timeout')
iq = self.Iq()
iq['type'] = 'get'
iq['id'] = 'test-foo'
iq['to'] = 'user@localhost'
iq['query'] = 'foo'
iq.send(callback=handle_foo, timeout_callback=handle_timeout, timeout=0.05)
self.send("""
<iq type="get" id="test-foo" to="user@localhost">
<query xmlns="foo" />
</iq>
""")
# Give event queue time to process
time.sleep(1)
self.failUnless(events == ['timeout'],
"Iq timeout was not executed: %s" % events)
def testMultipleHandlersForStanza(self):
"""
Test that multiple handlers for a single stanza work
@@ -235,18 +200,15 @@ class TestHandlers(SlixTest):
events = []
def run_test():
# Check that Iq was sent by waiter_handler
iq = self.Iq()
iq['id'] = 'test'
iq['to'] = 'tester@slixmpp.com/test'
iq['type'] = 'set'
iq['query'] = 'test'
result = iq.send()
def callback(result):
events.append(result['from'].full)
t = threading.Thread(name="sender_test", target=run_test)
t.start()
iq = self.Iq()
iq['id'] = 'test'
iq['to'] = 'tester@slixmpp.com/test'
iq['type'] = 'set'
iq['query'] = 'test'
iq.send(callback=callback)
self.recv("""
<iq id="test" from="evil@slixmpp.com/bad" type="result">
@@ -271,13 +233,7 @@ class TestHandlers(SlixTest):
</iq>
""")
t.join()
time.sleep(0.1)
self.assertEqual(events, ['tester@slixmpp.com/test'], "Did not timeout on bad sender")
suite = unittest.TestLoader().loadTestsFromTestCase(TestHandlers)