Skip to content

Commit

Permalink
Add debug information
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisBr committed Sep 14, 2023
1 parent d30b18c commit d4c8a33
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 8 deletions.
8 changes: 4 additions & 4 deletions redis/requeue.lua
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@ if redis.call('hget', owners_key, test) == worker_queue_key then
end

if redis.call('sismember', processed_key, test) == 1 then
return false
return "processed"
end

local global_requeues = tonumber(redis.call('hget', requeues_count_key, '___total___'))
if global_requeues and global_requeues >= tonumber(global_max_requeues) then
return false
return "global_max_requeues"
end

local requeues = tonumber(redis.call('hget', requeues_count_key, test))
if requeues and requeues >= max_requeues then
return false
return "max_requeues_for_test"
end

redis.call('hincrby', requeues_count_key, '___total___', 1)
Expand All @@ -40,4 +40,4 @@ end

redis.call('zrem', zset_key, test)

return true
return "success"
8 changes: 7 additions & 1 deletion ruby/lib/ci/queue.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,13 @@ module Warnings
end

def requeueable?(test_result)
requeueable.nil? || requeueable.call(test_result)
if requeueable.nil?
puts "!!! requeueable.nil?"
true
else
puts "!!! requeueable.source_location: #{requeueable.source_location}"
requeueable.call(test_result)
end
end

def shuffle(tests, random)
Expand Down
9 changes: 7 additions & 2 deletions ruby/lib/ci/queue/redis/worker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,12 @@ def acknowledge(test)
end

def requeue(test, offset: Redis.requeue_offset)
puts "----- start requeue "
test_key = test.id
raise_on_mismatching_test(test_key)
global_max_requeues = config.global_max_requeues(total)

requeued = config.max_requeues > 0 && global_max_requeues > 0 && eval_script(
result = eval_script(
:requeue,
keys: [
key('processed'),
Expand All @@ -121,7 +122,11 @@ def requeue(test, offset: Redis.requeue_offset)
key('owners'),
],
argv: [config.max_requeues, global_max_requeues, test_key, offset],
) == 1
)

puts "----- requeue: #{test_key.inspect} => #{result.inspect}"

requeued = config.max_requeues > 0 && global_max_requeues > 0 && result == "success"

@reserved_test = test_key unless requeued
requeued
Expand Down
6 changes: 5 additions & 1 deletion ruby/lib/minitest/queue.rb
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ def run_from_queue(reporter, *)
end

requeued = false
if failed && CI::Queue.requeueable?(result) && queue.requeue(example)
if failed && (requeable_result = CI::Queue.requeueable?(result)) && (requeue_result = queue.requeue(example))
requeued = true
result.requeue!
reporter.record(result)
Expand All @@ -255,6 +255,10 @@ def run_from_queue(reporter, *)
reporter.record(result)
end

if failed
puts "----- requeable_result=#{requeable_result.inspect},requeue_result=#{requeue_result.inspect}"
end

if !requeued && failed
queue.increment_test_failed
end
Expand Down
1 change: 1 addition & 0 deletions ruby/test/integration/minitest_redis_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ def test_redis_runner
end

assert_empty err
puts out.lines
output = normalize(out.lines.last.strip)
assert_equal 'Ran 11 tests, 8 assertions, 2 failures, 1 errors, 1 skips, 4 requeues in X.XXs', output

Expand Down

0 comments on commit d4c8a33

Please sign in to comment.