76 lines
2.4 KiB
Lua
76 lines
2.4 KiB
Lua
local ok, net = pcall(require, "lb:net")
|
|
if not ok then return end
|
|
|
|
describe("ipaddr", function()
|
|
test("invalid ipaddr throws", function()
|
|
assert(not pcall(net.ipaddr, "invalid ip"))
|
|
end)
|
|
|
|
test("comparison", function()
|
|
local a = net.ipaddr("10.0.0.1")
|
|
local b = net.ipaddr("10.0.0.1")
|
|
local c = net.ipaddr("10.0.0.2")
|
|
assert(a ~= nil and a ~= {} and a ~= "10.0.0.1" and a ~= 167772161)
|
|
assert(a == a and a == b and a ~= c and b ~= c and c == c and c ~= a)
|
|
assert(a <= b and a < c and a <= c and b < c and b <= c and a <= a and c <= c)
|
|
assert(not (a < b or a > b or a > c or b > c or a >= c or b >= c))
|
|
end)
|
|
|
|
test("tostring", function()
|
|
local ip = net.ipaddr("10.0.0.1")
|
|
assert(tostring(ip) == "10.0.0.1")
|
|
end)
|
|
end)
|
|
|
|
describe("tcp", function()
|
|
describe("socket", function()
|
|
test("bind", function()
|
|
local socket = net.bind_tcp("127.0.0.1")
|
|
-- binds to the correct port
|
|
assert(tostring(socket:local_addr():ip()) == "127.0.0.1")
|
|
assert(socket:local_addr():port() ~= 0)
|
|
-- should not be able to rebind socket
|
|
assert(not pcall(socket.bind, socket, net.socketaddr("127.0.0.1")))
|
|
end)
|
|
|
|
test("options", function()
|
|
local socket = net.tcp()
|
|
-- keepalive
|
|
socket:set_keepalive(true)
|
|
assert(socket:keepalive() == true)
|
|
socket:set_keepalive(false)
|
|
assert(socket:keepalive() == false)
|
|
-- reuseaddr
|
|
socket:set_reuseaddr(true)
|
|
assert(socket:reuseaddr() == true)
|
|
socket:set_reuseaddr(false)
|
|
assert(socket:reuseaddr() == false)
|
|
-- reuseport not always supported on all platforms
|
|
-- sendbuf
|
|
socket:set_sendbuf(4096)
|
|
assert(socket:sendbuf() >= 4096)
|
|
-- recvbuf
|
|
socket:set_recvbuf(4096)
|
|
assert(socket:recvbuf() >= 4096)
|
|
-- linger
|
|
socket:set_linger(0)
|
|
assert(socket:linger() == 0)
|
|
socket:set_linger(2)
|
|
assert(math.abs(socket:linger() - 2) < 0.1)
|
|
-- nodelay
|
|
socket:set_nodelay(true)
|
|
assert(socket:nodelay() == true)
|
|
socket:set_nodelay(false)
|
|
assert(socket:nodelay() == false)
|
|
end)
|
|
|
|
test("can't use socket after conversion", function()
|
|
local socket = net.tcp()
|
|
socket:bind(net.socketaddr("127.0.0.1"))
|
|
socket:listen(10) -- convert to listener
|
|
assert(not pcall(socket.listen, socket, 10)) -- socket consumed
|
|
assert(not pcall(socket.local_addr, socket))
|
|
end)
|
|
end)
|
|
end)
|