Commit beb7d892 authored by Walmyr's avatar Walmyr

Merge branch 'qa-ml-fix-file-size-test' into 'master'

Fix push file size test

Closes gitlab-org/quality/nightly#113

See merge request gitlab-org/gitlab-ce!31321
parents c36b12d7 6dbf634e
# frozen_string_literal: true # frozen_string_literal: true
module QA module QA
# Failure issue: https://gitlab.com/gitlab-org/quality/nightly/issues/113 context 'Create', :requires_admin do
context 'Create', :requires_admin, :quarantine do
describe 'push after setting the file size limit via admin/application_settings' do describe 'push after setting the file size limit via admin/application_settings' do
before(:context) do before(:context) do
@project = Resource::Project.fabricate_via_api! do |p| @project = Resource::Project.fabricate_via_api! do |p|
...@@ -21,15 +20,22 @@ module QA ...@@ -21,15 +20,22 @@ module QA
it 'push successful when the file size is under the limit' do it 'push successful when the file size is under the limit' do
set_file_size_limit(5) set_file_size_limit(5)
retry_on_fail do
push = push_new_file('oversize_file_1.bin', wait_for_push: true) push = push_new_file('oversize_file_1.bin', wait_for_push: true)
expect(push.output).not_to have_content 'remote: fatal: pack exceeds maximum allowed size' expect(push.output).not_to have_content 'remote: fatal: pack exceeds maximum allowed size'
end end
end
it 'push fails when the file size is above the limit' do it 'push fails when the file size is above the limit' do
set_file_size_limit(1) set_file_size_limit(1)
retry_on_fail do
expect { push_new_file('oversize_file_2.bin', wait_for_push: false) } expect { push_new_file('oversize_file_2.bin', wait_for_push: false) }
.to raise_error(QA::Git::Repository::RepositoryCommandError, /remote: fatal: pack exceeds maximum allowed size/) .to raise_error(QA::Git::Repository::RepositoryCommandError, /remote: fatal: pack exceeds maximum allowed size/)
end end
end
def set_file_size_limit(limit) def set_file_size_limit(limit)
request = Runtime::API::Request.new(@api_client, '/application/settings') request = Runtime::API::Request.new(@api_client, '/application/settings')
...@@ -54,6 +60,22 @@ module QA ...@@ -54,6 +60,22 @@ module QA
output output
end end
# Application settings are cached for up to a minute. So when we change
# the `receive_max_input_size` setting, the setting might not be applied
# for minute. This caused the tests to intermittently fail.
# See https://gitlab.com/gitlab-org/quality/nightly/issues/113
#
# Instead of waiting a minute after changing the setting, we retry the
# attempt to push if it fails. Most of the time the setting is updated in
# under a minute, i.e., in fewer than 6 attempts with a 10 second sleep
# between attempts.
# See https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/30233#note_188616863
def retry_on_fail
Support::Retrier.retry_on_exception(max_attempts: 6, reload_page: nil, sleep_interval: 10) do
yield
end
end
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment