Ejemplo n.º 1
0
    def test_available_jobs(self):
        job_1 = Job('w1')
        job_2 = Job('w2')
        job_3 = Job('w3')
        pipeline_data = {'python': 42}
        pipeline = PipelineForPipeliner({
            job_1: job_2,
            job_2: job_3
        },
                                        data=pipeline_data)

        expected = [job_1]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_1)
        expected = [job_2]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_2)
        expected = [job_3]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_3)
        self.assertEqual(pipeline.available_jobs(), set())

        job_4, job_5, job_6, job_7 = Job('w4'), Job('w5'), Job('w6'), Job('w7')
        job_8, job_9, job_10 = Job('8'), Job('9'), Job('10')
        job_11, job_12, job_13 = Job('11'), Job('12'), Job('13')
        job_14, job_15, job_16 = Job('14'), Job('15'), Job('16')
        pipeline_data = {'python': 42}
        pipeline = PipelineForPipeliner(
            {
                job_1: (job_2, job_3),
                job_2: (job_4, job_16),
                job_3: job_4,
                job_4: job_5,
                job_5: (job_6, job_7, job_8, job_9),
                (job_6, job_7, job_8): job_10,
                (job_10, job_11): (job_12, job_13, job_14),
                job_15: None
            },
            data=pipeline_data)

        expected = [job_1, job_11, job_15]
        self.assertEqual(pipeline.available_jobs(), set(expected))
        self.assertEqual(pipeline.available_jobs(), set(pipeline.starters))

        pipeline.add_finished_job(job_1)
        expected = [job_11, job_15, job_2, job_3]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_2)
        expected = [job_11, job_15, job_3, job_16]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_3)
        expected = [job_11, job_15, job_4, job_16]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_16)
        expected = [job_11, job_15, job_4]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_4)
        expected = [job_11, job_15, job_5]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_11)
        expected = [job_15, job_5]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_5)
        expected = [job_15, job_6, job_7, job_8, job_9]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_6)
        expected = [job_15, job_7, job_8, job_9]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_15)
        expected = [job_7, job_8, job_9]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_7)
        expected = [job_8, job_9]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_9)
        expected = [job_8]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_8)
        expected = [job_10]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_10)
        expected = [job_12, job_13, job_14]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_13)
        expected = [job_12, job_14]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_12)
        expected = [job_14]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_14)
        expected = []
        self.assertEqual(pipeline.available_jobs(), set(expected))

        self.assertTrue(pipeline.finished())
Ejemplo n.º 2
0
    def test_pipeline_finished(self):
        job_1 = Job('w1')
        job_2 = Job('w2')
        job_3 = Job('w3')
        pipeline_data = {'python': 42}
        pipeline = PipelineForPipeliner({
            job_1: job_2,
            job_2: job_3
        },
                                        data=pipeline_data)

        self.assertFalse(pipeline.finished())
        pipeline.add_finished_job(job_1)
        self.assertFalse(pipeline.finished())
        pipeline.add_finished_job(job_2)
        self.assertFalse(pipeline.finished())
        pipeline.add_finished_job(job_3)
        self.assertTrue(pipeline.finished())
Ejemplo n.º 3
0
    def test_pipeline_add_finished_job(self):
        job_1 = Job('w1')
        job_2 = Job('w2')
        job_3 = Job('w3')
        pipeline_data = {'python': 42}
        pipeline = PipelineForPipeliner({
            job_1: job_2,
            job_2: job_3
        },
                                        data=pipeline_data)
        job_4 = Job('w4')

        self.assertFalse(pipeline.finished_job(job_1))
        self.assertFalse(pipeline.finished_job(job_2))
        self.assertFalse(pipeline.finished_job(job_3))

        pipeline.add_finished_job(job_1)
        self.assertTrue(pipeline.finished_job(job_1))
        self.assertFalse(pipeline.finished_job(job_2))
        self.assertFalse(pipeline.finished_job(job_3))

        pipeline.add_finished_job(job_2)
        self.assertTrue(pipeline.finished_job(job_1))
        self.assertTrue(pipeline.finished_job(job_2))
        self.assertFalse(pipeline.finished_job(job_3))

        pipeline.add_finished_job(job_3)
        self.assertTrue(pipeline.finished_job(job_1))
        self.assertTrue(pipeline.finished_job(job_2))
        self.assertTrue(pipeline.finished_job(job_3))

        with self.assertRaises(ValueError):
            pipeline.add_finished_job(job_4)  # job not in pipeline
        with self.assertRaises(RuntimeError):
            pipeline.add_finished_job(job_3)  # already finished
