summaryrefslogtreecommitdiff
path: root/tests/modules
diff options
context:
space:
mode:
Diffstat (limited to 'tests/modules')
-rw-r--r--tests/modules/pipe/sched_pipe_pair.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/modules/pipe/sched_pipe_pair.lua b/tests/modules/pipe/sched_pipe_pair.lua
new file mode 100644
index 000000000..18b69d9d4
--- /dev/null
+++ b/tests/modules/pipe/sched_pipe_pair.lua
@@ -0,0 +1,38 @@
+import("core.base.pipe")
+import("core.base.scheduler")
+
+function _session_read(id, pipefile)
+ print("%s/%d: read ..", pipefile, id)
+ local result = nil
+ for i = 1, 100000 do
+ local read, data = pipefile:read(12, {block = true})
+ if read > 0 and data then
+ result = data:str()
+ end
+ end
+ print("%s/%d: read ok, data: %s", pipefile, id, result and result or "")
+ pipefile:close()
+end
+
+function _session_write(id, pipefile)
+ print("%s/%d: write ..", pipefile, id)
+ for i = 1, 100000 do
+ pipefile:write("hello xmake!", {block = true})
+ end
+ print("%s/%d: write ok", pipefile, id)
+ pipefile:close()
+end
+
+function _session(id)
+ local rpipe, wpipe = pipe.openpair(256)
+ scheduler.co_start(_session_read, id, rpipe)
+ scheduler.co_start(_session_write, id, wpipe)
+end
+
+function main(count)
+ count = count and tonumber(count) or 1
+ for i = 1, count do
+ scheduler.co_start(_session, i)
+ end
+ scheduler.runloop()
+end