コード例 #1
0
    def test_run(self):

        log_fname = "test.txt"

        logger = return_test_logger(log_fname)

        s = Scheduler(logger=logger)

        scheduler_job_config = {"seconds": 2,
                                "parallel": False,
                                "name": "test name"}

        s.schedule(test_job, 2, 4, scheduler_job_config=scheduler_job_config)

        p = multiprocessing.Process(target=s.run)

        p.start()
        time.sleep(5)
        p.terminate()

        # Cleanup
        p.join()

        with open(log_fname) as f:
            log = f.read()

        self.assertEqual(log, 'Started: test name\nCompleted: test name\nStarted: test name\nCompleted: test name\n')

        os.remove(log_fname)
コード例 #2
0
    def test_job_wrapper_parallel_no_logger(self):

        s = Scheduler()

        a = 2
        b = 4
        c = s.job_wrapper(test_job, parallel=True, logger=None, a=a, b=b)
        self.assertEqual(a+b, c)
コード例 #3
0
    def test_job_wrapper_parallel_logger_bad_job(self):

        s = Scheduler()

        with captured_output() as (out, err):
            c = s.job_wrapper(bad_job, parallel=True, logger=return_test_logger(), name="Test Job")

        # This can go inside or outside the `with` block
        output = out.getvalue().strip()
        self.assertEqual(output, 'Started: Test Job\nFailed: Test Job - ZeroDivisionError: division by zero')
コード例 #4
0
    def test_job_wrapper_parallel_logger(self):

        s = Scheduler()

        a = 2
        b = 4

        with captured_output() as (out, err):
            c = s.job_wrapper(test_job, parallel=True, logger=return_test_logger(), name="Test Job", a=a, b=b)

        # This can go inside or outside the `with` block
        output = out.getvalue().strip()
        self.assertEqual(output, 'Started: Test Job\nCompleted: Test Job')

        self.assertEqual(a+b, c)
コード例 #5
0
    def test_schedule_hours(self):

        s = Scheduler(logger=return_test_logger())

        scheduler_job_config = {"hours": 2,
                                "parallel": False,
                                "name": "test name"}

        s.schedule(test_job, 2, 4, scheduler_job_config=scheduler_job_config)
        jobs = s.get_scheduled_jobs()

        self.assertEqual(1, len(jobs))

        job = jobs[0]
        self.assertEqual(job.interval, 2)
        self.assertEqual(job.unit, "hours")
        self.assertEqual(job.job_func.__name__, "job_wrapper")
        self.assertEqual(job.job_func.args[0].__name__, "test_job")
        self.assertEqual(job.job_func.args[1], False)
        self.assertEqual(type(job.job_func.args[2]), logging.Logger)
        self.assertEqual(job.job_func.args[3], "test name")
        self.assertEqual(job.job_func.args[4], 2)
        self.assertEqual(job.job_func.args[5], 4)