check / check (push) Successful in 49s
The timeout tests called newHTTPServer directly, so a Run that built its http.Server inline would drop every timeout with the suite still green. TestRunWiresSocketTimeouts wires a Server as cmd/dnswatcher does, minus the watcher and resolver so no live DNS is touched, drives Run with an unbindable port so it stores its http.Server and returns without listening, and checks that server carries all four timeouts and both required relationships. The addr/handler test, which could not fail, is dropped. The ReadTimeout note now says what net/http does: a request whose headers arrive after ReadTimeout but within ReadHeaderTimeout gets a read deadline that has already passed, so reading its body fails at once. Model: opus-4-8 (implementation); opus-5-5 (rework)
25 lines
733 B
Go
25 lines
733 B
Go
package server
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
// RequestTimeout exports the handler execution budget applied by
|
|
// chimw.Timeout in SetupRoutes, so tests can assert the relationship
|
|
// between it and the server's WriteTimeout.
|
|
const RequestTimeout time.Duration = requestTimeout
|
|
|
|
// SetListenPort overrides the port Run binds. A test uses it to hand
|
|
// Run an unbindable port so ListenAndServe fails immediately and Run
|
|
// returns after storing its http.Server.
|
|
func SetListenPort(s *Server, port int) {
|
|
s.port = port
|
|
}
|
|
|
|
// HTTPServerOf returns the http.Server that Run built and stored, so a
|
|
// test can inspect the timeouts the running server actually carries.
|
|
func HTTPServerOf(s *Server) *http.Server {
|
|
return s.httpServer
|
|
}
|