Esempio n. 1
0
def test_iterator_day():
    dt1_str = "2019-04-12 13:00"
    dt2_str = "2019-04-23 1:00"
    dt1 = str_to_datetime(dt1_str, tz_name)
    dt2 = str_to_datetime(dt2_str, tz_name)
    delta = dt1 - dt2
    assert delta.total_seconds() < 0
    for dt in rrule.rrule(rrule.MINUTELY, dtstart=dt1, until=dt2):
        print(dt)
def test_generate_execution_time_from_hour_match():
    from_str = "2019-04-22 00:00"
    to_str = "2019-04-23 23:59"

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "0 * * * *",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
    assert len(dts) == 48

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "15 0,5,10,15,20 * * *",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
    assert len(dts) == 10

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "0 */2 * * *",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
    assert len(dts) == 24

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "0 1/2 * * *",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
    assert len(dts) == 24

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "0 7-9 * * *",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
    assert len(dts) == 6
def test_make_sure_dt_is_rounded():
    from_str = "2019-04-23 12:00:01"
    to_str = "2019-04-23 12:59:02"

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "* * * * *",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
        assert dt.second == 0
        assert dt.microsecond == 0
    assert len(dts) == 60
Esempio n. 4
0
def test_parse_str_to_dt():
    datetime_str = "2019-04-12 13:00"
    dt_local = str_to_datetime(datetime_str, tz_name)
    assert dt_local.year == 2019
    assert dt_local.month == 4
    assert dt_local.day == 12
    assert dt_local.hour == 13
    assert dt_local.second == 0
    dt_utc = str_to_datetime(datetime_str, utc_tz)
    assert dt_utc.year == 2019
    assert dt_utc.month == 4
    assert dt_utc.day == 12
    assert dt_utc.hour == 13
    assert dt_utc.second == 0
    delta = dt_utc - dt_local
    assert delta.seconds == 7 * 60 * 60
Esempio n. 5
0
def test_match_minute():
    dt_str = "2019-04-23 1:00"
    dt = str_to_datetime(dt_str)

    assert CronValidator.match_datetime("* * * * *", dt)
    assert CronValidator.match_datetime("0 * * * *", dt)
    assert CronValidator.match_datetime("0-30 * * * *", dt)
    assert CronValidator.match_datetime("0/30 * * * *", dt)
    assert CronValidator.match_datetime("0/1 * * * *", dt)
    assert CronValidator.match_datetime("1/1 * * * *", dt) is False
    assert CronValidator.match_datetime("1,2,3,4 * * * *", dt) is False
    assert CronValidator.match_datetime("30 * * * *", dt) is False
def test_generate_execution_time_from_day_of_week_match():
    from_str = "2019-04-22 00:00"
    to_str = "2019-04-23 23:59"

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "0 0 * * *",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
    assert len(dts) == 2

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "0 0 * * 0",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
    assert len(dts) == 0

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "0 0 * * 1",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
    assert len(dts) == 1
Esempio n. 7
0
def test_match_eb_syntax():
    dt_str = "2023-04-28 1:00"
    dt = str_to_datetime(dt_str)
    assert CronValidator.match_datetime("* * * * 30W", dt, version=Version.EB)
    assert CronValidator.match_datetime("* * * * 5L", dt, version=Version.EB)

    dt_str = "2022-02-28 1:00"
    dt = str_to_datetime(dt_str)
    assert CronValidator.match_datetime("* * L * *", dt, version=Version.EB)

    dt_str = "2022-02-27 1:00"
    dt = str_to_datetime(dt_str)
    assert CronValidator.match_datetime("* * L * *", dt,
                                        version=Version.EB) is False

    dt_str = "2020-02-28 1:00"
    dt = str_to_datetime(dt_str)
    assert CronValidator.match_datetime("* * L * *", dt,
                                        version=Version.EB) is False

    dt_str = "2020-02-29 1:00"
    dt = str_to_datetime(dt_str)
    assert CronValidator.match_datetime("* * L * *", dt, version=Version.EB)
