MCPcopy Create free account
hub / github.com/coder/coder / TestCalculateDesiredInstances

Function TestCalculateDesiredInstances

coderd/prebuilds/preset_snapshot_test.go:1206–1526  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1204}
1205
1206func TestCalculateDesiredInstances(t *testing.T) {
1207 t.Parallel()
1208
1209 mkPreset := func(instances int32, timezone string) database.GetTemplatePresetsWithPrebuildsRow {
1210 return database.GetTemplatePresetsWithPrebuildsRow{
1211 DesiredInstances: sql.NullInt32{
1212 Int32: instances,
1213 Valid: true,
1214 },
1215 SchedulingTimezone: timezone,
1216 }
1217 }
1218 mkSchedule := func(cronExpr string, instances int32) database.TemplateVersionPresetPrebuildSchedule {
1219 return database.TemplateVersionPresetPrebuildSchedule{
1220 CronExpression: cronExpr,
1221 DesiredInstances: instances,
1222 }
1223 }
1224 mkSnapshot := func(preset database.GetTemplatePresetsWithPrebuildsRow, schedules ...database.TemplateVersionPresetPrebuildSchedule) prebuilds.PresetSnapshot {
1225 return prebuilds.NewPresetSnapshot(
1226 preset,
1227 schedules,
1228 nil,
1229 nil,
1230 nil,
1231 0,
1232 nil,
1233 false,
1234 quartz.NewMock(t),
1235 testutil.Logger(t),
1236 )
1237 }
1238
1239 testCases := []struct {
1240 name string
1241 snapshot prebuilds.PresetSnapshot
1242 at time.Time
1243 expectedCalculatedInstances int32
1244 }{
1245 // "* 9-18 * * 1-5" should be interpreted as a continuous time range from 09:00:00 to 18:59:59, Monday through Friday
1246 {
1247 name: "Right before the start of the time range",
1248 snapshot: mkSnapshot(
1249 mkPreset(1, "UTC"),
1250 mkSchedule("* 9-18 * * 1-5", 3),
1251 ),
1252 at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 8:59:59 UTC"),
1253 expectedCalculatedInstances: 1,
1254 },
1255 {
1256 name: "Start of the time range",
1257 snapshot: mkSnapshot(
1258 mkPreset(1, "UTC"),
1259 mkSchedule("* 9-18 * * 1-5", 3),
1260 ),
1261 at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 9:00:00 UTC"),
1262 expectedCalculatedInstances: 3,
1263 },

Callers

nothing calls this directly

Calls 6

NewPresetSnapshotFunction · 0.92
LoggerFunction · 0.92
mustParseTimeFunction · 0.70
RunMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected