测试导入项目
为了测试,我们可以在名为 qa-perf-testing 的组下导入我们自己的 GitLab CE 项目(本例中名为 gitlabhq)。可用于测试的项目 tarball 文件可以在 performance-data 项目中找到。如果需要,也可以使用其他项目。
您可以通过多种方式将项目导入到 GitLab 环境中。以下详细说明了这些方法,假设正在设置推荐的组 qa-perf-testing 和项目 gitlabhq。
导入项目
使用以下方法之一来导入测试项目。
使用 UI 导入
第一个选项是 使用 GitLab UI 导入项目 tarball 文件:
- 创建组
qa-perf-testing。 - 将 GitLab FOSS 项目 tarball 导入到该组中。
项目完全导入可能需要最多 15 分钟。您可以前往项目主页查看当前状态。
此方法会静默忽略所有错误(包括与 GITALY_DISABLE_REQUEST_LIMITS 相关的错误),GitLab 用户会使用此方法。对于开发和测试,请查看下面的其他方法。
使用 import-project 脚本导入
performance 项目提供了一个便捷的脚本 bin/import-project,可以通过终端 API 将项目 tarball 导入到 GitLab 环境中。
如果您尚未完成准备工作,使用该脚本需要一些准备:
- 首先,如果机器上尚未安装
Ruby和Ruby Bundler,请先设置它们。 - 接下来,使用
bundle install通过 Bundler 安装所需的 Ruby Gems。
有关如何使用 bin/import-project 的详细信息,请运行:
bin/import-project --help项目完全导入的过程可能需要最多 15 分钟。脚本会定期检查状态,并在导入完成后退出。
使用 GitHub 导入
还有一个选项是 通过 GitHub 导入项目:
- 创建组
qa-perf-testing - 通过 UI 将 在 GitHub 上镜像的 GitLab FOSS 仓库导入到该组中。
此方法的导入时间比其他方法长,并且取决于多个因素。建议使用其他方法。
要测试从 GitHub Enterprise (GHE) 导入到 GitLab,您需要一个 GHE 实例。您可以申请 GitHub Enterprise Server 试用版 并将其安装在 Google Cloud Platform 上。
- GitLab 团队成员可以使用 Sandbox Cloud Realm 来实现此目的。
- 其他人可以申请 Google Cloud Platforms 免费试用。
使用 Rake 任务导入
要使用 Rake 任务导入测试项目,请参阅 导入大型项目。
使用 Rails 控制台导入
最后一个选项是使用 Rails 控制台导入项目:
-
启动 Ruby on Rails 控制台:
# Omnibus GitLab gitlab-rails console # For installations from source sudo -u git -H bundle exec rails console -e production -
创建项目并运行
Project::TreeRestorer:shared_class = Struct.new(:export_path) do def error(message) raise message end end user = User.first shared = shared_class.new(path) project = Projects::CreateService.new(user, { name: name, namespace: user.namespace }).execute begin #Enable Request store RequestStore.begin! Gitlab::ImportExport::Project::TreeRestorer.new(user: user, shared: shared, project: project).restore ensure RequestStore.end! RequestStore.clear! end -
如果您还需要仓库,可以使用以下方式恢复它:
repo_path = File.join(shared.export_path, Gitlab::ImportExport.project_bundle_filename) Gitlab::ImportExport::RepoRestorer.new(path_to_bundle: repo_path, shared: shared, importable: project).restore我们将所有导入失败存储在
import_failures数据表中。为确保项目导入顺利完成,请检查:
project.import_failures.all
性能测试
进行性能测试时,我们应该:
- 导入一个相当大的项目,
gitlabhq应该是一个很好的例子。 - 测量
Project::TreeRestorer的执行时间。 - 计算恢复期间执行的 SQL 查询数量。
- 观察发生的 GC 周期数。
您可以使用此代码片段:https://gitlab.com/gitlab-org/gitlab/snippets/1924954(必须登录),它会恢复项目,并测量 Project::TreeRestorer 的执行时间、SQL 查询数量和发生的 GC 周期数。
您可以从 gdk/gitlab 目录执行脚本,如下所示:
bundle exec rails r /path_to_script/script.rb project_name /path_to_extracted_project request_store_enabled访问令牌设置
许多测试还需要 GitLab 个人访问令牌,因为许多端点本身需要身份验证。
GitLab 文档详细说明了如何创建此令牌。
测试要求该令牌由管理员生成,并且具有 API 和 read_repository 权限。
有关如何在每种类型的测试中使用访问令牌的详细信息,请参阅各自的文档。