mirror of
https://github.com/jimeh/amqp-failover.git
synced 2026-02-19 10:56:44 +00:00
70 lines
1.8 KiB
Ruby
70 lines
1.8 KiB
Ruby
# encoding: utf-8
|
|
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__))
|
|
|
|
require 'spec_helper'
|
|
require 'amqp/server'
|
|
require 'server_helper'
|
|
require 'logger_helper'
|
|
|
|
describe "Full Failover support of AMQP gem" do
|
|
|
|
before(:all) do
|
|
@flog = LoggerHelper.new
|
|
AMQP::Failover.logger = @flog
|
|
end
|
|
|
|
after(:all) do
|
|
ServerHelper.clear_logs
|
|
AMQP::Failover.logger = nil
|
|
end
|
|
|
|
it "should be able to connect" do
|
|
EM.run {
|
|
serv = start_server(15672)
|
|
EM.add_timer(0.1) {
|
|
conn = AMQP.connect(:host => 'localhost', :port => 15672)
|
|
conn.failover.should be_nil
|
|
EM.add_timer(0.1) {
|
|
conn.should be_connected
|
|
EM.stop
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
it "should be able to connect and failover" do
|
|
EM.run {
|
|
serv1 = start_server(25672)
|
|
serv2 = start_server(35672)
|
|
EM.add_timer(0.1) {
|
|
conn = AMQP.connect({:hosts => [{:port => 25672}, {:port => 35672}]})
|
|
conn.failover.primary[:port].should == 25672
|
|
conn.settings[:port].should == 25672
|
|
conn.settings.should == conn.failover.primary
|
|
EM.add_timer(0.1) {
|
|
conn.should be_connected
|
|
serv1.log.should have(3).items
|
|
serv2.log.should have(0).items
|
|
serv1.stop
|
|
EM.add_timer(0.1) {
|
|
conn.should be_connected
|
|
[:error, :info].each do |i|
|
|
@flog.send("#{i}_log").should have(1).item
|
|
@flog.send("#{i}_log")[0][0].should match(/connect to or lost connection.+25672.+attempting connection.+35672/i)
|
|
end
|
|
conn.settings[:port].should == 35672
|
|
serv1.log.should have(3).items
|
|
serv2.log.should have(3).items
|
|
conn.close
|
|
EM.add_timer(0.1) {
|
|
serv2.stop
|
|
EM.stop
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
end
|