diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-09 09:10:29 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-09 09:10:29 +0300 |
commit | a5628d3b6d9b74f5902f790ceddd6374148c9d71 (patch) | |
tree | 3f62d7996083daa0eae175beea397ec0e0d490ed /spec | |
parent | bd02c91f731fd4a02fd44f72b06f6e5f33625065 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r-- | spec/lib/gitlab/checks/matching_merge_request_spec.rb | 38 | ||||
-rw-r--r-- | spec/lib/gitlab/health_checks/redis/trace_chunks_check_spec.rb | 8 | ||||
-rw-r--r-- | spec/lib/gitlab/instrumentation/redis_spec.rb | 3 | ||||
-rw-r--r-- | spec/lib/gitlab/redis/trace_chunks_spec.rb | 55 | ||||
-rw-r--r-- | spec/support/redis/redis_shared_examples.rb | 20 |
5 files changed, 90 insertions, 34 deletions
diff --git a/spec/lib/gitlab/checks/matching_merge_request_spec.rb b/spec/lib/gitlab/checks/matching_merge_request_spec.rb index 74087d13e2c..feda488a936 100644 --- a/spec/lib/gitlab/checks/matching_merge_request_spec.rb +++ b/spec/lib/gitlab/checks/matching_merge_request_spec.rb @@ -56,6 +56,9 @@ RSpec.describe Gitlab::Checks::MatchingMergeRequest do before do expect(::Gitlab::Database::LoadBalancing).to receive(:enable?).at_least(:once).and_return(true) allow(::Gitlab::Database::LoadBalancing::Sticking).to receive(:all_caught_up?).and_return(all_caught_up) + + expect(::Gitlab::Database::LoadBalancing::Sticking).to receive(:select_valid_host).with(:project, project.id).and_call_original + allow(::Gitlab::Database::LoadBalancing::Sticking).to receive(:select_caught_up_replicas).with(:project, project.id).and_return(all_caught_up) end shared_examples 'secondary that has caught up to a primary' do @@ -84,39 +87,12 @@ RSpec.describe Gitlab::Checks::MatchingMergeRequest do end end - context 'with load_balancing_atomic_replica feature flag enabled' do - before do - stub_feature_flags(load_balancing_atomic_replica: true) - - expect(::Gitlab::Database::LoadBalancing::Sticking).to receive(:select_valid_host).with(:project, project.id).and_call_original - allow(::Gitlab::Database::LoadBalancing::Sticking).to receive(:select_caught_up_replicas).with(:project, project.id).and_return(all_caught_up) - end - - it_behaves_like 'secondary that has caught up to a primary' + it_behaves_like 'secondary that has caught up to a primary' - context 'on secondary behind primary' do - let(:all_caught_up) { false } - - it_behaves_like 'secondary that is lagging primary' - end - end + context 'on secondary behind primary' do + let(:all_caught_up) { false } - context 'with load_balancing_atomic_replica feature flag disabled' do - before do - stub_feature_flags(load_balancing_atomic_replica: false) - - expect(::Gitlab::Database::LoadBalancing::Sticking).not_to receive(:select_valid_host) - expect(::Gitlab::Database::LoadBalancing::Sticking).to receive(:unstick_or_continue_sticking).and_call_original - allow(::Gitlab::Database::LoadBalancing::Sticking).to receive(:all_caught_up?).and_return(all_caught_up) - end - - it_behaves_like 'secondary that has caught up to a primary' - - context 'on secondary behind primary' do - let(:all_caught_up) { false } - - it_behaves_like 'secondary that is lagging primary' - end + it_behaves_like 'secondary that is lagging primary' end end end diff --git a/spec/lib/gitlab/health_checks/redis/trace_chunks_check_spec.rb b/spec/lib/gitlab/health_checks/redis/trace_chunks_check_spec.rb new file mode 100644 index 00000000000..5fb5232a4dd --- /dev/null +++ b/spec/lib/gitlab/health_checks/redis/trace_chunks_check_spec.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_relative '../simple_check_shared' + +RSpec.describe Gitlab::HealthChecks::Redis::TraceChunksCheck do + include_examples 'simple_check', 'redis_trace_chunks_ping', 'RedisTraceChunks', 'PONG' +end diff --git a/spec/lib/gitlab/instrumentation/redis_spec.rb b/spec/lib/gitlab/instrumentation/redis_spec.rb index d712d09bdd8..6cddf958f2a 100644 --- a/spec/lib/gitlab/instrumentation/redis_spec.rb +++ b/spec/lib/gitlab/instrumentation/redis_spec.rb @@ -68,7 +68,8 @@ RSpec.describe Gitlab::Instrumentation::Redis do .to contain_exactly(details_row.merge(storage: 'ActionCable'), details_row.merge(storage: 'Cache'), details_row.merge(storage: 'Queues'), - details_row.merge(storage: 'SharedState')) + details_row.merge(storage: 'SharedState'), + details_row.merge(storage: 'TraceChunks')) end end end diff --git a/spec/lib/gitlab/redis/trace_chunks_spec.rb b/spec/lib/gitlab/redis/trace_chunks_spec.rb new file mode 100644 index 00000000000..e974dc519d6 --- /dev/null +++ b/spec/lib/gitlab/redis/trace_chunks_spec.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::Redis::TraceChunks do + let(:instance_specific_config_file) { "config/redis.trace_chunks.yml" } + let(:environment_config_file_name) { "GITLAB_REDIS_TRACE_CHUNKS_CONFIG_FILE" } + let(:shared_state_config_file) { nil } + + before do + allow(Gitlab::Redis::SharedState).to receive(:config_file_name).and_return(shared_state_config_file) + end + + include_examples "redis_shared_examples" + + describe '.config_file_name' do + subject { described_class.config_file_name } + + let(:rails_root) { Dir.mktmpdir('redis_shared_examples') } + + before do + # Undo top-level stub of config_file_name because we are testing that method now. + allow(described_class).to receive(:config_file_name).and_call_original + + allow(described_class).to receive(:rails_root).and_return(rails_root) + FileUtils.mkdir_p(File.join(rails_root, 'config')) + end + + after do + FileUtils.rm_rf(rails_root) + end + + context 'when there is only a resque.yml' do + before do + FileUtils.touch(File.join(rails_root, 'config/resque.yml')) + end + + it { expect(subject).to eq("#{rails_root}/config/resque.yml") } + + context 'and there is a global env override' do + before do + stub_env('GITLAB_REDIS_CONFIG_FILE', 'global override') + end + + it { expect(subject).to eq('global override') } + + context 'and SharedState has a different config file' do + let(:shared_state_config_file) { 'shared state config file' } + + it { expect(subject).to eq('shared state config file') } + end + end + end + end +end diff --git a/spec/support/redis/redis_shared_examples.rb b/spec/support/redis/redis_shared_examples.rb index 6e91b53ee5a..25eab5fd6e4 100644 --- a/spec/support/redis/redis_shared_examples.rb +++ b/spec/support/redis/redis_shared_examples.rb @@ -16,6 +16,7 @@ RSpec.shared_examples "redis_shared_examples" do let(:sentinel_port) { 26379 } let(:config_with_environment_variable_inside) { "spec/fixtures/config/redis_config_with_env.yml"} let(:config_env_variable_url) {"TEST_GITLAB_REDIS_URL"} + let(:rails_root) { Dir.mktmpdir('redis_shared_examples') } before do allow(described_class).to receive(:config_file_name).and_return(Rails.root.join(config_file_name).to_s) @@ -29,8 +30,6 @@ RSpec.shared_examples "redis_shared_examples" do describe '.config_file_name' do subject { described_class.config_file_name } - let(:rails_root) { Dir.mktmpdir('redis_shared_examples') } - before do # Undo top-level stub of config_file_name because we are testing that method now. allow(described_class).to receive(:config_file_name).and_call_original @@ -237,6 +236,23 @@ RSpec.shared_examples "redis_shared_examples" do described_class.with { |_redis_shared_example| true } end end + + context 'when there is no config at all' do + before do + # Undo top-level stub of config_file_name because we are testing that method now. + allow(described_class).to receive(:config_file_name).and_call_original + + allow(described_class).to receive(:rails_root).and_return(rails_root) + end + + after do + FileUtils.rm_rf(rails_root) + end + + it 'can run an empty block' do + expect { described_class.with { nil } }.not_to raise_error + end + end end describe '#sentinels' do |