features/support/cukeq_helper.rb in cukeq-0.0.1.dev vs features/support/cukeq_helper.rb in cukeq-0.0.1.dev2

- old
+ new

@@ -10,10 +10,11 @@ end def start_master pids << fork { CukeQ::Master.execute(MASTER_ARGS) } ensure_running + ensure_listening(master_url) end def start_slave pids << fork { CukeQ::Slave.execute } ensure_running @@ -21,11 +22,13 @@ def start_report_app app = report_app() pids << fork { app.start } + ensure_running + ensure_listening(app.url) end def post(url, data) uri = URI.parse(url) req = Net::HTTP::Post.new(uri.path) @@ -49,25 +52,43 @@ raise "process died: #{status.inspect}" if pid sleep 0.5 end end + def ensure_listening(url) + max_time = Time.now + 10 + until listening?(url) + if Time.now > max_time + raise "timed out waiting for #{url} to respond" + end + sleep 0.1 + end + end + def report_app @report_app ||= ReportApp.new end def pids @pids ||= [] end def execute_request(url, req) - res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) } + res = Net::HTTP.new(url.host, url.port).start { |http| http.request(req) } case res when Net::HTTPSuccess res.body else res.error! end end -end \ No newline at end of file + def listening?(url) + uri = URI.parse(url) + TCPSocket.new(uri.host, uri.port).close + true + rescue + false + end + +end