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.
88 lines
2.1 KiB
88 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 |
|
|
|
os.exit(lu.LuaUnit.run())
|
|
|