From 41a7ceb786eae17210761de18d9a95828e5964c8 Mon Sep 17 00:00:00 2001 From: u5surf Date: Mon, 13 Mar 2023 00:39:53 +0900 Subject: [PATCH] test: Add upstream check test relivant: #227, #258, #262 --- .github/workflows/ci.yml | 20 ++++++++++++- t/024.upstream_check.t | 64 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 t/024.upstream_check.t diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 966376b..561594e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -58,10 +58,20 @@ jobs: sudo ln -s /home/runner/work/nginx-module-vts/nginx-module-vts/lua-resty-core/lib/resty/core.lua core.lua sudo ln -s /home/runner/work/nginx-module-vts/nginx-module-vts/lua-resty-lrucache/lib/resty/lrucache lrucache sudo ln -s /home/runner/work/nginx-module-vts/nginx-module-vts/lua-resty-lrucache/lib/resty/lrucache.lua lrucache.lua + - name: 'prepare nginx_upstream_check' + uses: actions/checkout@v3 + with: + repository: yaoweibin/nginx_upstream_check_module + path: nginx_upstream_check + + - name: 'patch upstream_check' + working-directory: nginx + run: | + patch -p1 < /home/runner/work/nginx-module-vts/nginx-module-vts/nginx_upstream_check/check_1.20.1+.patch - name: 'build nginx' working-directory: nginx run: | - ./auto/configure --with-ld-opt="-Wl,-rpath,/usr/local/lib" --without-pcre2 --add-module=/home/runner/work/nginx-module-vts/nginx-module-vts/ngx_devel_kit --add-module=/home/runner/work/nginx-module-vts/nginx-module-vts/lua-nginx-module --add-module=/home/runner/work/nginx-module-vts/nginx-module-vts/nginx-module-vts + ./auto/configure --with-ld-opt="-Wl,-rpath,/usr/local/lib" --without-pcre2 --add-module=/home/runner/work/nginx-module-vts/nginx-module-vts/ngx_devel_kit --add-module=/home/runner/work/nginx-module-vts/nginx-module-vts/lua-nginx-module --add-module=/home/runner/work/nginx-module-vts/nginx-module-vts/nginx-module-vts --add-module=/home/runner/work/nginx-module-vts/nginx-module-vts/nginx_upstream_check make sudo make install /usr/local/nginx/sbin/nginx -V @@ -83,3 +93,11 @@ jobs: run: | echo "/usr/local/nginx/sbin/" >> $GITHUB_PATH sudo PATH=/usr/local/nginx/sbin:$PATH prove -r t + - name: 'test upstream check' + working-directory: nginx-module-vts + run: | + echo "/usr/local/nginx/sbin/" >> $GITHUB_PATH + sudo PATH=/usr/local/nginx/sbin:$PATH prove t/024.upstream_check.t + env: + TEST_UPSTREAM_CHECK: 1 + TEST_NGINX_SLEEP: 1 diff --git a/t/024.upstream_check.t b/t/024.upstream_check.t new file mode 100644 index 0000000..a657f04 --- /dev/null +++ b/t/024.upstream_check.t @@ -0,0 +1,64 @@ +# vi:set ft=perl ts=4 sw=4 et fdm=marker: + +use Test::Nginx::Socket; + +master_on; +plan skip_all => 'nginx_upstream_check test skipped' unless $ENV{TEST_UPSTREAM_CHECK}; +plan tests => 4; +no_shuffle(); +run_tests(); + +__DATA__ + +=== TEST 1: upstream peer->down is true +--- http_config + vhost_traffic_status_zone; + upstream backend { + zone backend 64k; + server localhost:8080; + check interval=1000 rise=1 fall=1 timeout=1000; + } +--- config + location /backend { + proxy_pass http://backend; + } + location /status { + check_status; + vhost_traffic_status_display; + vhost_traffic_status_display_format json; + access_log off; + } +--- request +GET /status +--- response_body_like eval +'"down":true' + +=== TEST 2: upstream peer->down is false +--- http_config + vhost_traffic_status_zone; + upstream backend { + zone backend 64k; + server localhost:8080; + check interval=1000 rise=1 fall=1 timeout=1000; + } + server { + listen 8080; + server_name localhost; + location / { + root html; + } + } +--- config + location /index.html { + proxy_pass http://backend; + } + location /status { + check_status; + vhost_traffic_status_display; + vhost_traffic_status_display_format json; + access_log off; + } +--- request + GET /status +--- response_body_like eval + '"down":false'