コード例 #1
0
ファイル: test_workers.py プロジェクト: edsuom/AsynQueue
 def test_iterationProducer(self):
     N1, N2 = 50, 100
     stuff = TestStuff()
     stuff.setStuff(N1, N2)
     consumer = IterationConsumer(self.verbose)
     yield self.queue.call(stuff.stufferator, consumer=consumer)
     for chunk in consumer.data:
         self.assertEqual(len(chunk), N1)
     self.assertEqual(len(consumer.data), N2)
コード例 #2
0
ファイル: test_iteration.py プロジェクト: edsuom/AsynQueue
 def test_iterates(self):
     N = 10
     gf = generatorFunction("x", N)
     consumer = IterationConsumer(self.isVerbose())
     ip = yield iteration.iteratorToProducer(gf, consumer)
     result = yield ip.deferUntilDone()
     self.assertEqual(result, consumer)
     self.assertEqual(len(consumer.data), N)
     for k in xrange(N):
         self.assertEqual(consumer.data[k], "x" * k)
コード例 #3
0
 def test_iterate_nextWhileIterating(self):
     slowConsumer = IterationConsumer(self.verbose, writeTime=0.2)
     # In this case, do NOT wait for the done-iterating deferred
     # before doing another transaction
     d = self.broker.everybody(consumer=slowConsumer)
     # Add a new person while we are iterating the people from the
     # last query
     yield self.broker.addPerson("George", "Washington")
     # Confirm we have one more person now
     fastConsumer = IterationConsumer(self.verbose)
     yield self.broker.everybody(consumer=fastConsumer)
     self.assertEqual(len(fastConsumer.data), 6)
     # Now wait for the slow consumer
     yield d
     # It still should only have gotten the smaller number of people
     self.assertEqual(len(slowConsumer.data), 5)
     # Wait for the slow consumer's last write delay, just to avoid
     # unclean reactor messiness
     yield slowConsumer.d
コード例 #4
0
ファイル: test_iteration.py プロジェクト: edsuom/AsynQueue
 def test_iterates_and_stops(self):
     N = 5
     # The generator will yield twice as many values as the
     # consumer will accept.
     gf = generatorFunction("x", 2 * N)
     consumer = IterationConsumer(self.isVerbose(), N)
     ip = yield iteration.iteratorToProducer(gf, consumer)
     result = yield ip.deferUntilDone()
     self.assertEqual(result, consumer)
     self.assertEqual(len(consumer.data), N)
     for k in xrange(N):
         self.assertEqual(consumer.data[k], "x" * k)
コード例 #5
0
ファイル: test_iteration.py プロジェクト: edsuom/AsynQueue
 def test_runManually(self):
     N = 10
     gf = generatorFunction("x", N)
     dr = iteration.Deferator(gf)
     ip = iteration.IterationProducer(dr)
     consumer = IterationConsumer(self.isVerbose())
     ip.registerConsumer(consumer)
     result = yield ip.run()
     self.assertEqual(result, consumer)
     self.assertEqual(len(consumer.data), N)
     for k in xrange(N):
         self.assertEqual(consumer.data[k], "x" * k)
コード例 #6
0
 def test_selectorator_twoConcurrently(self):
     slowConsumer = IterationConsumer(self.verbose, writeTime=0.2)
     cols = self.broker.people.c
     # In this case, do NOT wait for the done-iterating deferred
     # before doing another selectoration
     dSelectExecuted = defer.Deferred()
     s = self.broker.select([cols.name_last, cols.name_first])
     d = self.broker.selectorator(s, slowConsumer, dSelectExecuted)
     # Wait until the query was executed...
     yield dSelectExecuted
     # ...then add a new person while we are iterating the people
     # from that query
     yield self.broker.addPerson("George", "Washington")
     # Confirm we have one more person now
     fastConsumer = IterationConsumer(self.verbose)
     yield self.broker.everybody(consumer=fastConsumer)
     #self.assertEqual(len(fastConsumer.data), 6)
     # Now wait for the slow consumer
     yield d
     # It still should only have gotten the smaller number of people
     self.assertEqual(len(slowConsumer.data), 5)
     # Wait for the slow consumer's last write delay, just to avoid
     # unclean reactor messiness
     yield slowConsumer.d
コード例 #7
0
    def test_handleResult_asProducer(self):
        def getResultToHandle():
            col = self.broker.people.c
            s = SA.select([col.name_first, col.name_last])
            return s.execute()

        fc = FakeConnection()
        rp = yield self.broker.deferToQueue(getResultToHandle)
        consumer = IterationConsumer(self.verbose, 0.05)
        yield self.broker.handleResult(rp, consumer=consumer, conn=fc)
        yield consumer.d
        for k, row in enumerate(consumer.data):
            self.assertIn(row, self.broker.defaultRoster)
        self.assertEqual(k, 4)
        self.assertTrue(fc.wasClosed)
コード例 #8
0
 def test_selectorator_withConsumer(self):
     consumer = IterationConsumer(self.verbose)
     cols = self.broker.people.c
     s = self.broker.select([cols.name_last, cols.name_first])
     consumer = yield self.broker.selectorator(s, consumer)
     self.assertEqual(len(consumer.data), 5)
コード例 #9
0
 def test_iterate_withConsumer(self):
     consumer = IterationConsumer(self.verbose)
     yield self.broker.everybody(consumer=consumer)
     self.assertEqual(len(consumer.data), 5)