-
Notifications
You must be signed in to change notification settings - Fork 0
/
loki_caddyfile_test.go
121 lines (96 loc) · 2.89 KB
/
loki_caddyfile_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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package loki
import (
"github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
"testing"
)
func testEndpoint(t *testing.T, endpoint, expected string) {
if endpoint != expected {
t.Errorf("Expected endpoint to be set as '%s' got '%s", endpoint, expected)
}
}
func testLabel(t *testing.T, labels map[string]interface{}, name string, expected interface{}) {
val, ok := labels[name]
if !ok {
t.Errorf("Expected label %s to have value %+v, instead it wasn't set at all", name, expected)
return
}
if val != expected {
t.Errorf("Expected label %s to have value %T %+v, instead it had value %T %+v", name, expected, expected, val, val)
}
}
func testNoLabelsSet(t *testing.T, labels map[string]interface{}) {
if len(labels) != 0 {
t.Errorf("Expected no labels to be set, found: %+v", labels)
}
}
func TestUnmarshalInvalidCaddyfile(t *testing.T) {
l := &LokiLogger{}
cf := `
loki
`
d := caddyfile.NewTestDispenser(cf)
err := l.UnmarshalCaddyfile(d)
if err == nil {
t.Error("Unmarshal passed, should have failed because of no endpoint set")
}
testNoLabelsSet(t, l.Labels)
}
func TestUnmarshalBasicCaddyfile(t *testing.T) {
endpoint := "https://myuser:somepassword@example.net/loki/api/v1/push"
l := &LokiLogger{}
cf := "loki " + endpoint
d := caddyfile.NewTestDispenser(cf)
err := l.UnmarshalCaddyfile(d)
if err != nil {
t.Errorf("Unmarshal failed, should have passed: %+v", err)
}
testEndpoint(t, l.Endpoint, endpoint)
testNoLabelsSet(t, l.Labels)
}
func TestUnmarshalReplacedEnpoint(t *testing.T) {
endpoint := "{env.LOKI_ENDPOINT}"
l := &LokiLogger{}
cf := "loki " + endpoint
d := caddyfile.NewTestDispenser(cf)
err := l.UnmarshalCaddyfile(d)
if err != nil {
t.Errorf("Unmarshal failed, should have passed: %+v", err)
}
testEndpoint(t, l.Endpoint, endpoint)
testNoLabelsSet(t, l.Labels)
}
func TestUnmarshalCaddyfileWithStaticLabel(t *testing.T) {
endpoint := "https://myuser:somepassword@example.net/loki/api/v1/push"
l := &LokiLogger{}
cf := "loki " + endpoint
d := caddyfile.NewTestDispenser(cf)
err := l.UnmarshalCaddyfile(d)
if err != nil {
t.Errorf("Unmarshal failed, should have passed: %+v", err)
}
testEndpoint(t, l.Endpoint, endpoint)
}
func TestUnmarshalCaddyfileWithNestedLabels(t *testing.T) {
endpoint := "https://myuser:somepassword@example.net/loki/api/v1/push"
l := &LokiLogger{}
cf := "loki " + endpoint + " {\n" +
`label {
somelabel example
anotherlabel 1
testing true
anEnvVar {env.SOMEENV}
aVar {vars.somevar}
}
}`
d := caddyfile.NewTestDispenser(cf)
err := l.UnmarshalCaddyfile(d)
if err != nil {
t.Errorf("Unmarshal failed, should have passed: %+v", err)
}
testEndpoint(t, l.Endpoint, endpoint)
testLabel(t, l.Labels, "somelabel", "example")
testLabel(t, l.Labels, "anotherlabel", 1)
testLabel(t, l.Labels, "testing", true)
testLabel(t, l.Labels, "anEnvVar", "{env.SOMEENV}")
testLabel(t, l.Labels, "aVar", "{vars.somevar}")
}