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/osdsvagrant_variables.yml: 定义测试的实际环境,其中可以定义机器、网络、磁盘、Linux 发行版/版本。
Conventions¶
Python 测试文件(与场景不同)依赖于路径来*映射*它们所属的位置。例如,一个只应测试 monitor 节点的文件的位置是 ceph-ansible/tests/functional/tests/mon/。在内部,测试运行器 (py.test) 会将这些测试*标记*为只应在 monitor 上运行的测试。由于场景的配置已经定义了哪个节点具有给定的角色,因此系统更容易只运行属于特定节点类型的测试。
当前的约定有点手动,初始路径支持:
mon
osd
mds
rgw
journal_collocation
all/any (如果以上都不匹配,则在任何主机上运行)