Example #1
0
def test_overdue_tasks():
    schdlr = scheduler.Scheduler(4)

    task1 = task.Task('test-1', foo, (1, ), {
        'to_sleep': 1,
    })
    task2 = task.Task('test-2', foo, (1, ), {
        'to_sleep': 1,
    })
    task3 = task.Task('test-3', foo, (1, ), {
        'to_sleep': 1,
    })

    schdlr.start()
    schdlr.add_task(task1, priority=task.PRIORITY_MID, timeout=0.1)
    time.sleep(0.2)
    assert len(schdlr.overdue_tasks) == 1

    schdlr.add_task(task2, priority=task.PRIORITY_MID, timeout=0.1)
    time.sleep(0.2)
    assert len(schdlr.overdue_tasks) == 2

    schdlr.add_task(task3, priority=task.PRIORITY_MID, timeout=0.1)
    time.sleep(0.2)
    assert len(schdlr.overdue_tasks) == 3

    time.sleep(1)

    assert len(schdlr.overdue_tasks) == 0

    schdlr.stop()
Example #2
0
def test_multiple_task_order_different_priority_2():
    schdlr = scheduler.Scheduler(1)

    task1 = task.Task('test-1', foo, (1, ), {
        'to_sleep': 0.3,
    })
    task2 = task.Task('test-2', foo, (1, ), {
        'to_sleep': 0.3,
    })
    task3 = task.Task('test-3', foo, (1, ), {
        'to_sleep': 0.3,
    })
    task4 = task.Task('test-4', foo, (1, ), {
        'to_sleep': 0.3,
    })

    schdlr.add_task(task1, priority=task.PRIORITY_MID)
    schdlr.add_task(task2, priority=task.PRIORITY_MID)
    schdlr.add_task(task3, priority=task.PRIORITY_MID)

    schdlr.start()
    time.sleep(0.1)
    schdlr.add_task(task4, priority=task.PRIORITY_HI)
    schdlr.stop()

    check_scheduler_state(schdlr, scheduler.STATE_STOPPED, 0, 0, 4, None)
    compare_task_list(
        schdlr.tasks_stat(short=False)["done"], [task1, task2, task4, task3])
Example #3
0
def test_worker_2_tasks():
    wkr = worker.Worker('test_worker')
    task1 = task.Task('foo_task1', foo_raise, (), {})
    task2 = task.Task('foo_task2', foo, (1, ), {'b': 2})
    wkr.start()
    wkr.do(task1)
    wkr.do(task2)
    time.sleep(3)
    wkr.stop()
    assert task1.failed
    assert task2.result == 3
Example #4
0
def test_simple_task_fail():
    e = Exception('test')
    t = task.Task('foo_task', foo_raise, (e, ), {})
    t.execute()
    check_task_state(t, task.FAILED, False, True,
                     [task.PENDING, task.IN_PROGRESS, task.FAILED])
    assert isinstance(t.traceback, str) and 'in foo_raise' in t.traceback
    assert t.result is e
Example #5
0
def test_worker_simple_fail():
    wkr = worker.Worker('test_worker')
    task1 = task.Task('foo_task', foo_raise, (), {})
    wkr.start()
    wkr.do(task1)
    check_worker_state(wkr, worker.PROCESSING, False)
    time.sleep(1)
    check_worker_state(wkr, worker.IDLE, True)
    wkr.stop()
    assert task1.failed
Example #6
0
def test_worker_simple_pass():
    wkr = worker.Worker('test_worker')
    task1 = task.Task('foo_task', foo, (1, ), {'b': 2})
    wkr.start()
    wkr.do(task1)
    check_worker_state(wkr, worker.PROCESSING, False)
    time.sleep(1)
    check_worker_state(wkr, worker.IDLE, True)
    wkr.stop()
    assert task1.result == 3
Example #7
0
def test_complete_enqueued():
    schdlr = scheduler.Scheduler(4)

    task1 = task.Task('test-1', foo, (1, ), {
        'to_sleep': 1,
    })
    task2 = task.Task('test-2', foo, (1, ), {
        'to_sleep': 1,
    })
    task3 = task.Task('test-3', foo, (1, ), {
        'to_sleep': 1,
    })

    schdlr.start()
    schdlr.add_task(task1)
    schdlr.add_task(task2)
    schdlr.add_task(task3)

    schdlr.stop()
    check_scheduler_state(schdlr, scheduler.STATE_STOPPED, 0, 0, 3, None)
Example #8
0
def test_multiple_task_order_same_priority():
    schdlr = scheduler.Scheduler(1)

    task1 = task.Task('test-1', foo, (1, ), {
        'to_sleep': 0.3,
    })
    task2 = task.Task('test-2', foo, (1, ), {
        'to_sleep': 0.3,
    })
    task3 = task.Task('test-3', foo, (1, ), {
        'to_sleep': 0.3,
    })

    for t in [task1, task2, task3]:
        schdlr.add_task(t)

    schdlr.start()
    time.sleep(0.5)
    schdlr.stop()

    check_scheduler_state(schdlr, scheduler.STATE_STOPPED, 0, 0, 3, None)
    assert schdlr.tasks_stat(short=False)["done"] == [task1, task2, task3]
Example #9
0
def test_one_worker_one_task_pass_added_before_start():
    schdlr = scheduler.Scheduler(1)
    task1 = task.Task('test-1', foo, (1, ), {
        'to_sleep': 0.3,
    })

    schdlr.add_task(task1)
    assert task1.done is False and task1.result is etc._undef_
    schdlr.start()
    time.sleep(0.1)
    check_scheduler_state(schdlr, scheduler.STATE_RUNNING, 0, 1, 0, None)
    schdlr.stop()
    assert task1.done is True and task1.result == 1
    check_scheduler_state(schdlr, scheduler.STATE_STOPPED, 0, 0, 1, None)
Example #10
0
def test_unexpected_args():
    t = task.Task('foo_task', foo, (1, ), {'bb': 2, 'cc': 3})
    t.execute()
    check_task_state(t, task.FAILED, False, True,
                     [task.PENDING, task.IN_PROGRESS, task.FAILED])
    assert isinstance(t.result, TypeError)
Example #11
0
def test_simple_task_pass_no_return():
    t = task.Task('no_return', no_return, (), {})
    t.execute()
    check_task_state(t, task.DONE, True, False,
                     [task.PENDING, task.IN_PROGRESS, task.DONE])
    assert t.result is None
Example #12
0
def test_simple_task_pass():
    t = task.Task('foo_task', foo, (1, ), {'b': 2, 'c': 3})
    t.execute()
    check_task_state(t, task.DONE, True, False,
                     [task.PENDING, task.IN_PROGRESS, task.DONE])
    assert t.result == 6
Example #13
0
def test_init_state():
    t = task.Task('foo_task', foo, (1, ), {'b': 2, 'c': 3})
    check_task_state(t, task.PENDING, False, False, [task.PENDING])
    assert t.result is etc._undef_