test/helper.rb in spqr-0.2.0 vs test/helper.rb in spqr-0.2.2
- old
+ new
@@ -1,6 +1,6 @@
-require 'rubygems'
+require 'rubygems' rescue nil
require 'test/unit'
require 'qmf'
require 'timeout'
require 'thread'
@@ -21,11 +21,11 @@
def queue
@q
end
def agent_added(agent)
- puts "GOT AN AGENT: #{agent}" if DEBUG
+ puts "GOT AN AGENT: #{agent} at #{Time.now.utc}" if DEBUG
@q << agent
end
end
def app_setup(*classes)
@@ -33,36 +33,48 @@
$notify_handler = AgentNotifyHandler.new
$connection = Qmf::Connection.new(Qmf::ConnectionSettings.new)
$console = Qmf::Console.new($notify_handler)
$broker = $console.add_connection($connection)
end
-
- @app = SPQR::App.new(:loglevel => (DEBUG ? :debug : :fatal))
- @app.register *classes
+
+ sleep 0.5
+ $broker.wait_for_stable
+
@child_pid = fork do
+ sleep 0.5
unless DEBUG
# replace stdin/stdout/stderr
$stdin.reopen("/dev/null", "r")
$stdout.reopen("/dev/null", "w")
$stderr.reopen("/dev/null", "w")
+ else
+ ENV['QPID_TRACE'] = "1"
end
+ exec("#{File.dirname(__FILE__)}/generic-agent.rb", *classes.map {|cl| cl.to_s})
+ exit! 127
+
+ @app = SPQR::App.new(:loglevel => (DEBUG ? :debug : :fatal), :appname=>"#{classes.join("")}[#{Process.pid}]")
+ @app.register *classes
+
@app.main
end
- $broker.wait_for_stable
+ begin
+ Timeout.timeout(12) do
+ k = ""
+ begin
+ @ag = $notify_handler.queue.pop
+ k = @ag.key
+ puts "GOT A KEY: #{k} at #{Time.now.utc}" if DEBUG
+ end until k != "1.0"
- Timeout.timeout(5) do
- k = ""
- begin
- @ag = $notify_handler.queue.pop
- k = @ag.key
- puts "GOT A KEY: #{k}" if DEBUG
- end until k != "1.0"
-
- # XXX
- sleep 0.45
- puts "ESCAPING FROM TIMEOUT" if DEBUG
+ # XXX
+ puts "ESCAPING FROM TIMEOUT at #{Time.now.utc}" if DEBUG
+ end
+ rescue Timeout::Error
+ puts "QUEUE SIZE WAS #{$notify_handler.queue.size} at #{Time.now.utc}" if DEBUG
+ raise
end
end
def teardown