diff options
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_udp_internals.py')
-rwxr-xr-x | lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_udp_internals.py | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_udp_internals.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_udp_internals.py deleted file mode 100755 index 75dc1e2a..00000000 --- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_udp_internals.py +++ /dev/null @@ -1,165 +0,0 @@ -# Copyright (c) Twisted Matrix Laboratories. -# See LICENSE for details. - -""" -Tests for the internal implementation details of L{twisted.internet.udp}. -""" - -import socket - -from twisted.trial import unittest -from twisted.internet.protocol import DatagramProtocol -from twisted.internet import udp -from twisted.python.runtime import platformType - -if platformType == 'win32': - from errno import WSAEWOULDBLOCK as EWOULDBLOCK - from errno import WSAECONNREFUSED as ECONNREFUSED -else: - from errno import EWOULDBLOCK - from errno import ECONNREFUSED - - - -class StringUDPSocket(object): - """ - A fake UDP socket object, which returns a fixed sequence of strings and/or - socket errors. Useful for testing. - - @ivar retvals: A C{list} containing either strings or C{socket.error}s. - - @ivar connectedAddr: The address the socket is connected to. - """ - - def __init__(self, retvals): - self.retvals = retvals - self.connectedAddr = None - - - def connect(self, addr): - self.connectedAddr = addr - - - def recvfrom(self, size): - """ - Return (or raise) the next value from C{self.retvals}. - """ - ret = self.retvals.pop(0) - if isinstance(ret, socket.error): - raise ret - return ret, None - - - -class KeepReads(DatagramProtocol): - """ - Accumulate reads in a list. - """ - - def __init__(self): - self.reads = [] - - - def datagramReceived(self, data, addr): - self.reads.append(data) - - - -class ErrorsTestCase(unittest.TestCase): - """ - Error handling tests for C{udp.Port}. - """ - - def test_socketReadNormal(self): - """ - Socket reads with some good data followed by a socket error which can - be ignored causes reading to stop, and no log messages to be logged. - """ - # Add a fake error to the list of ignorables: - udp._sockErrReadIgnore.append(-7000) - self.addCleanup(udp._sockErrReadIgnore.remove, -7000) - - protocol = KeepReads() - port = udp.Port(None, protocol) - - # Normal result, no errors - port.socket = StringUDPSocket( - ["result", "123", socket.error(-7000), "456", - socket.error(-7000)]) - port.doRead() - # Read stops on error: - self.assertEqual(protocol.reads, ["result", "123"]) - port.doRead() - self.assertEqual(protocol.reads, ["result", "123", "456"]) - - - def test_readImmediateError(self): - """ - If the socket is unconnected, socket reads with an immediate - connection refusal are ignored, and reading stops. The protocol's - C{connectionRefused} method is not called. - """ - # Add a fake error to the list of those that count as connection - # refused: - udp._sockErrReadRefuse.append(-6000) - self.addCleanup(udp._sockErrReadRefuse.remove, -6000) - - protocol = KeepReads() - # Fail if connectionRefused is called: - protocol.connectionRefused = lambda: 1/0 - - port = udp.Port(None, protocol) - - # Try an immediate "connection refused" - port.socket = StringUDPSocket(["a", socket.error(-6000), "b", - socket.error(EWOULDBLOCK)]) - port.doRead() - # Read stops on error: - self.assertEqual(protocol.reads, ["a"]) - # Read again: - port.doRead() - self.assertEqual(protocol.reads, ["a", "b"]) - - - def test_connectedReadImmediateError(self): - """ - If the socket connected, socket reads with an immediate - connection refusal are ignored, and reading stops. The protocol's - C{connectionRefused} method is called. - """ - # Add a fake error to the list of those that count as connection - # refused: - udp._sockErrReadRefuse.append(-6000) - self.addCleanup(udp._sockErrReadRefuse.remove, -6000) - - protocol = KeepReads() - refused = [] - protocol.connectionRefused = lambda: refused.append(True) - - port = udp.Port(None, protocol) - port.socket = StringUDPSocket(["a", socket.error(-6000), "b", - socket.error(EWOULDBLOCK)]) - port.connect("127.0.0.1", 9999) - - # Read stops on error: - port.doRead() - self.assertEqual(protocol.reads, ["a"]) - self.assertEqual(refused, [True]) - - # Read again: - port.doRead() - self.assertEqual(protocol.reads, ["a", "b"]) - self.assertEqual(refused, [True]) - - - def test_readUnknownError(self): - """ - Socket reads with an unknown socket error are raised. - """ - protocol = KeepReads() - port = udp.Port(None, protocol) - - # Some good data, followed by an unknown error - port.socket = StringUDPSocket(["good", socket.error(-1337)]) - self.assertRaises(socket.error, port.doRead) - self.assertEqual(protocol.reads, ["good"]) |