Skip to content

Commit 0643747

Browse files
test: add tests with different timezones
1 parent 668dbaa commit 0643747

File tree

2 files changed

+51
-4
lines changed

2 files changed

+51
-4
lines changed

coderd/prebuilds/preset_snapshot.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package prebuilds
22

33
import (
4+
"fmt"
45
"github.com/coder/coder/v2/coderd/schedule/cron"
56
"golang.org/x/xerrors"
67
"slices"
@@ -102,16 +103,15 @@ func (p PresetSnapshot) CalculateDesiredInstances(at time.Time) (int32, error) {
102103
return p.Preset.DesiredInstances.Int32, nil
103104
}
104105

105-
loc, err := time.LoadLocation(p.Preset.AutoscalingTimezone)
106+
_, err := time.LoadLocation(p.Preset.AutoscalingTimezone)
106107
if err != nil {
107108
return 0, xerrors.Errorf("can't parse location %v: %w", p.Preset.AutoscalingTimezone, err)
108109
}
109110

110-
at = at.In(loc)
111-
112111
// Check each schedule
113112
for _, schedule := range p.PrebuildSchedules {
114-
matches, err := MatchesCron(schedule.CronExpression, at)
113+
cronExprWithTimezone := fmt.Sprintf("CRON_TZ=%s %s", p.Preset.AutoscalingTimezone, schedule.CronExpression)
114+
matches, err := MatchesCron(cronExprWithTimezone, at)
115115
if err != nil {
116116
return 0, xerrors.Errorf("failed to match cron expression: %w", err)
117117
}

coderd/prebuilds/preset_snapshot_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,6 +1178,53 @@ func TestCalculateDesiredInstances(t *testing.T) {
11781178
at: mustParseTime(t, time.RFC1123, "Sat, 07 Jun 2025 14:00:00 UTC"),
11791179
expectedCalculatedInstances: 1,
11801180
},
1181+
1182+
// Test different timezones
1183+
{
1184+
name: "3PM UTC - 8AM America/Los_Angeles; An hour before the start of the time range",
1185+
snapshot: mkSnapshot(
1186+
mkPreset(1, "America/Los_Angeles"),
1187+
mkSchedule("* 9-13 * * 1-5", 3),
1188+
),
1189+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 15:00:00 UTC"),
1190+
expectedCalculatedInstances: 1,
1191+
},
1192+
{
1193+
name: "4PM UTC - 9AM America/Los_Angeles; Start of the time range",
1194+
snapshot: mkSnapshot(
1195+
mkPreset(1, "America/Los_Angeles"),
1196+
mkSchedule("* 9-13 * * 1-5", 3),
1197+
),
1198+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 16:00:00 UTC"),
1199+
expectedCalculatedInstances: 3,
1200+
},
1201+
{
1202+
name: "8:58PM UTC - 1:58PM America/Los_Angeles; Right before the end of the time range",
1203+
snapshot: mkSnapshot(
1204+
mkPreset(1, "America/Los_Angeles"),
1205+
mkSchedule("* 9-13 * * 1-5", 3),
1206+
),
1207+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 20:58:00 UTC"),
1208+
expectedCalculatedInstances: 3,
1209+
},
1210+
{
1211+
name: "9PM UTC - 2PM America/Los_Angeles; Right after the end of the time range",
1212+
snapshot: mkSnapshot(
1213+
mkPreset(1, "America/Los_Angeles"),
1214+
mkSchedule("* 9-13 * * 1-5", 3),
1215+
),
1216+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 21:00:00 UTC"),
1217+
expectedCalculatedInstances: 1,
1218+
},
1219+
{
1220+
name: "11PM UTC - 4PM America/Los_Angeles; Outside the time range",
1221+
snapshot: mkSnapshot(
1222+
mkPreset(1, "America/Los_Angeles"),
1223+
mkSchedule("* 9-13 * * 1-5", 3),
1224+
),
1225+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 23:00:00 UTC"),
1226+
expectedCalculatedInstances: 1,
1227+
},
11811228
}
11821229

11831230
for _, tc := range testCases {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy