Beispiel #1
0
def test_task_manager_register_no_task_name(manager, mocker):
    mocker.patch("cabbage.postgres.register_queue")

    task = tasks.Task(manager=manager, queue="queue")

    with pytest.raises(AssertionError):
        manager.register(task)
Beispiel #2
0
def test_task_manager_register(manager, mocker):
    register_queue = mocker.patch("cabbage.postgres.register_queue")
    task = tasks.Task(manager=manager, queue="queue", name="bla")

    manager.register(task)

    assert manager.queues == {"queue"}
    assert manager.tasks == {"bla": task}
    register_queue.assert_called_with(manager.connection, "queue")
Beispiel #3
0
def test_task_defer_no_lock(manager, mocker):
    launch_task = mocker.patch("cabbage.postgres.launch_task")
    task = tasks.Task(manager=manager, queue="queue", name="job")

    task.defer(a="b", c=3)

    _, kwargs = launch_task.call_args_list[0]
    # Will raise if not a correct uuid
    assert uuid.UUID(kwargs["lock"])
Beispiel #4
0
def test_task_run_run(manager, mocker):

    mocker.patch("cabbage.postgres.register_queue")
    job = mocker.MagicMock()
    task = tasks.Task(manager=manager, queue="bla", name="foo")(job)
    task_run = tasks.TaskRun(task=task, id=12, lock="bla")
    task_run.run(a=1, b=2)

    job.assert_called_with(task_run, a=1, b=2)
Beispiel #5
0
def test_task_manager_register_queue_already_exists(manager, mocker):
    register_queue = mocker.patch("cabbage.postgres.register_queue")
    manager.queues.add("queue")
    task = tasks.Task(manager=manager, queue="queue", name="bla")

    manager.register(task)

    assert manager.queues == {"queue"}
    assert manager.tasks == {"bla": task}
    register_queue.assert_not_called()
Beispiel #6
0
def test_task_call_explicit_name(manager, mocker):

    mocker.patch("cabbage.tasks.TaskManager.register")
    task = tasks.Task(manager=manager, queue="queue", name="other")

    def job():
        pass

    task(job)

    assert task.name == "other"
Beispiel #7
0
def test_task_call(manager, mocker):

    register = mocker.patch("cabbage.tasks.TaskManager.register")
    task = tasks.Task(manager=manager, queue="queue")

    def job():
        pass

    assert task(job) is task

    assert task.func is job
    assert task.name == "job"
    register.assert_called_with(task)
Beispiel #8
0
def test_task_defer(manager, mocker):
    launch_task = mocker.patch("cabbage.postgres.launch_task")
    task = tasks.Task(manager=manager, queue="queue", name="job")

    task.defer(lock="sherlock", a="b", c=3)

    launch_task.assert_called_with(
        manager.connection,
        queue="queue",
        name="job",
        lock="sherlock",
        kwargs={
            "a": "b",
            "c": 3
        },
    )
def test_run_task_error(manager):
    def job(task_run, a, b):  # pylint: disable=unused-argument
        raise ValueError("nope")

    task = tasks.Task(manager=manager, queue="yay", name="job")
    task.func = job

    manager.tasks = {"job": task}

    row = postgres.TaskRow(id=16,
                           args={
                               "a": 9,
                               "b": 3
                           },
                           targeted_object="sherlock",
                           task_type="job")
    worker = task_worker.Worker(manager, "yay")
    with pytest.raises(exceptions.TaskError):
        worker.run_task(row)
Beispiel #10
0
def test_run_task(manager):
    result = []

    def job(a, b):  # pylint: disable=unused-argument
        result.append(a + b)

    task = tasks.Task(job, manager=manager, queue="yay", name="job")

    manager.tasks = {"job": task}

    row = postgres.TaskRow(id=16,
                           args={
                               "a": 9,
                               "b": 3
                           },
                           targeted_object="sherlock",
                           task_type="job")
    worker = task_worker.Worker(manager, "yay")
    worker.run_task(row)

    assert result == [12]
Beispiel #11
0
def test_task_defer_no_name(manager, mocker):
    mocker.patch("cabbage.postgres.launch_task")
    task = tasks.Task(manager=manager, queue="queue")

    with pytest.raises(AssertionError):
        task.defer(a="b", c=3)
Beispiel #12
0
def test_task_run_run_no_func(manager):
    task = tasks.Task(manager=manager, queue="bla", name="foo")
    task_run = tasks.TaskRun(task=task, id=12, lock="bla")

    with pytest.raises(AssertionError):
        task_run.run(a=1, b=2)
Beispiel #13
0
def test_task_init_with_no_name(manager):
    task = tasks.Task(job, manager=manager, queue="queue")

    assert task.func is job
    assert task.name == "job"