gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]