You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.1 KiB

require "luarocks.loader"
package.path = package.path .. ";../?.lua"
local lu = require("luaunit")
local zmq = require("zeromq")
function test_context_creation()
local ctx, err = zmq.ctx_new()
lu.assertNil(err)
ctx:term()
end
function test_req_rep()
local err, msg
local ctx = zmq.ctx_new()
local rep = ctx:socket(zmq.REP)
rep:bind("inproc://foo")
rep:setsockopt_int(zmq.RCVTIMEO, 5000)
local req = ctx:socket(zmq.REQ)
req:connect("inproc://foo")
_, err = req:send({ "foo", "bar" })
lu.assertNil(err)
msg, err = rep:recv()
lu.assertNil(err)
lu.assertEquals(#msg, 2)
lu.assertEquals(msg[1], "foo")
lu.assertEquals(msg[2], "bar")
end
function test_router_pair()
local err, msg
local ctx = zmq.ctx_new()
local server = ctx:socket(zmq.ROUTER)
server:setsockopt_str(zmq.SOCKOPT_ROUTING_ID, "server")
server:setsockopt_int(zmq.SOCKOPT_RCVTIMEO, 1000)
server:bind("inproc://foo")
local client = ctx:socket(zmq.ROUTER)
client:setsockopt_str(zmq.SOCKOPT_ROUTING_ID, "client")
client:setsockopt_int(zmq.SOCKOPT_ROUTER_MANDATORY, 1)
client:connect("inproc://foo")
repeat
_, err = client:send({ "server", "foo" })
until not err
msg, err = server:recv()
lu.assertNil(err)
lu.assertEquals(#msg, 2)
lu.assertEquals(msg[1], "client")
lu.assertEquals(msg[2], "foo")
end
function test_poll()
local err, msg
local ctx = zmq.ctx_new()
local rep = ctx:socket(zmq.REP)
rep:bind("inproc://foo")
rep:setsockopt_int(zmq.RCVTIMEO, 5000)
local req = ctx:socket(zmq.REQ)
req:connect("inproc://foo")
_, err = req:send({ "foo", "bar" })
lu.assertNil(err)
local poller = ctx:poller()
local poll_result
poller:add(rep, zmq.POLLIN)
poll_result, err = poller:poll(1500)
lu.assertNil(err)
lu.assertEquals(#poll_result, 1)
if poll_result[1] == rep then
msg, err = rep:recv()
lu.assertNil(err)
lu.assertEquals(#msg, 2)
lu.assertEquals(msg[1], "foo")
lu.assertEquals(msg[2], "bar")
end
end
4 years ago
os.exit(lu.LuaUnit.run())