@@ -1073,6 +1073,111 @@ func TestCalculateDesiredInstances(t *testing.T) {
1073
1073
at : mustParseTime (t , time .RFC1123 , "Sun, 08 Jun 2025 14:00:00 UTC" ),
1074
1074
expectedCalculatedInstances : 1 ,
1075
1075
},
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
+ },
1076
1181
}
1077
1182
1078
1183
for _ , tc := range testCases {
0 commit comments