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)
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