Stop using and testing the intermediate function.

Directly test the exported ListenAndServe function.
This commit is contained in:
Eric Promislow 2024-08-29 12:44:36 -07:00
parent 678e190743
commit d1fbc00b82
2 changed files with 10 additions and 17 deletions

View File

@ -5,6 +5,7 @@ import (
"crypto"
"crypto/tls"
"crypto/x509"
"errors"
"fmt"
"log"
"net"
@ -46,18 +47,15 @@ type ListenOpts struct {
func ListenAndServe(ctx context.Context, httpsPort, httpPort int, handler http.Handler, opts *ListenOpts) error {
logger := logrus.StandardLogger()
writer := logger.WriterLevel(logrus.DebugLevel)
if opts == nil {
opts = &ListenOpts{}
}
if opts.DisplayServerLogs {
writer = logger.WriterLevel(logrus.ErrorLevel)
}
// Otherwise preserve legacy behaviour of displaying server logs only in debug mode.
errorLog := log.New(writer, "", log.LstdFlags)
return listenAndServeWithLogger(ctx, httpsPort, httpPort, handler, opts, errorLog)
}
func listenAndServeWithLogger(ctx context.Context, httpsPort, httpPort int, handler http.Handler, opts *ListenOpts, errorLog *log.Logger) error {
if opts == nil {
opts = &ListenOpts{}
}
errorLog := log.New(writer, "", log.LstdFlags)
if opts.TLSListenerConfig.TLSConfig == nil {
opts.TLSListenerConfig.TLSConfig = &tls.Config{}
@ -89,7 +87,7 @@ func listenAndServeWithLogger(ctx context.Context, httpsPort, httpPort int, hand
go func() {
logrus.Infof("Listening on %s:%d", opts.BindHost, httpsPort)
err := tlsServer.Serve(tlsTCPListener)
if err != http.ErrServerClosed && err != nil {
if !errors.Is(err, http.ErrServerClosed) && err != nil {
logrus.Fatalf("https server failed: %v", err)
}
}()
@ -111,7 +109,7 @@ func listenAndServeWithLogger(ctx context.Context, httpsPort, httpPort int, hand
go func() {
logrus.Infof("Listening on %s:%d", opts.BindHost, httpPort)
err := httpServer.ListenAndServe()
if err != http.ErrServerClosed && err != nil {
if !errors.Is(err, http.ErrServerClosed) && err != nil {
logrus.Fatalf("http server failed: %v", err)
}
}()

View File

@ -4,7 +4,6 @@ import (
"bytes"
"context"
"fmt"
"log"
"net"
"net/http"
"sync"
@ -86,15 +85,11 @@ func doRequest(safeWriter *safeWriter, message string, logLevel logrus.Level) er
handler := alwaysPanicHandler{msg: msg}
listenOpts := &ListenOpts{
BindHost: host,
DisplayServerLogs: logLevel == logrus.ErrorLevel,
}
logger := logrus.StandardLogger()
logger.SetOutput(safeWriter)
logger.SetLevel(logrus.ErrorLevel)
writer := logger.WriterLevel(logLevel)
errorLog := log.New(writer, "", log.LstdFlags)
if err := listenAndServeWithLogger(ctx, httpsPort, httpPort, &handler, listenOpts, errorLog); err != nil {
logrus.StandardLogger().SetOutput(safeWriter)
if err := ListenAndServe(ctx, httpsPort, httpPort, &handler, listenOpts); err != nil {
return err
}
addr := fmt.Sprintf("%s:%d", host, httpPort)