Teuthology – Ceph 集成测试框架¶
teuthology 是一个用于 Ceph 的自动化框架,使用 Python 编写。它被用于运行绝大多数 Ceph 测试,其开发目的是因为测试这样一个具有活跃内核开发的分布式系统具有独特的需求,而当时没有其他框架能够胜任这项工作。
‘teuthology’ 这个名字指的是对头足纲动物(cephalopods)的研究。
概述¶
teuthology 的一般操作模式是通过 SSH 在远程主机上远程编排操作,具体由 Paramiko 实现。一个典型的作业由多个嵌套的任务组成,每个任务都在网络上的远程主机上执行操作。
在测试时,通常会将多个作业组合在一起形成一个测试运行。
如果您刚接触 teuthology,只想运行现有测试,请查看 测试人员简介
提供的实用程序¶
teuthology - 运行单个作业
teuthology-kill - 终止正在运行的作业或整个运行
teuthology-lock - 锁定、解锁和更新机器状态
teuthology-ls - 通过检查归档目录列出作业结果
teuthology-openstack - 使用 OpenStack 后端(
teuthology-suite的包装器)teuthology-queue - 列出或删除队列中的作业
teuthology-report - 将测试结果提交到 Web 服务(我们使用 paddles)
teuthology-results - 检查已完成的运行并发送电子邮件结果
teuthology-schedule - 调度单个作业
teuthology-suite - 基于套件调度完整的运行(请参阅 ceph-qa-suite 中的 suites)
teuthology-updatekeys - 更新机器的 SSH 主机密钥
teuthology-worker - 工作守护程序,用于监视队列并执行作业
有关实用程序交互的不同服务的描述,请参阅 Ceph 实验室组件。
安装¶
请参阅 安装和设置。
基础设施¶
本文档中的示例基于 Red Hat Ceph 开发和质量保证团队使用的实验室机器配置(请参阅 Teuthology 实验室设置说明)。在开发或测试环境中使用的 Ceph 实验室的其他实例可能与这些示例有所不同。
详细测试配置¶
请参阅 详细测试配置。
虚拟机支持¶
有关 OpenStack 支持,请参阅 OpenStack 后端
有关使用 downburst 的“vps”支持,请参阅 Downburst 虚拟机
测试套件¶
每个套件名称由包含该套件的 ceph-qa-suite 目录的名称决定。该目录包含子目录和 yaml 文件,这些文件组合在一起会生成可以运行的有效测试。测试套件应用程序会生成这些文件的组合,从而根据套件目录中的数据运行一组测试。
要运行套件,请输入
teuthology-suite -s <suite> [-c <ceph>] [-k <kernel>] [-e email] [-f flavor] [-t <teuth>] [-m <mtype>]
其中
suite:套件名称(ceph-qa-suite 中的目录)。ceph:要使用的 ceph 分支。kernel:要使用的内核版本。email:用于发送结果的电子邮件地址。flavor:要运行的 ceph packages shaman flavorteuth:要运行的 teuthology 版本mtype:运行的机器类型templates:用于进一步修改套件的模板文件(可选)
例如,考虑
teuthology-suite -s rbd -c wip-fix -k distro -e bob.smith@foo.com -f default -t jewel -m mira
上述命令使用 ceph 的 wip-fix 分支、jewel 内核、‘default’ ceph shaman 构建包 flavor 运行 rbd 套件,并将使用 teuthology jewel 分支。它将在 mira 机器上运行,并在完成后向 bob.smith@foo.com 发送电子邮件。有关 teuthology-suite 的更多详细信息,请查阅 teuthology-suite --help 的输出。有关使用 teuthology 运行集成测试的更多信息,请参阅 docs.ceph.com。
为了运行排队的任务,teuthology.front.sepia.ceph.com 上的 teuthworker 线程需要从队列中删除该任务。在 teuthology.front.sepia.ceph.com 上,运行 ps aux | grep teuthology-worker 以查看当前正在运行的任务。如果没有进程正在读取您正在运行的测试版本,则需要启动额外的 teuthworker 任务。要启动这些任务:
将您的构建树复制到
teuthology.front.sepia.ceph.com上的/home/teuthworker。给它一个唯一的名称(在本例中为 xxx)
启动一定数量的工作线程(与您正在测试的机器数量相同,默认队列有 60 个正在运行)
/home/virtualenv/bin/python /var/lib/teuthworker/xxx/virtualenv/bin/teuthworker /var/lib/teuthworker/archive --tube xxx --log-dir /var/lib/teuthworker/archive/worker_logs Note: The threads on teuthology.front.sepia.ceph.com are started via ~/teuthworker/start.sh. You can use that file as a model for your own threads, or add to this file if you want your threads to be more permanent.
套件完成后,一封电子邮件会发送给指定的收件人,并且大量信息会留在 teuthology.front.sepia.ceph.com 的 /var/lib/teuthworker/archive 中。
为了方便起见,它被符号链接到 /a。将创建一个新目录,其名称由套件启动的日期和时间、套件名称、测试的 ceph 分支、使用的内核和 flavor 串联而成。对于每次测试运行,都有一个目录,其名称是该测试的 pid 号。这些目录中的每一个都包含该进程的 teuthology.log 副本。套件中的其他信息存储在目录中的文件中,任务特定的 yaml 文件和其他日志保存在子目录中。
这些日志也可以在 http://qa-proxy.ceph.com/teuthology/ 公开获取。