racket/collects/tests/web-server/private/connection-manager-test.rkt

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)))))))