tox¶
tox 是我们用于运行测试场景的自动化项目。它使我们能够创建包含多个测试场景的动态矩阵、隔离的测试环境,并提供一个单一入口点,以自动化且可重复的方式运行所有测试。
tox 的文档可以在 这里 找到。
环境变量¶
运行 tox 时,我们允许使用环境变量来调整 playbook 运行的某些设置,使用 Ansible 的 --extra-vars。这对于 Jenkins 作业或 ceph-ansible 的手动测试运行很有帮助。
以下环境变量可供使用
CEPH_DOCKER_REGISTRY: (默认:quay.io) 这将配置ceph-ansible变量ceph_docker_registry。CEPH_DOCKER_IMAGE: (默认:ceph/daemon) 这将配置ceph-ansible变量ceph_docker_image。CEPH_DOCKER_IMAGE_TAG: (默认:latest) 这将配置ceph-ansible变量ceph_docker_image_name。CEPH_DEV_BRANCH: (默认:main) 这将配置ceph-ansible变量ceph_dev_branch,该变量定义我们要从 shaman.ceph.com 安装哪个分支。CEPH_DEV_SHA1: (默认:latest) 这将配置ceph-ansible变量ceph_dev_sha1,该变量定义我们要从 shaman.ceph.com 安装哪个 sha1。UPDATE_CEPH_DEV_BRANCH: (默认:main) 这将配置ceph-ansible变量ceph_dev_branch,该变量定义我们要从 shaman.ceph.com 更新到哪个分支。UPDATE_CEPH_DEV_SHA1: (默认:latest) 这将配置ceph-ansible变量ceph_dev_sha1,该变量定义我们要从 shaman.ceph.com 更新到哪个 sha1。
部分¶
tox.ini 文件有许多由 [ ] 定义的顶级部分以及其中的子部分。有关 tox 部分中所有子部分的完整文档,请参阅 tox 文档。
tox: 此部分包含envlist,用于创建我们的动态矩阵。有关envlist工作方式的更多信息,请参阅 这里 的部分。purge: 此部分包含仅针对清除集群并重新部署的场景运行的命令。您将看到此部分在testenv中以以下语法重用:{[purge]commands}update: 此部分包含仅针对部署集群然后将其升级到另一个 Ceph 版本的场景运行的命令。testenv: 这是tox.ini文件的主要部分,并在每个场景中运行。此部分包含许多根据envlist中定义的场景定义条件设置的 *因子*。例如,testenv的changedir子部分中的因子centos7_cluster设置了当选择该因子时 tox 将更改到的目录。这是一个重要的行为,它允许我们使用相同的tox.ini并重用命令,同时针对每个测试场景调整某些部分。
修改或添加环境¶
tox 环境由 [tox] 部分的 envlist 子部分控制。 {} 内的任何内容都被视为一个 *因子*,并将包含在 tox 创建的动态矩阵中。在 {} 内,您可以包含一个逗号分隔的 *因子* 列表。请勿使用连字符 (-) 作为 *因子* 名称的一部分,因为 tox 将其用作不同因子集之间的分隔符。
例如,如果想为下一个 Ceph 版本 luminous 添加一个新的测试 *因子*,您可以这样做。目前,我们 envlist 中的第一个因子集用于定义 Ceph 版本 ({jewel,kraken}-...)。要添加 luminous,您需要将其更改为 {luminous,kraken}-...。在 testenv 部分中,有一个名为 setenv 的子部分,允许您向 tox 环境提供环境变量,我们支持一个名为 CEPH_STABLE_RELEASE 的环境变量。为确保通过添加 luminous *因子* 创建的所有新测试都能正常工作,您需要在此部分中执行以下操作: luminous: CEPH_STABLE_RELEASE=luminous。