Esempio n. 8
0
def test_match_day_of_week():
    dt_str = "2019-04-23 1:00"  # Is a Tuesday
    dt = str_to_datetime(dt_str)

    assert CronValidator.match_datetime("* * * * *", dt)
    assert CronValidator.match_datetime("* * * * 2", dt)
    assert CronValidator.match_datetime("* * * * 5", dt) is False
    assert CronValidator.match_datetime("* * * * 2-5", dt)
    assert CronValidator.match_datetime("* * * * 2-3", dt)
    assert CronValidator.match_datetime("* * * * 2/5", dt)
    assert CronValidator.match_datetime("* * * * 5/1", dt) is False
    assert CronValidator.match_datetime("* * * * 1/1", dt)
    assert CronValidator.match_datetime("* * * * 3,4,5", dt) is False
    assert CronValidator.match_datetime("* * * * 2,3,1", dt)
Esempio n. 9
0
def test_match_month():
    dt_str = "2019-04-23 1:00"
    dt = str_to_datetime(dt_str)

    assert CronValidator.match_datetime("* * * * *", dt)
    assert CronValidator.match_datetime("* * * 4 *", dt)
    assert CronValidator.match_datetime("* * * 5 *", dt) is False
    assert CronValidator.match_datetime("* * * 1-5 *", dt)
    assert CronValidator.match_datetime("* * * 1-3 *", dt) is False
    assert CronValidator.match_datetime("* * * 1/5 *", dt) is False
    assert CronValidator.match_datetime("* * * 5/1 *", dt) is False
    assert CronValidator.match_datetime("* * * 1/1 *", dt)
    assert CronValidator.match_datetime("* * * 2,3,4 *", dt)
    assert CronValidator.match_datetime("* * * 2,3,5 *", dt) is False
Esempio n. 10
0
def test_match_hour():
    dt_str = "2019-04-23 1:00"
    dt = str_to_datetime(dt_str)

    assert CronValidator.match_datetime("* * * * *", dt)
    assert CronValidator.match_datetime("* 1 * * *", dt)
    assert CronValidator.match_datetime("* 0 * * *", dt) is False
    assert CronValidator.match_datetime("* 0-5 * * *", dt)
    assert CronValidator.match_datetime("* 0/5 * * *", dt) is False
    assert CronValidator.match_datetime("* 0/1 * * *", dt)
    assert CronValidator.match_datetime("* 1/1 * * *", dt)
    assert CronValidator.match_datetime("* 2/1 * * *", dt) is False
    assert CronValidator.match_datetime("* 1,2,3,4 * * *", dt)
    assert CronValidator.match_datetime("* 2,3,4 * * *", dt) is False
def test_generate_execution_time_from_minute_match():
    from_str = "2019-04-23 12:00"
    to_str = "2019-04-23 12:59"

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "* * * * *",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
    assert len(dts) == 60

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "23 * * * *",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
    assert len(dts) == 1
    assert dts[0] == str_to_datetime("2019-04-23 12:23")

    print("--------------------------------------------------")
    dts = []
    for dt in CronValidator.get_execution_time(
            "1,23,59 * * * *",
            from_dt=str_to_datetime(from_str),
            to_dt=str_to_datetime(to_str)):
        print(dt)
        dts.append(dt)
    assert len(dts) == 3
    assert dts[0] == str_to_datetime("2019-04-23 12:01")
    assert dts[1] == str_to_datetime("2019-04-23 12:23")
    assert dts[2] == str_to_datetime("2019-04-23 12:59")
Esempio n. 12
0
def test_match_day_of_month():
    dt_str = "2019-04-23 1:00"
    dt = str_to_datetime(dt_str)

    assert CronValidator.match_datetime("* * * * *", dt)
    assert CronValidator.match_datetime("* * 23 * *", dt)
    assert CronValidator.match_datetime("* * 1 * *", dt) is False
    assert CronValidator.match_datetime("* * 1-5 * *", dt) is False
    assert CronValidator.match_datetime("* * 1-23 * *", dt)
    assert CronValidator.match_datetime("* * 1/5 * *", dt) is False
    assert CronValidator.match_datetime("* * 1/1 * *", dt)
    assert CronValidator.match_datetime("* * 1/1 * *", dt)
    assert CronValidator.match_datetime("* * 24/1 * *", dt) is False
    assert CronValidator.match_datetime("* * 23,2,3,4 * *", dt)
    assert CronValidator.match_datetime("* * 2,3,24 * *", dt) is False