github.com/hellofresh/janus@v0.0.0-20230925145208-ce8de8183c67/pkg/middleware/stats_test.go (about) 1 package middleware 2 3 import ( 4 "net/http" 5 "testing" 6 7 "github.com/hellofresh/janus/pkg/test" 8 "github.com/hellofresh/stats-go" 9 "github.com/hellofresh/stats-go/client" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestSuccessfulStats(t *testing.T) { 15 statsClient, err := stats.NewClient("memory://") 16 require.NoError(t, err) 17 18 mw := NewStats(statsClient) 19 w, err := test.Record( 20 http.MethodGet, 21 "/", 22 map[string]string{ 23 "Content-Type": "application/json", 24 }, 25 mw.Handler(http.HandlerFunc(test.Ping)), 26 ) 27 require.NoError(t, err) 28 29 assert.Equal(t, http.StatusOK, w.Code) 30 assert.Equal(t, "application/json", w.Header().Get("Content-Type")) 31 32 require.IsType(t, &client.Memory{}, statsClient) 33 memoryClient := statsClient.(*client.Memory) 34 35 require.Equal(t, 2, len(memoryClient.TimerMetrics)) 36 assert.Equal(t, "request.get.-.-", memoryClient.TimerMetrics[0].Bucket) 37 38 require.Equal(t, 8, len(memoryClient.CountMetrics)) 39 assert.Equal(t, 1, memoryClient.CountMetrics["request.get.-.-"]) 40 assert.Equal(t, 1, memoryClient.CountMetrics["request-ok.get.-.-"]) 41 assert.Equal(t, 1, memoryClient.CountMetrics["total.request"]) 42 assert.Equal(t, 1, memoryClient.CountMetrics["total.request-ok"]) 43 } 44 45 func TestUnknownPath(t *testing.T) { 46 statsClient, err := stats.NewClient("memory://") 47 require.NoError(t, err) 48 49 mw := NewStats(statsClient) 50 w, err := test.Record( 51 http.MethodGet, 52 "/", 53 map[string]string{ 54 "Content-Type": "application/json", 55 }, 56 mw.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 57 w.WriteHeader(http.StatusNotFound) 58 w.Write([]byte(http.StatusText(http.StatusNotFound))) 59 })), 60 ) 61 require.NoError(t, err) 62 63 assert.Equal(t, http.StatusNotFound, w.Code) 64 65 require.IsType(t, &client.Memory{}, statsClient) 66 memoryClient := statsClient.(*client.Memory) 67 68 require.Equal(t, 2, len(memoryClient.TimerMetrics)) 69 assert.Equal(t, "request.get.-not-found-.-", memoryClient.TimerMetrics[0].Bucket) 70 71 require.Equal(t, 8, len(memoryClient.CountMetrics)) 72 require.Equal(t, 8, len(memoryClient.CountMetrics)) 73 assert.Equal(t, 1, memoryClient.CountMetrics["request.get.-not-found-.-"]) 74 assert.Equal(t, 1, memoryClient.CountMetrics["request-fail.get.-not-found-.-"]) 75 assert.Equal(t, 1, memoryClient.CountMetrics["total.request"]) 76 assert.Equal(t, 1, memoryClient.CountMetrics["total.request-fail"]) 77 }