[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet-scheme] 251/324: tests/utils: Move call-with-spawner from tests/
From: |
gnunet |
Subject: |
[gnunet-scheme] 251/324: tests/utils: Move call-with-spawner from tests/mq-stream.scm. |
Date: |
Tue, 21 Sep 2021 13:24:51 +0200 |
This is an automated email from the git hooks/post-receive script.
maxime-devos pushed a commit to branch master
in repository gnunet-scheme.
commit f23603f013098a4b699948fe659ab7f157be678f
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Thu Sep 9 16:20:01 2021 +0200
tests/utils: Move call-with-spawner from tests/mq-stream.scm.
It will be used in tests/network-size.scm.
* tests/mq-stream.scm (call-with-spawner, call-with-spawner/wait):
Move to ...
* tests/utils.scm: ... here and export.
---
tests/mq-stream.scm | 30 ------------------------------
tests/utils.scm | 35 ++++++++++++++++++++++++++++++++++-
2 files changed, 34 insertions(+), 31 deletions(-)
diff --git a/tests/mq-stream.scm b/tests/mq-stream.scm
index b9819d0..84522b2 100644
--- a/tests/mq-stream.scm
+++ b/tests/mq-stream.scm
@@ -463,36 +463,6 @@
(wait done/1)
#t)))
-(define* (call-with-spawner proc . args)
- (apply run-fibers
- (lambda ()
- (call-with-services
- '()
- (lambda (config spawn)
- (proc spawn))))
- args))
-
-;; When done, wait for every fiber to complete.
-;; Somewhat racy, don't use outside tests.
-(define* (call-with-spawner/wait proc . args)
- (define h (make-weak-key-hash-table)) ; condition -> nothing in particular
- (apply call-with-spawner
- (lambda (spawn/not-waiting)
- (define (spawn thunk)
- (define done-condition (make-condition))
- (hashq-set! h done-condition #f)
- (spawn/not-waiting
- (lambda ()
- (thunk)
- (signal-condition! done-condition))))
- (define-values return-values
- (proc spawn))
- ;; Make sure every fiber completes before returning.
- ;; XXX hash-for-each imposes a continuation barrier
- (for-each wait (hash-map->list (lambda (x y) x) h))
- (apply values return-values))
- args))
-
(define (two-sockets)
(define sp (socketpair AF_UNIX SOCK_STREAM 0))
(fcntl (car sp) F_SETFL
diff --git a/tests/utils.scm b/tests/utils.scm
index 1a0818b..5e20fc4 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -23,11 +23,14 @@
#:select (bitwise-ior))
#:use-module ((rnrs base) #:select (assert))
#:use-module ((fibers) #:prefix #{fibers:}#)
+ #:autoload (fibers conditions) (make-condition signal-condition! wait)
#:autoload (gnu gnunet config db)
(hash->configuration hash-key key=? set-value!)
#:export (conservative-gc? calls-in-tail-position?
call-with-services
- call-with-services/fibers))
+ call-with-services/fibers
+ call-with-spawner
+ call-with-spawner/wait))
;; Current versions of guile (at least 3.0.5) use a conservative
;; garbage collector, so some tests concerning garbage collection
@@ -134,3 +137,33 @@ the services and each tails is a list of a procedure
accepting ports
(define (call-with-services/fibers service-alist proc)
(fibers:run-fibers (lambda () (call-with-services service-alist proc))))
+
+(define* (call-with-spawner proc . args)
+ (apply fibers:run-fibers
+ (lambda ()
+ (call-with-services
+ '()
+ (lambda (config spawn)
+ (proc spawn))))
+ args))
+
+;; When done, wait for every fiber to complete.
+;; Somewhat racy, don't use outside tests.
+(define* (call-with-spawner/wait proc . args)
+ (define h (make-weak-key-hash-table)) ; condition -> nothing in particular
+ (apply call-with-spawner
+ (lambda (spawn/not-waiting)
+ (define (spawn thunk)
+ (define done-condition (make-condition))
+ (hashq-set! h done-condition #f)
+ (spawn/not-waiting
+ (lambda ()
+ (thunk)
+ (signal-condition! done-condition))))
+ (define-values return-values
+ (proc spawn))
+ ;; Make sure every fiber completes before returning.
+ ;; XXX hash-for-each imposes a continuation barrier
+ (for-each wait (hash-map->list (lambda (x y) x) h))
+ (apply values return-values))
+ args))
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [gnunet-scheme] 222/324: mq-impl/stream: Handle closed ports more gracefully., (continued)
- [gnunet-scheme] 222/324: mq-impl/stream: Handle closed ports more gracefully., gnunet, 2021/09/21
- [gnunet-scheme] 223/324: mq,doc: Update TODOs about message queues., gnunet, 2021/09/21
- [gnunet-scheme] 224/324: doc: Don't forget the message verifier., gnunet, 2021/09/21
- [gnunet-scheme] 225/324: mq: Inject errors when message verification has negative result., gnunet, 2021/09/21
- [gnunet-scheme] 234/324: doc: Remove resolved TODO., gnunet, 2021/09/21
- [gnunet-scheme] 240/324: mq-impl/stream: Handle ECONNRESET gracefully., gnunet, 2021/09/21
- [gnunet-scheme] 238/324: mq-impl/stream: Allow closing queues made with connect-fibers., gnunet, 2021/09/21
- [gnunet-scheme] 244/324: doc: Document the 'disconnected' callback., gnunet, 2021/09/21
- [gnunet-scheme] 246/324: mq,mq-impl: Remove TODOs about allocating memory., gnunet, 2021/09/21
- [gnunet-scheme] 245/324: mq-impl/stream: Eliminate 'return' argument of 'handle-input!'., gnunet, 2021/09/21
- [gnunet-scheme] 251/324: tests/utils: Move call-with-spawner from tests/mq-stream.scm.,
gnunet <=
- [gnunet-scheme] 221/324: mq-impl/stream: Delay knowing the port., gnunet, 2021/09/21
- [gnunet-scheme] 228/324: doc/fdl: Correct ‘quote’ typography., gnunet, 2021/09/21
- [gnunet-scheme] 231/324: doc: Document message verifiers., gnunet, 2021/09/21
- [gnunet-scheme] 236/324: mq-impl/stream: Close the port when stopping the fibers., gnunet, 2021/09/21
- [gnunet-scheme] 242/324: nse/client: Remove unused fields., gnunet, 2021/09/21
- [gnunet-scheme] 243/324: doc/scheme-gnunet.tm: Correct use of 'connected' and 'updated'., gnunet, 2021/09/21
- [gnunet-scheme] 237/324: mq-impl/stream: Allow closing the queue on request., gnunet, 2021/09/21
- [gnunet-scheme] 247/324: nse/client: Only call 'send-start!' after 'mq' has been defined., gnunet, 2021/09/21
- [gnunet-scheme] 248/324: tests/mq-stream: Add missing parenthesis., gnunet, 2021/09/21
- [gnunet-scheme] 249/324: nse/client: Prepare for auto-reconnecting., gnunet, 2021/09/21