Server IP : 195.201.23.43 / Your IP : 52.14.94.195 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /lib/python3/dist-packages/twisted/trial/_dist/ |
Upload File : |
# -*- test-case-name: twisted.trial._dist.test.test_workerreporter -*- # # Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ Test reporter forwarding test results over trial distributed AMP commands. @since: 12.3 """ from twisted.python.failure import Failure from twisted.python.reflect import qual from twisted.trial.reporter import TestResult from twisted.trial._dist import managercommands class WorkerReporter(TestResult): """ Reporter for trial's distributed workers. We send things not through a stream, but through an C{AMP} protocol's C{callRemote} method. @ivar _DEFAULT_TODO: Default message for expected failures and unexpected successes, used only if a C{Todo} is not provided. """ _DEFAULT_TODO = 'Test expected to fail' def __init__(self, ampProtocol): """ @param ampProtocol: The communication channel with the trial distributed manager which collects all test results. @type ampProtocol: C{AMP} """ super(WorkerReporter, self).__init__() self.ampProtocol = ampProtocol def _getFailure(self, error): """ Convert a C{sys.exc_info()}-style tuple to a L{Failure}, if necessary. """ if isinstance(error, tuple): return Failure(error[1], error[0], error[2]) return error def _getFrames(self, failure): """ Extract frames from a C{Failure} instance. """ frames = [] for frame in failure.frames: frames.extend([frame[0], frame[1], str(frame[2])]) return frames def addSuccess(self, test): """ Send a success over. """ super(WorkerReporter, self).addSuccess(test) testName = test.id() self.ampProtocol.callRemote(managercommands.AddSuccess, testName=testName) def addError(self, test, error): """ Send an error over. """ super(WorkerReporter, self).addError(test, error) testName = test.id() failure = self._getFailure(error) error = failure.getErrorMessage() errorClass = qual(failure.type) frames = [frame for frame in self._getFrames(failure)] self.ampProtocol.callRemote(managercommands.AddError, testName=testName, error=error, errorClass=errorClass, frames=frames) def addFailure(self, test, fail): """ Send a Failure over. """ super(WorkerReporter, self).addFailure(test, fail) testName = test.id() failure = self._getFailure(fail) fail = failure.getErrorMessage() failClass = qual(failure.type) frames = [frame for frame in self._getFrames(failure)] self.ampProtocol.callRemote(managercommands.AddFailure, testName=testName, fail=fail, failClass=failClass, frames=frames) def addSkip(self, test, reason): """ Send a skip over. """ super(WorkerReporter, self).addSkip(test, reason) reason = str(reason) testName = test.id() self.ampProtocol.callRemote(managercommands.AddSkip, testName=testName, reason=reason) def _getTodoReason(self, todo): """ Get the reason for a C{Todo}. If C{todo} is L{None}, return a sensible default. """ if todo is None: return self._DEFAULT_TODO else: return todo.reason def addExpectedFailure(self, test, error, todo=None): """ Send an expected failure over. """ super(WorkerReporter, self).addExpectedFailure(test, error, todo) errorMessage = error.getErrorMessage() testName = test.id() self.ampProtocol.callRemote(managercommands.AddExpectedFailure, testName=testName, error=errorMessage, todo=self._getTodoReason(todo)) def addUnexpectedSuccess(self, test, todo=None): """ Send an unexpected success over. """ super(WorkerReporter, self).addUnexpectedSuccess(test, todo) testName = test.id() self.ampProtocol.callRemote(managercommands.AddUnexpectedSuccess, testName=testName, todo=self._getTodoReason(todo)) def printSummary(self): """ I{Don't} print a summary """Private