def test_remove_schedules_many_schedules_random_schedules(self): # Number of jobs and floor(requests) + ceiling(requests) are equal num_of_jobs = MANY num_of_schedules = num_of_jobs # Leave one schedule remaining for comparison at the end num_of_requests = num_of_jobs - 1 # Create a crontab with many jobs test_jobs = create_test_tab(num_of_jobs, user1) api.set_jobs(test_jobs, user1) jobs_list = api.get_jobs() test_workers = [] # Create one worker and add them to a list for bookkeeping test_workers.append(api.create_worker()) test_schedules = [] for schedule in range(num_of_schedules): test_schedules.append(api.Schedule(datetime.now(), test_jobs[schedule], test_workers[0])) api.add_schedules(test_schedules) # Kill number of requests random schedules in the list for request in range(num_of_requests): random_schedule = random.randrange(len(test_schedules)) api.remove_schedule(test_schedules.pop(random_schedule)) schedules_list = [] schedules_list = api.get_schedules(test_workers[0]) # Verify that the schedules list contains exactly one schedule self.assertEqual(len(schedules_list), 1) # Verify that the correct remaining schedule is still in the list check_schedule_fields(self, schedules_list, test_schedules)
def test_get_schedules_many_workers_many_schedules(self): num_of_jobs = MANY num_of_schedules = num_of_jobs num_of_workers = num_of_schedules num_of_workers = MANY test_jobs = create_test_tab(num_of_jobs, user1) api.set_jobs(test_jobs, user1) jobs_list = api.get_jobs() test_workers = [] # Create many workers and add them to a list for bookkeeping for worker in range(num_of_workers): test_workers.append(api.create_worker()) # Create a schedule belonging to each worker representing the only job test_schedules = [] for worker in test_workers: for job in jobs_list: test_schedules.append(api.Schedule(datetime.now(), job, worker)) api.add_schedules(test_schedules) # Aggregate each worker's schedules into a single list for comparison # with test schedules schedules_for_workers = [] for worker in test_workers: schedules_list = api.get_schedules(worker) schedules_for_workers.extend(schedules_list) # Verify that the information we get matches what was set check_schedule_fields(self, schedules_for_workers, test_schedules)
def test_remove_schedule_many_schedules(self): # Number of jobs and floor(requests) + ceiling(requests) are equal num_of_jobs = MANY num_of_schedules = num_of_jobs # Automatic flooring care of Python num_of_requests = num_of_jobs / 2 # Create a crontab with many jobs test_jobs = create_test_tab(num_of_jobs, user1) api.set_jobs(test_jobs, user1) jobs_list = api.get_jobs() test_workers = [] # Create one worker and add them to a list for bookkeeping test_workers.append(api.create_worker()) # Create a schedule for many jobs test_schedules = [] for schedule in range(num_of_schedules): test_schedules.append(api.Schedule(datetime.now(), test_jobs[schedule], test_workers[0])) api.add_schedules(test_schedules) # Kill the floor of half of the workers in the list for request in range(num_of_requests): api.remove_schedule(test_schedules.pop()) schedules_list = api.get_schedules(test_workers[0]) # Verify that the correct remaining schedules are still in the list check_schedule_fields(self, schedules_list, test_schedules) # Remove all remaining test schedules while test_schedules: api.remove_schedule(test_schedules.pop()) # Try to get schedules from an empty pool schedules_list = api.get_schedules(test_workers[0]) # Verify that the next worker does not exist self.assertFalse(len(schedules_list))
def test_remove_schedules_many_schedules_random_schedules(self): # Number of jobs and floor(requests) + ceiling(requests) are equal num_of_jobs = MANY num_of_schedules = num_of_jobs # Leave one schedule remaining for comparison at the end num_of_requests = num_of_jobs - 1 # Create a crontab with many jobs test_jobs = create_test_tab(num_of_jobs, user1) api.set_jobs(test_jobs, user1) jobs_list = api.get_jobs() test_workers = [] # Create one worker and add them to a list for bookkeeping test_workers.append(api.create_worker()) test_schedules = [] for schedule in range(num_of_schedules): test_schedules.append( api.Schedule(datetime.now(), test_jobs[schedule], test_workers[0])) api.add_schedules(test_schedules) # Kill number of requests random schedules in the list for request in range(num_of_requests): random_schedule = random.randrange(len(test_schedules)) api.remove_schedule(test_schedules.pop(random_schedule)) schedules_list = [] schedules_list = api.get_schedules(test_workers[0]) # Verify that the schedules list contains exactly one schedule self.assertEqual(len(schedules_list), 1) # Verify that the correct remaining schedule is still in the list check_schedule_fields(self, schedules_list, test_schedules)
def test_remove_schedule_many_schedules(self): # Number of jobs and floor(requests) + ceiling(requests) are equal num_of_jobs = MANY num_of_schedules = num_of_jobs # Automatic flooring care of Python num_of_requests = num_of_jobs / 2 # Create a crontab with many jobs test_jobs = create_test_tab(num_of_jobs, user1) api.set_jobs(test_jobs, user1) jobs_list = api.get_jobs() test_workers = [] # Create one worker and add them to a list for bookkeeping test_workers.append(api.create_worker()) # Create a schedule for many jobs test_schedules = [] for schedule in range(num_of_schedules): test_schedules.append( api.Schedule(datetime.now(), test_jobs[schedule], test_workers[0])) api.add_schedules(test_schedules) # Kill the floor of half of the workers in the list for request in range(num_of_requests): api.remove_schedule(test_schedules.pop()) schedules_list = api.get_schedules(test_workers[0]) # Verify that the correct remaining schedules are still in the list check_schedule_fields(self, schedules_list, test_schedules) # Remove all remaining test schedules while test_schedules: api.remove_schedule(test_schedules.pop()) # Try to get schedules from an empty pool schedules_list = api.get_schedules(test_workers[0]) # Verify that the next worker does not exist self.assertFalse(len(schedules_list))
def test_get_schedules_one_worker_many_schedules(self): num_of_jobs = MANY num_of_schedules = num_of_jobs test_jobs = create_test_tab(num_of_jobs, user1) api.set_jobs(test_jobs, user1) jobs_list = api.get_jobs() test_workers = [] # Create one worker and add them to a list for bookkeeping test_workers.append(api.create_worker()) # Create a schedule for the only job test_schedules = [] for job in range(num_of_jobs): test_schedules.append(api.Schedule(datetime.now(), test_jobs[job], test_workers[0])) api.add_schedules(test_schedules) schedules_list = api.get_schedules(test_workers[0]) # Verify that the information we get matches what was set check_schedule_fields(self, schedules_list, test_schedules)
def test_get_schedules_one_worker_many_schedules(self): num_of_jobs = MANY num_of_schedules = num_of_jobs test_jobs = create_test_tab(num_of_jobs, user1) api.set_jobs(test_jobs, user1) jobs_list = api.get_jobs() test_workers = [] # Create one worker and add them to a list for bookkeeping test_workers.append(api.create_worker()) # Create a schedule for the only job test_schedules = [] for job in range(num_of_jobs): test_schedules.append( api.Schedule(datetime.now(), test_jobs[job], test_workers[0])) api.add_schedules(test_schedules) schedules_list = api.get_schedules(test_workers[0]) # Verify that the information we get matches what was set check_schedule_fields(self, schedules_list, test_schedules)