Index: third_party/twisted_8_1/twisted/test/test_cooperator.py |
diff --git a/third_party/twisted_8_1/twisted/test/test_cooperator.py b/third_party/twisted_8_1/twisted/test/test_cooperator.py |
deleted file mode 100644 |
index b696a8d98bcf936514f3908f3b6b0d13bf9dcea5..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/test/test_cooperator.py |
+++ /dev/null |
@@ -1,189 +0,0 @@ |
- |
-from twisted.internet import reactor, defer, task |
-from twisted.trial import unittest |
- |
- |
-class TestCooperator(unittest.TestCase): |
- RESULT = 'done' |
- |
- def ebIter(self, err): |
- err.trap(task.SchedulerStopped) |
- return self.RESULT |
- |
- |
- def cbIter(self, ign): |
- self.fail() |
- |
- |
- def testStoppedRejectsNewTasks(self): |
- """ |
- Test that Cooperators refuse new tasks when they have been stopped. |
- """ |
- def testwith(stuff): |
- c = task.Cooperator() |
- c.stop() |
- d = c.coiterate(iter(()), stuff) |
- d.addCallback(self.cbIter) |
- d.addErrback(self.ebIter) |
- return d.addCallback(lambda result: |
- self.assertEquals(result, self.RESULT)) |
- return testwith(None).addCallback(lambda ign: testwith(defer.Deferred())) |
- |
- |
- 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 |
- |
- |
- 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)) |
- |
- |
- def testUnexpectedError(self): |
- c = task.Cooperator() |
- def myiter(): |
- if 0: |
- yield None |
- else: |
- raise RuntimeError() |
- d = c.coiterate(myiter()) |
- return self.assertFailure(d, RuntimeError) |
- |
- |
- def testUnexpectedErrorActuallyLater(self): |
- def myiter(): |
- D = defer.Deferred() |
- reactor.callLater(0, D.errback, RuntimeError()) |
- yield D |
- |
- c = task.Cooperator() |
- d = c.coiterate(myiter()) |
- return self.assertFailure(d, RuntimeError) |
- |
- |
- def testUnexpectedErrorNotActuallyLater(self): |
- def myiter(): |
- yield defer.fail(RuntimeError()) |
- |
- c = task.Cooperator() |
- d = c.coiterate(myiter()) |
- return self.assertFailure(d, RuntimeError) |
- |
- |
- 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), ()))) |
- |
- |
- 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)) |
- |
- |
- def testCallbackReCoiterate(self): |
- """ |
- If a callback to a deferred returned by coiterate calls coiterate on |
- the same Cooperator, we should make sure to only do the minimal amount |
- of scheduling work. (This test was added to demonstrate a specific bug |
- that was found while writing the scheduler.) |
- """ |
- calls = [] |
- |
- class FakeCall: |
- def __init__(self, func): |
- self.func = func |
- |
- def __repr__(self): |
- return '<FakeCall %r>' % (self.func,) |
- |
- def sched(f): |
- self.failIf(calls, repr(calls)) |
- calls.append(FakeCall(f)) |
- return calls[-1] |
- |
- c = task.Cooperator(scheduler=sched, terminationPredicateFactory=lambda: lambda: True) |
- d = c.coiterate(iter(())) |
- |
- done = [] |
- def anotherTask(ign): |
- c.coiterate(iter(())).addBoth(done.append) |
- |
- d.addCallback(anotherTask) |
- |
- work = 0 |
- while not done: |
- work += 1 |
- while calls: |
- calls.pop(0).func() |
- work += 1 |
- if work > 50: |
- self.fail("Cooperator took too long") |