Example #1
0
    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)
Example #2
0
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()
Example #3
0
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
Example #4
0
 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