def test_schedule_update_remove_metadata(self): fixture = { 'id': str(uuid.uuid4()), 'tenant': str(uuid.uuid4()), 'action': 'snapshot', 'minute': 30, 'hour': 2, 'schedule_metadata': [ { 'key': 'instance_id', 'value': 'my_instance', }, ], } schedule = self.db_api.schedule_create(fixture) fixture = { 'schedule_metadata': [], } timeutils.set_time_override() timeutils.advance_time_seconds(2) updated_schedule = self.db_api.schedule_update(schedule['id'], fixture) timeutils.clear_time_override() self.assertTrue(uuidutils.is_uuid_like(schedule['id'])) self.assertEqual(updated_schedule['tenant'], schedule['tenant']) self.assertEqual(updated_schedule['action'], schedule['action']) self.assertEqual(updated_schedule['minute'], schedule['minute']) self.assertEqual(updated_schedule['hour'], schedule['hour']) metadata = updated_schedule['schedule_metadata'] self.assertEqual(len(metadata), 0) # updated child metadata collection doesn't update the parent schedule self.assertEqual(updated_schedule['updated_at'], schedule['updated_at'])
def _create_jobs(self, gap, *fixtures): now = timeutils.utcnow() self.jobs = [] for fixture in fixtures: self.jobs.append(self.db_api.job_create(fixture)) timeutils.advance_time_seconds(gap) return now
def test_get_schedules(self): timeutils.set_time_override() start_time = timeutils.isotime() timeutils.advance_time_seconds(30) end_time = timeutils.isotime() filter_args = {'next_run_after': start_time, 'next_run_before': end_time} self.client.list_schedules(filter_args=filter_args).AndReturn([]) self.mox.ReplayAll() self.scheduler.get_schedules(start_time, end_time) self.mox.VerifyAll()
def test_get_schedules(self): timeutils.set_time_override() start_time = timeutils.isotime() timeutils.advance_time_seconds(30) end_time = timeutils.isotime() filter_args = { 'next_run_after': start_time, 'next_run_before': end_time } self.client.list_schedules(filter_args=filter_args).AndReturn([]) self.mox.ReplayAll() self.scheduler.get_schedules(start_time, end_time) self.mox.VerifyAll()
def test_schedule_test_and_set_next_run_invalid(self): fixture = { 'id': str(uuid.uuid4()), 'tenant': str(uuid.uuid4()), 'action': 'snapshot', 'minute': 30, 'hour': 2, } bad_expected_next_run = timeutils.utcnow() timeutils.advance_time_seconds(10) schedule = self.db_api.schedule_create(fixture) self.assertRaises(exception.NotFound, self.db_api.schedule_test_and_set_next_run, schedule['id'], bad_expected_next_run, timeutils.utcnow())
def test_schedule_update(self): fixture = { 'id': str(uuid.uuid4()), 'tenant': str(uuid.uuid4()), 'action': 'snapshot', 'minute': 30, 'hour': 2, } schedule = self.db_api.schedule_create(fixture) fixture = {'hour': 3} timeutils.set_time_override() timeutils.advance_time_seconds(2) updated_schedule = self.db_api.schedule_update(schedule['id'], fixture) timeutils.clear_time_override() self.assertTrue(uuidutils.is_uuid_like(schedule['id'])) self.assertEqual(updated_schedule['tenant'], schedule['tenant']) self.assertEqual(updated_schedule['action'], schedule['action']) self.assertEqual(updated_schedule['minute'], schedule['minute']) self.assertEqual(updated_schedule['hour'], fixture['hour']) self.assertEqual(updated_schedule['created_at'], schedule['created_at']) self.assertNotEqual(updated_schedule['updated_at'], schedule['updated_at'])