# vim:set ft= ts=4 sw=4 et fdm=marker: use Test::Nginx::Socket::Lua; master_on(); workers(2); log_level('debug'); repeat_each(1); plan tests => repeat_each() * (blocks() * 3); no_long_string(); run_tests(); __DATA__ === TEST 1: closes unused file descriptors when 'reuseport' is enabled --- http_config server { listen 127.0.0.1:12345 reuseport; } --- config location /t { return 200; } --- request GET /t --- ignore_response_body --- no_error_log [error] --- grep_error_log eval: qr/\[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.1:12345/ --- grep_error_log_out eval qr/\[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.1:12345 \[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.1:12345 / === TEST 2: closes multiple unused file descriptors when 'reuseport' is enabled --- http_config server { listen 127.0.0.1:12345 reuseport; } server { listen 127.0.0.2:12345 reuseport; } --- config location /t { return 200; } --- request GET /t --- ignore_response_body --- no_error_log [error] --- grep_error_log eval: qr/\[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.\d+:12345/ --- grep_error_log_out eval qr/(\[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.1:12345 \[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.2:12345 \[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.1:12345 \[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.2:12345)|(\[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.1:12345 \[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.1:12345 \[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.2:12345 \[debug\] .*? closing unused fd:\d+ listening on 127\.0\.0\.2:12345) / === TEST 3: does not close any fd if 'reuseport' is not used --- http_config server { listen 127.0.0.1:12345; } --- config location /t { return 200; } --- request GET /t --- ignore_response_body --- no_error_log [error] closing unused fd