def test__reserve_resource_without_existing_reservation(self): """ Test _reserve_resource() with a resource that does not have an existing reservation in the database. It should find the least busy queue, add a reservation to the database with that queue, and then return the queue. """ # Set up an available queue available_queue_1 = AvailableQueue(RESERVED_WORKER_1, 0) available_queue_1.save() queue = tasks._reserve_resource('resource_1') worker_1_queue_name = RESERVED_WORKER_1 + '.dq' self.assertEqual(queue, worker_1_queue_name) # Make sure that the AvailableQueue is correct aqc = AvailableQueue.get_collection() self.assertEqual(aqc.count(), 1) aq_1 = aqc.find_one({'_id': available_queue_1.name}) self.assertEqual(aq_1['num_reservations'], 1) # Make sure the ReservedResource is also correct rrc = ReservedResource.get_collection() self.assertEqual(rrc.count(), 1) rr_1 = rrc.find_one({'_id': 'resource_1'}) self.assertEqual(rr_1['assigned_queue'], worker_1_queue_name) self.assertEqual(rr_1['num_reservations'], 1)
def test__reserve_resource_with_existing_reservation(self): """ Test _reserve_resource() with a resource that has an existing reservation in the database. It should return the queue listed in the database, and increment the reservation counter. """ # Set up an available queue with a reservation count of 1 now = datetime.utcnow() available_queue_1 = AvailableQueue(RESERVED_WORKER_1, now, 1) available_queue_1.save() # Set up a resource reservation, using our available_queue from above reserved_resource_1 = ReservedResource('resource_1', available_queue_1.name, available_queue_1.num_reservations) reserved_resource_1.save() # This should increase the reserved_resource_1 num_reservations to 2, and should also # increase available_queue_1's num_reservations to 2. available_queue_1's name should be # returned queue = tasks._reserve_resource('resource_1') self.assertEqual(queue, RESERVED_WORKER_1) # Make sure that the AvailableQueue is correct aqc = AvailableQueue.get_collection() self.assertEqual(aqc.count(), 1) aq_1 = aqc.find_one({'_id': available_queue_1.name}) self.assertEqual(aq_1['num_reservations'], 2) # Make sure the ReservedResource is also correct rrc = ReservedResource.get_collection() self.assertEqual(rrc.count(), 1) rr_1 = rrc.find_one({'_id': reserved_resource_1.name}) self.assertEqual(rr_1['assigned_queue'], RESERVED_WORKER_1) self.assertEqual(rr_1['num_reservations'], 2)
def test__reserve_resource_with_existing_reservation(self): """ Test _reserve_resource() with a resource that has an existing reservation in the database. It should return the queue listed in the database, and increment the reservation counter. """ # Set up a worker with a reservation count of 1 now = datetime.utcnow() worker_1 = Worker(WORKER_1, now) worker_1.save() # Set up a resource reservation, using our worker from above reserved_resource_1 = ReservedResource('resource_1', worker_1.queue_name, 1) reserved_resource_1.save() # This should increase the reserved_resource_1 num_reservations to 2. worker_1's name should # be returned queue = tasks._reserve_resource('resource_1') self.assertEqual(queue, WORKER_1_QUEUE) # Make sure the ReservedResource is correct rrc = ReservedResource.get_collection() self.assertEqual(rrc.count(), 1) rr_1 = rrc.find_one({'_id': reserved_resource_1.name}) self.assertEqual(rr_1['assigned_queue'], WORKER_1_QUEUE) self.assertEqual(rr_1['num_reservations'], 2)
def test__reserve_resource_without_existing_reservation(self): """ Test _reserve_resource() with a resource that does not have an existing reservation in the database. It should find the least busy worker, add a reservation to the database with that worker's queue, and then return the queue name. """ # Set up a worker worker_1 = Worker(WORKER_1, datetime.utcnow()) worker_1.save() queue = tasks._reserve_resource('resource_1') self.assertEqual(queue, WORKER_1_QUEUE) # Make sure the ReservedResource is correct rrc = ReservedResource.get_collection() self.assertEqual(rrc.count(), 1) rr_1 = rrc.find_one({'_id': 'resource_1'}) self.assertEqual(rr_1['assigned_queue'], WORKER_1_QUEUE) self.assertEqual(rr_1['num_reservations'], 1)