mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 11:44:49 +08:00
correct erratically failing spec
This commit is contained in:
parent
d65570a8a1
commit
aeedecd27c
|
@ -99,7 +99,7 @@ class DiscourseRedis
|
|||
@fallback_handler = DiscourseRedis::FallbackHandler.instance
|
||||
end
|
||||
|
||||
def resolve
|
||||
def resolve(client = nil)
|
||||
if !@fallback_handler.master
|
||||
@fallback_handler.verify_master unless @fallback_handler.running?
|
||||
return @slave_options
|
||||
|
@ -108,7 +108,7 @@ class DiscourseRedis
|
|||
begin
|
||||
options = @options.dup
|
||||
options.delete(:connector)
|
||||
client = Redis::Client.new(options)
|
||||
client ||= Redis::Client.new(options)
|
||||
loading = client.call([:info]).split("\r\n").include?("loading:1")
|
||||
loading ? @slave_options : @options
|
||||
rescue Redis::ConnectionError, Redis::CannotConnectError, RuntimeError => ex
|
||||
|
|
|
@ -116,12 +116,24 @@ describe DiscourseRedis do
|
|||
end
|
||||
end
|
||||
|
||||
class BrokenRedis
|
||||
def initialize(error)
|
||||
@error = error
|
||||
end
|
||||
|
||||
def call(*args)
|
||||
raise @error
|
||||
end
|
||||
|
||||
def disconnect
|
||||
end
|
||||
end
|
||||
|
||||
it "should return the slave config when master's hostname cannot be resolved" do
|
||||
begin
|
||||
error = RuntimeError.new('Name or service not known')
|
||||
|
||||
Redis::Client.any_instance.expects(:call).raises(error).once
|
||||
expect { connector.resolve }.to raise_error(error)
|
||||
expect { connector.resolve(BrokenRedis.new(error)) }.to raise_error(error)
|
||||
fallback_handler.instance_variable_get(:@timer_task).shutdown
|
||||
expect(fallback_handler.running?).to eq(false)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user