(t *testing.T)
| 1204 | } |
| 1205 | |
| 1206 | func 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 | }, |
nothing calls this directly
no test coverage detected