Exemplo n.º 1
0
    def test_result(self):
        self.evens = _Pipeline()
        self.evens.add_destination(gathering_function)
        self.evens.start()

        self.odds = _Pipeline()
        self.odds.add_destination(gathering_function)
        self.odds.start()

        self.original = _Pipeline()
        self.original.add_origin(generator)
        self.original.add_destination(conditional_routing, pipeline_msg = self.messaging)
        self.original.start()

        self.messaging.register_pipeline_queue("even", self.evens._queues[0])
        self.messaging.register_pipeline_queue("odd", self.odds._queues[0])

        self.original.feed(100)

        self.original.join()
        self.messaging.flush()

        self.odds.join()
        self.evens.join()
        evens = [x for x in self.evens.as_completed()]
        odds = [x for x in self.odds.as_completed()]

        self.messaging.close_pipeline_queue("odd")
        self.messaging.close_pipeline_queue("even")
Exemplo n.º 2
0
 def test_correct_ordering(self):
     self.pipe = _Pipeline()
     self.pipe.add_destination(third_stage)
     self.pipe.add_task(second_stage)
     self.pipe.add_origin(first_stage)
     self.pipe.start()
     self.pipe.feed_chunk([0])
     self.pipe.join()
     result = [x for x in self.pipe.as_completed()]
     self.assertEqual(result, [-10])
Exemplo n.º 3
0
 def test_basic_pipeline(self):
     self.pipe = _Pipeline()
     self.pipe.add_task(first_stage)
     self.pipe.add_task(second_stage)
     self.pipe.add_task(third_stage)
     self.pipe.start()
     self.pipe.feed_chunk([0])
     self.pipe.join()
     result = [x for x in self.pipe.as_completed()]
     self.assertEqual(result, [-10])
Exemplo n.º 4
0
 def test_chunked_pipeline(self):
     # In the following pipeline, we'll use ONE origin to send the numbers one through 100 through the pipeline
     self.pipe = _Pipeline()
     self.pipe.add_origin(iterator_origin, num=1, chunk_size=11)
     self.pipe.add_task(first_stage, num=1, chunk_size=17)
     self.pipe.add_task(second_stage, num=1, chunk_size=3)
     self.pipe.add_task(third_stage, num=1, chunk_size=9)
     self.pipe.start()
     self.pipe.feed_chunk([100])
     self.pipe.join()
     result = set(x for x in self.pipe.as_completed())
     expected = set((x + 1 - 3) * 5 for x in range(100))
     self.assertEqual(result, expected)
Exemplo n.º 5
0
 def test_bad_join(self):
     # You can't join an unstarted pipeline
     self.pipe = _Pipeline()
     self.assertRaises(SequenceError, self.pipe.join)
Exemplo n.º 6
0
 def test_bad_sequence(self):
     # You can't feed a pipe before starting it
     self.pipe = _Pipeline()
     self.assertRaises(SequenceError, self.pipe.feed_chunk, (1,))