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
module QA
# Failure issue: https://gitlab.com/gitlab-org/quality/nightly/issues/113
context 'Create', :requires_admin, :quarantine do
context 'Create', :requires_admin do
describe 'push after setting the file size limit via admin/application_settings' do
before(:context) do
@project = Resource::Project.fabricate_via_api! do |p|
......@@ -21,14 +20,21 @@ module QA
it 'push successful when the file size is under the limit' do
set_file_size_limit(5)
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'
retry_on_fail do
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'
end
end
it 'push fails when the file size is above the limit' do
set_file_size_limit(1)
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/)
retry_on_fail do
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/)
end
end
def set_file_size_limit(limit)
......@@ -54,6 +60,22 @@ module QA
output
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
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