Ejemplo n.º 4
0
    def test_available_jobs(self):
        job_1 = Job('w1')
        job_2 = Job('w2')
        job_3 = Job('w3')
        pipeline_data = {'python': 42}
        pipeline = PipelineForPipeliner({job_1: job_2, job_2: job_3},
                                        data=pipeline_data)

        expected = [job_1]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_1)
        expected = [job_2]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_2)
        expected = [job_3]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_3)
        self.assertEqual(pipeline.available_jobs(), set())

        job_4, job_5, job_6, job_7 = Job('w4'), Job('w5'), Job('w6'), Job('w7')
        job_8, job_9, job_10 = Job('8'), Job('9'), Job('10')
        job_11, job_12, job_13 = Job('11'), Job('12'), Job('13')
        job_14, job_15, job_16 = Job('14'), Job('15'), Job('16')
        pipeline_data = {'python': 42}
        pipeline = PipelineForPipeliner({job_1: (job_2, job_3),
                                         job_2: (job_4, job_16),
                                         job_3: job_4,
                                         job_4: job_5,
                                         job_5: (job_6, job_7, job_8, job_9),
                                         (job_6, job_7, job_8): job_10,
                                         (job_10, job_11): (job_12, job_13,
                                                            job_14),
                                         job_15: None},
                            data=pipeline_data)

        expected = [job_1, job_11, job_15]
        self.assertEqual(pipeline.available_jobs(), set(expected))
        self.assertEqual(pipeline.available_jobs(), set(pipeline.starters))

        pipeline.add_finished_job(job_1)
        expected = [job_11, job_15, job_2, job_3]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_2)
        expected = [job_11, job_15, job_3, job_16]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_3)
        expected = [job_11, job_15, job_4, job_16]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_16)
        expected = [job_11, job_15, job_4]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_4)
        expected = [job_11, job_15, job_5]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_11)
        expected = [job_15, job_5]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_5)
        expected = [job_15, job_6, job_7, job_8, job_9]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_6)
        expected = [job_15, job_7, job_8, job_9]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_15)
        expected = [job_7, job_8, job_9]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_7)
        expected = [job_8, job_9]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_9)
        expected = [job_8]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_8)
        expected = [job_10]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_10)
        expected = [job_12, job_13, job_14]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_13)
        expected = [job_12, job_14]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_12)
        expected = [job_14]
        self.assertEqual(pipeline.available_jobs(), set(expected))

        pipeline.add_finished_job(job_14)
        expected = []
        self.assertEqual(pipeline.available_jobs(), set(expected))

        self.assertTrue(pipeline.finished())
Ejemplo n.º 5
0
    def test_pipeline_finished(self):
        job_1 = Job('w1')
        job_2 = Job('w2')
        job_3 = Job('w3')
        pipeline_data = {'python': 42}
        pipeline = PipelineForPipeliner({job_1: job_2, job_2: job_3},
                                        data=pipeline_data)

        self.assertFalse(pipeline.finished())
        pipeline.add_finished_job(job_1)
        self.assertFalse(pipeline.finished())
        pipeline.add_finished_job(job_2)
        self.assertFalse(pipeline.finished())
        pipeline.add_finished_job(job_3)
        self.assertTrue(pipeline.finished())
Ejemplo n.º 6
0
    def test_pipeline_add_finished_job(self):
        job_1 = Job('w1')
        job_2 = Job('w2')
        job_3 = Job('w3')
        pipeline_data = {'python': 42}
        pipeline = PipelineForPipeliner({job_1: job_2, job_2: job_3},
                                        data=pipeline_data)
        job_4 = Job('w4')

        self.assertFalse(pipeline.finished_job(job_1))
        self.assertFalse(pipeline.finished_job(job_2))
        self.assertFalse(pipeline.finished_job(job_3))

        pipeline.add_finished_job(job_1)
        self.assertTrue(pipeline.finished_job(job_1))
        self.assertFalse(pipeline.finished_job(job_2))
        self.assertFalse(pipeline.finished_job(job_3))

        pipeline.add_finished_job(job_2)
        self.assertTrue(pipeline.finished_job(job_1))
        self.assertTrue(pipeline.finished_job(job_2))
        self.assertFalse(pipeline.finished_job(job_3))

        pipeline.add_finished_job(job_3)
        self.assertTrue(pipeline.finished_job(job_1))
        self.assertTrue(pipeline.finished_job(job_2))
        self.assertTrue(pipeline.finished_job(job_3))

        with self.assertRaises(ValueError):
            pipeline.add_finished_job(job_4) # job not in pipeline
        with self.assertRaises(RuntimeError):
            pipeline.add_finished_job(job_3) # already finished