Python twisted.internet.task.Cooperator() Examples
The following are 30
code examples of twisted.internet.task.Cooperator().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
twisted.internet.task
, or try the search function
.
Example #1
Source File: test_cooperator.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def testCooperation(self): L = [] def myiter(things): for th in things: L.append(th) yield None groupsOfThings = ['abc', (1, 2, 3), 'def', (4, 5, 6)] c = task.Cooperator() tasks = [] for stuff in groupsOfThings: tasks.append(c.coiterate(myiter(stuff))) return defer.DeferredList(tasks).addCallback( lambda ign: self.assertEqual(tuple(L), sum(zip(*groupsOfThings), ())))
Example #2
Source File: test_manager.py From magic-wormhole with MIT License | 6 votes |
def make_dilator(): h = Holder() h.reactor = object() h.clock = Clock() h.eq = EventualQueue(h.clock) term = mock.Mock(side_effect=lambda: True) # one write per Eventual tick def term_factory(): return term h.coop = Cooperator(terminationPredicateFactory=term_factory, scheduler=h.eq.eventually) h.send = mock.Mock() alsoProvides(h.send, ISend) dil = Dilator(h.reactor, h.eq, h.coop) h.terminator = mock.Mock() alsoProvides(h.terminator, ITerminator) dil.wire(h.send, h.terminator) return dil, h
Example #3
Source File: test_outbound.py From magic-wormhole with MIT License | 6 votes |
def make_pushpull(pauses): p = mock.Mock() alsoProvides(p, IPullProducer) unregister = mock.Mock() clock = Clock() eq = EventualQueue(clock) term = mock.Mock(side_effect=lambda: True) # one write per Eventual tick def term_factory(): return term coop = Cooperator(terminationPredicateFactory=term_factory, scheduler=eq.eventually) pp = PullToPush(p, unregister, coop) it = cycle(pauses) def action(i): if isinstance(i, Exception): raise i elif i: pp.pauseProducing() p.resumeProducing.side_effect = lambda: action(next(it)) return p, unregister, pp, eq
Example #4
Source File: test_cooperator.py From python-for-android with Apache License 2.0 | 6 votes |
def testStopRunning(self): """ Test that a running iterator will not run to completion when the cooperator is stopped. """ c = task.Cooperator() def myiter(): for myiter.value in range(3): yield myiter.value myiter.value = -1 d = c.coiterate(myiter()) d.addCallback(self.cbIter) d.addErrback(self.ebIter) c.stop() def doasserts(result): self.assertEquals(result, self.RESULT) self.assertEquals(myiter.value, -1) d.addCallback(doasserts) return d
Example #5
Source File: test_cooperator.py From python-for-android with Apache License 2.0 | 6 votes |
def testStopOutstanding(self): """ An iterator run with L{Cooperator.coiterate} paused on a L{Deferred} yielded by that iterator will fire its own L{Deferred} (the one returned by C{coiterate}) when L{Cooperator.stop} is called. """ testControlD = defer.Deferred() outstandingD = defer.Deferred() def myiter(): reactor.callLater(0, testControlD.callback, None) yield outstandingD self.fail() c = task.Cooperator() d = c.coiterate(myiter()) def stopAndGo(ign): c.stop() outstandingD.callback('arglebargle') testControlD.addCallback(stopAndGo) d.addCallback(self.cbIter) d.addErrback(self.ebIter) return d.addCallback( lambda result: self.assertEquals(result, self.RESULT))
Example #6
Source File: test_cooperator.py From learn_python3_spider with MIT License | 6 votes |
def testStopRunning(self): """ Test that a running iterator will not run to completion when the cooperator is stopped. """ c = task.Cooperator() def myiter(): for myiter.value in range(3): yield myiter.value myiter.value = -1 d = c.coiterate(myiter()) d.addCallback(self.cbIter) d.addErrback(self.ebIter) c.stop() def doasserts(result): self.assertEqual(result, self.RESULT) self.assertEqual(myiter.value, -1) d.addCallback(doasserts) return d
Example #7
Source File: test_cooperator.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def setUp(self): """ Create a cooperator with a fake scheduler and a termination predicate that ensures only one unit of work will take place per tick. """ self._doDeferNext = False self._doStopNext = False self._doDieNext = False self.work = [] self.scheduler = FakeScheduler() self.cooperator = task.Cooperator( scheduler=self.scheduler, # Always stop after one iteration of work (return a function which # returns a function which always returns True) terminationPredicateFactory=lambda: lambda: True) self.task = self.cooperator.cooperate(self.worker()) self.cooperator.start()
Example #8
Source File: test_cooperator.py From learn_python3_spider with MIT License | 6 votes |
def testStopOutstanding(self): """ An iterator run with L{Cooperator.coiterate} paused on a L{Deferred} yielded by that iterator will fire its own L{Deferred} (the one returned by C{coiterate}) when L{Cooperator.stop} is called. """ testControlD = defer.Deferred() outstandingD = defer.Deferred() def myiter(): reactor.callLater(0, testControlD.callback, None) yield outstandingD self.fail() c = task.Cooperator() d = c.coiterate(myiter()) def stopAndGo(ign): c.stop() outstandingD.callback('arglebargle') testControlD.addCallback(stopAndGo) d.addCallback(self.cbIter) d.addErrback(self.ebIter) return d.addCallback( lambda result: self.assertEqual(result, self.RESULT))
Example #9
Source File: test_cooperator.py From python-for-android with Apache License 2.0 | 6 votes |
def testCooperation(self): L = [] def myiter(things): for th in things: L.append(th) yield None groupsOfThings = ['abc', (1, 2, 3), 'def', (4, 5, 6)] c = task.Cooperator() tasks = [] for stuff in groupsOfThings: tasks.append(c.coiterate(myiter(stuff))) return defer.DeferredList(tasks).addCallback( lambda ign: self.assertEquals(tuple(L), sum(zip(*groupsOfThings), ())))
Example #10
Source File: test_cooperator.py From python-for-android with Apache License 2.0 | 6 votes |
def testResourceExhaustion(self): output = [] def myiter(): for i in range(100): output.append(i) if i == 9: _TPF.stopped = True yield i class _TPF: stopped = False def __call__(self): return self.stopped c = task.Cooperator(terminationPredicateFactory=_TPF) c.coiterate(myiter()).addErrback(self.ebIter) c._delayedCall.cancel() # testing a private method because only the test case will ever care # about this, so we have to carefully clean up after ourselves. c._tick() c.stop() self.failUnless(_TPF.stopped) self.assertEquals(output, range(10))
Example #11
Source File: test_cooperator.py From learn_python3_spider with MIT License | 6 votes |
def test_stopCooperatorReentrancy(self): """ If a callback of a L{Deferred} from L{CooperativeTask.whenDone} calls C{Cooperator.stop} on its L{CooperativeTask._cooperator}, the L{Cooperator} will stop, but the L{CooperativeTask} whose callback is calling C{stop} should already be considered 'stopped' by the time the callback is running, and therefore removed from the L{CoooperativeTask}. """ callbackPhases = [] def stopit(result): callbackPhases.append(result) self.cooperator.stop() # "done" here is a sanity check to make sure that we get all the # way through the callback; i.e. stop() shouldn't be raising an # exception due to the stopped-ness of our main task. callbackPhases.append("done") self.task.whenDone().addCallback(stopit) self.stopNext() self.scheduler.pump() self.assertEqual(callbackPhases, [self.task._iterator, "done"])
Example #12
Source File: test_cooperator.py From python-for-android with Apache License 2.0 | 6 votes |
def setUp(self): """ Create a cooperator with a fake scheduler and a termination predicate that ensures only one unit of work will take place per tick. """ self._doDeferNext = False self._doStopNext = False self._doDieNext = False self.work = [] self.scheduler = FakeScheduler() self.cooperator = task.Cooperator( scheduler=self.scheduler, # Always stop after one iteration of work (return a function which # returns a function which always returns True) terminationPredicateFactory=lambda: lambda: True) self.task = self.cooperator.cooperate(self.worker()) self.cooperator.start()
Example #13
Source File: test_cooperator.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def testResourceExhaustion(self): output = [] def myiter(): for i in range(100): output.append(i) if i == 9: _TPF.stopped = True yield i class _TPF: stopped = False def __call__(self): return self.stopped c = task.Cooperator(terminationPredicateFactory=_TPF) c.coiterate(myiter()).addErrback(self.ebIter) c._delayedCall.cancel() # testing a private method because only the test case will ever care # about this, so we have to carefully clean up after ourselves. c._tick() c.stop() self.assertTrue(_TPF.stopped) self.assertEqual(output, list(range(10)))
Example #14
Source File: test_cooperator.py From python-for-android with Apache License 2.0 | 6 votes |
def test_stopCooperatorReentrancy(self): """ If a callback of a L{Deferred} from L{CooperativeTask.whenDone} calls C{Cooperator.stop} on its L{CooperativeTask._cooperator}, the L{Cooperator} will stop, but the L{CooperativeTask} whose callback is calling C{stop} should already be considered 'stopped' by the time the callback is running, and therefore removed from the L{CoooperativeTask}. """ callbackPhases = [] def stopit(result): callbackPhases.append(result) self.cooperator.stop() # "done" here is a sanity check to make sure that we get all the # way through the callback; i.e. stop() shouldn't be raising an # exception due to the stopped-ness of our main task. callbackPhases.append("done") self.task.whenDone().addCallback(stopit) self.stopNext() self.scheduler.pump() self.assertEquals(callbackPhases, [self.task._iterator, "done"])
Example #15
Source File: test_cooperator.py From learn_python3_spider with MIT License | 6 votes |
def setUp(self): """ Create a cooperator with a fake scheduler and a termination predicate that ensures only one unit of work will take place per tick. """ self._doDeferNext = False self._doStopNext = False self._doDieNext = False self.work = [] self.scheduler = FakeScheduler() self.cooperator = task.Cooperator( scheduler=self.scheduler, # Always stop after one iteration of work (return a function which # returns a function which always returns True) terminationPredicateFactory=lambda: lambda: True) self.task = self.cooperator.cooperate(self.worker()) self.cooperator.start()
Example #16
Source File: test_cooperator.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def testStopOutstanding(self): """ An iterator run with L{Cooperator.coiterate} paused on a L{Deferred} yielded by that iterator will fire its own L{Deferred} (the one returned by C{coiterate}) when L{Cooperator.stop} is called. """ testControlD = defer.Deferred() outstandingD = defer.Deferred() def myiter(): reactor.callLater(0, testControlD.callback, None) yield outstandingD self.fail() c = task.Cooperator() d = c.coiterate(myiter()) def stopAndGo(ign): c.stop() outstandingD.callback('arglebargle') testControlD.addCallback(stopAndGo) d.addCallback(self.cbIter) d.addErrback(self.ebIter) return d.addCallback( lambda result: self.assertEqual(result, self.RESULT))
Example #17
Source File: test_cooperator.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def testStopRunning(self): """ Test that a running iterator will not run to completion when the cooperator is stopped. """ c = task.Cooperator() def myiter(): for myiter.value in range(3): yield myiter.value myiter.value = -1 d = c.coiterate(myiter()) d.addCallback(self.cbIter) d.addErrback(self.ebIter) c.stop() def doasserts(result): self.assertEqual(result, self.RESULT) self.assertEqual(myiter.value, -1) d.addCallback(doasserts) return d
Example #18
Source File: test_cooperator.py From learn_python3_spider with MIT License | 6 votes |
def testCooperation(self): L = [] def myiter(things): for th in things: L.append(th) yield None groupsOfThings = ['abc', (1, 2, 3), 'def', (4, 5, 6)] c = task.Cooperator() tasks = [] for stuff in groupsOfThings: tasks.append(c.coiterate(myiter(stuff))) return defer.DeferredList(tasks).addCallback( lambda ign: self.assertEqual(tuple(L), sum(zip(*groupsOfThings), ())))
Example #19
Source File: test_cooperator.py From BitTorrent with GNU General Public License v3.0 | 6 votes |
def testStopRunning(self): """ Test that a running iterator will not run to completion when the cooperator is stopped. """ c = task.Cooperator() def myiter(): for myiter.value in range(3): yield myiter.value myiter.value = -1 d = c.coiterate(myiter()) d.addCallback(self.cbIter) d.addErrback(self.ebIter) c.stop() def doasserts(result): self.assertEquals(result, self.RESULT) self.assertEquals(myiter.value, -1) d.addCallback(doasserts) return d
Example #20
Source File: test_cooperator.py From BitTorrent with GNU General Public License v3.0 | 6 votes |
def testStopOutstanding(self): """ Test that a running iterator paused on a third-party Deferred will properly stop when .stop() is called. """ testControlD = defer.Deferred() outstandingD = defer.Deferred() def myiter(): reactor.callLater(0, testControlD.callback, None) yield outstandingD self.fail() c = task.Cooperator() d = c.coiterate(myiter()) def stopAndGo(ign): c.stop() outstandingD.callback('arglebargle') testControlD.addCallback(stopAndGo) d.addCallback(self.cbIter) d.addErrback(self.ebIter) return d.addCallback(lambda result: self.assertEquals(result, self.RESULT))
Example #21
Source File: test_cooperator.py From learn_python3_spider with MIT License | 6 votes |
def testResourceExhaustion(self): output = [] def myiter(): for i in range(100): output.append(i) if i == 9: _TPF.stopped = True yield i class _TPF: stopped = False def __call__(self): return self.stopped c = task.Cooperator(terminationPredicateFactory=_TPF) c.coiterate(myiter()).addErrback(self.ebIter) c._delayedCall.cancel() # testing a private method because only the test case will ever care # about this, so we have to carefully clean up after ourselves. c._tick() c.stop() self.assertTrue(_TPF.stopped) self.assertEqual(output, list(range(10)))
Example #22
Source File: test_outbound.py From magic-wormhole with MIT License | 6 votes |
def make_outbound(): m = mock.Mock() alsoProvides(m, IDilationManager) clock = Clock() eq = EventualQueue(clock) term = mock.Mock(side_effect=lambda: True) # one write per Eventual tick def term_factory(): return term coop = Cooperator(terminationPredicateFactory=term_factory, scheduler=eq.eventually) o = Outbound(m, coop) c = mock.Mock() # Connection def maybe_pause(r): if isinstance(r, Pauser): o.pauseProducing() elif isinstance(r, Stopper): o.subchannel_unregisterProducer(r.sc) c.send_record = mock.Mock(side_effect=maybe_pause) o._test_eq = eq o._test_term = term return o, m, c
Example #23
Source File: test_cooperator.py From BitTorrent with GNU General Public License v3.0 | 6 votes |
def testCooperation(self): L = [] def myiter(things): for th in things: L.append(th) yield None groupsOfThings = ['abc', (1, 2, 3), 'def', (4, 5, 6)] c = task.Cooperator() tasks = [] for stuff in groupsOfThings: tasks.append(c.coiterate(myiter(stuff))) return defer.DeferredList(tasks).addCallback( lambda ign: self.assertEquals(tuple(L), sum(zip(*groupsOfThings), ())))
Example #24
Source File: test_cooperator.py From BitTorrent with GNU General Public License v3.0 | 6 votes |
def testResourceExhaustion(self): output = [] def myiter(): for i in range(100): output.append(i) if i == 9: _TPF.stopped = True yield i class _TPF: stopped = False def __call__(self): return self.stopped c = task.Cooperator(terminationPredicateFactory=_TPF) c.coiterate(myiter()).addErrback(self.ebIter) c._delayedCall.cancel() # testing a private method because only the test case will ever care # about this, so we have to carefully clean up after ourselves. c._tick() c.stop() self.failUnless(_TPF.stopped) self.assertEquals(output, range(10))
Example #25
Source File: test_cooperator.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def testUnexpectedErrorNotActuallyLater(self): def myiter(): yield defer.fail(RuntimeError()) c = task.Cooperator() d = c.coiterate(myiter()) return self.assertFailure(d, RuntimeError)
Example #26
Source File: test_cooperator.py From python-for-android with Apache License 2.0 | 5 votes |
def testUnexpectedErrorNotActuallyLater(self): def myiter(): yield defer.fail(RuntimeError()) c = task.Cooperator() d = c.coiterate(myiter()) return self.assertFailure(d, RuntimeError)
Example #27
Source File: run.py From stethoscope with Apache License 2.0 | 5 votes |
def _main(reactor, args, config): summary_hooks = stethoscope.plugins.utils.instantiate_plugins(config, namespace='stethoscope.batch.plugins.summary') if args.input is None: emails = config['BATCH_GET_EMAILS']() else: emails = [email.strip().strip('"') for email in args.input.readlines()] logger.info("retrieving devices for {:d} users", len(emails)) results = dict() deferreds = list() cooperator = task.Cooperator() work = work_generator(args, config, emails, results) for idx in six.moves.range(args.limit): deferreds.append(cooperator.coiterate(work)) deferred = defer.gatherResults(deferreds) def log_results(_): num_devices = sum(len(values) for values in six.itervalues(results)) logger.info("retrieved {:d} unique devices for {:d} users", num_devices, len(emails)) return _ deferred.addCallback(log_results) if not args.collect_only: for summary_hook in summary_hooks: def _hook(_): summary_hook.obj.post(results) return _ deferred.addCallback(_hook) return deferred
Example #28
Source File: defer.py From learn_python3_spider with MIT License | 5 votes |
def parallel(iterable, count, callable, *args, **named): """Execute a callable over the objects in the given iterable, in parallel, using no more than ``count`` concurrent calls. Taken from: https://jcalderone.livejournal.com/24285.html """ coop = task.Cooperator() work = (callable(elem, *args, **named) for elem in iterable) return defer.DeferredList([coop.coiterate(work) for _ in range(count)])
Example #29
Source File: test_cooperator.py From learn_python3_spider with MIT License | 5 votes |
def test_runningWhenStopped(self): """ L{Cooperator.running} reports C{False} after the L{Cooperator} has been stopped. """ c = task.Cooperator(started=False) c.start() c.stop() self.assertFalse(c.running)
Example #30
Source File: test_cooperator.py From learn_python3_spider with MIT License | 5 votes |
def test_runningWhenRunning(self): """ L{Cooperator.running} reports C{True} when the L{Cooperator} is running. """ c = task.Cooperator(started=False) c.start() self.addCleanup(c.stop) self.assertTrue(c.running)