-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathreqcounter_test.go
40 lines (33 loc) · 1.04 KB
/
reqcounter_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package web
import (
"context"
"net/http"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestRequestCounter(t *testing.T) {
m := RequestCounter{}
f := http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
assert.EqualValues(t, 1, m.ActiveConnections)
assert.EqualValues(t, 1, m.TotalConnections)
assert.EqualValues(t, 0, m.TotalProcessingTimeNs)
time.Sleep(time.Nanosecond)
})
m.Wrap(f).ServeHTTP(nil, nil)
f = func(rw http.ResponseWriter, r *http.Request) {
assert.EqualValues(t, 1, m.ActiveConnections)
assert.EqualValues(t, 2, m.TotalConnections)
assert.NotEqual(t, 0, m.TotalProcessingTimeNs)
}
m.ServeHTTP(nil, nil, f)
assert.Equal(t, 3, len(m.Datapoints()))
resp, err := m.GRPCInterceptor(context.Background(), nil, nil, func(ctx context.Context, req interface{}) (interface{}, error) {
assert.EqualValues(t, 1, m.ActiveConnections)
assert.EqualValues(t, 3, m.TotalConnections)
assert.NotEqual(t, 0, m.TotalProcessingTimeNs)
return 5, nil
})
assert.NoError(t, err)
assert.Equal(t, 5, resp)
}