RSpec.configure do |config| config.before(:each, :repository) do TestEnv.clean_test_path end config.before(:all, :broken_storage) do FileUtils.rm_rf Gitlab.config.repositories.storages.broken['path'] end config.before(:each, :broken_storage) do allow(Gitlab::GitalyClient).to receive(:call) do raise GRPC::Unavailable.new('Gitaly broken in this spec') end # Track the maximum number of failures first_failure = Time.parse("2017-11-14 17:52:30") last_failure = Time.parse("2017-11-14 18:54:37") failure_count = Gitlab::CurrentSettings .current_application_settings .circuitbreaker_failure_count_threshold + 1 cache_key = "#{Gitlab::Git::Storage::REDIS_KEY_PREFIX}broken:#{Gitlab::Environment.hostname}" Gitlab::Git::Storage.redis.with do |redis| redis.pipelined do redis.zadd(Gitlab::Git::Storage::REDIS_KNOWN_KEYS, 0, cache_key) redis.hset(cache_key, :first_failure, first_failure.to_i) redis.hset(cache_key, :last_failure, last_failure.to_i) redis.hset(cache_key, :failure_count, failure_count.to_i) end end end config.after(:each, :broken_storage) do Gitlab::Git::Storage.redis.with(&:flushall) end end