summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/luv/tests/test-work.lua
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/luv/tests/test-work.lua')
-rw-r--r--3rdparty/luv/tests/test-work.lua48
1 files changed, 48 insertions, 0 deletions
diff --git a/3rdparty/luv/tests/test-work.lua b/3rdparty/luv/tests/test-work.lua
new file mode 100644
index 00000000000..3a98b15e6bc
--- /dev/null
+++ b/3rdparty/luv/tests/test-work.lua
@@ -0,0 +1,48 @@
+return require('lib/tap')(function (test)
+ test("test threadpool", function(print,p,expect,_uv)
+ p('Please be patient, the test cost a lots of time')
+ local count = 1000 --for memleaks dected
+ local step = 0
+ local ctx
+ ctx = _uv.new_work(
+ function(n,s) --work,in threadpool
+ local uv = require('luv')
+ local t = uv.thread_self()
+ uv.sleep(100)
+ return n,n*n, tostring(uv.thread_self()),s
+ end,
+ function(n,r,id, s)
+ assert(n*n==r)
+ if step < count then
+ _uv.queue_work(ctx,n,s)
+ step = step + 1
+ if (step % 100==0) then
+ p(string.format('run %d%%', math.floor(step*100/count)))
+ end
+ end
+ end --after work, in loop thread
+ )
+ local ls = string.rep('-',4096)
+
+ _uv.queue_work(ctx,2,ls)
+ _uv.queue_work(ctx,4,ls)
+ _uv.queue_work(ctx,6,ls)
+ _uv.queue_work(ctx,-2,ls)
+ _uv.queue_work(ctx,-11,ls)
+ _uv.queue_work(ctx,2,ls)
+ _uv.queue_work(ctx,4,ls)
+ _uv.queue_work(ctx,6,ls)
+ _uv.queue_work(ctx,-2,ls)
+ _uv.queue_work(ctx,-11,ls)
+ _uv.queue_work(ctx,2,ls)
+ _uv.queue_work(ctx,4,ls)
+ _uv.queue_work(ctx,6,ls)
+ _uv.queue_work(ctx,-2,ls)
+ _uv.queue_work(ctx,-11,ls)
+ _uv.queue_work(ctx,2,ls)
+ _uv.queue_work(ctx,4,ls)
+ _uv.queue_work(ctx,6,ls)
+ _uv.queue_work(ctx,-2,ls)
+ _uv.queue_work(ctx,-11,ls)
+ end)
+end)