71 lines
2.0 KiB
Ruby
71 lines
2.0 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Gitlab::Git::Storage::FailureInfo, :broken_storage do
|
|
let(:storage_name) { 'default' }
|
|
let(:hostname) { Gitlab::Environment.hostname }
|
|
let(:cache_key) { "storage_accessible:#{storage_name}:#{hostname}" }
|
|
|
|
def value_from_redis(name)
|
|
Gitlab::Git::Storage.redis.with do |redis|
|
|
redis.hmget(cache_key, name)
|
|
end.first
|
|
end
|
|
|
|
def set_in_redis(name, value)
|
|
Gitlab::Git::Storage.redis.with do |redis|
|
|
redis.zadd(Gitlab::Git::Storage::REDIS_KNOWN_KEYS, 0, cache_key)
|
|
redis.hmset(cache_key, name, value)
|
|
end.first
|
|
end
|
|
|
|
describe '.reset_all!' do
|
|
it 'clears all entries form redis' do
|
|
set_in_redis(:failure_count, 10)
|
|
|
|
described_class.reset_all!
|
|
|
|
key_exists = Gitlab::Git::Storage.redis.with { |redis| redis.exists(cache_key) }
|
|
|
|
expect(key_exists).to be_falsey
|
|
end
|
|
|
|
it 'does not break when there are no keys in redis' do
|
|
expect { described_class.reset_all! }.not_to raise_error
|
|
end
|
|
end
|
|
|
|
describe '.load' do
|
|
it 'loads failure information for a storage on a host' do
|
|
first_failure = Time.parse("2017-11-14 17:52:30")
|
|
last_failure = Time.parse("2017-11-14 18:54:37")
|
|
failure_count = 11
|
|
|
|
set_in_redis(:first_failure, first_failure.to_i)
|
|
set_in_redis(:last_failure, last_failure.to_i)
|
|
set_in_redis(:failure_count, failure_count.to_i)
|
|
|
|
info = described_class.load(cache_key)
|
|
|
|
expect(info.first_failure).to eq(first_failure)
|
|
expect(info.last_failure).to eq(last_failure)
|
|
expect(info.failure_count).to eq(failure_count)
|
|
end
|
|
end
|
|
|
|
describe '#no_failures?' do
|
|
it 'is true when there are no failures' do
|
|
info = described_class.new(nil, nil, 0)
|
|
|
|
expect(info.no_failures?).to be_truthy
|
|
end
|
|
|
|
it 'is false when there are failures' do
|
|
info = described_class.new(Time.parse("2017-11-14 17:52:30"),
|
|
Time.parse("2017-11-14 18:54:37"),
|
|
20)
|
|
|
|
expect(info.no_failures?).to be_falsy
|
|
end
|
|
end
|
|
end
|