Files
gitlab-foss/qa/Rakefile
2025-06-26 18:11:54 +00:00

120 lines
4.2 KiB
Ruby

# frozen_string_literal: true
require_relative "qa"
Dir['tasks/*.rake'].each { |file| load file }
desc "Deletes subgroups within a provided group"
task :delete_subgroups, [:dry_run] do |_, args|
args.with_defaults(dry_run: false)
QA::Tools::DeleteSubgroups.new(dry_run: args[:dry_run]).run
end
desc "Initialize GitLab with an access token"
task :initialize_gitlab_auth, [:address] do |_, args|
QA::Tools::InitializeGitlabAuth.new(args).run
end
desc "Generate Performance Testdata"
task :generate_perf_testdata, :type do |_, args|
args.with_defaults(type: :all)
QA::Tools::GeneratePerfTestdata.new.method(args[:type]).call
end
desc "Run artillery load tests"
task :run_artillery_load_tests do
unless ENV['HOST_URL'] && ENV['LARGE_ISSUE_URL'] && ENV['LARGE_MR_URL']
urls_file = ENV['URLS_FILE_PATH'] || 'urls.yml'
unless File.exist?(urls_file)
raise(<<~ERR)
#{urls_file} file is missing. Please provide correct URLS_FILE_PATH or all of HOST_URL, LARGE_ISSUE_URL and LARGE_MR_URL\n
ERR
end
urls = YAML.safe_load(File.read(urls_file))
ENV['HOST_URL'] = urls["host"]
ENV['LARGE_ISSUE_URL'] = urls["large_issue"]
ENV['LARGE_MR_URL'] = urls["large_mr"]
end
sh('artillery run load/artillery.yml -o report.json')
sh('artillery report report.json -o report.html && rm report.json')
end
desc "Generate data and run load tests"
task generate_data_and_run_load_test: [:generate_perf_testdata, :run_artillery_load_tests]
desc "Deletes test ssh keys a user"
task :delete_test_ssh_keys, [:title_portion, :dry_run] do |_, args|
args.with_defaults(title_portion: 'E2E test key:', dry_run: false)
QA::Tools::DeleteTestSshKeys.new(title_portion: args[:title_portion], dry_run: args[:dry_run]).run
end
desc "Deletes projects directly under the provided group"
task :delete_projects, [:dry_run] do |_, args|
args.with_defaults(dry_run: false)
QA::Tools::DeleteProjects.new(dry_run: args[:dry_run]).run
end
desc "Deletes test users"
task :delete_test_users, [:dry_run, :exclude_users] do |_, args|
args.with_defaults(dry_run: false, exclude_users: nil)
QA::Tools::DeleteTestUsers.new(dry_run: args[:dry_run], exclude_users: args[:exclude_users]).run
end
desc "Deletes snippets"
task :delete_test_snippets, [:dry_run] do |_, args|
args.with_defaults(dry_run: false)
QA::Tools::DeleteTestSnippets.new(dry_run: args[:dry_run]).run
end
namespace :test_resources do
desc "Deletes resources created during E2E test runs"
task :delete, [:file_pattern] do |_, args|
QA::Tools::TestResourcesHandler.new(args[:file_pattern]).run_delete
end
desc "Upload test resources JSON files to GCS"
task :upload, [:file_pattern, :ci_project_name] do |_, args|
QA::Tools::TestResourcesHandler.new(args[:file_pattern]).upload(args[:ci_project_name])
end
desc "Download test resources JSON files from GCS"
task :download, [:ci_project_name] do |_, args|
QA::Tools::TestResourcesHandler.new.download(args[:ci_project_name])
end
end
desc "Deletes user's projects"
task :delete_user_projects, [:dry_run] do |_, args|
args.with_defaults(dry_run: false)
QA::Tools::DeleteUserProjects.new(dry_run: args[:dry_run]).run
end
desc "Deletes user groups"
task :delete_user_groups, [:dry_run, :exclude_groups] do |_, args|
args.with_defaults(dry_run: false, exclude_groups: nil)
QA::Tools::DeleteUserGroups.new(dry_run: args[:dry_run], exclude_groups: args[:exclude_groups]).run
end
desc "Revokes user's personal access tokens"
task :revoke_user_pats, [:dry_run] do |_, args|
args.with_defaults(dry_run: false)
QA::Tools::RevokeUserPersonalAccessTokens.new(dry_run: !!(args[:dry_run].to_s =~ /true|1|y/i)).run
end
desc "Generate group with multiple projects for direct transfer test"
task :generate_direct_transfer_test_group, [:project_tar_paths, :group_path, :project_copies] do |_, args|
QA::Support::GitlabAddress.define_gitlab_address_attribute!
QA::Runtime::Browser.configure!
QA::Runtime::Scenario.from_env(QA::Runtime::Env.runtime_scenario_attributes)
numeric_args = { project_copies: Integer(args[:project_copies], exception: false) }.compact
string_args = args.to_h
.slice(:project_tar_paths, :group_path)
.compact_blank
QA::Tools::GenerateImportTestGroup.new(**string_args, **numeric_args).generate
end