def test_assign_by_weight(self): jobtype_version = self.create_jobtype_version() high_queue = self.create_queue_with_job("heavyweight", jobtype_version) high_queue.weight = 60 mid_queue = self.create_queue_with_job("mediumweight", jobtype_version) mid_queue.weight = 30 low_queue = self.create_queue_with_job("lightweight", jobtype_version) low_queue.weight = 10 db.session.add_all([high_queue, mid_queue, low_queue]) db.session.commit() agents = [] for i in range(0, 100): agent = Agent(hostname="agent%s" % i, id=uuid.uuid4(), ram=32, free_ram=32, cpus=1, port=50000) db.session.add(agent) agents.append(agent) db.session.commit() for agent in agents: assign_tasks_to_agent(agent.id) self.assertGreaterEqual(high_queue.num_assigned_agents(), 59) self.assertLessEqual(high_queue.num_assigned_agents(), 61) self.assertGreaterEqual(mid_queue.num_assigned_agents(), 29) self.assertLessEqual(mid_queue.num_assigned_agents(), 31) self.assertGreaterEqual(low_queue.num_assigned_agents(), 9) self.assertLessEqual(low_queue.num_assigned_agents(), 11)
def test_assign_by_weight_additional_queues(self): jobtype_version = self.create_jobtype_version() high_queue = self.create_queue_with_job("heavyweight", jobtype_version) high_queue.weight = 6 mid_queue = self.create_queue_with_job("mediumweight", jobtype_version) mid_queue.weight = 3 low_queue = self.create_queue_with_job("lightweight", jobtype_version) low_queue.weight = 1 db.session.add_all([high_queue, mid_queue, low_queue]) # The presence of additional queues with arbitrary weights should not # make any difference if they aren't drawing any agents additional_queue1 = JobQueue(name="additional1", weight=10) additional_queue2 = JobQueue(name="additional2", weight=10) additional_queue3 = JobQueue(name="additional3", weight=10) db.session.add_all( [additional_queue1, additional_queue2, additional_queue3]) db.session.commit() agents = [] for i in range(0, 100): agent = Agent(hostname="agent%s" % i, id=uuid.uuid4(), ram=32, free_ram=32, cpus=1, port=50000) db.session.add(agent) agents.append(agent) db.session.commit() for agent in agents: assign_tasks_to_agent(agent.id) self.assertGreaterEqual(high_queue.num_assigned_agents(), 59) self.assertLessEqual(high_queue.num_assigned_agents(), 61) self.assertGreaterEqual(mid_queue.num_assigned_agents(), 29) self.assertLessEqual(mid_queue.num_assigned_agents(), 31) self.assertGreaterEqual(low_queue.num_assigned_agents(), 9) self.assertLessEqual(low_queue.num_assigned_agents(), 11)
def test_assign_by_weight_additional_queues(self): jobtype_version = self.create_jobtype_version() high_queue = self.create_queue_with_job("heavyweight", jobtype_version) high_queue.weight = 6 mid_queue = self.create_queue_with_job("mediumweight", jobtype_version) mid_queue.weight = 3 low_queue = self.create_queue_with_job("lightweight", jobtype_version) low_queue.weight = 1 db.session.add_all([high_queue, mid_queue, low_queue]) # The presence of additional queues with arbitrary weights should not # make any difference if they aren't drawing any agents additional_queue1 = JobQueue(name="additional1", weight=10) additional_queue2 = JobQueue(name="additional2", weight=10) additional_queue3 = JobQueue(name="additional3", weight=10) db.session.add_all([additional_queue1, additional_queue2, additional_queue3]) db.session.commit() agents = [] for i in range(0, 100): agent = Agent(hostname="agent%s" % i, id=uuid.uuid4(), ram=32, free_ram=32, cpus=1, port=50000) db.session.add(agent) agents.append(agent) db.session.commit() for agent in agents: assign_tasks_to_agent(agent.id) self.assertGreaterEqual(high_queue.num_assigned_agents(), 59) self.assertLessEqual(high_queue.num_assigned_agents(), 61) self.assertGreaterEqual(mid_queue.num_assigned_agents(), 29) self.assertLessEqual(mid_queue.num_assigned_agents(), 31) self.assertGreaterEqual(low_queue.num_assigned_agents(), 9) self.assertLessEqual(low_queue.num_assigned_agents(), 11)