121 lines
2.9 KiB
Go
121 lines
2.9 KiB
Go
// Copyright 2018 Prometheus Team
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package template
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/prometheus/common/model"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestPairNames(t *testing.T) {
|
|
pairs := Pairs{
|
|
{"name1", "value1"},
|
|
{"name2", "value2"},
|
|
{"name3", "value3"},
|
|
}
|
|
|
|
expected := []string{"name1", "name2", "name3"}
|
|
require.EqualValues(t, expected, pairs.Names())
|
|
}
|
|
|
|
func TestPairValues(t *testing.T) {
|
|
pairs := Pairs{
|
|
{"name1", "value1"},
|
|
{"name2", "value2"},
|
|
{"name3", "value3"},
|
|
}
|
|
|
|
expected := []string{"value1", "value2", "value3"}
|
|
require.EqualValues(t, expected, pairs.Values())
|
|
}
|
|
|
|
func TestKVSortedPairs(t *testing.T) {
|
|
kv := KV{"d": "dVal", "b": "bVal", "c": "cVal"}
|
|
|
|
expectedPairs := Pairs{
|
|
{"b", "bVal"},
|
|
{"c", "cVal"},
|
|
{"d", "dVal"},
|
|
}
|
|
|
|
for i, p := range kv.SortedPairs() {
|
|
require.EqualValues(t, p.Name, expectedPairs[i].Name)
|
|
require.EqualValues(t, p.Value, expectedPairs[i].Value)
|
|
}
|
|
|
|
// validates alertname always comes first
|
|
kv = KV{"d": "dVal", "b": "bVal", "c": "cVal", "alertname": "alert", "a": "aVal"}
|
|
|
|
expectedPairs = Pairs{
|
|
{"alertname", "alert"},
|
|
{"a", "aVal"},
|
|
{"b", "bVal"},
|
|
{"c", "cVal"},
|
|
{"d", "dVal"},
|
|
}
|
|
|
|
for i, p := range kv.SortedPairs() {
|
|
require.EqualValues(t, p.Name, expectedPairs[i].Name)
|
|
require.EqualValues(t, p.Value, expectedPairs[i].Value)
|
|
}
|
|
}
|
|
|
|
func TestKVRemove(t *testing.T) {
|
|
kv := KV{
|
|
"key1": "val1",
|
|
"key2": "val2",
|
|
"key3": "val3",
|
|
"key4": "val4",
|
|
}
|
|
|
|
kv = kv.Remove([]string{"key2", "key4"})
|
|
|
|
expected := []string{"key1", "key3"}
|
|
require.EqualValues(t, expected, kv.Names())
|
|
}
|
|
|
|
func TestAlertsFiring(t *testing.T) {
|
|
alerts := Alerts{
|
|
{Status: string(model.AlertFiring)},
|
|
{Status: string(model.AlertResolved)},
|
|
{Status: string(model.AlertFiring)},
|
|
{Status: string(model.AlertResolved)},
|
|
{Status: string(model.AlertResolved)},
|
|
}
|
|
|
|
for _, alert := range alerts.Firing() {
|
|
if alert.Status != string(model.AlertFiring) {
|
|
t.Errorf("unexpected status %q", alert.Status)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAlertsResolved(t *testing.T) {
|
|
alerts := Alerts{
|
|
{Status: string(model.AlertFiring)},
|
|
{Status: string(model.AlertResolved)},
|
|
{Status: string(model.AlertFiring)},
|
|
{Status: string(model.AlertResolved)},
|
|
{Status: string(model.AlertResolved)},
|
|
}
|
|
|
|
for _, alert := range alerts.Resolved() {
|
|
if alert.Status != string(model.AlertResolved) {
|
|
t.Errorf("unexpected status %q", alert.Status)
|
|
}
|
|
}
|
|
}
|