Added support for testind disconnect errors.
This commit is contained in:
@@ -58,6 +58,18 @@ class TestLiveSocket(object):
|
||||
# ------------------------------------------------------------------
|
||||
# Testing Interface
|
||||
|
||||
def disconnect_errror(self):
|
||||
"""
|
||||
Used to simulate a socket disconnection error.
|
||||
|
||||
Not used by live sockets.
|
||||
"""
|
||||
try:
|
||||
self.socket.shutdown()
|
||||
self.socket.close()
|
||||
except:
|
||||
pass
|
||||
|
||||
def next_sent(self, timeout=None):
|
||||
"""
|
||||
Get the next stanza that has been sent.
|
||||
|
@@ -39,6 +39,7 @@ class TestSocket(object):
|
||||
self.recv_queue = queue.Queue()
|
||||
self.send_queue = queue.Queue()
|
||||
self.is_live = False
|
||||
self.disconnected = False
|
||||
|
||||
def __getattr__(self, name):
|
||||
"""
|
||||
@@ -89,6 +90,13 @@ class TestSocket(object):
|
||||
"""
|
||||
self.recv_queue.put(data)
|
||||
|
||||
def disconnect_error(self):
|
||||
"""
|
||||
Simulate a disconnect error by raising a socket.error exception
|
||||
for any current or further socket operations.
|
||||
"""
|
||||
self.disconnected = True
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Socket Interface
|
||||
|
||||
@@ -99,6 +107,8 @@ class TestSocket(object):
|
||||
Arguments:
|
||||
Placeholders. Same as for socket.Socket.recv.
|
||||
"""
|
||||
if self.disconnected:
|
||||
raise socket.error
|
||||
return self.read(block=True)
|
||||
|
||||
def send(self, data):
|
||||
@@ -108,6 +118,8 @@ class TestSocket(object):
|
||||
Arguments:
|
||||
data -- String value to write.
|
||||
"""
|
||||
if self.disconnected:
|
||||
raise socket.error
|
||||
self.send_queue.put(data)
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
@@ -132,6 +144,8 @@ class TestSocket(object):
|
||||
timeout -- Time in seconds a block should last before
|
||||
returning None.
|
||||
"""
|
||||
if self.disconnected:
|
||||
raise socket.error
|
||||
if timeout is not None:
|
||||
block = True
|
||||
try:
|
||||
|
@@ -259,6 +259,13 @@ class SleekTest(unittest.TestCase):
|
||||
# ------------------------------------------------------------------
|
||||
# Methods for simulating stanza streams.
|
||||
|
||||
def stream_disconnect(self):
|
||||
"""
|
||||
Simulate a stream disconnection.
|
||||
"""
|
||||
if self.xmpp:
|
||||
self.xmpp.socket.disconnect_error()
|
||||
|
||||
def stream_start(self, mode='client', skip=True, header=None,
|
||||
socket='mock', jid='tester@localhost',
|
||||
password='test', server='localhost',
|
||||
|
Reference in New Issue
Block a user