blob: 9058ae35143fc31fa81fbcbe1f31331350e6cf44 [file] [log] [blame]
package reminder
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"go.skia.org/infra/am/go/incident"
"go.skia.org/infra/am/go/silence"
"go.skia.org/infra/go/paramtools"
"go.skia.org/infra/go/testutils/unittest"
)
func TestGetDailyNextTickDuration(t *testing.T) {
unittest.SmallTest(t)
fakeNow := time.Date(2011, 11, 30, 16, 0, 0, 0, time.UTC)
oneHourLater := time.Date(2011, 11, 30, 17, 0, 0, 0, time.UTC).Hour()
assert.Equal(t, time.Hour, getDailyNextTickDuration(fakeNow, oneHourLater))
fakeNow = time.Date(2011, 11, 30, 16, 0, 0, 0, time.UTC)
oneHourEarlier := time.Date(2011, 11, 30, 15, 0, 0, 0, time.UTC).Hour()
assert.Equal(t, 23*time.Hour, getDailyNextTickDuration(fakeNow, oneHourEarlier))
fakeNow = time.Date(2011, 11, 30, 15, 55, 0, 0, time.UTC)
fiveMinsLater := time.Date(2011, 11, 30, 16, 0, 0, 0, time.UTC).Hour()
assert.Equal(t, 5*time.Minute, getDailyNextTickDuration(fakeNow, fiveMinsLater))
fakeNow = time.Date(2011, 11, 30, 16, 05, 0, 0, time.UTC)
fiveMinsEarlier := time.Date(2011, 11, 30, 16, 0, 0, 0, time.UTC).Hour()
assert.Equal(t, 23*time.Hour+55*time.Minute, getDailyNextTickDuration(fakeNow, fiveMinsEarlier))
}
func TestGetOwnersToAlerts(t *testing.T) {
unittest.SmallTest(t)
supermanAssignedAlert := incident.Incident{
Params: map[string]string{
"foo": "2123",
"assigned_to": "superman@krypton.com",
},
}
supermanOwnedAlert := incident.Incident{
Params: map[string]string{
"foo": "2123",
"owner": "superman@krypton.com",
},
}
batmanAssignedAlert := incident.Incident{
Params: map[string]string{
"foo": "333",
"owner": "batman@gotham.com",
},
}
unOwnedAlert := incident.Incident{
Params: map[string]string{
"foo": "333",
},
}
incidents := []incident.Incident{supermanAssignedAlert, supermanOwnedAlert, batmanAssignedAlert, unOwnedAlert}
ownersToAlerts := getOwnersToAlerts(incidents, nil)
assert.Equal(t, 2, len(ownersToAlerts))
assert.Equal(t, 2, len(ownersToAlerts["superman@krypton.com"]))
assert.Equal(t, 1, len(ownersToAlerts["batman@gotham.com"]))
// Add a silence that applies to all but the batmanAssignedAlert and unOwnedAlert.
silences := []silence.Silence{
{
Active: true,
ParamSet: paramtools.ParamSet{"foo": []string{"2123"}},
},
}
ownersToAlerts = getOwnersToAlerts(incidents, silences)
assert.Equal(t, 1, len(ownersToAlerts))
assert.Equal(t, 1, len(ownersToAlerts["batman@gotham.com"]))
}