57 lines
1.6 KiB
Racket
57 lines
1.6 KiB
Racket
#lang racket/base
|
|
(require rackunit
|
|
web-server/private/connection-manager)
|
|
(provide connection-manager-tests)
|
|
|
|
(start-connection-manager)
|
|
|
|
(define connection-manager-tests
|
|
(test-suite
|
|
"Connection Manager"
|
|
|
|
; (tests rely on timing and may fail for that reason)
|
|
(test-case
|
|
"Input closed"
|
|
(check-true
|
|
(let ([ib (open-input-bytes #"")]
|
|
[ob (open-output-bytes)])
|
|
(new-connection 1 ib ob (make-custodian) #t)
|
|
(sleep 2)
|
|
(with-handlers ([exn? (lambda _ #t)])
|
|
(read ib) #f))))
|
|
|
|
(test-case
|
|
"Output closed"
|
|
(check-true
|
|
(let ([ib (open-input-bytes #"")]
|
|
[ob (open-output-bytes)])
|
|
(new-connection 1 ib ob (make-custodian) #t)
|
|
(sleep 2)
|
|
(with-handlers ([exn? (lambda _ #t)])
|
|
(write 1 ob) #f))))
|
|
|
|
(test-case
|
|
"Early kill"
|
|
(check-true
|
|
(let* ([ib (open-input-bytes #"")]
|
|
[ob (open-output-bytes)]
|
|
[c (new-connection 1 ib ob (make-custodian) #t)])
|
|
(kill-connection! c)
|
|
(and (with-handlers ([exn? (lambda _ #t)])
|
|
(read ib) #f)
|
|
(with-handlers ([exn? (lambda _ #t)])
|
|
(write 1 ob) #f)))))
|
|
|
|
(test-case
|
|
"Extend timer"
|
|
(check-true
|
|
(let* ([ib (open-input-bytes #"")]
|
|
[ob (open-output-bytes)]
|
|
[c (new-connection 1 ib ob (make-custodian) #t)])
|
|
(adjust-connection-timeout! c 1)
|
|
(sleep 2)
|
|
(and (with-handlers ([exn? (lambda _ #t)])
|
|
(read ib) #f)
|
|
(with-handlers ([exn? (lambda _ #t)])
|
|
(write 1 ob) #f)))))))
|