Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0643747

Browse files
test: add tests with different timezones
1 parent668dbaa commit0643747

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
returnp.Preset.DesiredInstances.Int32,nil
103104
}
104105

105-
loc,err:=time.LoadLocation(p.Preset.AutoscalingTimezone)
106+
_,err:=time.LoadLocation(p.Preset.AutoscalingTimezone)
106107
iferr!=nil {
107108
return0,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:=rangep.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
iferr!=nil {
116116
return0,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:=rangetestCases {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp