async def test_delete_schedules(db: Session, scheduler: Scheduler): project = config.default_project number_of_schedules = 5 for index in range(number_of_schedules): schedule_name = f"schedule-name-{index}" _create_do_nothing_schedule(db, scheduler, project, schedule_name) schedules = scheduler.list_schedules(db) assert len(schedules.schedules) == number_of_schedules scheduler.delete_schedules(db, project) schedules = scheduler.list_schedules(db) assert len(schedules.schedules) == 0 # verify another delete pass successfully scheduler.delete_schedules(db, project)
async def test_delete_schedule(db: Session, scheduler: Scheduler): cron_trigger = schemas.ScheduleCronTrigger(year="1999") schedule_name = "schedule-name" project = config.default_project scheduler.create_schedule( db, project, schedule_name, schemas.ScheduleKinds.local_function, do_nothing, cron_trigger, ) schedules = scheduler.list_schedules(db) assert len(schedules.schedules) == 1 scheduler.delete_schedule(db, project, schedule_name) schedules = scheduler.list_schedules(db) assert len(schedules.schedules) == 0
def _assert_schedule_get_and_list_credentials_enrichment( db: Session, scheduler: Scheduler, project: str, schedule_name: str, expected_access_key: str, ): schedule = scheduler.get_schedule( db, project, schedule_name, include_credentials=True, ) assert schedule.credentials.access_key == expected_access_key schedules = scheduler.list_schedules(db, project, schedule_name, include_credentials=True) assert schedules.schedules[0].credentials.access_key == expected_access_key
async def test_get_schedule_datetime_fields_timezone(db: Session, scheduler: Scheduler): cron_trigger = schemas.ScheduleCronTrigger(minute="*/10") schedule_name = "schedule-name" project = config.default_project scheduler.create_schedule( db, project, schedule_name, schemas.ScheduleKinds.local_function, do_nothing, cron_trigger, ) schedule = scheduler.get_schedule(db, project, schedule_name) assert schedule.creation_time.tzinfo is not None assert schedule.next_run_time.tzinfo is not None schedules = scheduler.list_schedules(db, project) assert len(schedules.schedules) == 1 assert schedules.schedules[0].creation_time.tzinfo is not None assert schedules.schedules[0].next_run_time.tzinfo is not None
async def test_list_schedules_name_filter(db: Session, scheduler: Scheduler): cases = [ {"name": "some_prefix-mlrun", "should_find": True}, {"name": "some_prefix-mlrun-some_suffix", "should_find": True}, {"name": "mlrun-some_suffix", "should_find": True}, {"name": "mlrun", "should_find": True}, {"name": "MLRun", "should_find": True}, {"name": "bla-MLRun-bla", "should_find": True}, {"name": "mlun", "should_find": False}, {"name": "mlurn", "should_find": False}, {"name": "mluRn", "should_find": False}, ] cron_trigger = schemas.ScheduleCronTrigger(minute="*/10") project = config.default_project expected_schedule_names = [] for case in cases: name = case["name"] should_find = case["should_find"] scheduler.create_schedule( db, mlrun.api.schemas.AuthInfo(), project, name, schemas.ScheduleKinds.local_function, do_nothing, cron_trigger, ) if should_find: expected_schedule_names.append(name) schedules = scheduler.list_schedules(db, project, "~mlrun") assert len(schedules.schedules) == len(expected_schedule_names) for schedule in schedules.schedules: assert schedule.name in expected_schedule_names expected_schedule_names.remove(schedule.name)
async def test_get_schedule(db: Session, scheduler: Scheduler): labels_1 = { "label1": "value1", "label2": "value2", } cron_trigger = schemas.ScheduleCronTrigger(year="1999") schedule_name = "schedule-name" project = config.default_project scheduler.create_schedule( db, mlrun.api.schemas.AuthInfo(), project, schedule_name, schemas.ScheduleKinds.local_function, do_nothing, cron_trigger, labels_1, ) schedule = scheduler.get_schedule(db, project, schedule_name) # no next run time cause we put year=1999 _assert_schedule( schedule, project, schedule_name, schemas.ScheduleKinds.local_function, cron_trigger, None, labels_1, ) labels_2 = { "label3": "value3", "label4": "value4", } year = 2050 cron_trigger_2 = schemas.ScheduleCronTrigger(year=year, timezone="utc") schedule_name_2 = "schedule-name-2" scheduler.create_schedule( db, mlrun.api.schemas.AuthInfo(), project, schedule_name_2, schemas.ScheduleKinds.local_function, do_nothing, cron_trigger_2, labels_2, ) schedule_2 = scheduler.get_schedule(db, project, schedule_name_2) year_datetime = datetime(year=year, month=1, day=1, tzinfo=timezone.utc) _assert_schedule( schedule_2, project, schedule_name_2, schemas.ScheduleKinds.local_function, cron_trigger_2, year_datetime, labels_2, ) schedules = scheduler.list_schedules(db) assert len(schedules.schedules) == 2 _assert_schedule( schedules.schedules[0], project, schedule_name, schemas.ScheduleKinds.local_function, cron_trigger, None, labels_1, ) _assert_schedule( schedules.schedules[1], project, schedule_name_2, schemas.ScheduleKinds.local_function, cron_trigger_2, year_datetime, labels_2, ) schedules = scheduler.list_schedules(db, labels="label3=value3") assert len(schedules.schedules) == 1 _assert_schedule( schedules.schedules[0], project, schedule_name_2, schemas.ScheduleKinds.local_function, cron_trigger_2, year_datetime, labels_2, )