Layout and conventions

测试文件和目录遵循一些约定,这使得创建(或期望)测试和场景之间的特定交互变得容易。

所有测试都在 tests 目录中。场景在 tests/functional/ 中定义,并使用以下目录结构约定:

tests/functional/<distro>/<distro version>/<scenario name>/

例如: tests/functional/centos/7/journal-collocation

在一个测试场景中,有一些文件定义了该特定场景测试所需的内容,例如需要多少个 OSD 节点或 MON 节点。Tls

一个场景至少需要以下文件:

  • Vagrantfile: 必须从项目的根目录进行符号链接

  • hosts: 一个 Ansible hosts 文件,用于定义集群中的机器

  • group_vars/all: 如果部署需要任何修改,这将覆盖它们。此外,还可以进行进一步的定制。例如,对于 OSDs,这意味着添加 group_vars/osds

  • vagrant_variables.yml: 定义测试的实际环境,其中可以定义机器、网络、磁盘、Linux 发行版/版本。

Conventions

Python 测试文件(与场景不同)依赖于路径来*映射*它们所属的位置。例如,一个只应测试 monitor 节点的文件的位置是 ceph-ansible/tests/functional/tests/mon/。在内部,测试运行器 (py.test) 会将这些测试*标记*为只应在 monitor 上运行的测试。由于场景的配置已经定义了哪个节点具有给定的角色,因此系统更容易只运行属于特定节点类型的测试。

当前的约定有点手动,初始路径支持:

  • mon

  • osd

  • mds

  • rgw

  • journal_collocation

  • all/any (如果以上都不匹配,则在任何主机上运行)

testinfra