summaryrefslogtreecommitdiff
path: root/tests/modules/async/run_jobgraph.lua
blob: fe53a54c672bc247db2002d5ff77f782c3d50a5f (plain)
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