From eda7496763bf67f2bbbde303606870bde5552017 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Sun, 24 Dec 2023 11:26:58 -0500 Subject: [PATCH] Better log message --- cmd/rqlited/main.go | 4 ++-- http/preflight.go | 10 +++++----- http/preflight_test.go | 43 ++++++++++++++++++++++++++++++------------ 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/cmd/rqlited/main.go b/cmd/rqlited/main.go index 1e75d659..94335d0b 100644 --- a/cmd/rqlited/main.go +++ b/cmd/rqlited/main.go @@ -600,8 +600,8 @@ func createCluster(cfg *Config, hasPeers bool, client *cluster.Client, str *stor func networkCheckJoinAddrs(joinAddrs []string) error { log.Println("checking that join addresses don't serve HTTP(S)") - if http.AnyServingHTTP(joinAddrs) { - return fmt.Errorf("join address appears to be serving HTTP when it should be Raft") + if addr, ok := http.AnyServingHTTP(joinAddrs); ok { + return fmt.Errorf("join address %s appears to be serving HTTP when it should be Raft", addr) } return nil } diff --git a/http/preflight.go b/http/preflight.go index 18fc23cf..462efdca 100644 --- a/http/preflight.go +++ b/http/preflight.go @@ -6,15 +6,15 @@ import ( "time" ) -// AnyServingHTTP returns true if there appears to be a HTTP or HTTPS server -// running on any of the given addresses. -func AnyServingHTTP(addrs []string) bool { +// AnyServingHTTP returns the first address in the list that appears to be +// serving HTTP or HTTPS, or false if none of them are. +func AnyServingHTTP(addrs []string) (string, bool) { for _, addr := range addrs { if IsServingHTTP(addr) { - return true + return addr, true } } - return false + return "", false } // IsServingHTTP returns true if there appears to be a HTTP or HTTPS server diff --git a/http/preflight_test.go b/http/preflight_test.go index d9ce8151..4fa54675 100644 --- a/http/preflight_test.go +++ b/http/preflight_test.go @@ -23,8 +23,8 @@ func Test_IsServingHTTP_HTTPServer(t *testing.T) { if !IsServingHTTP(addr) { t.Fatalf("Expected true for HTTP server running on %s", addr) } - if !AnyServingHTTP([]string{addr}) { - t.Fatalf("Expected true for HTTP server running on %s", addr) + if a, ok := AnyServingHTTP([]string{addr}); !ok || a != addr { + t.Fatalf("Expected %s for AnyServingHTTP", addr) } } @@ -39,8 +39,8 @@ func Test_IsServingHTTP_HTTPSServer(t *testing.T) { if !IsServingHTTP(addr) { t.Error("Expected true for HTTPS server running") } - if !AnyServingHTTP([]string{addr}) { - t.Fatalf("Expected true for HTTPS server running") + if a, ok := AnyServingHTTP([]string{addr}); !ok || a != addr { + t.Fatalf("Expected %s for AnyServingHTTP", addr) } } @@ -50,7 +50,7 @@ func Test_IsServingHTTP_NoServersRunning(t *testing.T) { if IsServingHTTP(addr) { t.Error("Expected false for no servers running") } - if AnyServingHTTP([]string{addr}) { + if _, ok := AnyServingHTTP([]string{addr}); ok { t.Error("Expected false for no servers running") } } @@ -61,7 +61,7 @@ func Test_IsServingHTTP_InvalidAddress(t *testing.T) { if IsServingHTTP(addr) { t.Error("Expected false for invalid address") } - if AnyServingHTTP([]string{addr}) { + if _, ok := AnyServingHTTP([]string{addr}); ok { t.Error("Expected false for invalid address") } } @@ -77,8 +77,8 @@ func Test_IsServingHTTP_HTTPErrorStatusCode(t *testing.T) { if !IsServingHTTP(addr) { t.Error("Expected true for HTTP server running, even with error status code") } - if !AnyServingHTTP([]string{addr}) { - t.Error("Expected true for HTTP server running, even with error status code") + if a, ok := AnyServingHTTP([]string{addr}); !ok || a != addr { + t.Fatalf("Expected %s for AnyServingHTTP, even with error status code", addr) } } @@ -93,8 +93,8 @@ func Test_IsServingHTTP_HTTPSSuccessStatusCode(t *testing.T) { if !IsServingHTTP(addr) { t.Error("Expected true for HTTPS server running with success status code") } - if !AnyServingHTTP([]string{addr}) { - t.Error("Expected true for HTTPS server running with success status code") + if a, ok := AnyServingHTTP([]string{addr}); !ok || a != addr { + t.Fatalf("Expected %s for AnyServingHTTP with success status code", addr) } } @@ -110,7 +110,7 @@ func Test_IsServingHTTP_OpenPort(t *testing.T) { if IsServingHTTP(addr) { t.Error("Expected false for open port") } - if AnyServingHTTP([]string{addr}) { + if _, ok := AnyServingHTTP([]string{addr}); ok { t.Error("Expected false for open port") } } @@ -137,7 +137,26 @@ func Test_IsServingHTTP_OpenPortTLS(t *testing.T) { if IsServingHTTP(addr) { t.Error("Expected false for open TLS port") } - if AnyServingHTTP([]string{addr}) { + if _, ok := AnyServingHTTP([]string{addr}); ok { t.Error("Expected false for open TLS port") } } + +func Test_IsServingHTTP_HTTPServerTCPPort(t *testing.T) { + httpServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + })) + defer httpServer.Close() + + ln, err := net.Listen("tcp", ":0") + if err != nil { + t.Fatal(err) + } + defer ln.Close() + + httpAddr := httpServer.Listener.Addr().String() + tcpAddr := ln.Addr().String() + if a, ok := AnyServingHTTP([]string{httpAddr, tcpAddr}); !ok || a != httpAddr { + t.Fatalf("Expected %s for AnyServingHTTP", httpAddr) + } +}