def test_waitforqueues_restore(self): """Waitforqueues Queue object is restored to original one.""" queue_function(self.queues, 0, 0.01) time.sleep(0.01) expected = sorted(dir(self.queues[0])) waitforqueues(self.queues) self.assertEqual(sorted(dir(self.queues[0])), expected)
def listen(self): self.stop_request = threading.Event() pool = ThreadPoolExecutor(max_workers=len(self.vcpus_io)) self.futures = [] self.queue_list = [] self.last_queue = None for vcpu_io in self.vcpus_io: # create queue for this vcpu q = Queue(maxsize=1) self.queue_list.append(q) # start to listen on this vcpu and report events in the queue f = pool.submit(self.listen_vcpu, vcpu_io, q) self.futures.append(f) # while a thread is still running while [f for f in self.futures if f.running()]: modified_queues = waitforqueues(self.queue_list) for q in modified_queues: event = q.get() self.last_queue = q yield event q.task_done()
def test_waitforqueues_restore(self): """Waitforqueues Queue object is restored to original one.""" expected = sorted(dir(self.queues[0])) launch_thread(queue_function, self.queues, 0, 0) waitforqueues(self.queues) self.assertEqual(sorted(dir(self.queues[0])), expected)
def test_waitforqueues_timeout(self): """Waitforqueues returns empty list if timeout.""" launch_thread(queue_function, self.queues, 0, 0.1) self.assertEqual(list(waitforqueues(self.queues, timeout=0.01)), [])
def test_waitforqueues_multiple(self): """Waitforqueues waits for multiple queues.""" for index in range(3): launch_thread(queue_function, self.queues, index, 0.01) time.sleep(0.1) self.assertEqual(list(waitforqueues(self.queues)), self.queues)
def test_waitforqueues_single(self): """Waitforqueues waits for a single queue.""" launch_thread(queue_function, self.queues, 0, 0.01) self.assertEqual(list(waitforqueues(self.queues))[0], self.queues[0])
def test_waitforqueues_timeout(self): """Waitforqueues returns empty list if timeout.""" queue_function(self.queues, 0, 0.1) self.assertEqual(waitforqueues(self.queues, timeout=0.01), [])
def test_waitforqueues_multiple(self): """Waitforqueues waits for multiple queues.""" for index in range(3): queue_function(self.queues, index, 0.01) time.sleep(0.1) self.assertEqual(waitforqueues(self.queues), list(self.queues))
def test_waitforqueues_single(self): """Waitforqueues waits for a single queue.""" queue_function(self.queues, 0, 0.01) self.assertEqual(waitforqueues(self.queues)[0], self.queues[0])
def test_waitforqueues_restore(self): """Waitforqueues Queue object is restored to original one.""" expected = sorted(dir(self.queues[0])) launch_thread(queue_function, self.queues, 0, 0) waitforqueues(self.queues) self.assertEqual(sorted(dir(self.queues[0])), expected)
def test_waitforqueues_timeout(self): """Waitforqueues returns empty list if timeout.""" launch_thread(queue_function, self.queues, 0, 0.1) self.assertEqual(list(waitforqueues(self.queues, timeout=0.01)), [])
def test_waitforqueues_single(self): """Waitforqueues waits for a single queue.""" launch_thread(queue_function, self.queues, 0, 0.01) self.assertEqual(list(waitforqueues(self.queues))[0], self.queues[0])