Linux测试资源代理的方法有哪些
这篇文章主要介绍"Linux测试资源代理的方法有哪些",在日常操作中,相信很多人在Linux测试资源代理的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Linux测试资源代理的方法有哪些"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
10 测试资源代理
这一章讨论资源代理的自动测试。测试是开发的非常关键的问题,对开发新的资源代理和修改已经有的资源代理都很重要。
10.1 用ocf_tester测试
资源代理仓库(包括所有的资源代理包)都有一个应用程序叫ocf_tester.这个脚本可以方便地用来测试你的资源代理。
ocf_tester 通常以root用户调用,像这样:
1 | ocf-tester -n |
是任意的资源名字
你可以通过 -o 选项设置任何你想设置的参数 =
是你资源代理的完整路径
调用时,ocf-tester执行所有强制的操作(见第五章资源代理行为)
也可以测试可选的操作。可选操作必须符合其声明的行为,如果没有实现,ocf-tester会标一个错误标记。
重要:
ocf-tester不支持操作的"干运行",也不产生任何的资源仿制品。其运行都是和实际的资源代理一样,不论其是否打开和关闭了数据库,挂载了文件系统,启动或停止了虚拟机等等。所以,一定要小心。
比如,你可以运行对foobar资源代理使用ocf-tester,如下:
1 2 3 4 5 6 7 8 | # ocf-tester -n foobartest \ -o superfrobnicate=true \ -o datadir=/tmp \ /home/johndoe/ra-dev/foobar Beginning tests for /home/johndoe/ra-dev/foobar... * Your agent does not support the notify action (optional) * Your agent does not support the reload action (optional) /home/johndoe/ra-dev/foobar passed all tests |
10.2 用ocft测试
ocft也是一种资源代理测试工具。和ocf-tester不一样的是,ocft可以自动生成复杂的测试环境,包括包的安装和任意的shell脚本。
10.2.1 ocft 组件
ocft包含如下组件:
一个测试用例产生器(/usr/sbin/ocf) --- 从测试用例配置文件产生shell脚本
配置文件(/usr/share/resource-agents/ocft/configs)--- 一个配置文件包含环境变量设置和一个资源代理的配置文件
测试脚本保存在/var/lib/resource-agents/ocft/cases/,但是通常不需要去管它们
10.2.2 定制测试环境
ocft修改资源代理的运行时环境,或则是通过改变环境变量(使用OCF定义的接口)或者运行ad-hoc shell脚本,这种脚本可以改变权限或者卸载一个文件系统。
10.2.3 如何测试
你必须了解你要测试的软件,画一个所有感兴趣的运行场景的草图,标出所有期望和不期望的条件和资源代理应该出现的运行结果。然后,你需要将这些条件和期望运行结果编码成ocft的测试用列。这样运行ocft就简单了:
1 2 | # ocft make # ocft test |
头一个命令产生测试用例脚本,第二个命令运行产生的脚本并检查输出。
10.2.4 ocf配置文件语法
有4个一级选型,每个一级选项下面有一个或多个子选项
CONFIG(一级选项)
这个选项是全局的,而且影响每一个测试用例;
AgentRoot (子选项)
1 | AgentRoot /usr/lib/ocf/resource.d/xxx |
正常情况下,我们假设资源代理脚本存在于heartbeat提供者的目录。使用AgentRoot来测试代理是否分布于另外的目录。
InstallPackage (子选项)
1 | InstallPackage package [package2 [...]] |
测试需要用到的包,如果包已经安装了,则不再安装。
HangTimeout(子选项)
1 | HangTimeout secs |
运行资源代理操作最大的执行时间,如果超过这个时间,操作视为失效。
SETUP-AGENT(一级选项)
1 2 | SETUP-AGENT bash commands |
如果资源代理在测试前需要初始化,可以在这里放置bash代码。初始化只完成一次。如果需要再次执行初始化,可以删除/tmp/.[AGENT_NAME]_set标记文件。
CASE (一级选项)
1 | CASE "description" |
这是测试套件的主要构建块。每个测试用列都可以在一个CASE选项中描述。一个用例由跟着RunAgent子选项的若个子选项组成。
Var (子选项)
1 | Var VARIABLE=value |
这是为资源代理设置环境变量。通常显示为OCF_RESKEY_xxx,注意赋值符号"="左右都没有空格。
Unvar (子选项)
1 | Unvar VARIABLE [VARIABLE2 [...]] |
移除一个环境变量
Include (子选项)
1 | Include macro_name |
包含宏 macro_name。参考下文CASE-BLOCK。
Bash (子选项)
1 | Bash bash_codes |
这个选项设置操作系统环境变量,你可以插入BASH代码来定制系统环境。注意不要导致一些不可恢复的结果。
BashAtExit (子选项)
1 | BashAtExit bash_codes |
这个选项恢复操作系统环境,这样可以正确运行新的测试用例。当然也可以直接使用Bash选项来恢复。然而,如果进程发生错误,脚本讲不运行恢复的代码直接退出,这种情况下,应该使用BashAtExit,可以在退出前恢复系统环境。
RunAgent (子选项)
1 | RunAgent cmd [ret_value] |
这个选项运行资源代理。"cmd" 是资源代理的参数,比如"start,status,stop..."。第二个参数是可选的。可用来比较脚本运行结果的返回值和期望值。如果不同,应该可以找到一些bug。
也可以不是本地执行而是远程执行。使用的协议是ssh,程序在后台运行。只需要增加在子选项后面加上@就可以了。如下:
1 | Bash@192.168.1.100 date |
上面的例子会运行date程序。远程命令都是在后台运行的。
NB:这些还需要有多谢说明(这个话是说给编写者的:译者注)
CASE-BLOCK (一级选项)
CASE-BLOCK选项定义可以被包含在CASE中的宏。所有CASE的子选项都可以使用。
到此,关于"Linux测试资源代理的方法有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!