aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMaxime Devos <maximedevos@telenet.be>2021-09-06 21:53:56 +0200
committerMaxime Devos <maximedevos@telenet.be>2021-09-21 12:20:58 +0200
commitfb8b1e5b3df15b246cd4404dcaa3bb5bf5e90634 (patch)
tree1f74325fc51a8b36613f80ce01814bc2b55cd8bc /tests
parent75867c24192f49e76fbe31ce0dd8e774a2eac929 (diff)
downloadgnunet-scheme-fb8b1e5b3df15b246cd4404dcaa3bb5bf5e90634.tar.gz
gnunet-scheme-fb8b1e5b3df15b246cd4404dcaa3bb5bf5e90634.zip
mq-impl/stream: Allow closing the queue on request.
* gnu/gnunet/mq.scm (make-message-queue): Accept optional 'closer' argument. (close-queue!): New procedure. * gnu/gnunet/mq-impl/stream.scm (prepare-port-message-queue): Remove fixed TODO. Also return 'close!'. (prepare-port-message-queue)[request-close-condition]: New variable. (prepare-port-message-queue)[start-reader!]{wait-op}: Wait on request-close-condition and escape. (prepare-port-message-queue)[close!]: New procedure. (port->message-queue): Accept 'close!' from 'prepare-port-message-queue'. Pass it to the message queue constructor. (connect/fibers): Accept 'close!' from 'prepare-port-message-queue'. Pass it to 'make-message-queue'. Note a TODO. * tests/mq-stream.scm ("fibers stop and port closed after close! (directly after creation)") ("fibers stop and port closed after close! (some times passes)"): New tests.
Diffstat (limited to 'tests')
-rw-r--r--tests/mq-stream.scm22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/mq-stream.scm b/tests/mq-stream.scm
index e16aa1b..f5a56e6 100644
--- a/tests/mq-stream.scm
+++ b/tests/mq-stream.scm
@@ -729,4 +729,26 @@ If an EPIPE system error is raised, return #f."
729 (port-closed? alpha)) 729 (port-closed? alpha))
730 #:parallelism 1)) ; to make the use of yield-many less fragile 730 #:parallelism 1)) ; to make the use of yield-many less fragile
731 731
732(test-assert "fibers stop and port closed after close! (directly after creation)"
733 (let^ ((<-- (alpha beta) (two-sockets)))
734 (call-with-spawner/wait
735 (lambda (spawn)
736 (define q (port->message-queue alpha no-handlers error-handler/regular
737 #:spawn spawn))
738 (close-queue! q))
739 #:parallelism 1)
740 (port-closed? alpha)))
741
742(test-assert "fibers stop and port closed after close! (some times passes)"
743 (let^ ((<-- (alpha beta) (two-sockets)))
744 (call-with-spawner/wait
745 (lambda (spawn)
746 (define q (port->message-queue alpha no-handlers error-handler/regular
747 #:spawn spawn))
748 (yield-many)
749 (sleep 0.01)
750 (close-queue! q))
751 #:parallelism 1)
752 (port-closed? alpha)))
753
732(test-end "mq-stream") 754(test-end "mq-stream")