Example #1
0
def test_build_status():
    scheduler.schedule_job("good_job", {"k": "v"}, "channel", TS, 0)
    scheduler.schedule_job("odd_job", {"k": "v"}, "channel", TS, 10)
    scheduler.schedule_suppression("odd_job", T(-5), T(5))
    scheduler.schedule_suppression("good_job", T(5), T(15))
    scheduler.reserve_job()

    status = bot._build_status()

    assert (status == """
The time is 2019-12-10 11:12:13+00:00

There is 1 running job:

* [1] good_job (started at 2019-12-10 11:12:13+00:00)

There is 1 scheduled job:

* [2] odd_job (starting after 2019-12-10 11:12:23+00:00)

There is 1 active suppression:

* [1] odd_job (from 2019-12-10 11:12:08+00:00 to 2019-12-10 11:12:18+00:00)

There is 1 scheduled suppression:

* [2] good_job (from 2019-12-10 11:12:18+00:00 to 2019-12-10 11:12:28+00:00)
""".strip())
Example #2
0
def test_reserve_job_with_suppression_in_future(freezer):
    scheduler.schedule_suppression("good_job", T(15), T(20))
    scheduler.schedule_job("good_job", {"k": "v"}, "channel", TS, 5)
    freezer.move_to(T(10))

    job_id = scheduler.reserve_job()
    job = scheduler.get_job(job_id)
    assert_job_matches(job, "good_job", {"k": "v"}, "channel", T(5), T(10))
Example #3
0
def test_reserve_job_with_suppression_in_progress_for_another_job_type(freezer):
    scheduler.schedule_job("good_job", {"k": "v"}, "channel", TS, 5)
    scheduler.schedule_suppression("odd_job", T(10), T(20))
    freezer.move_to(T(15))

    job_id = scheduler.reserve_job()
    job = scheduler.get_job(job_id)
    assert_job_matches(job, "good_job", {"k": "v"}, "channel", T(5), T(15))
Example #4
0
def test_cancel_suppressions():
    scheduler.schedule_suppression("good_job", T(5), T(15))
    scheduler.schedule_suppression("odd_job", T(10), T(20))
    scheduler.schedule_suppression("good_job", T(20), T(30))

    scheduler.cancel_suppressions("good_job")

    ss = scheduler.get_suppressions()
    assert len(ss) == 1
    assert_suppression_matches(ss[0], "odd_job", T(10), T(20))
Example #5
0
def test_schedule_suppression():
    scheduler.schedule_suppression("good_job", T(5), T(15))
    scheduler.schedule_suppression("odd_job", T(10), T(20))
    scheduler.schedule_suppression("good_job", T(20), T(30))

    ss = scheduler.get_suppressions()
    assert len(ss) == 3
    assert_suppression_matches(ss[0], "good_job", T(5), T(15))
    assert_suppression_matches(ss[1], "odd_job", T(10), T(20))
    assert_suppression_matches(ss[2], "good_job", T(20), T(30))
Example #6
0
def test_remove_expired_suppressions(freezer):
    scheduler.schedule_suppression("good_job", T(5), T(15))
    scheduler.schedule_suppression("odd_job", T(10), T(20))
    scheduler.schedule_suppression("good_job", T(20), T(30))
    freezer.move_to(T(17))

    scheduler.remove_expired_suppressions()

    ss = scheduler.get_suppressions()
    assert len(ss) == 2
    assert_suppression_matches(ss[0], "odd_job", T(10), T(20))
    assert_suppression_matches(ss[1], "good_job", T(20), T(30))
Example #7
0
def test_run_once():
    # Because this mock gets used in a subprocess (I think) we can't actually
    # get any information out of it about how it was used.
    slack_client = Mock()

    scheduler.schedule_suppression("test_good_job", T(-15), T(-5))
    scheduler.schedule_suppression("test_bad_job", T(-15), T(-5))
    scheduler.schedule_suppression("test_really_bad_job", T(-5), T(5))

    scheduler.schedule_job("test_good_job", {}, "channel", TS, 0)
    scheduler.schedule_job("test_bad_job", {}, "channel", TS, 0)
    scheduler.schedule_job("test_really_bad_job", {}, "channel", TS, 0)

    processes = run_once(slack_client, config)

    for p in processes:
        p.join()

    assert os.path.exists(build_log_dir("test_good_job"))
    assert os.path.exists(build_log_dir("test_bad_job"))
    assert not os.path.exists(build_log_dir("test_really_bad_job"))
Example #8
0
def test_reserve_job_with_suppression_in_progress(freezer):
    scheduler.schedule_job("good_job", {"k": "v"}, "channel", TS, 5)
    scheduler.schedule_suppression("good_job", T(10), T(20))
    freezer.move_to(T(15))

    assert not scheduler.reserve_job()