check / check (push) Successful in 1m36s
DNSWATCHER_SENTRY_DSN was read but never used. This ports the Sentry integration from gohttpserver with sentry-go v0.49.0. The server's start hook calls sentry.Init when the DSN is set; a DSN Sentry cannot parse fails the hook, so startup stops with the parse error. sentryhttp, with Repanic, reports handler panics and passes them on to chi's Recoverer. Shutdown sends queued reports once the HTTP server has stopped. The client uses the older transport (DisableTelemetryBuffer): with the default one, Flush can return before sending a report made just before it. The DSN is checked at server start, not in config, so the config test is unchanged. sentry-go raises several golang.org/x modules. Model: opus-5-5
39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
package server
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
)
|
|
|
|
// 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
|
|
}
|
|
|
|
// EnableSentry runs the Sentry setup that the start hook runs, without
|
|
// starting the HTTP server.
|
|
func EnableSentry(s *Server) error {
|
|
return s.enableSentry()
|
|
}
|
|
|
|
// RouterOf returns the router SetupRoutes built, so a test can add a
|
|
// route that panics.
|
|
func RouterOf(s *Server) *chi.Mux {
|
|
return s.router
|
|
}
|