mirror of
https://github.com/jimeh/amqp-failover.git
synced 2026-02-19 10:56:44 +00:00
lots of updates, and all specs PASS!! ^_^
This commit is contained in:
59
spec/integration/a_simple_spec.rb
Normal file
59
spec/integration/a_simple_spec.rb
Normal file
@@ -0,0 +1,59 @@
|
||||
# encoding: utf-8
|
||||
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__))
|
||||
|
||||
require 'spec_helper'
|
||||
require 'mq'
|
||||
require 'amqp'
|
||||
require 'amqp/server'
|
||||
require 'server_helper'
|
||||
|
||||
describe "A simple AMQP connection with FailoverClient loaded" do
|
||||
|
||||
after(:all) do
|
||||
ServerHelper.clear_logs
|
||||
end
|
||||
|
||||
it "should be using FailoverClient" do
|
||||
AMQP.client.should == AMQP::FailoverClient
|
||||
end
|
||||
|
||||
it "should be able to connect" do
|
||||
EM.run {
|
||||
port = 15672
|
||||
timeout = 2
|
||||
serv = start_server(port)
|
||||
EM.add_timer(1.5) {
|
||||
conn = AMQP.connect(:host => 'localhost', :port => 15672)
|
||||
EM.add_timer(0.1) {
|
||||
conn.should be_connected
|
||||
serv.stop
|
||||
log = serv.log
|
||||
log.size.should == 3
|
||||
(0..2).each { |i| log[i]['method'].should == "send" }
|
||||
log[0]['class'].should == 'AMQP::Protocol::Connection::Start'
|
||||
log[1]['class'].should == 'AMQP::Protocol::Connection::Tune'
|
||||
log[2]['class'].should == 'AMQP::Protocol::Connection::OpenOk'
|
||||
EM.stop
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
it "should be able to connect and get disconnected" do
|
||||
EM.run {
|
||||
serv = start_server(25672)
|
||||
EM.add_timer(0.1) {
|
||||
conn = AMQP.connect(:host => 'localhost', :port => 25672)
|
||||
EM.add_timer(0.1) {
|
||||
conn.should be_connected
|
||||
serv.stop
|
||||
EM.add_timer(0.1) {
|
||||
conn.should_not be_connected
|
||||
EM.stop
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
57
spec/integration/full_failover_spec.rb
Normal file
57
spec/integration/full_failover_spec.rb
Normal file
@@ -0,0 +1,57 @@
|
||||
# encoding: utf-8
|
||||
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__))
|
||||
|
||||
require 'spec_helper'
|
||||
require 'amqp/server'
|
||||
require 'server_helper'
|
||||
|
||||
describe "Full Failover support of AMQP gem" do
|
||||
|
||||
after(:all) do
|
||||
ServerHelper.clear_logs
|
||||
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
|
||||
conn.settings[:port].should == 35672
|
||||
serv1.log.should have(3).items
|
||||
serv2.log.should have(3).items
|
||||
EM.add_timer(0.1) {
|
||||
serv2.stop
|
||||
EM.stop
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,48 +0,0 @@
|
||||
# encoding: utf-8
|
||||
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__))
|
||||
|
||||
require 'spec_helper'
|
||||
require 'amqp/server'
|
||||
require 'server_helper'
|
||||
|
||||
describe "Simple AMQP connection with FailoverClient loaded" do
|
||||
|
||||
before(:all) do
|
||||
@log = ServerHelper.log
|
||||
AMQP.client = AMQP::FailoverClient
|
||||
end
|
||||
|
||||
it "should be connected" do
|
||||
EM.run {
|
||||
sig = EM.start_server('localhost', 15672, ServerHelper)
|
||||
conn = AMQP.connect(:host => 'localhost', :port => 15672)
|
||||
EM.add_timer(0.1) {
|
||||
conn.should be_connected
|
||||
@log.size.should == 3
|
||||
(0..2).each { |i| @log[i][0].should == "send" }
|
||||
@log[0][1].payload.should be_a(AMQP::Protocol::Connection::Start)
|
||||
@log[1][1].payload.should be_a(AMQP::Protocol::Connection::Tune)
|
||||
@log[2][1].payload.should be_a(AMQP::Protocol::Connection::OpenOk)
|
||||
EM.stop
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
it "should connect and get disconnected" do
|
||||
lambda {
|
||||
EM.run {
|
||||
spid = start_server
|
||||
conn = AMQP.connect(:host => 'localhost', :port => 15672)
|
||||
EM.add_timer(0.1) {
|
||||
conn.should be_connected
|
||||
stop_server(spid)
|
||||
EM.add_timer(0.1) {
|
||||
conn.should_not be_connected
|
||||
EM.stop
|
||||
}
|
||||
}
|
||||
}
|
||||
}.should raise_error(AMQP::Error, "Could not connect to server localhost:15672")
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user