forked from miekg/caddy-prometheus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup_test.go
80 lines (77 loc) · 2.45 KB
/
setup_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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package metrics
import (
"reflect"
"testing"
"github.com/admpub/caddy"
)
func TestParse(t *testing.T) {
tests := []struct {
input string
shouldErr bool
expected *Metrics
}{
{`prometheus`, false, &Metrics{addr: defaultAddr, path: defaultPath, extraLabels: []extraLabel{}}},
{`prometheus foo:123`, false, &Metrics{addr: "foo:123", path: defaultPath, extraLabels: []extraLabel{}}},
{`prometheus foo bar`, true, nil},
{`prometheus {
a b
}`, true, nil},
{`prometheus
prometheus`, true, nil},
{`prometheus {
address
}`, true, nil},
{`prometheus {
path
}`, true, nil},
{`prometheus {
hostname
}`, true, nil},
{`prometheus {
address 0.0.0.0:1234
use_caddy_addr
}`, true, nil},
{`prometheus {
use_caddy_addr
address 0.0.0.0:1234
}`, true, nil},
{`prometheus {
use_caddy_addr
}`, false, &Metrics{useCaddyAddr: true, addr: defaultAddr, path: defaultPath, extraLabels: []extraLabel{}}},
{`prometheus {
path /foo
}`, false, &Metrics{addr: defaultAddr, path: "/foo", extraLabels: []extraLabel{}}},
{`prometheus {
use_caddy_addr
hostname example.com
}`, false, &Metrics{useCaddyAddr: true, hostname: "example.com", addr: defaultAddr, path: defaultPath, extraLabels: []extraLabel{}}},
{`prometheus {
label version 1.2
label route_name {<X-Route-Name}
}`, false, &Metrics{addr: defaultAddr, path: defaultPath, extraLabels: []extraLabel{extraLabel{"version", "1.2"}, extraLabel{"route_name", "{<X-Route-Name}"}}}},
{`prometheus {
latency_buckets
}`, true, nil},
{`prometheus {
latency_buckets 0.1 2 5 10
}`, false, &Metrics{addr: defaultAddr, path: defaultPath, extraLabels: []extraLabel{}, latencyBuckets: []float64{0.1, 2, 5, 10}}},
{`prometheus {
size_buckets
}`, true, nil},
{`prometheus {
size_buckets 1 5 10 50 100 1e3 10e6
}`, false, &Metrics{addr: defaultAddr, path: defaultPath, extraLabels: []extraLabel{}, sizeBuckets: []float64{1, 5, 10, 50, 100, 1e3, 10e6}}},
}
for i, test := range tests {
c := caddy.NewTestController("http", test.input)
m, err := parse(c)
if test.shouldErr && err == nil {
t.Errorf("Test %v: Expected error but found nil", i)
} else if !test.shouldErr && err != nil {
t.Errorf("Test %v: Expected no error but found error: %v", i, err)
}
if !reflect.DeepEqual(test.expected, m) && !reflect.DeepEqual(*test.expected, *m) {
t.Errorf("Test %v: Created Metrics (\n%#v\n) does not match expected (\n%#v\n)", i, m, test.expected)
}
}
}