-
Notifications
You must be signed in to change notification settings - Fork 4.2k
/
testselect.lua
94 lines (72 loc) · 1.77 KB
/
testselect.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
local skynet = require "skynet"
local mode = ...
if mode == "slave" then
local COMMAND = {}
function COMMAND.ping(ti, str)
skynet.sleep(ti)
return str
end
function COMMAND.error()
error "ERROR"
end
function COMMAND.exit()
skynet.exit()
end
skynet.start(function()
skynet.dispatch("lua", function(_,_, cmd, ...)
skynet.ret(skynet.pack(COMMAND[cmd](...)))
end)
end)
else
local function info(fmt, ...)
skynet.error(string.format(fmt, ...))
end
skynet.start(function()
local slave = skynet.newservice(SERVICE_NAME, "slave")
for req, resp in skynet.request
{ slave, "lua", "ping", 6, "SLEEP 6" }
{ slave, "lua", "ping", 5, "SLEEP 5" }
{ slave, "lua", "ping", 4, "SLEEP 4" }
{ slave, "lua", "ping", 3, "SLEEP 3" }
{ slave, "lua", "ping", 2, "SLEEP 2" }
{ slave, "lua", "ping", 1, "SLEEP 1" }
:select() do
info("RESP %s", resp[1])
end
-- test timeout
local reqs = skynet.request()
for i = 1, 10 do
reqs:add { slave, "lua", "ping", i*10, "SLEEP " .. i, token = i }
end
for req, resp in reqs:select(50) do
info("RESP %s token<%s>", resp[1], req.token)
end
-- test error
for req, resp in skynet.request
{ slave, "lua", "error" }
{ slave, "lua", "ping", 0, "PING" }
: select() do
if resp then
info("Ping : %s", resp[1])
else
info("Error")
end
end
-- timeout call
local reqs = skynet.request { slave, "lua", "ping", 100 , "PING" }
for req, resp in reqs:select(10) do
info("%s", resp[1])
end
info("Timeout : %s", reqs.timeout)
-- call in select
for req, resp in skynet.request
{ slave, "lua", "ping", 20, "CALL 20" }
{ slave, "lua", "ping", 10, "CALL 10" }
: select() do
info("%s", skynet.call( slave, "lua", "ping", 0, "ping in " .. resp[1]) )
skynet.sleep(50)
end
skynet.send(slave, "lua", "exit")
skynet.exit()
end)
end