mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-30 10:56:28 +02:00
62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package telemetry
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"go.opencensus.io/plugin/ocgrpc"
|
|
"google.golang.org/grpc"
|
|
grpcstats "google.golang.org/grpc/stats"
|
|
)
|
|
|
|
type mockTagHandler struct {
|
|
called bool
|
|
}
|
|
|
|
type mockCtxTag string
|
|
|
|
func (m *mockTagHandler) TagRPC(ctx context.Context, tagInfo *grpcstats.RPCTagInfo) context.Context {
|
|
m.called = true
|
|
return context.WithValue(ctx, mockCtxTag("added"), "true")
|
|
}
|
|
|
|
func Test_GRPCServerStatsHandler(t *testing.T) {
|
|
|
|
metricsHandler := &mockTagHandler{}
|
|
h := &GRPCServerStatsHandler{
|
|
metricsHandler: metricsHandler,
|
|
Handler: &ocgrpc.ServerHandler{},
|
|
}
|
|
|
|
ctx := context.WithValue(context.Background(), mockCtxTag("original"), "true")
|
|
ctx = h.TagRPC(ctx, &grpcstats.RPCTagInfo{})
|
|
|
|
assert.True(t, metricsHandler.called)
|
|
assert.Equal(t, ctx.Value(mockCtxTag("added")), "true")
|
|
assert.Equal(t, ctx.Value(mockCtxTag("original")), "true")
|
|
}
|
|
|
|
type mockDialOption struct {
|
|
name string
|
|
grpc.EmptyDialOption
|
|
}
|
|
|
|
func Test_NewGRPCClientStatsHandler(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
h := NewGRPCClientStatsHandler("test")
|
|
|
|
origOpts := []grpc.DialOption{
|
|
mockDialOption{name: "one"},
|
|
mockDialOption{name: "two"},
|
|
}
|
|
|
|
newOpts := h.DialOptions(origOpts...)
|
|
|
|
for i := range origOpts {
|
|
assert.Contains(t, newOpts, origOpts[i])
|
|
}
|
|
|
|
assert.Greater(t, len(newOpts), len(origOpts))
|
|
}
|