• undefined   
    2020-01-07
    #!/usr/bin/env bash

    export PATH=/usr/local/openresty/nginx/sbin/nginx:$PATH

    # 部分系统perl环境会提示(Can't locate t/.pm in @INC)
    export PERL5LIB=$(pwd):$PERL5LIB

    exec prove "$@"
    展开
    
    
  • undefined   
    2020-01-07
    prove -Itest-nginx/lib -r t
    t/hello.t .. Bailout called. Further testing stopped: Failed to get the version of the Nginx in PATH
    Can't determine section names. Need two sections in first block at /usr/local/share/perl5/Test2/Hub.pm line 395.
    END failed--call queue aborted at t/hello.t line 395, <DATA> line 1.
    FAILED--Further testing stopped: Failed to get the version of the Nginx in PATH
    展开
    
    
  • Jeff.Smile
    2019-08-09
    ./resty -e 'local memcached = require "resty.memcached"
    > local memc, err = memcached:new()
    >
    > memc:set_timeout(1000)
    > local ok, err = memc:connect("127.0.0.1", 11212)
    > local ok, err = memc:set("dog", 32)
    > if not ok then
    > ngx.say("failed to set dog: ", err)
    > return
    > end
    >
    > local res, flags, err = memc:get("dog")
    > ngx.say("dog: ", res)'

    -----执行结果是:
    failed to set dog: closed
    展开

    作者回复: 你可以在这一行的后面判断下 err:
    local ok, err = memc:connect("127.0.0.1", 11212)

    可能是 memcached 的服务没有启动。

    
    
  • 回家
    2019-07-27
    老师,DSL的翻译应该是领域专用语言?搜领域小语言没有搜到,搜到了这个DSL(Domain Specific Language)https://en.wikipedia.org/wiki/Domain-specific_language

    作者回复: 是的,就是领域专用语言。之所以叫它小语言,是因为它不是通用的编程语言,只在特定领域内使用。

    
    
  • 回家
    2019-07-27
    问个可能很白痴的问题,如果环境里安装了好几个不同版本或者不同编译参数的nginx,怎么配置test::nginx使用指定的的nginx呢?在执行的时候,发现默认使用的是一个不支持stream的nginx,然后看prove 提供的参数也没有,感觉是在.t文件里指定,请老师指点一下~

    作者回复: 是从系统的 PATH 里面查找 nginx 的路径的

    
    
  • 冰沁宇诺
    2019-07-24
    上面的案例,还有github文档中mysql 的例子中set_timeout通常都是设置成1秒,但是并发大的情况下经常会出现超时的情况,一般怎么评估自己工程中timeout应该设置成多少

    作者回复: 这个是看具体的场景了,比如统计 MySQL 的日志,看看请求时间的分布情况。如果 MySQL 的慢查询比较多,很多超过 1 秒的,那这个时候更好的方案是去优化数据库。

    
    
  • 刘丹
    2019-07-24
    请问执行完git clone后,是否要执行以下命令来安装test::nginx?
    cd test-nginx
    perl Makefile.PL
    make
    sudo make install

    作者回复: 并非如何,你可以参考一些开源项目的 travis 的做法:
    1. 先通过包管理器安装:
    sudo cpanm --notest Test::Nginx >build.log 2>&1 || (cat build.log && exit 1)

    https://github.com/iresty/apisix/blob/master/.travis/linux_runner.sh#L20

    2. git clone 最新的 test::nginx:
    https://github.com/iresty/apisix/blob/master/.travis/linux_runner.sh#L35

    3. 用 prove 命令的时候,把 test nginx 的目录包含进去:
    prove -Itest-nginx/lib -r t

    
    
  • Kone
    2019-07-24
    最近开始学习Perl了,因为在复杂一点的测试案例中,需要在DATA前做一些事情,而又不得不使用perl;虽然已经抽象成数据驱动了,但是还是有很多细节涉及到perl语法,对于从未接触过perl的人来说,因为一些细节问题,会耽误很长时间。

    test::nginx确实是门槛,是代码贡献者和二次开发者们的门槛。

    作者回复: 嗯,perl 的语法真不是一般人能够适应的,需要一个明显的学习曲线

    
    
我们在线,来聊聊吧