def test_start_and_stop_schedule(): with TemporaryDirectory() as tempdir: repository = RepositoryDefinition(name="test_repository", schedule_defs=define_schedules()) instance = define_scheduler_instance(tempdir) # Initialize scheduler reconcile_scheduler_state( python_path=sys.executable, repository_path="", repository=repository, instance=instance, ) schedule_def = repository.get_schedule_def("no_config_pipeline_every_min_schedule") # Start schedule schedule = instance.start_schedule(repository, "no_config_pipeline_every_min_schedule") check.inst_param(schedule, 'schedule', Schedule) assert "/bin/python" in schedule.python_path assert 'schedules' in os.listdir(tempdir) assert "{}.{}.sh".format(repository.name, schedule_def.name) in os.listdir( os.path.join(tempdir, 'schedules', 'scripts') ) # End schedule instance.stop_schedule(repository, "no_config_pipeline_every_min_schedule") assert "{}.{}.sh".format(repository.name, schedule_def.name) not in os.listdir( os.path.join(tempdir, 'schedules', 'scripts') )
def test_start_schedule_fails(): with TemporaryDirectory() as tempdir: repository = RepositoryDefinition(name="test_repository", schedule_defs=define_schedules()) instance = define_scheduler_instance(tempdir) # Initialize scheduler reconcile_scheduler_state( python_path=sys.executable, repository_path="", repository=repository, instance=instance, ) schedule_def = repository.get_schedule_def("no_config_pipeline_every_min_schedule") def raises(*args, **kwargs): raise Exception('Patch') instance._scheduler._start_cron_job = raises # pylint: disable=protected-access with pytest.raises(Exception, match='Patch'): instance.start_schedule(repository, "no_config_pipeline_every_min_schedule") schedule = instance.get_schedule_by_name(repository, schedule_def.name) assert schedule.status == ScheduleStatus.STOPPED
def test_stop_schedule_fails( restore_cron_tab, # pylint:disable=unused-argument,redefined-outer-name ): with TemporaryDirectory() as tempdir: repository = RepositoryDefinition(name="test_repository", schedule_defs=define_schedules()) instance = define_scheduler_instance(tempdir) # Initialize scheduler reconcile_scheduler_state( python_path=sys.executable, repository_path="", repository=repository, instance=instance, ) schedule_def = repository.get_schedule_def( "no_config_pipeline_every_min_schedule") def raises(*args, **kwargs): raise Exception('Patch') instance._scheduler._end_cron_job = raises # pylint: disable=protected-access schedule = instance.start_schedule( repository.name, "no_config_pipeline_every_min_schedule") check.inst_param(schedule, 'schedule', Schedule) assert "/bin/python" in schedule.python_path assert 'schedules' in os.listdir(tempdir) assert "{}.{}.sh".format(repository.name, schedule_def.name) in os.listdir( os.path.join(tempdir, 'schedules', 'scripts')) # End schedule with pytest.raises(Exception, match='Patch'): instance.stop_schedule(repository.name, "no_config_pipeline_every_min_schedule") schedule = instance.get_schedule_by_name(repository.name, schedule_def.name) assert schedule.status == ScheduleStatus.RUNNING