Files
gitlab-foss/spec/lib/gitlab/redis/rate_limiting_spec.rb
2025-07-18 16:07:43 +00:00

61 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Gitlab::Redis::RateLimiting do
include_examples "redis_new_instance_shared_examples", 'rate_limiting', Gitlab::Redis::Cache
describe '.with_suppressed_errors' do
subject(:ping) { described_class.with_suppressed_errors(&:ping) }
before do
allow(described_class).to receive(:with).and_yield(redis)
end
context 'when using Redis' do
let(:redis) { described_class.send(:init_redis, { url: 'redis://127.0.0.0:0' }) }
it 'tracks the error and returns nil' do
expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
.with(a_kind_of(::Redis::CannotConnectError))
expect(ping).to be_nil
end
end
context 'when using RedisCluster' do
let(:redis) do
described_class.send(:init_redis, {
nodes: [
{ host: '127.0.0.0', port: 0, db: 1 },
{ host: '127.0.0.0', port: 0, db: 2 },
{ host: '127.0.0.0', port: 0, db: 3 }
]
})
end
it 'tracks the error and returns nil' do
expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
.with(a_kind_of(::Redis::Cluster::InitialSetupError))
expect(ping).to be_nil
end
end
context 'with a RedisClient exception' do
let(:redis) { instance_double(Redis) }
before do
allow(redis).to receive(:ping).and_raise(::RedisClient::ReadTimeoutError)
end
it 'tracks the error and returns nil' do
expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
.with(a_kind_of(::RedisClient::ReadTimeoutError))
expect(ping).to be_nil
end
end
end
end