From fa66c4d4d94b092ae41eedf0f208038d8d045233 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 20 Feb 2017 20:20:42 +0100 Subject: Add new channels test. * tests/channels.scm (pingpong): New test. --- tests/channels.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/channels.scm b/tests/channels.scm index 5a9b58b..67fa9aa 100644 --- a/tests/channels.scm +++ b/tests/channels.scm @@ -71,6 +71,28 @@ (assert-run-fibers-returns (75025) (rpc-fib 24)) +(define (pingpong M N) + (let ((request (make-channel))) + (for-each (lambda (m) + (spawn-fiber (lambda () + (let lp ((n 0)) + (when (< n N) + (let ((reply (make-channel))) + (put-message request reply) + (get-message reply) + (lp (1+ n)))))) + #:parallel? #t)) + (iota M)) + (let lp ((m 0)) + (when (< m M) + (let lp ((n 0)) + (when (< n N) + (put-message (get-message request) 'foo) + (lp (1+ n)))) + (lp (1+ m)))))) + +(assert-run-fibers-terminates (pingpong (current-processor-count) 1000)) + ;; timed channel wait ;; multi-channel wait -- cgit v1.2.3