2 个版本
0.6.5 | 2022年10月24日 |
---|---|
0.6.4 | 2022年10月22日 |
#1985 in 数据库接口
300KB
6K SLoC
mongo-task-generator
动态将常绿任务拆分为子任务,以测试mongodb/mongo项目。
目录
描述
一个工具,用于动态生成和拆分mongodb/mongo项目的resmoke测试为可以并行运行的子任务。例如,一个运行2小时的任务可以拆分为4个子任务,并行运行以将墙钟时间缩短到接近30分钟。
该工具将使用 Evergreen 测试统计 来确定如何将测试分配给子任务。如果由于任何原因无法获得测试统计信息,它将回退到将测试拆分,以便每个子任务包含相等数量的测试。
该工具还将生成fuzzer任务。在fuzzer任务的情况下,生成决定了要生成的fuzzer测试数量。有两个控制生成fuzzer测试数量的选项,n_files
和 n_tasks
。它们应在evergreen配置文件的任务定义中指定。n_files
控制每个子任务中生成的fuzzer文件数量,从而有效地控制每个子任务的运行时间。n_tasks
控制生成的子任务数量。例如,如果 n_files=3 和
n_tasks=5
,总共将在5个子任务中运行15个文件。
获取帮助
问问题应该选择哪个渠道?
如果您对 Mongo Task Generator 有任何疑问,请通过 Slack 上的 #server-testing 频道或通过电子邮件发送给我们 [email protected]。
我如何请求对 Mongo Task Generator 进行更改/报告错误?
在 Jira 中创建 DAG 票据。
我在票据或问题中应该包括哪些内容?
请尽可能提供更多信息。这可以帮助避免长时间的信息收集线程。
请包括以下内容
- 请求动机:为什么要进行这项更改?(这有助于我们了解请求的优先级和紧急性)
- 背景:是否有任何背景信息我们应该了解这个请求?
- 描述:您希望调查或更改什么?
依赖项
该项目旨在在Linux上运行。它已在Ubuntu 18.04上进行测试。
安装
工具可以从github releases页面下载。它目前基于Ubuntu 18.04,应该适用于最近的x86 Linux发行版。
可以使用类似wget
或curl
的工具自动化安装。
wget https://github.com/mongodb/mongo-task-generator/releases/download/v0.1.0/mongo-task-generator
使用
要在mongodb仓库的根目录下生成任务信息,请运行mongo-task-generator
命令。生成的配置将创建在generated_resmoke_config
目录中。该目录中的evergreen_config.json
文件应作为generate.tasks
命令调用的部分传递给evergreen。
mongo-task-generator
USAGE:
mongo-task-generator --evg-project-file <EVG_PROJECT_FILE> --expansion-file <EXPANSION_FILE> --evg-auth-file <EVG_AUTH_FILE>
OPTIONS:
--evg-auth-file <EVG_AUTH_FILE>
File with information on how to authenticate against the evergreen API
--evg-project-file <EVG_PROJECT_FILE>
File containing evergreen project configuration
--expansion-file <EXPANSION_FILE>
File containing expansions that impact task generation
-h, --help
Print help information
文档
有关任务生成工作的详细信息,请参阅生成任务。
贡献者指南
高级架构
任务生成流程图
graph TD
A[Read Evergreen Project Config] -->B(For each task in each build variant)
B --> C{task is generated?}
C --> |No| B
C -->|Yes| D{task is fuzzer?}
D -->|Yes| E[Generate Fuzzer based on task definition]
E --> B
D -->|No| F[Lookup task runtime history from Evergreen]
F --> G{valid history obtained?}
G --> |Yes| H[Split task by test runtimes]
G --> |No| I[Split task by counts]
H --> J[Generate resmoke suite config]
I --> J
J --> |generated task definitions|B
B --> |done|K[For each Build Variant]
K --> L[Create task specs and display tasks in Build Variant]
L --> M[Create shrub config]
M --> N[Write shrub config to disk]
N --> O([End])
设置本地开发环境
请确保已安装Rust开发环境。请参阅此处的说明。
从仓库的根目录运行cargo build
来构建项目。
linting/formatting
cargo fmt
cargo clippy
运行测试
cargo test
版本控制
该项目使用semver进行版本控制。
请在CHANGELOG.md
中包含每个新版本添加的描述。
代码审查
该项目使用Evergreen Commit Queue。添加包含evergreen merge
的PR评论以触发合并。
部署
部署通过github actions完成。可以通过git标签触发部署。要创建部署,请将您希望部署的提交标记为git标签,并将标签推送到远程仓库。
git标签应格式如下:“v”后跟要部署的3位数版本号。例如,“v0.1.0”。
git tag v0.1.0
git push origin --tags
标记的版本将部署到项目的发布页。
资源
依赖项
~14–31MB
~440K SLoC