MCPcopy
hub / github.com/grafana/dskit / TestProvider

Function TestProvider

dns/provider_test.go:18–105  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

16)
17
18func TestProvider(t *testing.T) {
19 ips := []string{
20 "127.0.0.1:19091",
21 "127.0.0.2:19092",
22 "127.0.0.3:19093",
23 "127.0.0.4:19094",
24 "127.0.0.5:19095",
25 }
26
27 prv := NewProvider("", 0, log.NewNopLogger(), nil)
28 prv.resolver = &mockResolver{
29 res: map[string][]string{
30 "a": ips[:2],
31 "b": ips[2:4],
32 "c": {ips[4]},
33 },
34 }
35 ctx := context.TODO()
36
37 checkMetrics := func(metrics string) {
38 const metadata = `
39 # HELP dns_provider_results The number of resolved endpoints for each configured address
40 # TYPE dns_provider_results gauge
41 `
42 expected := strings.NewReader(metadata + metrics + "\n")
43 assert.NoError(t, testutil.CollectAndCompare(prv, expected))
44 }
45 err := prv.Resolve(ctx, []string{"any+x"})
46 assert.NoError(t, err)
47 result := prv.Addresses()
48 sort.Strings(result)
49 assert.Equal(t, []string(nil), result)
50 checkMetrics(`dns_provider_results{addr="any+x"} 0`)
51
52 err = prv.Resolve(ctx, []string{"any+a", "any+b", "any+c"})
53 assert.NoError(t, err)
54 result = prv.Addresses()
55 sort.Strings(result)
56 assert.Equal(t, ips, result)
57 checkMetrics(`
58 dns_provider_results{addr="any+a"} 2
59 dns_provider_results{addr="any+b"} 2
60 dns_provider_results{addr="any+c"} 1`)
61
62 err = prv.Resolve(ctx, []string{"any+b", "any+c"})
63 assert.NoError(t, err)
64 result = prv.Addresses()
65 sort.Strings(result)
66 assert.Equal(t, ips[2:], result)
67 checkMetrics(`
68 dns_provider_results{addr="any+b"} 2
69 dns_provider_results{addr="any+c"} 1`)
70
71 err = prv.Resolve(ctx, []string{"any+x"})
72 assert.NoError(t, err)
73 result = prv.Addresses()
74 sort.Strings(result)
75 assert.Equal(t, []string(nil), result)

Callers

nothing calls this directly

Calls 4

ResolveMethod · 0.95
AddressesMethod · 0.95
NewProviderFunction · 0.85
EqualMethod · 0.45

Tested by

no test coverage detected