summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorArtyom V. Poptsov <poptsov.artyom@gmail.com>2016-07-17 18:01:46 +0400
committerArtyom V. Poptsov <poptsov.artyom@gmail.com>2016-07-17 18:01:46 +0400
commite1484c15c9eff9f9e04b9c8003ea9ddd2958fb33 (patch)
treeb5989ee35160f28d3f96c7e9b603d90d477c026f /tests
parenttests/tunnel.scm ("call-with-ssh-forward"): Use 'poll' (diff)
downloadguile-ssh-e1484c15c9eff9f9e04b9c8003ea9ddd2958fb33.tar.gz
tests/client-server.scm: Improve some TCs
* tests/client-server.scm (call-with-connected-session/channel-test): New procedure. Use it instead of 'make-session/channel-test'. (make-session/channel-test): Remove.
Diffstat (limited to 'tests')
-rw-r--r--tests/client-server.scm132
1 files changed, 68 insertions, 64 deletions
diff --git a/tests/client-server.scm b/tests/client-server.scm
index 4b6ac06..d86a869 100644
--- a/tests/client-server.scm
+++ b/tests/client-server.scm
@@ -466,33 +466,31 @@
(else
(message-reply-success msg))))))))
-(define (make-session/channel-test)
- "Make a session for a channel test."
- (define max-tries 30)
- (let loop ((session (make-session-for-test))
- (count max-tries))
- (if (not (eq? (connect! session) 'ok))
- (begin
- (format-log/scm 'nolog
- "make-session/channel-test"
- "Unable to connect in ~d tries: ~a~%"
- (- max-tries count)
- session)
- (disconnect! session)
- (set! session #f)
- (sleep 1)
- (if (zero? count)
- (format-log/scm 'nolog
- "make-session/channel-test"
- "~a"
- "Giving up ...")
- (loop (make-session-for-test)
- (1- count))))
- (begin
- (authenticate-server session)
- (userauth-none! session)
- session))))
+(define (call-with-connected-session/channel-test proc)
+ (define (loop count)
+ (catch #t
+ (lambda ()
+ (call-with-connected-session
+ (lambda (session)
+ (authenticate-server session)
+ (userauth-none! session)
+ (proc session))))
+ (lambda (key args)
+ (format-log/scm 'nolog
+ "make-session/channel-test"
+ "Unable to connect in ~d tries: ~a~%"
+ (- max-tries count)
+ session)
+ (sleep 1)
+ (if (zero? count)
+ (format-log/scm 'nolog
+ "make-session/channel-test"
+ "~a"
+ "Giving up ...")
+ (loop (1- count))))))
+ (loop 30))
+
(test-assert "make-channel"
(run-client-test
@@ -502,8 +500,8 @@
;; client
(lambda ()
- (let ((session (make-session/channel-test)))
- (make-channel session)))))
+ (call-with-connected-session/channel-test
+ make-channel))))
(test-assert-with-log "channel-get-session"
(run-client-test
@@ -514,9 +512,10 @@
;; client
(lambda ()
- (let* ((session (make-session/channel-test))
- (channel (make-channel session)))
- (eq? session (channel-get-session channel))))))
+ (call-with-connected-session/channel-test
+ (lambda (session)
+ (let ((channel (make-channel session)))
+ (eq? session (channel-get-session channel))))))))
(test-assert-with-log "channel-open-session"
(run-client-test
@@ -527,10 +526,11 @@
;; client
(lambda ()
- (let* ((session (make-session/channel-test))
- (channel (make-channel session)))
- (channel-open-session channel)
- (not (port-closed? channel))))))
+ (call-with-connected-session/channel-test
+ (lambda (session)
+ (let ((channel (make-channel session)))
+ (channel-open-session channel)
+ (not (port-closed? channel))))))))
;; Client sends "ping" as a command to execute, server replies with "pong"
(test-assert-with-log "channel-request-exec"
@@ -542,13 +542,14 @@
;; client
(lambda ()
- (let* ((session (make-session/channel-test))
- (channel (make-channel session)))
- (channel-open-session channel)
- (channel-request-exec channel "ping")
- (let ((res (read-line channel)))
- (and res
- (string=? "pong" res)))))))
+ (call-with-connected-session/channel-test
+ (lambda (session)
+ (let ((channel (make-channel session)))
+ (channel-open-session channel)
+ (channel-request-exec channel "ping")
+ (let ((res (read-line channel)))
+ (and res
+ (string=? "pong" res)))))))))
;; Client sends "uname" as a command to execute, server returns exit status 0.
(test-assert-with-log "channel-request-exec, exit status"
@@ -561,11 +562,12 @@
;; client
(lambda ()
- (let* ((session (make-session/channel-test))
- (channel (make-channel session)))
- (channel-open-session channel)
- (channel-request-exec channel "uname")
- (channel-get-exit-status channel)))))
+ (call-with-connected-session/channel-test
+ (lambda (session)
+ (let ((channel (make-channel session)))
+ (channel-open-session channel)
+ (channel-request-exec channel "uname")
+ (channel-get-exit-status channel)))))))
;; data transferring
@@ -589,15 +591,16 @@
;; client
(lambda ()
- (let* ((session (make-session/channel-test))
- (channel (make-channel/dt-test session))
- (str "Hello Scheme World!"))
- (write-line str channel)
- (poll channel
- (lambda args
- (let ((res (read-line channel)))
- (disconnect! session)
- (equal? res str))))))))
+ (call-with-connected-session/channel-test
+ (lambda (session)
+ (let ((channel (make-channel/dt-test session))
+ (str "Hello Scheme World!"))
+ (write-line str channel)
+ (poll channel
+ (lambda args
+ (let ((res (read-line channel)))
+ (disconnect! session)
+ (equal? res str))))))))))
(test-assert-with-log "data transferring, bytevector"
@@ -615,14 +618,15 @@
;; client
(lambda ()
- (let* ((session (make-session/channel-test))
- (channel (make-channel/dt-test session))
- (vect (make-bytevector vect-size vect-fill)))
- (put-bytevector channel vect)
- (poll channel
- (lambda args
- (let ((res (get-bytevector-n channel vect-size)))
- (equal? res vect)))))))))
+ (call-with-connected-session/channel-test
+ (lambda (session)
+ (let ((channel (make-channel/dt-test session))
+ (vect (make-bytevector vect-size vect-fill)))
+ (put-bytevector channel vect)
+ (poll channel
+ (lambda args
+ (let ((res (get-bytevector-n channel vect-size)))
+ (equal? res vect)))))))))))
;;;