test-servlet.ss
(module test-servlet mzscheme
  
  (require (lib "contract.ss")
           (lib "pretty.ss")
           (lib "cut.ss" "srfi" "26")
           (lib "servlet.ss" "web-server")
           (only (lib "manager.ss" "web-server" "managers") manager?)
           (lib "lru.ss" "web-server" "managers"))
  
  (require (file "delirium.ss")
           (file "all-tests.ss")
           (file "test-base.ss"))
  
  ; Servlet stuff --------------------------------
  
  (define interface-version 'v2)
  
  ;; start : request -> response
  (define (start initial-request)
    (run-delirium initial-request all-tests))
    
  ;; instance-expiration-handler : request -> response
  (define (instance-expiration-handler response)
    (fail "Expired instance!"))
  
  ;; manager : manager
  ;;
  ;; The continuation manager for the servlet.
  (define manager
    (let ([memory-threshold (* 32 1024 1024)])
      (create-LRU-manager
       instance-expiration-handler                    ; request -> response
       5                                              ; check condition X every 5 seconds
       (* 30 60)                                      ; deduct one life point every 30 minutes
       (cut >= (current-memory-use) memory-threshold) ; condition X
       #:initial-count 12                             ; 12 life points to start with
       #:inform-p      (lambda args                   ; called when instances are collected
                         (void)))))
  
  ; Provide statements ---------------------------
  
  (provide/contract
   [interface-version           symbol?]
   [start                       (-> request? response?)]
   [instance-expiration-handler (-> request? response?)]
   [manager                     manager?])
    
  )