-
Notifications
You must be signed in to change notification settings - Fork 854
Expand file tree
/
Copy pathruler_test.go
More file actions
66 lines (57 loc) · 1.56 KB
/
ruler_test.go
File metadata and controls
66 lines (57 loc) · 1.56 KB
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
package ruler
import (
"flag"
"net/http"
"net/http/httptest"
"sync"
"testing"
"time"
"github.com/prometheus/prometheus/pkg/labels"
"github.com/prometheus/prometheus/notifier"
"github.com/stretchr/testify/assert"
"github.com/weaveworks/common/user"
"github.com/weaveworks/cortex/pkg/querier"
)
func newTestRuler(t *testing.T, alertmanagerURL string) *Ruler {
var cfg Config
fs := flag.NewFlagSet("test", flag.PanicOnError)
cfg.RegisterFlags(fs)
fs.Parse(nil)
cfg.AlertmanagerURL.Set(alertmanagerURL)
cfg.AlertmanagerDiscovery = false
// TODO: Populate distributor and chunk store arguments to enable
// other kinds of tests.
engine, queryable := querier.NewEngine(nil, nil, nil, 20, 2*time.Minute)
ruler, err := NewRuler(cfg, engine, queryable, nil)
if err != nil {
t.Fatal(err)
}
return ruler
}
func TestNotifierSendsUserIDHeader(t *testing.T) {
var wg sync.WaitGroup
wg.Add(1) // We want one request to our test HTTP server.
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
userID, _, err := user.ExtractOrgIDFromHTTPRequest(r)
assert.NoError(t, err)
assert.Equal(t, userID, "1")
wg.Done()
}))
defer ts.Close()
r := newTestRuler(t, ts.URL)
n, err := r.getOrCreateNotifier("1")
if err != nil {
t.Fatal(err)
}
for _, not := range r.notifiers {
defer not.stop()
}
// Loop until notifier discovery syncs up
for len(n.Alertmanagers()) == 0 {
time.Sleep(10 * time.Millisecond)
}
n.Send(¬ifier.Alert{
Labels: labels.Labels{labels.Label{Name: "alertname", Value: "testalert"}},
})
wg.Wait()
}