Example #1
0
    def test_create(self):

        data = {'spawned_jobs': 0}

        def on_job_executed(*ignored):
            pass

        def job_run(*ignored):
            pass

        def spawn(func):
            self.assertIs(func, job_run)
            data['spawned_jobs'] += 1

        scheduler = Scheduler(dummy_callback)
        scheduler.on_job_executed = on_job_executed
        scheduler.lock = RLock()

        job1 = get_job()
        job1.run = job_run

        job2 = get_job()
        job2.run = job_run

        job3 = get_job(name=job2.name)
        job3.run = job_run

        job4 = get_job()
        job5 = get_job()

        job6 = get_job()
        job6.is_active = False

        with patch('gevent.spawn', spawn):
            scheduler.create(job1)
            scheduler.create(job2)

            # These two won't be added because scheduler.jobs is a set hashed by a job's name.
            scheduler.create(job2)
            scheduler.create(job3)

            # The first one won't be spawned but the second one will.
            scheduler.create(job4, spawn=False)
            scheduler.create(job5, spawn=True)

            # Won't be added anywhere nor spawned because it's inactive.
            scheduler.create(job6)

            self.assertEquals(scheduler.lock.called, 7)
            self.assertEquals(len(scheduler.jobs), 5)

            self.assertIn(job1, scheduler.jobs)
            self.assertIn(job2, scheduler.jobs)

            self.assertIs(job1.callback, scheduler.on_job_executed)
            self.assertIs(job2.callback, scheduler.on_job_executed)

            self.assertEquals(data['spawned_jobs'], 4)
Example #2
0
    def test_create(self):

        data = {'spawned_jobs': 0}

        def on_job_executed(*ignored):
            pass

        def job_run(*ignored):
            pass

        def spawn(func):
            self.assertIs(func, job_run)
            data['spawned_jobs'] += 1

        scheduler = Scheduler(dummy_callback)
        scheduler.on_job_executed = on_job_executed
        scheduler.lock = RLock()

        job1 = get_job()
        job1.run = job_run

        job2 = get_job()
        job2.run = job_run

        job3 = get_job(name=job2.name)
        job3.run = job_run

        job4 = get_job()
        job5 = get_job()

        job6 = get_job()
        job6.is_active = False

        with patch('gevent.spawn', spawn):
            scheduler.create(job1)
            scheduler.create(job2)

            # These two won't be added because scheduler.jobs is a set hashed by a job's name.
            scheduler.create(job2)
            scheduler.create(job3)

            # The first one won't be spawned but the second one will.
            scheduler.create(job4, spawn=False)
            scheduler.create(job5, spawn=True)

            # Won't be added anywhere nor spawned because it's inactive.
            scheduler.create(job6)

            self.assertEquals(scheduler.lock.called, 7)
            self.assertEquals(len(scheduler.jobs), 5)

            self.assertIn(job1, scheduler.jobs)
            self.assertIn(job2, scheduler.jobs)

            self.assertIs(job1.callback, scheduler.on_job_executed)
            self.assertIs(job2.callback, scheduler.on_job_executed)

            self.assertEquals(data['spawned_jobs'], 4)