openresty开发 test-nginx 使用文档

test-nginx 使用文档

install
git clone https://github.com/agentzh/test-nginx.git
cd test-nginx & perl Makefile.PL
sudo make install

若是缺乏包的话,能够经过 cpan 装;例如 装 Test:Morenginx

sudo perl -MCPAN -e shell
cpan[1]> install Test:LongString
geting started

文件目录组织:
通常是在一个项目下新建 t 目录来存放测试集
以lua-resty-redis 为例:https://github.com/agentzh/lua-resty-redis
有 Makefile ,test 选项里有重要的一句:
prove -I../test-nginx/lib -r t
这里有调用 perl 的 prove 指令,prove 会去执行测试
t 目录下有 不少个 .t 文件,里面就是测试案例
编写测试案例:git

一个测试案例主要有三部份内容:
程序代码: nginx location 的配置内容
输入: http 的 request 信息
输出检查: status,header,body,error_log 检查github

https://github.com/agentzh/lua-resty-redis/blob/master/t/sanity.t
仍是以 lua-resty-redis 的一个为例,第 25 行以后的才是每一个测试案例的内容
即完成一个测试案例里的那三项内容
=== Test 1:
— request 表示输入是 发一块儿 http GET 请求 /t
GET /t
— config 表示 nginx.conf 里 location /t 里的内容redis


— response_body 表示对 http 返回的 body 进行匹配检查
— no_error_log 表示会对 nginx 的 error.log 检查,必须没有 EORROR 级别的记录
更完成的输入,输出检查项 定义,能够看 https://github.com/agentzh/test-nginx/blob/master/lib/Test/Nginx/Socket.pm
1870 行以后有完整的文档
进一步解释, test-nginx 执行流程:shell

  1. 组装 nginx.conf,启动 nginx 实例进程
    根据咱们在 Makefile 里配置的 PATH,和每个 .t 文件最前面的一些配置项网络

会组装一个完整的 nginx.conf 文件
把 t/servroot 当成 nginx 的工做目录,启动 nginx 实例tcp

  1. 发起 http 请求,根据每一个测试案例的提供的信息测试

  2. 检查 http 的返回项
    包括 http status,http response header, http response bodylua

更多测试项:
etcproxy 能够在 tcp 层上作一个延时转发,模拟测试 bad 网络环境
valgrind 内存泄露检查
stap 检查; 调用 systemtap 作输出检查rest

相关文章
相关标签/搜索