bin/probe in utils-0.0.64 vs bin/probe in utils-0.0.65

- old
+ new

@@ -46,36 +46,49 @@ $opt['h'] and usage uri = "druby://localhost:#{$opt['p'] || 6623}" if $opt['l'] - Thread.abort_on_exception = false + Thread.abort_on_exception = $DEBUG class ProbeServer def initialize @jobs = Queue.new - Thread.new { loop } + Thread.new { work_loop } end - def run(job) - @jobs << job + def enqueue(job) + output_message "Job #{cmd(job).inspect} enqueued." + @jobs.push job end + alias run enqueue private + def output_message(msg) + STDOUT.puts msg + STDOUT.flush + end + def run_job(job) + output_message "Job #{cmd(job)} about to run now." fork do - exec $0, *job + exec *cmd(job) end Process.wait end - def loop - while job = @jobs.pop + def work_loop + loop do + job = @jobs.shift run_job job end end + + def cmd(job) + [ $0, *job ] + end end puts "Starting probe server listening to #{uri.inspect}." DRb.start_service(uri, ProbeServer.new) begin @@ -91,10 +104,10 @@ if $opt['c'] puts "Connecting probe server on #{uri.inspect}." DRb.start_service probe_server = DRbObject.new_with_uri(uri) opts = $opt.subhash('n', 't').map { |k, v| v.full? { "-#{k} #{v.inspect}" } }.compact - probe_server.run opts + args + probe_server.enqueue opts + args exit end puts "Running tests in #{args.inspect}"