diff options
| author | ruki <[email protected]> | 2020-01-29 00:23:18 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-01-28 20:19:48 +0800 |
| commit | a3184f00e0511013abadc304c882571db2282035 (patch) | |
| tree | 84b3ed9e42d3f401c1ce1fd1b8a880b3db13c3bb /tests/modules/socket | |
| parent | 0a71ffa31bc0d30ab3f807253d0122b784714899 (diff) | |
improve socket tests
Diffstat (limited to 'tests/modules/socket')
| -rw-r--r-- | tests/modules/socket/sched_tcp/echo_client.lua | 44 | ||||
| -rw-r--r-- | tests/modules/socket/sched_tcp/echo_server.lua | 31 |
2 files changed, 61 insertions, 14 deletions
diff --git a/tests/modules/socket/sched_tcp/echo_client.lua b/tests/modules/socket/sched_tcp/echo_client.lua index f9c993729..41490317c 100644 --- a/tests/modules/socket/sched_tcp/echo_client.lua +++ b/tests/modules/socket/sched_tcp/echo_client.lua @@ -1,22 +1,47 @@ import("core.base.socket") import("core.base.scheduler") -function _session(addr, port) - print("connect %s:%d ..", addr, port) - local sock = socket.connect(addr, port) - print("%s: connected!", sock) +function _session_recv(sock) + print("%s: recv ..", sock) + local count = 0 + local result = nil + while count < 100000 do + local recv, data = sock:recv(13, {block = true}) + if recv > 0 then + result = data + count = count + 1 + else + break + end + end + print("%s: recv ok, count: %d!", sock, count) + result:dump() +end + +function _session_send(sock) + print("%s: send ..", sock) local count = 0 - while count < 10000 do + while count < 100000 do local send = sock:send("hello world..", {block = true}) if send > 0 then - sock:recv(13, {block = true}) + count = count + 1 else break end - count = count + 1 end print("%s: send ok, count: %d!", sock, count) - sock:close() +end + +local socks = {} +function _session(addr, port) + + print("connect %s:%d ..", addr, port) + local sock = socket.connect(addr, port) + print("%s: connected!", sock) + + scheduler.co_start(_session_recv, sock) + scheduler.co_start(_session_send, sock) + table.insert(socks, sock) end function main(count) @@ -25,4 +50,7 @@ function main(count) scheduler.co_start(_session, "127.0.0.1", 9001) end scheduler.runloop() + for _, sock in ipairs(socks) do + sock:close() + end end diff --git a/tests/modules/socket/sched_tcp/echo_server.lua b/tests/modules/socket/sched_tcp/echo_server.lua index 18f3d990f..17f7531de 100644 --- a/tests/modules/socket/sched_tcp/echo_server.lua +++ b/tests/modules/socket/sched_tcp/echo_server.lua @@ -1,26 +1,40 @@ import("core.base.socket") import("core.base.scheduler") -function _session(sock) +function _session_recv(sock) + print("%s: recv ..", sock) local count = 0 local result = nil - while true do + while count < 100000 do local recv, data = sock:recv(13, {block = true}) if recv > 0 then result = data - sock:send(data, {block = true}) count = count + 1 else break end end - print("%s: recv: %d, count: %d", sock, result and result:size() or 0, count) + print("%s: recv ok, count: %d!", sock, count) result:dump() - sock:close() +end + +function _session_send(sock) + print("%s: send ..", sock) + local count = 0 + while count < 100000 do + local send = sock:send("hello world..", {block = true}) + if send > 0 then + count = count + 1 + else + break + end + end + print("%s: send ok, count: %d!", sock, count) end function _listen(addr, port) + local sock_clients = {} local sock = socket.bind(addr, port) sock:listen(20) print("%s: listening %s:%d ..", sock, addr, port) @@ -28,9 +42,14 @@ function _listen(addr, port) local sock_client = sock:accept() if sock_client then print("%s: accepted", sock_client) - scheduler.co_start(_session, sock_client) + scheduler.co_start(_session_recv, sock_client) + scheduler.co_start(_session_send, sock_client) + table.insert(sock_clients, sock_client) end end + for _, sock_client in ipairs(sock_clients) do + sock_client:close() + end sock:close() end |
