aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_posixbase.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_posixbase.py')
-rwxr-xr-xlib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_posixbase.py387
1 files changed, 0 insertions, 387 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_posixbase.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_posixbase.py
deleted file mode 100755
index 2e0c2ec4..00000000
--- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_posixbase.py
+++ /dev/null
@@ -1,387 +0,0 @@
-# Copyright (c) Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Tests for L{twisted.internet.posixbase} and supporting code.
-"""
-
-from twisted.python.compat import set
-from twisted.trial.unittest import TestCase
-from twisted.internet.defer import Deferred
-from twisted.internet.posixbase import PosixReactorBase, _Waker
-from twisted.internet.protocol import ServerFactory
-
-
-skipSockets = None
-try:
- from twisted.internet import unix
-except ImportError:
- skipSockets = "Platform does not support AF_UNIX sockets"
-
-from twisted.internet.tcp import Port
-from twisted.internet import reactor
-from twisted.test.test_unix import ClientProto
-
-class TrivialReactor(PosixReactorBase):
- def __init__(self):
- self._readers = {}
- self._writers = {}
- PosixReactorBase.__init__(self)
-
-
- def addReader(self, reader):
- self._readers[reader] = True
-
-
- def removeReader(self, reader):
- del self._readers[reader]
-
-
- def addWriter(self, writer):
- self._writers[writer] = True
-
-
- def removeWriter(self, writer):
- del self._writers[writer]
-
-
-
-class PosixReactorBaseTests(TestCase):
- """
- Tests for L{PosixReactorBase}.
- """
-
- def _checkWaker(self, reactor):
- self.assertIsInstance(reactor.waker, _Waker)
- self.assertIn(reactor.waker, reactor._internalReaders)
- self.assertIn(reactor.waker, reactor._readers)
-
-
- def test_wakerIsInternalReader(self):
- """
- When L{PosixReactorBase} is instantiated, it creates a waker and adds
- it to its internal readers set.
- """
- reactor = TrivialReactor()
- self._checkWaker(reactor)
-
-
- def test_removeAllSkipsInternalReaders(self):
- """
- Any L{IReadDescriptors} in L{PosixReactorBase._internalReaders} are
- left alone by L{PosixReactorBase._removeAll}.
- """
- reactor = TrivialReactor()
- extra = object()
- reactor._internalReaders.add(extra)
- reactor.addReader(extra)
- reactor._removeAll(reactor._readers, reactor._writers)
- self._checkWaker(reactor)
- self.assertIn(extra, reactor._internalReaders)
- self.assertIn(extra, reactor._readers)
-
-
- def test_removeAllReturnsRemovedDescriptors(self):
- """
- L{PosixReactorBase._removeAll} returns a list of removed
- L{IReadDescriptor} and L{IWriteDescriptor} objects.
- """
- reactor = TrivialReactor()
- reader = object()
- writer = object()
- reactor.addReader(reader)
- reactor.addWriter(writer)
- removed = reactor._removeAll(
- reactor._readers, reactor._writers)
- self.assertEqual(set(removed), set([reader, writer]))
- self.assertNotIn(reader, reactor._readers)
- self.assertNotIn(writer, reactor._writers)
-
-
- def test_IReactorArbitraryIsDeprecated(self):
- """
- L{twisted.internet.interfaces.IReactorArbitrary} is redundant with
- L{twisted.internet.interfaces.IReactorFDSet} and is deprecated.
- """
- from twisted.internet import interfaces
- interfaces.IReactorArbitrary
-
- warningsShown = self.flushWarnings(
- [self.test_IReactorArbitraryIsDeprecated])
- self.assertEqual(len(warningsShown), 1)
- self.assertEqual(warningsShown[0]['category'], DeprecationWarning)
- self.assertEqual(
- "twisted.internet.interfaces.IReactorArbitrary was deprecated "
- "in Twisted 10.1.0: See IReactorFDSet.",
- warningsShown[0]['message'])
-
-
- def test_listenWithIsDeprecated(self):
- """
- L{PosixReactorBase} implements the deprecated L{IReactorArbitrary}, and
- L{PosixReactorBase.listenWith} is a part of that interface. To avoid
- unnecessary deprecation warnings when importing posixbase, the
- L{twisted.internet.interfaces._IReactorArbitrary} alias that doesn't
- have the deprecation warning is imported, and instead
- L{PosixReactorBase.listenWith} generates its own deprecation warning.
- """
- class fakePort:
- def __init__(self, *args, **kw):
- pass
-
- def startListening(self):
- pass
-
- reactor = TrivialReactor()
- reactor.listenWith(fakePort)
-
- warnings = self.flushWarnings([self.test_listenWithIsDeprecated])
- self.assertEqual(len(warnings), 1)
- self.assertEqual(warnings[0]['category'], DeprecationWarning)
- self.assertEqual(
- "listenWith is deprecated since Twisted 10.1. "
- "See IReactorFDSet.",
- warnings[0]['message'])
-
-
- def test_connectWithIsDeprecated(self):
- """
- L{PosixReactorBase} implements the deprecated L{IReactorArbitrary}, and
- L{PosixReactorBase.connectWith} is a part of that interface. To avoid
- unnecessary deprecation warnings when importing posixbase, the
- L{twisted.internet.interfaces._IReactorArbitrary} alias that doesn't
- have the deprecation warning is imported, and instead
- L{PosixReactorBase.connectWith} generates its own deprecation warning.
- """
- class fakeConnector:
- def __init__(self, *args, **kw):
- pass
-
- def connect(self):
- pass
-
- reactor = TrivialReactor()
- reactor.connectWith(fakeConnector)
-
- warnings = self.flushWarnings([self.test_connectWithIsDeprecated])
- self.assertEqual(len(warnings), 1)
- self.assertEqual(warnings[0]['category'], DeprecationWarning)
- self.assertEqual(
- "connectWith is deprecated since Twisted 10.1. "
- "See IReactorFDSet.",
- warnings[0]['message'])
-
-
-
-class TCPPortTests(TestCase):
- """
- Tests for L{twisted.internet.tcp.Port}.
- """
-
- if not isinstance(reactor, PosixReactorBase):
- skip = "Non-posixbase reactor"
-
- def test_connectionLostFailed(self):
- """
- L{Port.stopListening} returns a L{Deferred} which errbacks if
- L{Port.connectionLost} raises an exception.
- """
- port = Port(12345, ServerFactory())
- port.connected = True
- port.connectionLost = lambda reason: 1 // 0
- return self.assertFailure(port.stopListening(), ZeroDivisionError)
-
-
-
-class TimeoutReportReactor(PosixReactorBase):
- """
- A reactor which is just barely runnable and which cannot monitor any
- readers or writers, and which fires a L{Deferred} with the timeout
- passed to its C{doIteration} method as soon as that method is invoked.
- """
- def __init__(self):
- PosixReactorBase.__init__(self)
- self.iterationTimeout = Deferred()
- self.now = 100
-
-
- def addReader(self, reader):
- """
- Ignore the reader. This is necessary because the waker will be
- added. However, we won't actually monitor it for any events.
- """
-
-
- def removeAll(self):
- """
- There are no readers or writers, so there is nothing to remove.
- This will be called when the reactor stops, though, so it must be
- implemented.
- """
- return []
-
-
- def seconds(self):
- """
- Override the real clock with a deterministic one that can be easily
- controlled in a unit test.
- """
- return self.now
-
-
- def doIteration(self, timeout):
- d = self.iterationTimeout
- if d is not None:
- self.iterationTimeout = None
- d.callback(timeout)
-
-
-
-class IterationTimeoutTests(TestCase):
- """
- Tests for the timeout argument L{PosixReactorBase.run} calls
- L{PosixReactorBase.doIteration} with in the presence of various delayed
- calls.
- """
- def _checkIterationTimeout(self, reactor):
- timeout = []
- reactor.iterationTimeout.addCallback(timeout.append)
- reactor.iterationTimeout.addCallback(lambda ignored: reactor.stop())
- reactor.run()
- return timeout[0]
-
-
- def test_noCalls(self):
- """
- If there are no delayed calls, C{doIteration} is called with a
- timeout of C{None}.
- """
- reactor = TimeoutReportReactor()
- timeout = self._checkIterationTimeout(reactor)
- self.assertEqual(timeout, None)
-
-
- def test_delayedCall(self):
- """
- If there is a delayed call, C{doIteration} is called with a timeout
- which is the difference between the current time and the time at
- which that call is to run.
- """
- reactor = TimeoutReportReactor()
- reactor.callLater(100, lambda: None)
- timeout = self._checkIterationTimeout(reactor)
- self.assertEqual(timeout, 100)
-
-
- def test_timePasses(self):
- """
- If a delayed call is scheduled and then some time passes, the
- timeout passed to C{doIteration} is reduced by the amount of time
- which passed.
- """
- reactor = TimeoutReportReactor()
- reactor.callLater(100, lambda: None)
- reactor.now += 25
- timeout = self._checkIterationTimeout(reactor)
- self.assertEqual(timeout, 75)
-
-
- def test_multipleDelayedCalls(self):
- """
- If there are several delayed calls, C{doIteration} is called with a
- timeout which is the difference between the current time and the
- time at which the earlier of the two calls is to run.
- """
- reactor = TimeoutReportReactor()
- reactor.callLater(50, lambda: None)
- reactor.callLater(10, lambda: None)
- reactor.callLater(100, lambda: None)
- timeout = self._checkIterationTimeout(reactor)
- self.assertEqual(timeout, 10)
-
-
- def test_resetDelayedCall(self):
- """
- If a delayed call is reset, the timeout passed to C{doIteration} is
- based on the interval between the time when reset is called and the
- new delay of the call.
- """
- reactor = TimeoutReportReactor()
- call = reactor.callLater(50, lambda: None)
- reactor.now += 25
- call.reset(15)
- timeout = self._checkIterationTimeout(reactor)
- self.assertEqual(timeout, 15)
-
-
- def test_delayDelayedCall(self):
- """
- If a delayed call is re-delayed, the timeout passed to
- C{doIteration} is based on the remaining time before the call would
- have been made and the additional amount of time passed to the delay
- method.
- """
- reactor = TimeoutReportReactor()
- call = reactor.callLater(50, lambda: None)
- reactor.now += 10
- call.delay(20)
- timeout = self._checkIterationTimeout(reactor)
- self.assertEqual(timeout, 60)
-
-
- def test_cancelDelayedCall(self):
- """
- If the only delayed call is canceled, C{None} is the timeout passed
- to C{doIteration}.
- """
- reactor = TimeoutReportReactor()
- call = reactor.callLater(50, lambda: None)
- call.cancel()
- timeout = self._checkIterationTimeout(reactor)
- self.assertEqual(timeout, None)
-
-
-
-class ConnectedDatagramPortTestCase(TestCase):
- """
- Test connected datagram UNIX sockets.
- """
- if skipSockets is not None:
- skip = skipSockets
-
-
- def test_connectionFailedDoesntCallLoseConnection(self):
- """
- L{ConnectedDatagramPort} does not call the deprecated C{loseConnection}
- in L{ConnectedDatagramPort.connectionFailed}.
- """
- def loseConnection():
- """
- Dummy C{loseConnection} method. C{loseConnection} is deprecated and
- should not get called.
- """
- self.fail("loseConnection is deprecated and should not get called.")
-
- port = unix.ConnectedDatagramPort(None, ClientProto())
- port.loseConnection = loseConnection
- port.connectionFailed("goodbye")
-
-
- def test_connectionFailedCallsStopListening(self):
- """
- L{ConnectedDatagramPort} calls L{ConnectedDatagramPort.stopListening}
- instead of the deprecated C{loseConnection} in
- L{ConnectedDatagramPort.connectionFailed}.
- """
- self.called = False
-
- def stopListening():
- """
- Dummy C{stopListening} method.
- """
- self.called = True
-
- port = unix.ConnectedDatagramPort(None, ClientProto())
- port.stopListening = stopListening
- port.connectionFailed("goodbye")
- self.assertEqual(self.called, True)