def calculate(self, servcalc, *constraints):
return servcalc.servers_for_queue(
- [{'runtime_constraints': cdict} for cdict in constraints])
+ [{'uuid': 'zzzzz-jjjjj-{:015x}'.format(index),
+ 'runtime_constraints': cdict}
+ for index, cdict in enumerate(constraints)])
def test_empty_queue_needs_no_servers(self):
servcalc = self.make_calculator([1])
{'min_scratch_mb_per_node': 200})
self.assertEqual(6, len(servlist))
+ def test_server_calc_min_nodes_0_jobs(self):
+ servcalc = self.make_calculator([1], min_nodes=3, max_nodes=9)
+ servlist = self.calculate(servcalc, {})
+ self.assertEqual(3, len(servlist))
+
+ def test_server_calc_min_nodes_1_job(self):
+ servcalc = self.make_calculator([1], min_nodes=3, max_nodes=9)
+ servlist = self.calculate(servcalc, {'min_nodes': 1})
+ self.assertEqual(3, len(servlist))
+
+ def test_server_calc_more_jobs_than_min_nodes(self):
+ servcalc = self.make_calculator([1], min_nodes=2, max_nodes=9)
+ servlist = self.calculate(servcalc,
+ {'min_nodes': 1},
+ {'min_nodes': 1},
+ {'min_nodes': 1})
+ self.assertEqual(3, len(servlist))
+
+ def test_job_requesting_max_nodes_accepted(self):
+ servcalc = self.make_calculator([1], max_nodes=4)
+ servlist = self.calculate(servcalc, {'min_nodes': 4})
+ self.assertEqual(4, len(servlist))
+
class JobQueueMonitorActorTestCase(testutil.RemotePollLoopActorTestMixin,
unittest.TestCase):