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
|
import("core.base.scheduler")
import("async.jobgraph")
import("async.runjobs")
function _jobfunc(index, total, opt)
print("%s: run job (%d/%d)", scheduler.co_running(), index, total)
local dt = os.mclock()
os.sleep(1000)
dt = os.mclock() - dt
print("%s: run job (%d/%d) end, progress: %s, dt: %d ms", scheduler.co_running(), index, total, opt.progress, dt)
end
function _test_basic()
print("==================================== test basic ====================================")
local jobs = jobgraph.new()
jobs:add("job/root", _jobfunc)
for i = 1, 3 do
jobs:add("job/" .. i, _jobfunc)
for j = 1, 50 do
jobs:add("job/" .. i .. "/" .. j, _jobfunc)
jobs:add_orders("job/" .. i .. "/" .. j, "job/" .. i, "job/root")
end
end
t = os.mclock()
runjobs("test", jobs, {comax = 6, timeout = 1000, timer = function (running_jobs_indices)
print("%s: timeout (%d ms), running: %s", scheduler.co_running(), os.mclock() - t, table.concat(running_jobs_indices, ","))
end})
end
function _test_group()
print("==================================== test group ====================================")
local jobs = jobgraph.new()
jobs:add("job/root", _jobfunc)
for i = 1, 3 do
jobs:add("job/" .. i, _jobfunc, {groups = "bar"})
jobs:group("foo", function ()
for j = 1, 50 do
jobs:add("job/" .. i .. "/" .. j, _jobfunc)
end
end)
end
jobs:add_orders("foo", "bar", "job/root")
t = os.mclock()
runjobs("test", jobs, {comax = 6, timeout = 1000, timer = function (running_jobs_indices)
print("%s: timeout (%d ms), running: %s", scheduler.co_running(), os.mclock() - t, table.concat(running_jobs_indices, ","))
end})
end
function main()
_test_basic()
_test_group()
end
|