109 lines
2.4 KiB
Go
109 lines
2.4 KiB
Go
package bolt_test
|
|
|
|
import (
|
|
"context"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/influxdata/chronograf"
|
|
)
|
|
|
|
func setupTestClient() (*TestClient, error) {
|
|
if c, err := NewTestClient(); err != nil {
|
|
return nil, err
|
|
} else if err := c.Open(); err != nil {
|
|
return nil, err
|
|
} else {
|
|
return c, nil
|
|
}
|
|
}
|
|
|
|
// Ensure an AlertRuleStore can be stored.
|
|
func TestAlertRuleStoreAdd(t *testing.T) {
|
|
c, err := setupTestClient()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer c.Close()
|
|
s := c.AlertsStore
|
|
|
|
alerts := []chronograf.AlertRule{
|
|
chronograf.AlertRule{
|
|
ID: "one",
|
|
},
|
|
chronograf.AlertRule{
|
|
ID: "two",
|
|
Details: "howdy",
|
|
},
|
|
}
|
|
|
|
// Add new alert.
|
|
ctx := context.Background()
|
|
for i, a := range alerts {
|
|
// Adding should return an identical copy
|
|
actual, err := s.Add(ctx, 0, 0, a)
|
|
if err != nil {
|
|
t.Errorf("erroring adding alert to store: %v", err)
|
|
}
|
|
if !reflect.DeepEqual(actual, alerts[i]) {
|
|
t.Fatalf("alert returned is different then alert saved; actual: %v, expected %v", actual, alerts[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
func setupWithRule(ctx context.Context, alert chronograf.AlertRule) (*TestClient, error) {
|
|
c, err := setupTestClient()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Add test alert
|
|
if _, err := c.AlertsStore.Add(ctx, 0, 0, alert); err != nil {
|
|
return nil, err
|
|
}
|
|
return c, nil
|
|
}
|
|
|
|
// Ensure an AlertRuleStore can be loaded.
|
|
func TestAlertRuleStoreGet(t *testing.T) {
|
|
ctx := context.Background()
|
|
alert := chronograf.AlertRule{
|
|
ID: "one",
|
|
}
|
|
c, err := setupWithRule(ctx, alert)
|
|
if err != nil {
|
|
t.Fatalf("Error adding test alert to store: %v", err)
|
|
}
|
|
defer c.Close()
|
|
actual, err := c.AlertsStore.Get(ctx, 0, 0, "one")
|
|
if err != nil {
|
|
t.Fatalf("Error loading rule from store: %v", err)
|
|
}
|
|
|
|
if !reflect.DeepEqual(actual, alert) {
|
|
t.Fatalf("alert returned is different then alert saved; actual: %v, expected %v", actual, alert)
|
|
}
|
|
}
|
|
|
|
// Ensure an AlertRuleStore can be load with a detail.
|
|
func TestAlertRuleStoreGetDetail(t *testing.T) {
|
|
ctx := context.Background()
|
|
alert := chronograf.AlertRule{
|
|
ID: "one",
|
|
Details: "my details",
|
|
}
|
|
c, err := setupWithRule(ctx, alert)
|
|
if err != nil {
|
|
t.Fatalf("Error adding test alert to store: %v", err)
|
|
}
|
|
defer c.Close()
|
|
actual, err := c.AlertsStore.Get(ctx, 0, 0, "one")
|
|
if err != nil {
|
|
t.Fatalf("Error loading rule from store: %v", err)
|
|
}
|
|
|
|
if !reflect.DeepEqual(actual, alert) {
|
|
t.Fatalf("alert returned is different then alert saved; actual: %v, expected %v", actual, alert)
|
|
}
|
|
}
|