Skip to content

How to test

Xiaochen Wang edited this page Oct 30, 2022 · 2 revisions

测试库的来源

Tengine目前的测试库包含两个部分:nginx-tests (http://mdounin.ru/hg/nginx-tests/) 和 test-nginx (http://search.cpan.org/dist/Test-Nginx/) ,前者是Maxim Dounin 开发的,后者是agentzh开发的。Tengine开发者可以根据自己的喜好,选择相应的测试库。

测试库的位置

所有的测试代码位于tengine/tests目录下面。所有的测试脚本都是perl写的,后缀名为.t,可以用prove命令进行测试。

make test指令

现在Tengine已经支持make test,可以直接在tengine的源代码根目录运行:

 make test

如果有任何错误,你可以往https://github.com/taobao/tengine/issues 报告bug。

如何使用nginx-tests

nginx-tests测试集的代码位于tengine/tests/nginx-tests里面,其中nginx-tests目录下面的测试代码是Maxim针对Nginx官方的测试集,lib目录是nginx-tests测试库的位置。

Tengine的测试集位于cases目录下面,在测试时可能缺失上述lib目录,你可以把在prove命令的-I选项中加入lib目录:

-I /path/to/tests/nginx-tests/nginx-tests/lib 

当你安装了Tengine以后,就可以运行nginx-tests的测试集合了。下面是测试的命令:

TEST_NGINX_BINARY=/path/to/your/nginx/sbin/nginx prove -I nginx-tests/lib cases
TEST_NGINX_BINARY=/path/to/your/nginx/sbin/nginx prove nginx-tests

TEST_NGINX_BINARY指向的是Tengine二进制代码的路径。

如何使用test-nginx

test-nginx测试集的代码位于tengine/tests/test-nginx里面,其中test-nginx目录是测试库的位置,cases目录是Tengine测试集的位置。

test-nginx的cases目录比较多,可以把cases目录软连接到test-nginx进行测试:

ln -s tengine/tests/test-nginx/cases tengine/tests/test-nginx/test-nginx/cases

然后,在test-nginx目录下面,就可以跑测试集了:

PATH=/path/to/nginx/sbin:$PATH prove cases/footer.t
PATH=/path/to/nginx/sbin:$PATH prove cases/syslog.t
PATH=/path/to/nginx/sbin:$PATH prove cases/user_agent.t

upstream check模块的测试集需要在测试之前sleep几秒中,以便该模块获取后端的健康状况(TEST_NGINX_SLEEP_BEFORE是Tengine开发组加上的参数):

TEST_NGINX_SLEEP_BEFORE=6 TEST_NGINX_USE_HUP=1 PATH=/path/to/nginx/sbin:$PATH prove -r cases/ngx_http_upstream_check_module

lua模块的测试集依赖比较多,可以参考这里的文档:http://wiki.nginx.org/HttpLuaModule#Test_Suite

PATH=/path/to/nginx/sbin:$PATH prove -r cases/lua-tests/
Clone this wiki locally