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