test: httpd multi-flush partial-buffer sub-range write coverage
ober
203c9a35986954623fc94e73e0741bef8d2231c6
--- a/tests/httpd-test.ss +++ b/tests/httpd-test.ss @@ -214,6 +214,15 @@ (http-respond-chunk w "chunk3") (http-respond-chunk-end w))) +(httpd-route "/multi-flush" + (lambda (req w) + (http-respond-chunk-begin w 200 '(("Content-Type" . "text/plain"))) + (let loop ([i 0]) + (when (< i 10) + (http-respond-chunk w (make-string 5000 (integer->char (+ 65 (mod i 26))))) + (loop (+ i 1)))) + (http-respond-chunk-end w))) + (httpd-route "/large" (lambda (req w) (http-respond w 200 '(("Content-Type" . "text/plain")) @@ -334,6 +343,17 @@ (assert-true (string-contains? (cdr r) "chunk2") "c2") (assert-true (string-contains? (cdr r) "chunk3") "c3")))) +(test "GET /multi-flush assembles partial-buffer flushes correctly" + (lambda () + (let ([r (http-request "GET" "/multi-flush" test-port)]) + (assert-equal (car r) 200 "status") + (let loop ([i 0]) + (when (< i 10) + (assert-true + (string-contains? (cdr r) (make-string 5000 (integer->char (+ 65 (mod i 26))))) + (string-append "chunk-" (number->string i))) + (loop (+ i 1))))))) + (test "GET /large returns 100KB response" (lambda () (let ([r (http-request "GET" "/large" test-port)])