summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/armon/go-metrics/sink_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/armon/go-metrics/sink_test.go')
-rw-r--r--[-rwxr-xr-x]vendor/github.com/armon/go-metrics/sink_test.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/vendor/github.com/armon/go-metrics/sink_test.go b/vendor/github.com/armon/go-metrics/sink_test.go
index 15c5d771a..77c5c3278 100755..100644
--- a/vendor/github.com/armon/go-metrics/sink_test.go
+++ b/vendor/github.com/armon/go-metrics/sink_test.go
@@ -2,6 +2,7 @@ package metrics
import (
"reflect"
+ "strings"
"testing"
)
@@ -118,3 +119,50 @@ func TestFanoutSink_Sample(t *testing.T) {
t.Fatalf("val not equal")
}
}
+
+func TestNewMetricSinkFromURL(t *testing.T) {
+ for _, tc := range []struct {
+ desc string
+ input string
+ expect reflect.Type
+ expectErr string
+ }{
+ {
+ desc: "statsd scheme yields a StatsdSink",
+ input: "statsd://someserver:123",
+ expect: reflect.TypeOf(&StatsdSink{}),
+ },
+ {
+ desc: "statsite scheme yields a StatsiteSink",
+ input: "statsite://someserver:123",
+ expect: reflect.TypeOf(&StatsiteSink{}),
+ },
+ {
+ desc: "inmem scheme yields an InmemSink",
+ input: "inmem://?interval=30s&retain=30s",
+ expect: reflect.TypeOf(&InmemSink{}),
+ },
+ {
+ desc: "unknown scheme yields an error",
+ input: "notasink://whatever",
+ expectErr: "unrecognized sink name: \"notasink\"",
+ },
+ } {
+ t.Run(tc.desc, func(t *testing.T) {
+ ms, err := NewMetricSinkFromURL(tc.input)
+ if tc.expectErr != "" {
+ if !strings.Contains(err.Error(), tc.expectErr) {
+ t.Fatalf("expected err: %q to contain: %q", err, tc.expectErr)
+ }
+ } else {
+ if err != nil {
+ t.Fatalf("unexpected err: %s", err)
+ }
+ got := reflect.TypeOf(ms)
+ if got != tc.expect {
+ t.Fatalf("expected return type to be %v, got: %v", tc.expect, got)
+ }
+ }
+ })
+ }
+}