diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2020-09-17 23:46:24 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-17 21:46:24 -0600 | 
| commit | d16ede358a2ec049bda28bf37e79c9cfcaa64c29 (patch) | |
| tree | 9304f4b06287fa2cbeafda019a70556a00e119ee /modules/caddyhttp/metrics_test.go | |
| parent | c82c231ba7ec7c400e4d48ab943f57a6b29a2a2a (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.go | 17 | 
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() | 
