test: Fix flaky maintenance test

This commit is contained in:
TwiN 2025-03-31 22:20:21 -04:00
parent 35a3238bc9
commit d5fe682f9a

View File

@ -179,14 +179,14 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
scenarios := []struct {
name string
cfg *Config
expected bool
expectedUnderMaintenance bool
}{
{
name: "disabled",
cfg: &Config{
Enabled: &no,
},
expected: false,
expectedUnderMaintenance: false,
},
{
name: "under-maintenance-explicitly-enabled",
@ -195,7 +195,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Start: fmt.Sprintf("%02d:00", now.Hour()),
Duration: 2 * time.Hour,
},
expected: true,
expectedUnderMaintenance: true,
},
{
name: "under-maintenance-starting-now-for-2h",
@ -203,7 +203,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Start: fmt.Sprintf("%02d:00", now.Hour()),
Duration: 2 * time.Hour,
},
expected: true,
expectedUnderMaintenance: true,
},
{
name: "under-maintenance-starting-now-for-8h",
@ -211,7 +211,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Start: fmt.Sprintf("%02d:00", now.Hour()),
Duration: 8 * time.Hour,
},
expected: true,
expectedUnderMaintenance: true,
},
{
name: "under-maintenance-starting-now-for-8h-explicit-days",
@ -220,7 +220,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Duration: 8 * time.Hour,
Every: []string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"},
},
expected: true,
expectedUnderMaintenance: true,
},
{
name: "under-maintenance-starting-now-for-23h-explicit-days",
@ -229,7 +229,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Duration: 23 * time.Hour,
Every: []string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"},
},
expected: true,
expectedUnderMaintenance: true,
},
{
name: "under-maintenance-starting-4h-ago-for-8h",
@ -237,7 +237,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Start: fmt.Sprintf("%02d:00", normalizeHour(now.Hour()-4)),
Duration: 8 * time.Hour,
},
expected: true,
expectedUnderMaintenance: true,
},
{
name: "under-maintenance-starting-22h-ago-for-23h",
@ -245,7 +245,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Start: fmt.Sprintf("%02d:00", normalizeHour(now.Hour()-22)),
Duration: 23 * time.Hour,
},
expected: true,
expectedUnderMaintenance: true,
},
{
name: "under-maintenance-starting-22h-ago-for-24h",
@ -253,16 +253,16 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Start: fmt.Sprintf("%02d:00", normalizeHour(now.Hour()-22)),
Duration: 24 * time.Hour,
},
expected: true,
expectedUnderMaintenance: true,
},
{
name: "under-maintenance-amsterdam-timezone-starting-now-for-2h",
cfg: &Config{
Start: fmt.Sprintf("%02d:00", now.Hour()),
Start: fmt.Sprintf("%02d:00", inTimezone(now, "Europe/Amsterdam", t).Hour()),
Duration: 2 * time.Hour,
Timezone: "Europe/Amsterdam",
},
expected: true,
expectedUnderMaintenance: true,
},
{
name: "under-maintenance-perth-timezone-starting-now-for-2h",
@ -271,7 +271,17 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Duration: 2 * time.Hour,
Timezone: "Australia/Perth",
},
expected: true,
expectedUnderMaintenance: true,
},
{
name: "not-under-maintenance-los-angeles-timezone-starting-now-for-2h-today",
cfg: &Config{
Start: fmt.Sprintf("%02d:00", inTimezone(now, "America/Los_Angeles", t).Hour()),
Duration: 2 * time.Hour,
Timezone: "America/Los_Angeles",
Every: []string{now.Weekday().String()},
},
expectedUnderMaintenance: false,
},
{
name: "under-maintenance-utc-timezone-starting-now-for-2h",
@ -280,7 +290,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Duration: 2 * time.Hour,
Timezone: "UTC",
},
expected: true,
expectedUnderMaintenance: true,
},
{
name: "not-under-maintenance-starting-4h-ago-for-3h",
@ -288,7 +298,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Start: fmt.Sprintf("%02d:00", normalizeHour(now.Hour()-4)),
Duration: 3 * time.Hour,
},
expected: false,
expectedUnderMaintenance: false,
},
{
name: "not-under-maintenance-starting-5h-ago-for-1h",
@ -296,7 +306,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Start: fmt.Sprintf("%02d:00", normalizeHour(now.Hour()-5)),
Duration: time.Hour,
},
expected: false,
expectedUnderMaintenance: false,
},
{
name: "not-under-maintenance-today",
@ -305,7 +315,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Duration: time.Hour,
Every: []string{now.Add(48 * time.Hour).Weekday().String()},
},
expected: false,
expectedUnderMaintenance: false,
},
{
name: "not-under-maintenance-today-with-24h-duration",
@ -314,17 +324,7 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
Duration: 24 * time.Hour,
Every: []string{now.Add(48 * time.Hour).Weekday().String()},
},
expected: false,
},
{
name: "not-under-maintenance-los-angeles-timezone-starting-now-for-2h-today",
cfg: &Config{
Start: fmt.Sprintf("%02d:00", now.Hour()),
Duration: 2 * time.Hour,
Timezone: "America/Los_Angeles",
Every: []string{now.Weekday().String()},
},
expected: false,
expectedUnderMaintenance: false,
},
}
for _, scenario := range scenarios {
@ -335,8 +335,8 @@ func TestConfig_IsUnderMaintenance(t *testing.T) {
t.Fatal("validation shouldn't have returned an error, got", err)
}
isUnderMaintenance := scenario.cfg.IsUnderMaintenance()
if isUnderMaintenance != scenario.expected {
t.Errorf("expected %v, got %v", scenario.expected, isUnderMaintenance)
if isUnderMaintenance != scenario.expectedUnderMaintenance {
t.Errorf("expectedUnderMaintenance %v, got %v", scenario.expectedUnderMaintenance, isUnderMaintenance)
t.Logf("start=%v; duration=%v; now=%v", scenario.cfg.Start, scenario.cfg.Duration, time.Now().UTC())
}
})
@ -352,7 +352,6 @@ func normalizeHour(hour int) int {
func inTimezone(passedTime time.Time, timezone string, t *testing.T) time.Time {
timezoneLocation, err := time.LoadLocation(timezone)
if err != nil {
t.Fatalf("timezone %s did not load", timezone)
}