def test_ready_signals_sent(self): self.in_signal = 0 def handle_signal(sender, *args, **kwargs): self.in_signal += 1 worker_ready.connect(handle_signal) WorkerGroup(self.channel_layer, n_threads=4) self.worker.ready() self.assertEqual(self.in_signal, 4)
class WorkerGroupTests(ChannelTestCase): """ Test threaded workers. """ def setUp(self): self.channel_layer = channel_layers[DEFAULT_CHANNEL_LAYER] self.worker = WorkerGroup(self.channel_layer, n_threads=4) self.subworkers = self.worker.workers def test_subworkers_created(self): self.assertEqual(len(self.subworkers), 3) def test_subworkers_no_sigterm(self): for wrk in self.subworkers: self.assertFalse(wrk.signal_handlers) def test_ready_signals_sent(self): self.in_signal = 0 def handle_signal(sender, *args, **kwargs): self.in_signal += 1 worker_ready.connect(handle_signal) WorkerGroup(self.channel_layer, n_threads=4) self.worker.ready() self.assertEqual(self.in_signal, 4) def test_sigterm_handler(self): threads = [] for wkr in self.subworkers: t = threading.Thread(target=wkr.run) t.start() threads.append(t) self.worker.sigterm_handler(None, None) for t in threads: t.join()
def test_worker_group(channel_layer, n_threads, callback=None): """Setup test worker group and validate it's finished.""" worker_group = WorkerGroup( channel_layer, n_threads=n_threads, signal_handlers=False, stop_gracefully=True, callback=callback, ) worker_group_thread = threading.Thread(target=worker_group.run) worker_group_thread.daemon = True worker_group_thread.start() yield worker_group worker_group_thread.join() for worker_id, worker in enumerate(worker_group.workers): assert worker.in_job is False assert worker_group.threads[worker_id].is_alive() is False
def setUp(self): self.channel_layer = channel_layers[DEFAULT_CHANNEL_LAYER] self.worker = WorkerGroup(self.channel_layer, n_threads=4) self.subworkers = self.worker.workers