summaryrefslogtreecommitdiff
path: root/tests/modules/socket
diff options
context:
space:
mode:
authorruki <[email protected]>2020-01-29 00:23:18 +0800
committerruki <[email protected]>2020-01-28 20:19:48 +0800
commita3184f00e0511013abadc304c882571db2282035 (patch)
tree84b3ed9e42d3f401c1ce1fd1b8a880b3db13c3bb /tests/modules/socket
parent0a71ffa31bc0d30ab3f807253d0122b784714899 (diff)
improve socket tests
Diffstat (limited to 'tests/modules/socket')
-rw-r--r--tests/modules/socket/sched_tcp/echo_client.lua44
-rw-r--r--tests/modules/socket/sched_tcp/echo_server.lua31
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