def real_seraph(request, zmq_context, master_config):
    task = Seraph(master_config)
    task.front_queue.router_mandatory = True  # don't drop msgs during test
    task.back_queue.router_mandatory = True
    task.start()
    yield task
    task.quit()
    task.join(2)
    if task.is_alive():
        raise RuntimeError('failed to kill seraph task')
Exemple #2
0
def test_router(zmq_context, master_config):
    seraph = Seraph(master_config)
    seraph.start()
    try:
        client = zmq_context.socket(transport.REQ)
        client.connect(master_config.db_queue)
        worker = zmq_context.socket(transport.REQ)
        worker.connect(const.ORACLE_QUEUE)
        worker.send(b'READY')
        client.send(cbor2.dumps(['FOO']))
        client_addr, empty, msg = worker.recv_multipart()
        assert cbor2.loads(msg) == ['FOO']
        worker.send_multipart([client_addr, empty, cbor2.dumps(['BAR'])])
        assert cbor2.loads(client.recv()) == ['BAR']
    finally:
        seraph.quit()
        seraph.join()
Exemple #3
0
def test_router_no_workers(zmq_context, master_config):
    seraph = Seraph(master_config)
    seraph.start()
    try:
        client = zmq_context.socket(zmq.REQ)
        client.connect(master_config.db_queue)
        client.send_pyobj(['FOO'])
        with pytest.raises(zmq.ZMQError):
            client.recv_pyobj(flags=zmq.NOBLOCK)
        worker = zmq_context.socket(zmq.REQ)
        worker.connect(const.ORACLE_QUEUE)
        worker.send(b'READY')
        client_addr, empty, msg = worker.recv_multipart()
        assert pickle.loads(msg) == ['FOO']
        worker.send_multipart([client_addr, empty, pickle.dumps(['BAR'])])
        assert client.recv_pyobj() == ['BAR']
    finally:
        seraph.quit()
        seraph.join()