我准备对 OpenResty 添加一个新的 API,名字是 ngx.worker.close_listen() ,函数名能看得出来是为了关闭当前 worker 的 listen 端口。这样可以让某个 nginx worker 专心用于非 HTTP 请求的处理,比如完成一些后台定时任务等。代码本身不难,可是在测试用例实现上卡住了。
$ prove t/122-worker.t
t/122-worker.t .. 1/6 TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 0.675 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 0.825 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 0.99 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
Retry connecting after 1 sec
TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused
t/122-worker.t .. 4/6
# Failed test 'TEST 4: ngx.worker.close_listen - Can't connect to 127.0.0.1:1984: Connection refused (aborted)
# '
# at /Users/yuansheng/perl5/lib/perl5/Test/Nginx/Socket.pm line 1521.
# Failed test 'TEST 4: ngx.worker.close_listen - status code ok'
# at /Users/yuansheng/perl5/lib/perl5/Test/Nginx/Socket.pm line 891.
# got: ''
# expected: '200'
# Failed test 'TEST 4: ngx.worker.close_listen - response_body - response is expected (req 1)'
# at /Users/yuansheng/perl5/lib/perl5/Test/Nginx/Socket.pm line 1277.
# @@ -1,2 +0,0 @@
# -first connect: 1
# -second connect: nil
# Failed test 'TEST 4: ngx.worker.close_listen - pattern "reported that connect() failed" should match a line in error.log (req 1)'
# at /Users/yuansheng/perl5/lib/perl5/Test/Nginx/Socket.pm line 1102.
t/122-worker.t .. Failed 3/6 subtests
Test Summary Report
-------------------
t/122-worker.t (Wstat: 0 Tests: 7 Failed: 4)
Failed tests: 4-7
Parse errors: Bad plan. You planned 6 tests but ran 7.
Files=1, Tests=7, 44 wallclock secs ( 0.02 usr 0.00 sys + 0.15 cusr 0.05 csys = 0.22 CPU)
Result: FAIL