diff options
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_sigchld.py')
-rwxr-xr-x | lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_sigchld.py | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_sigchld.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_sigchld.py deleted file mode 100755 index 86a711a5..00000000 --- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/test/test_sigchld.py +++ /dev/null @@ -1,194 +0,0 @@ -# Copyright (c) Twisted Matrix Laboratories. -# See LICENSE for details. - -""" -Tests for L{twisted.internet._sigchld}, an alternate, superior SIGCHLD -monitoring API. -""" - -import os, signal, errno - -from twisted.python.log import msg -from twisted.trial.unittest import TestCase -from twisted.internet.fdesc import setNonBlocking -from twisted.internet._signals import installHandler, isDefaultHandler -from twisted.internet._signals import _extInstallHandler, _extIsDefaultHandler -from twisted.internet._signals import _installHandlerUsingSetWakeup, \ - _installHandlerUsingSignal, _isDefaultHandler - - -class SIGCHLDTestsMixin: - """ - Mixin for L{TestCase} subclasses which defines several tests for - I{installHandler} and I{isDefaultHandler}. Subclasses are expected to - define C{self.installHandler} and C{self.isDefaultHandler} to invoke the - implementation to be tested. - """ - - if getattr(signal, 'SIGCHLD', None) is None: - skip = "Platform does not have SIGCHLD" - - def installHandler(self, fd): - """ - Override in a subclass to install a SIGCHLD handler which writes a byte - to the given file descriptor. Return the previously registered file - descriptor. - """ - raise NotImplementedError() - - - def isDefaultHandler(self): - """ - Override in a subclass to determine if the current SIGCHLD handler is - SIG_DFL or not. Return True if it is SIG_DFL, False otherwise. - """ - raise NotImplementedError() - - - def pipe(self): - """ - Create a non-blocking pipe which will be closed after the currently - running test. - """ - read, write = os.pipe() - self.addCleanup(os.close, read) - self.addCleanup(os.close, write) - setNonBlocking(read) - setNonBlocking(write) - return read, write - - - def setUp(self): - """ - Save the current SIGCHLD handler as reported by L{signal.signal} and - the current file descriptor registered with L{installHandler}. - """ - handler = signal.getsignal(signal.SIGCHLD) - if handler != signal.SIG_DFL: - self.signalModuleHandler = handler - signal.signal(signal.SIGCHLD, signal.SIG_DFL) - else: - self.signalModuleHandler = None - - self.oldFD = self.installHandler(-1) - - if self.signalModuleHandler is not None and self.oldFD != -1: - msg("SIGCHLD setup issue: %r %r" % (self.signalModuleHandler, self.oldFD)) - raise RuntimeError("You used some signal APIs wrong! Try again.") - - - def tearDown(self): - """ - Restore whatever signal handler was present when setUp ran. - """ - # If tests set up any kind of handlers, clear them out. - self.installHandler(-1) - signal.signal(signal.SIGCHLD, signal.SIG_DFL) - - # Now restore whatever the setup was before the test ran. - if self.signalModuleHandler is not None: - signal.signal(signal.SIGCHLD, self.signalModuleHandler) - elif self.oldFD != -1: - self.installHandler(self.oldFD) - - - def test_isDefaultHandler(self): - """ - L{isDefaultHandler} returns true if the SIGCHLD handler is SIG_DFL, - false otherwise. - """ - self.assertTrue(self.isDefaultHandler()) - signal.signal(signal.SIGCHLD, signal.SIG_IGN) - self.assertFalse(self.isDefaultHandler()) - signal.signal(signal.SIGCHLD, signal.SIG_DFL) - self.assertTrue(self.isDefaultHandler()) - signal.signal(signal.SIGCHLD, lambda *args: None) - self.assertFalse(self.isDefaultHandler()) - - - def test_returnOldFD(self): - """ - L{installHandler} returns the previously registered file descriptor. - """ - read, write = self.pipe() - oldFD = self.installHandler(write) - self.assertEqual(self.installHandler(oldFD), write) - - - def test_uninstallHandler(self): - """ - C{installHandler(-1)} removes the SIGCHLD handler completely. - """ - read, write = self.pipe() - self.assertTrue(self.isDefaultHandler()) - self.installHandler(write) - self.assertFalse(self.isDefaultHandler()) - self.installHandler(-1) - self.assertTrue(self.isDefaultHandler()) - - - def test_installHandler(self): - """ - The file descriptor passed to L{installHandler} has a byte written to - it when SIGCHLD is delivered to the process. - """ - read, write = self.pipe() - self.installHandler(write) - - exc = self.assertRaises(OSError, os.read, read, 1) - self.assertEqual(exc.errno, errno.EAGAIN) - - os.kill(os.getpid(), signal.SIGCHLD) - - self.assertEqual(len(os.read(read, 5)), 1) - - - -class DefaultSIGCHLDTests(SIGCHLDTestsMixin, TestCase): - """ - Tests for whatever implementation is selected for the L{installHandler} - and L{isDefaultHandler} APIs. - """ - installHandler = staticmethod(installHandler) - isDefaultHandler = staticmethod(isDefaultHandler) - - - -class ExtensionSIGCHLDTests(SIGCHLDTestsMixin, TestCase): - """ - Tests for the L{twisted.internet._sigchld} implementation of the - L{installHandler} and L{isDefaultHandler} APIs. - """ - try: - import twisted.internet._sigchld - except ImportError: - skip = "twisted.internet._sigchld is not available" - - installHandler = _extInstallHandler - isDefaultHandler = _extIsDefaultHandler - - - -class SetWakeupSIGCHLDTests(SIGCHLDTestsMixin, TestCase): - """ - Tests for the L{signal.set_wakeup_fd} implementation of the - L{installHandler} and L{isDefaultHandler} APIs. - """ - # Check both of these. On Ubuntu 9.10 (to take an example completely at - # random), Python 2.5 has set_wakeup_fd but not siginterrupt. - if (getattr(signal, 'set_wakeup_fd', None) is None - or getattr(signal, 'siginterrupt', None) is None): - skip = "signal.set_wakeup_fd is not available" - - installHandler = staticmethod(_installHandlerUsingSetWakeup) - isDefaultHandler = staticmethod(_isDefaultHandler) - - - -class PlainSignalModuleSIGCHLDTests(SIGCHLDTestsMixin, TestCase): - """ - Tests for the L{signal.signal} implementation of the L{installHandler} - and L{isDefaultHandler} APIs. - """ - installHandler = staticmethod(_installHandlerUsingSignal) - isDefaultHandler = staticmethod(_isDefaultHandler) |