class TestDiff::TimingTracker
estimates and prints how long it will take to empty a queue
Public Class Methods
new(queue)
click to toggle source
# File lib/test_diff/timing_tracker.rb, line 11 def initialize(queue) @queue = queue @original_size = queue_size end
run(queue, &block)
click to toggle source
# File lib/test_diff/timing_tracker.rb, line 5 def self.run(queue, &block) new(queue).run(&block) end
Public Instance Methods
run() { || ... }
click to toggle source
# File lib/test_diff/timing_tracker.rb, line 16 def run @start_time = Time.now thread = start_timing_thread yield thread.kill end
Private Instance Methods
do_timing()
click to toggle source
# File lib/test_diff/timing_tracker.rb, line 43 def do_timing log_info "Timing #{@original_size} specs" sleep_time = 90.0 until queue_empty? last_current_size = queue_size sleep(sleep_time) current_size = queue_size current_completed = last_current_size - current_size if current_completed > 0 est_time_left = (sleep_time / current_completed.to_f) * current_size log_info "specs left #{current_size}, est time_left: #{est_time_left.to_i}" else log_info "specs left #{current_size}, est time_left: N/A" end end end
queue_empty?()
click to toggle source
# File lib/test_diff/timing_tracker.rb, line 60 def queue_empty? @queue.empty? end
queue_size()
click to toggle source
# File lib/test_diff/timing_tracker.rb, line 25 def queue_size @queue.size end
seconds_elapsed()
click to toggle source
# File lib/test_diff/timing_tracker.rb, line 29 def seconds_elapsed (Time.now - @start_time).to_f end
start_timing_thread()
click to toggle source
# File lib/test_diff/timing_tracker.rb, line 33 def start_timing_thread Thread.new do begin do_timing rescue => e log_error "----- Timing failed: #{e.message} -----" end end end