def test_primary_thread_integration_shutdown(execmodel): if execmodel.backend != "thread": pytest.skip("can only run with threading") pool = WorkerPool(execmodel=execmodel, hasprimary=True) queue = execmodel.queue.Queue() def do_integrate(): queue.put(execmodel.get_ident()) pool.integrate_as_primary_thread() execmodel.start(do_integrate) queue.get() queue2 = execmodel.queue.Queue() def get_two(): queue.put(execmodel.get_ident()) queue2.get() reply = pool.spawn(get_two) # make sure get_two is running and blocked on queue2 queue.get() # then shut down pool.trigger_shutdown() # and let get_two finish queue2.put(1) reply.get() assert pool.waitall(5.0)