Skip to content

Commit 95eae15

Browse files
committed
Enforce a range for supported chunk sizes in CI
1 parent f65f7ff commit 95eae15

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

ruby/lib/ci/queue/strategy/suite_bin_packing.rb

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ def initialize(config, redis: nil)
2929
{}
3030
end
3131

32-
@max_duration = config&.suite_max_duration || 120_000
32+
@minimum_max_duration = config&.suite_max_duration || 120_000
33+
@maximum_max_duration = config&.suite_max_duration || 300_000
3334
@fallback_duration = config&.timing_fallback_duration || 100.0
3435
@buffer_percent = config&.suite_buffer_percent || 10
3536

@@ -106,8 +107,8 @@ def calculate_dynamic_max_duration(tests)
106107

107108
puts "parallel_job_count: #{parallel_job_count}"
108109

109-
# If no parallel job count, fall back to configured max_duration
110-
return @max_duration unless parallel_job_count && parallel_job_count > 0
110+
# If no parallel job count, fall back to configured minimum max_duration
111+
return @minimum_max_duration unless parallel_job_count && parallel_job_count > 0
111112

112113
# Calculate total duration of all tests
113114
total_duration = tests.sum do |test|
@@ -118,11 +119,12 @@ def calculate_dynamic_max_duration(tests)
118119
# This gives us the target max chunk time
119120
base_max_duration = total_duration.to_f / parallel_job_count
120121

121-
puts "base_max_duration: #{base_max_duration}, @max_duration: #{@max_duration}"
122+
puts "base_max_duration: #{base_max_duration}, @minimum_max_duration: #{@minimum_max_duration}, @maximum_max_duration: #{@maximum_max_duration}"
122123

123-
# Ensure we don't go below a minimum reasonable value
124+
# Ensure we don't go above or below reasonable floor values.
124125
# Use configured max_duration as a floor to prevent extremely small chunks
125-
[base_max_duration, @max_duration].max
126+
max_duration = [base_max_duration, @maximum_max_duration].min
127+
[max_duration, @minimum_max_duration].max
126128
end
127129

128130
def create_chunks_for_suite(suite_name, suite_tests, max_duration)

0 commit comments

Comments
 (0)