summaryrefslogtreecommitdiff
path: root/modules/caddyhttp/metrics_test.go
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2020-09-17 23:46:24 -0400
committerGitHub <noreply@github.com>2020-09-17 21:46:24 -0600
commitd16ede358a2ec049bda28bf37e79c9cfcaa64c29 (patch)
tree9304f4b06287fa2cbeafda019a70556a00e119ee /modules/caddyhttp/metrics_test.go
parentc82c231ba7ec7c400e4d48ab943f57a6b29a2a2a (diff)
metrics: Fix hidden panic while observing with bad exemplars (#3733)
* metrics: Fixing panic while observing with bad exemplars Signed-off-by: Dave Henderson <dhenderson@gmail.com> * Minor cleanup The server is already added to the context. So, we can simply use that to get the server name, which is a field on the server. * Add integration test for auto HTTP->HTTPS redirects A test like this would have caught the problem in the first place Co-authored-by: Matthew Holt <mholt@users.noreply.github.com>
Diffstat (limited to 'modules/caddyhttp/metrics_test.go')
-rw-r--r--modules/caddyhttp/metrics_test.go17
1 files changed, 16 insertions, 1 deletions
diff --git a/modules/caddyhttp/metrics_test.go b/modules/caddyhttp/metrics_test.go
index 14248a3..6ac591f 100644
--- a/modules/caddyhttp/metrics_test.go
+++ b/modules/caddyhttp/metrics_test.go
@@ -1,6 +1,7 @@
package caddyhttp
import (
+ "context"
"errors"
"net/http"
"net/http/httptest"
@@ -9,6 +10,20 @@ import (
"github.com/prometheus/client_golang/prometheus/testutil"
)
+func TestServerNameFromContext(t *testing.T) {
+ ctx := context.Background()
+ expected := "UNKNOWN"
+ if actual := serverNameFromContext(ctx); actual != expected {
+ t.Errorf("Not equal: expected %q, but got %q", expected, actual)
+ }
+
+ in := "foo"
+ ctx = context.WithValue(ctx, ServerCtxKey, &Server{name: in})
+ if actual := serverNameFromContext(ctx); actual != in {
+ t.Errorf("Not equal: expected %q, but got %q", in, actual)
+ }
+}
+
func TestMetricsInstrumentedHandler(t *testing.T) {
handlerErr := errors.New("oh noes")
response := []byte("hello world!")
@@ -26,7 +41,7 @@ func TestMetricsInstrumentedHandler(t *testing.T) {
return h.ServeHTTP(w, r)
})
- ih := newMetricsInstrumentedHandler("foo", "bar", mh)
+ ih := newMetricsInstrumentedHandler("bar", mh)
r := httptest.NewRequest("GET", "/", nil)
w := httptest.NewRecorder()