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()