class FakeQueue(object): workqueue = WorkQueue()
def setUp(self): self.wq = WorkQueue()
def __init__(self, domain = '', verbose = 1, mode = 'threading', max_threads = 1, host_driver = None, exc_cb = None, stdout = sys.stdout, stderr = sys.stderr): """ Constructor. All arguments should be passed as keyword arguments. Depending on the verbosity level, the following types of output are written to stdout/stderr (or to whatever else is passed in the stdout/stderr arguments): - S = status bar - L = live conversation - D = debug messages - E = errors - ! = errors with tracebacks - F = fatal errors with tracebacks The output types are mapped depending on the verbosity as follows: - verbose = -1: stdout = None, stderr = F - verbose = 0: stdout = None, stderr = EF - verbose = 1, max_threads = 1: stdout = L, stderr = EF - verbose = 1, max_threads = n: stdout = S, stderr = EF - verbose >= 2, max_threads = 1: stdout = DL, stderr = !F - verbose >= 2, max_threads = n: stdout = DS, stderr = !F :type domain: str :param domain: The default domain of the contacted hosts. :type verbose: int :param verbose: The verbosity level. :type mode: str :param mode: 'multiprocessing' or 'threading' :type max_threads: int :param max_threads: The maximum number of concurrent threads. :type host_driver: str :param host_driver: driver name like "ios" for manual override :type exc_cb: func(jobname, exc_info) :param exc_cb: callback function to call on exceptions :type stdout: file :param stdout: The output channel, defaults to sys.stdout. :type stderr: file :param stderr: The error channel, defaults to sys.stderr. """ self.workqueue = WorkQueue(mode = mode) self.account_manager = AccountManager() self.pipe_handlers = weakref.WeakValueDictionary() self.domain = domain self.verbose = verbose self.stdout = stdout self.stderr = stderr self.host_driver = host_driver self.exc_cb = exc_cb self.devnull = open(os.devnull, 'w') self.channel_map = {'fatal_errors': self.stderr, 'debug': self.stdout} self.completed = 0 self.total = 0 self.failed = 0 self.status_bar_length = 0 self.set_max_threads(max_threads) # Listen to what the workqueue is doing. self.workqueue.job_init_event.listen(self._on_job_init) self.workqueue.job_started_event.listen(self._on_job_started) self.workqueue.job_error_event.listen(self._on_job_error) self.workqueue.job_succeeded_event.listen(self._on_job_succeeded) self.workqueue.job_aborted_event.listen(self._on_job_aborted)