Commit 084a0532 authored by Jennie Louie's avatar Jennie Louie

Add Geo replication example to pypi package spec

parent d7406570
...@@ -399,6 +399,10 @@ module QA ...@@ -399,6 +399,10 @@ module QA
ENV['GITLAB_QA_USER_AGENT'] ENV['GITLAB_QA_USER_AGENT']
end end
def geo_environment?
QA::Runtime::Scenario.attributes.include?(:geo_secondary_address)
end
private private
def remote_grid_credentials def remote_grid_credentials
......
...@@ -87,6 +87,7 @@ module QA ...@@ -87,6 +87,7 @@ module QA
after do after do
runner.remove_via_api! runner.remove_via_api!
project&.remove_via_api!
end end
it 'publishes a pypi package and deletes it', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1087' do it 'publishes a pypi package and deletes it', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1087' do
...@@ -108,6 +109,32 @@ module QA ...@@ -108,6 +109,32 @@ module QA
end end
end end
end end
context 'Geo', :orchestrated, :geo do
it 'replicates a published pypi package to the Geo secondary site', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1120' do
QA::Runtime::Logger.debug('Visiting the secondary Geo site')
QA::Flow::Login.while_signed_in(address: :geo_secondary) do
EE::Page::Main::Banner.perform do |banner|
expect(banner).to have_secondary_read_only_banner
end
Page::Main::Menu.perform(&:go_to_projects)
Page::Dashboard::Projects.perform do |dashboard|
dashboard.wait_for_project_replication(project.name)
dashboard.go_to_project(project.name)
end
Page::Project::Menu.perform(&:click_packages_link)
Page::Project::Packages::Index.perform do |index|
index.wait_for_package_replication(package_name)
expect(index).to have_package(package_name)
end
end
end
end
end end
end end
end end
...@@ -40,6 +40,8 @@ module QA ...@@ -40,6 +40,8 @@ module QA
tags_for_rspec.push(%w[--tag ~orchestrated]) unless (%w[-t --tag] & options).any? tags_for_rspec.push(%w[--tag ~orchestrated]) unless (%w[-t --tag] & options).any?
end end
tags_for_rspec.push(%w[--tag ~geo]) unless QA::Runtime::Env.geo_environment?
tags_for_rspec.push(%w[--tag ~skip_signup_disabled]) if QA::Runtime::Env.signup_disabled? tags_for_rspec.push(%w[--tag ~skip_signup_disabled]) if QA::Runtime::Env.signup_disabled?
tags_for_rspec.push(%w[--tag ~skip_live_env]) if QA::Runtime::Env.dot_com? tags_for_rspec.push(%w[--tag ~skip_live_env]) if QA::Runtime::Env.dot_com?
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
require 'active_support/core_ext/hash' require 'active_support/core_ext/hash'
RSpec.describe QA::Specs::Runner do RSpec.describe QA::Specs::Runner do
shared_examples 'excludes orchestrated' do shared_examples 'excludes orchestrated and geo' do
it 'excludes the orchestrated tag and includes default args' do it 'excludes the orchestrated and geo tags and includes default args' do
expect_rspec_runner_arguments(['--tag', '~orchestrated', *described_class::DEFAULT_TEST_PATH_ARGS]) expect_rspec_runner_arguments(['--tag', '~orchestrated', '--tag', '~geo', *described_class::DEFAULT_TEST_PATH_ARGS])
subject.perform subject.perform
end end
...@@ -18,13 +18,13 @@ RSpec.describe QA::Specs::Runner do ...@@ -18,13 +18,13 @@ RSpec.describe QA::Specs::Runner do
QA::Runtime::Scenario.define(:gitlab_address, "http://gitlab.test") QA::Runtime::Scenario.define(:gitlab_address, "http://gitlab.test")
end end
it_behaves_like 'excludes orchestrated' it_behaves_like 'excludes orchestrated and geo'
context 'when tty is set' do context 'when tty is set' do
subject { described_class.new.tap { |runner| runner.tty = true } } subject { described_class.new.tap { |runner| runner.tty = true } }
it 'sets the `--tty` flag' do it 'sets the `--tty` flag' do
expect_rspec_runner_arguments(['--tty', '--tag', '~orchestrated', *described_class::DEFAULT_TEST_PATH_ARGS]) expect_rspec_runner_arguments(['--tty', '--tag', '~orchestrated', '--tag', '~geo', *described_class::DEFAULT_TEST_PATH_ARGS])
subject.perform subject.perform
end end
...@@ -34,7 +34,7 @@ RSpec.describe QA::Specs::Runner do ...@@ -34,7 +34,7 @@ RSpec.describe QA::Specs::Runner do
subject { described_class.new.tap { |runner| runner.tags = %i[orchestrated github] } } subject { described_class.new.tap { |runner| runner.tags = %i[orchestrated github] } }
it 'focuses on the given tags' do it 'focuses on the given tags' do
expect_rspec_runner_arguments(['--tag', 'orchestrated', '--tag', 'github', *described_class::DEFAULT_TEST_PATH_ARGS]) expect_rspec_runner_arguments(['--tag', 'orchestrated', '--tag', 'github', '--tag', '~geo', *described_class::DEFAULT_TEST_PATH_ARGS])
subject.perform subject.perform
end end
...@@ -44,7 +44,7 @@ RSpec.describe QA::Specs::Runner do ...@@ -44,7 +44,7 @@ RSpec.describe QA::Specs::Runner do
subject { described_class.new.tap { |runner| runner.options = %w[--tag smoke] } } subject { described_class.new.tap { |runner| runner.options = %w[--tag smoke] } }
it 'focuses on the given tag without excluded the orchestrated tag' do it 'focuses on the given tag without excluded the orchestrated tag' do
expect_rspec_runner_arguments(['--tag', 'smoke', *described_class::DEFAULT_TEST_PATH_ARGS]) expect_rspec_runner_arguments(['--tag', '~geo', '--tag', 'smoke', *described_class::DEFAULT_TEST_PATH_ARGS])
subject.perform subject.perform
end end
...@@ -53,8 +53,8 @@ RSpec.describe QA::Specs::Runner do ...@@ -53,8 +53,8 @@ RSpec.describe QA::Specs::Runner do
context 'when "qa/specs/features/foo" is set as options' do context 'when "qa/specs/features/foo" is set as options' do
subject { described_class.new.tap { |runner| runner.options = %w[qa/specs/features/foo] } } subject { described_class.new.tap { |runner| runner.options = %w[qa/specs/features/foo] } }
it 'passes the given tests path and excludes the orchestrated tag' do it 'passes the given tests path and excludes the orchestrated and geo tags' do
expect_rspec_runner_arguments(['--tag', '~orchestrated', 'qa/specs/features/foo']) expect_rspec_runner_arguments(['--tag', '~orchestrated', '--tag', '~geo', 'qa/specs/features/foo'])
subject.perform subject.perform
end end
...@@ -64,7 +64,7 @@ RSpec.describe QA::Specs::Runner do ...@@ -64,7 +64,7 @@ RSpec.describe QA::Specs::Runner do
subject { described_class.new.tap { |runner| runner.options = %w[--tag smoke qa/specs/features/foo] } } subject { described_class.new.tap { |runner| runner.options = %w[--tag smoke qa/specs/features/foo] } }
it 'focuses on the given tag and includes the path without excluding the orchestrated tag' do it 'focuses on the given tag and includes the path without excluding the orchestrated tag' do
expect_rspec_runner_arguments(['--tag', 'smoke', 'qa/specs/features/foo']) expect_rspec_runner_arguments(['--tag', '~geo', '--tag', 'smoke', 'qa/specs/features/foo'])
subject.perform subject.perform
end end
...@@ -76,7 +76,7 @@ RSpec.describe QA::Specs::Runner do ...@@ -76,7 +76,7 @@ RSpec.describe QA::Specs::Runner do
end end
it 'includes default args and excludes the skip_signup_disabled tag' do it 'includes default args and excludes the skip_signup_disabled tag' do
expect_rspec_runner_arguments(['--tag', '~orchestrated', '--tag', '~skip_signup_disabled', *described_class::DEFAULT_TEST_PATH_ARGS]) expect_rspec_runner_arguments(['--tag', '~orchestrated', '--tag', '~geo', '--tag', '~skip_signup_disabled', *described_class::DEFAULT_TEST_PATH_ARGS])
subject.perform subject.perform
end end
...@@ -88,8 +88,24 @@ RSpec.describe QA::Specs::Runner do ...@@ -88,8 +88,24 @@ RSpec.describe QA::Specs::Runner do
end end
it 'includes default args and excludes the skip_live_env tag' do it 'includes default args and excludes the skip_live_env tag' do
expect_rspec_runner_arguments(['--tag', '~orchestrated', '--tag', '~skip_live_env', *described_class::DEFAULT_TEST_PATH_ARGS]) expect_rspec_runner_arguments(['--tag', '~orchestrated', '--tag', '~geo', '--tag', '~skip_live_env', *described_class::DEFAULT_TEST_PATH_ARGS])
subject.perform
end
end
context 'when running against a Geo environment' do
before do
QA::Runtime::Scenario.define(:geo_secondary_address, "https://geo.staging.gitlab.com")
end
after do
QA::Runtime::Scenario.attributes.delete(:geo_secondary_address)
end
subject { described_class.new.tap { |runner| runner.tags = %i[geo] } }
it 'includes the geo tag' do
expect_rspec_runner_arguments(['--tag', 'geo', *described_class::DEFAULT_TEST_PATH_ARGS])
subject.perform subject.perform
end end
end end
...@@ -105,7 +121,7 @@ RSpec.describe QA::Specs::Runner do ...@@ -105,7 +121,7 @@ RSpec.describe QA::Specs::Runner do
end end
it 'includes default args and excludes all unsupported tags' do it 'includes default args and excludes all unsupported tags' do
expect_rspec_runner_arguments(['--tag', '~orchestrated', *excluded_feature_tags_except(feature), *described_class::DEFAULT_TEST_PATH_ARGS]) expect_rspec_runner_arguments(['--tag', '~orchestrated', '--tag', '~geo', *excluded_feature_tags_except(feature), *described_class::DEFAULT_TEST_PATH_ARGS])
subject.perform subject.perform
end end
...@@ -130,11 +146,11 @@ RSpec.describe QA::Specs::Runner do ...@@ -130,11 +146,11 @@ RSpec.describe QA::Specs::Runner do
end end
end end
it_behaves_like 'excludes orchestrated' it_behaves_like 'excludes orchestrated and geo'
end end
context 'when features are not specified' do context 'when features are not specified' do
it_behaves_like 'excludes orchestrated' it_behaves_like 'excludes orchestrated and geo'
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