[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet-scheme] branch master updated: tests/cadet: Test closing of CADE
From: |
gnunet |
Subject: |
[gnunet-scheme] branch master updated: tests/cadet: Test closing of CADET channels. |
Date: |
Sun, 28 Aug 2022 21:32:17 +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.
The following commit(s) were added to refs/heads/master by this push:
new b5a95cf tests/cadet: Test closing of CADET channels.
b5a95cf is described below
commit b5a95cfc4077b6582d76819b23ea31abc1f2a9e3
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Sun Aug 28 20:59:42 2022 +0200
tests/cadet: Test closing of CADET channels.
The test is there, but the tested code doesn't exist yet.
* tests/cadet.scm
("msg:cadet:local:channel:destroy is sent when closing channels"):
New (skipped) test.
---
tests/cadet.scm | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 71 insertions(+), 1 deletion(-)
diff --git a/tests/cadet.scm b/tests/cadet.scm
index 7247992..9a1b0d7 100644
--- a/tests/cadet.scm
+++ b/tests/cadet.scm
@@ -19,7 +19,8 @@
(import (gnu gnunet cadet client)
(gnu gnunet cadet network)
(only (gnu gnunet cadet struct)
- %minimum-local-channel-id)
+ %minimum-local-channel-id
+ /:msg:cadet:local:channel:create)
(gnu gnunet utils bv-slice)
(gnu gnunet utils hat-let)
(gnu gnunet netstruct syntactic)
@@ -47,6 +48,10 @@
(quickcheck generator)
(quickcheck arbitrary)
(rnrs base)
+ (only (fibers conditions)
+ make-condition
+ wait
+ signal-condition!)
(only (fibers channels)
make-channel
get-message
@@ -393,4 +398,69 @@
#:hz 0
#:parallelism 1)))))
+(test-skip 1) ; TODO: 'close-channel!' is not yet handled
+;; TODO: extend test to multiple channels, making sure the destroy is sent
+;; for the right channel.
+(test-assert
+ "msg:cadet:local:channel:destroy is sent when closing channels"
+ (let ((channel-number 'not-yet)
+ (created-condition (make-condition))
+ (closed-condition (make-condition)))
+ (call-with-services/fibers
+ `(("cadet" .
+ ,(lambda (port spawn-fiber)
+ (define created? #false)
+ (define closed? #false)
+ (define message-handler/channel-create
+ (message-handler
+ (type (symbol-value message-type msg:cadet:local:channel:create))
+ ((interpose exp) exp)
+ ((well-formed? message)
+ (assert (not created?))
+ (assert (not closed?))
+ (= (slice-length message)
+ (sizeof /:msg:cadet:local:channel:create '())))
+ ((handle! message)
+ ;; TODO: options
+ (let^ ((<-- (address channel-number* options)
+ (analyse-local-channel-create message)))
+ (set! created? #true)
+ (set! channel-number channel-number*)
+ (assert (equal? address address0))
+ (signal-condition! created-condition)
+ (values)))))
+ (define message-handler/channel-destroy
+ (message-handler
+ (type (symbol-value message-type msg:cadet:local:channel:destroy))
+ ((interpose exp) exp)
+ ((well-formed? message)
+ (assert created?)
+ ;; Shouldn't be sent twice -- the GNUnet-Scheme API is idempotent,
+ ;; but the client↔service communication is not.
+ (assert (not closed?))
+ #true)
+ ((handle! message)
+ (let^ ((! channel-number* (analyse-local-channel-destroy
message)))
+ (set! closed? #true)
+ ;; Make sure the _right_ channel is closed.
+ (assert (= channel-number channel-number*))
+ (set! closed? #true)
+ (signal-condition! closed-condition)
+ (values)))))
+ (define message-queue
+ (port->message-queue port
+ (message-handlers
+ message-handler/channel-create
+ message-handler/channel-destroy)
+ no-error-handler
+ #:spawn spawn-fiber))
+ (values))))
+ (lambda (config spawn-fiber)
+ (define server (connect config #:spawn spawn-fiber))
+ (define channel
+ (open-channel! server address0 (message-handlers)))
+ (wait created-condition)
+ (close-channel! channel)
+ (wait closed-condition)))))
+
(test-end "CADET")
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnunet-scheme] branch master updated: tests/cadet: Test closing of CADET channels.,
gnunet <=