summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/luv/tests/test-tcp.lua
diff options
context:
space:
mode:
author ImJezze <jezze@gmx.net>2016-02-21 11:48:45 +0100
committer ImJezze <jezze@gmx.net>2016-02-21 11:48:45 +0100
commitcc24a339d8c0517259084b5c178d784626ba965c (patch)
tree9868e9687b5802ae0a3733712a3bbeb3bc75c953 /3rdparty/luv/tests/test-tcp.lua
parentb5daabda5495dea5c50e17961ecfed2ea8619d76 (diff)
Merge remote-tracking branch 'refs/remotes/mamedev/master'
Second attempt
Diffstat (limited to '3rdparty/luv/tests/test-tcp.lua')
-rw-r--r--3rdparty/luv/tests/test-tcp.lua114
1 files changed, 114 insertions, 0 deletions
diff --git a/3rdparty/luv/tests/test-tcp.lua b/3rdparty/luv/tests/test-tcp.lua
new file mode 100644
index 00000000000..885d381ebce
--- /dev/null
+++ b/3rdparty/luv/tests/test-tcp.lua
@@ -0,0 +1,114 @@
+return require('lib/tap')(function (test)
+ test("basic tcp server and client", function (print, p, expect, uv)
+ local server = uv.new_tcp()
+ uv.tcp_bind(server, "::", 0)
+ uv.listen(server, 128, expect(function (err)
+ p("server on connection", server)
+ assert(not err, err)
+ uv.close(server)
+ end))
+
+ local address = uv.tcp_getsockname(server)
+ p{server=server,address=address}
+
+ local client = uv.new_tcp()
+ local req = uv.tcp_connect(client, "::1", address.port, expect(function (err)
+ p("client on connect", client, err)
+ assert(not err, err)
+ uv.shutdown(client, expect(function (err)
+ p("client on shutdown", client, err)
+ assert(not err, err)
+ uv.close(client, expect(function ()
+ p("client on close", client)
+ end))
+ end))
+ end))
+ p{client=client,req=req}
+ end)
+
+ test("tcp echo server and client", function (print, p, expect, uv)
+ local server = uv.new_tcp()
+ assert(uv.tcp_bind(server, "127.0.0.1", 0))
+ assert(uv.listen(server, 1, expect(function ()
+ local client = uv.new_tcp()
+ assert(uv.accept(server, client))
+ assert(uv.read_start(client, expect(function (err, data)
+ p("server read", {err=err,data=data})
+ assert(not err, err)
+ if data then
+ assert(uv.write(client, data))
+ else
+ assert(uv.read_stop(client))
+ uv.close(client)
+ uv.close(server)
+ end
+ end, 2)))
+ end)))
+
+ local address = uv.tcp_getsockname(server)
+ p{server=server,address=address}
+
+ local socket = assert(uv.new_tcp())
+ assert(uv.tcp_connect(socket, "127.0.0.1", address.port, expect(function ()
+ assert(uv.read_start(socket, expect(function (err, data)
+ p("client read", {err=err,data=data})
+ assert(not err, err)
+ assert(uv.read_stop(socket))
+ uv.close(socket)
+ end)))
+ local req = assert(uv.write(socket, "Hello", function (err)
+ p("client onwrite", socket, err)
+ assert(not err, err)
+ end))
+ p{socket=socket,req=req}
+ end)))
+ end)
+
+ test("tcp echo server and client with methods", function (print, p, expect, uv)
+ local server = uv.new_tcp()
+ assert(server:bind("127.0.0.1", 0))
+ assert(server:listen(1, expect(function ()
+ local client = uv.new_tcp()
+ assert(server:accept(client))
+ assert(client:read_start(expect(function (err, data)
+ p("server read", {err=err,data=data})
+ assert(not err, err)
+ if data then
+ assert(client:write(data))
+ else
+ assert(client:read_stop())
+ client:close()
+ server:close()
+ end
+ end, 2)))
+ end)))
+
+ local address = server:getsockname()
+ p{server=server,address=address}
+
+ local socket = assert(uv.new_tcp())
+ assert(socket:connect("127.0.0.1", address.port, expect(function ()
+ assert(socket:read_start(expect(function (err, data)
+ p("client read", {err=err,data=data})
+ assert(not err, err)
+ assert(socket:read_stop())
+ socket:close()
+ end)))
+ local req = assert(socket:write("Hello", function (err)
+ p("client onwrite", socket, err)
+ assert(not err, err)
+ end))
+ p{socket=socket,req=req}
+ end)))
+ end)
+
+ test("tcp invalid ip address", function (print, p, expect, uv)
+ local ip = '127.0.0.100005'
+ local server = uv.new_tcp()
+ local status, err = pcall(function() uv.tcp_bind(server, ip, 1000) end)
+ assert(not status)
+ p(err)
+ assert(err:find(ip))
+ uv.close(server)
+ end)
+end)