Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-01-13 18:07:53 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-01-13 18:07:53 +0300
commita5ab3467a705b62911feacc3cf627fdbb00aa198 (patch)
tree65143ce13405efccb922fc428624ad57c38b6efa /spec/lib/gitlab/gitaly_client_spec.rb
parenteb30dd6e28f6fc9eb8021d205f6ed84511f001e2 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/gitlab/gitaly_client_spec.rb')
-rw-r--r--spec/lib/gitlab/gitaly_client_spec.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/spec/lib/gitlab/gitaly_client_spec.rb b/spec/lib/gitlab/gitaly_client_spec.rb
index 0d9719a5663..ebf56c0ae66 100644
--- a/spec/lib/gitlab/gitaly_client_spec.rb
+++ b/spec/lib/gitlab/gitaly_client_spec.rb
@@ -229,6 +229,59 @@ describe Gitlab::GitalyClient do
end
end
end
+
+ context 'deadlines', :request_store do
+ let(:request_deadline) { real_time + 10.0 }
+
+ before do
+ allow(Gitlab::RequestContext.instance).to receive(:request_deadline).and_return(request_deadline)
+ end
+
+ it 'includes the deadline information' do
+ kword_args = described_class.request_kwargs('default', timeout: 2)
+
+ expect(kword_args[:deadline])
+ .to be_within(1).of(real_time + 2)
+ expect(kword_args[:metadata][:deadline_type]).to eq("regular")
+ end
+
+ it 'limits the deadline do the request deadline if that is closer', :aggregate_failures do
+ kword_args = described_class.request_kwargs('default', timeout: 15)
+
+ expect(kword_args[:deadline]).to eq(request_deadline)
+ expect(kword_args[:metadata][:deadline_type]).to eq("limited")
+ end
+
+ it 'does not limit calls in sidekiq' do
+ expect(Sidekiq).to receive(:server?).and_return(true)
+
+ kword_args = described_class.request_kwargs('default', timeout: 6.hours.to_i)
+
+ expect(kword_args[:deadline]).to be_within(1).of(real_time + 6.hours.to_i)
+ expect(kword_args[:metadata][:deadline_type]).to be_nil
+ end
+
+ it 'does not limit calls in sidekiq when allowed unlimited' do
+ expect(Sidekiq).to receive(:server?).and_return(true)
+
+ kword_args = described_class.request_kwargs('default', timeout: 0)
+
+ expect(kword_args[:deadline]).to be_nil
+ expect(kword_args[:metadata][:deadline_type]).to be_nil
+ end
+
+ it 'includes only the deadline specified by the timeout when there was no deadline' do
+ allow(Gitlab::RequestContext.instance).to receive(:request_deadline).and_return(nil)
+ kword_args = described_class.request_kwargs('default', timeout: 6.hours.to_i)
+
+ expect(kword_args[:deadline]).to be_within(1).of(Gitlab::Metrics::System.real_time + 6.hours.to_i)
+ expect(kword_args[:metadata][:deadline_type]).to be_nil
+ end
+
+ def real_time
+ Gitlab::Metrics::System.real_time
+ end
+ end
end
describe 'enforce_gitaly_request_limits?' do