Skip to content

Commit 693aafe

Browse files
test: improve tests
1 parent 1a9817b commit 693aafe

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed

coderd/prebuilds/preset_snapshot_test.go

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,6 +1073,111 @@ func TestCalculateDesiredInstances(t *testing.T) {
10731073
at: mustParseTime(t, time.RFC1123, "Sun, 08 Jun 2025 14:00:00 UTC"),
10741074
expectedCalculatedInstances: 1,
10751075
},
1076+
1077+
// Test multiple schedules during the day
1078+
// - "* 6-10 * * 1-5"
1079+
// - "* 12-16 * * 1-5"
1080+
// - "* 18-22 * * 1-5"
1081+
{
1082+
name: "Before the first schedule",
1083+
snapshot: mkSnapshot(
1084+
mkPreset(1, "UTC"),
1085+
mkSchedule("* 6-10 * * 1-5", 2),
1086+
mkSchedule("* 12-16 * * 1-5", 3),
1087+
mkSchedule("* 18-22 * * 1-5", 4),
1088+
),
1089+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 5:00:00 UTC"),
1090+
expectedCalculatedInstances: 1,
1091+
},
1092+
{
1093+
name: "The middle of the first schedule",
1094+
snapshot: mkSnapshot(
1095+
mkPreset(1, "UTC"),
1096+
mkSchedule("* 6-10 * * 1-5", 2),
1097+
mkSchedule("* 12-16 * * 1-5", 3),
1098+
mkSchedule("* 18-22 * * 1-5", 4),
1099+
),
1100+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 5:59:00 UTC"),
1101+
expectedCalculatedInstances: 2,
1102+
},
1103+
{
1104+
name: "Between the first and second schedule",
1105+
snapshot: mkSnapshot(
1106+
mkPreset(1, "UTC"),
1107+
mkSchedule("* 6-10 * * 1-5", 2),
1108+
mkSchedule("* 12-16 * * 1-5", 3),
1109+
mkSchedule("* 18-22 * * 1-5", 4),
1110+
),
1111+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 11:00:00 UTC"),
1112+
expectedCalculatedInstances: 1,
1113+
},
1114+
{
1115+
name: "The middle of the second schedule",
1116+
snapshot: mkSnapshot(
1117+
mkPreset(1, "UTC"),
1118+
mkSchedule("* 6-10 * * 1-5", 2),
1119+
mkSchedule("* 12-16 * * 1-5", 3),
1120+
mkSchedule("* 18-22 * * 1-5", 4),
1121+
),
1122+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 14:00:00 UTC"),
1123+
expectedCalculatedInstances: 3,
1124+
},
1125+
{
1126+
name: "The middle of the third schedule",
1127+
snapshot: mkSnapshot(
1128+
mkPreset(1, "UTC"),
1129+
mkSchedule("* 6-10 * * 1-5", 2),
1130+
mkSchedule("* 12-16 * * 1-5", 3),
1131+
mkSchedule("* 18-22 * * 1-5", 4),
1132+
),
1133+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 20:00:00 UTC"),
1134+
expectedCalculatedInstances: 4,
1135+
},
1136+
{
1137+
name: "After the last schedule",
1138+
snapshot: mkSnapshot(
1139+
mkPreset(1, "UTC"),
1140+
mkSchedule("* 6-10 * * 1-5", 2),
1141+
mkSchedule("* 12-16 * * 1-5", 3),
1142+
mkSchedule("* 18-22 * * 1-5", 4),
1143+
),
1144+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 23:00:00 UTC"),
1145+
expectedCalculatedInstances: 1,
1146+
},
1147+
1148+
// Test multiple schedules during the week
1149+
// - "* 9-18 * * 1-5"
1150+
// - "* 9-13 * * 6-7"
1151+
{
1152+
name: "First schedule",
1153+
snapshot: mkSnapshot(
1154+
mkPreset(1, "UTC"),
1155+
mkSchedule("* 9-18 * * 1-5", 2),
1156+
mkSchedule("* 9-13 * * 6,0", 3),
1157+
),
1158+
at: mustParseTime(t, time.RFC1123, "Mon, 02 Jun 2025 14:00:00 UTC"),
1159+
expectedCalculatedInstances: 2,
1160+
},
1161+
{
1162+
name: "Second schedule",
1163+
snapshot: mkSnapshot(
1164+
mkPreset(1, "UTC"),
1165+
mkSchedule("* 9-18 * * 1-5", 2),
1166+
mkSchedule("* 9-13 * * 6,0", 3),
1167+
),
1168+
at: mustParseTime(t, time.RFC1123, "Sat, 07 Jun 2025 10:00:00 UTC"),
1169+
expectedCalculatedInstances: 3,
1170+
},
1171+
{
1172+
name: "Outside schedule",
1173+
snapshot: mkSnapshot(
1174+
mkPreset(1, "UTC"),
1175+
mkSchedule("* 9-18 * * 1-5", 2),
1176+
mkSchedule("* 9-13 * * 6,0", 3),
1177+
),
1178+
at: mustParseTime(t, time.RFC1123, "Sat, 07 Jun 2025 14:00:00 UTC"),
1179+
expectedCalculatedInstances: 1,
1180+
},
10761181
}
10771182

10781183
for _, tc := range testCases {

0 commit comments

Comments
 (0)