diff options
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.go | 48 |
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) + } + } + }) + } +} |