Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions lib/rspecq/queue.rb
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,10 @@ def global_timings
whole_file_timings = populate_splitted_file_timings(redis_timings)
return redis_timings if whole_file_timings.empty?

redis_timings.merge!(whole_file_timings)
redis_timings.sort_by { |_j, d| -d }.to_h
# Make sure that redis_timings overrides whole_file_timings in case
# there are any duplicates
whole_file_timings.merge!(redis_timings)
whole_file_timings.sort_by { |_j, d| -d }.to_h
end

# ordered by execution time desc (slowest are in the head)
Expand Down
13 changes: 13 additions & 0 deletions test/test_queue.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,17 @@ def test_push_jobs_returns_jobs_size

assert_equal 2, queue.push_jobs(["job1", "job2"])
end

def test_timings_reconstruction
queue = RSpecQ::Queue.new(rand_id, rand_id, REDIS_OPTS)

queue.record_build_timing("foo", 42.0)
queue.record_build_timing("foo[1]", 1.0)

queue.update_global_timings

global_timings = queue.global_timings

assert_equal 42.0, global_timings["foo"], "File timing should not be overriden"
end
end