github.com/nginxinc/kubernetes-ingress@v1.12.5/tests/suite/test_virtual_server_api.py (about) 1 import pytest 2 import requests 3 import json 4 5 from settings import NGINX_API_VERSION 6 7 from suite.nginx_api_utils import wait_for_empty_array, wait_for_non_empty_array, get_nginx_generation_value 8 from suite.resources_utils import scale_deployment 9 10 11 @pytest.mark.vs 12 @pytest.mark.skip_for_nginx_oss 13 @pytest.mark.parametrize('crd_ingress_controller, virtual_server_setup', 14 [({"type": "complete", "extra_args": ["-enable-custom-resources", 15 "-nginx-status-allow-cidrs=0.0.0.0/0"]}, 16 {"example": "virtual-server-dynamic-configuration", "app_type": "simple"})], 17 indirect=True) 18 class TestVSNginxPlusApi: 19 def test_dynamic_configuration(self, kube_apis, ingress_controller_endpoint, 20 crd_ingress_controller, virtual_server_setup): 21 req_url = f"http://{ingress_controller_endpoint.public_ip}:{ingress_controller_endpoint.api_port}" 22 vs_upstream = f"vs_{virtual_server_setup.namespace}_{virtual_server_setup.vs_name}_backend2" 23 initial_reloads_count = get_nginx_generation_value(req_url) 24 upstream_servers_url = f"{req_url}/api/{NGINX_API_VERSION}/http/upstreams/{vs_upstream}/servers" 25 print("Scale BE deployment") 26 scale_deployment(kube_apis.apps_v1_api, "backend2", virtual_server_setup.namespace, 0) 27 wait_for_empty_array(upstream_servers_url) 28 scale_deployment(kube_apis.apps_v1_api, "backend2", virtual_server_setup.namespace, 1) 29 wait_for_non_empty_array(upstream_servers_url) 30 31 print("Run checks:") 32 resp = json.loads(requests.get(upstream_servers_url).text) 33 new_reloads_count = get_nginx_generation_value(req_url) 34 assert new_reloads_count == initial_reloads_count, "Expected: no new reloads" 35 assert resp[0]['max_conns'] == 32 36 assert resp[0]['max_fails'] == 25 37 assert resp[0]['fail_timeout'] == '15s' 38 assert resp[0]['slow_start'] == '10s' 39 40 def test_status_zone_support(self, kube_apis, crd_ingress_controller, virtual_server_setup): 41 req_url = f"http://" \ 42 f"{virtual_server_setup.public_endpoint.public_ip}:{virtual_server_setup.public_endpoint.api_port}" 43 status_zone_url = f"{req_url}/api/{NGINX_API_VERSION}/http/server_zones" 44 resp = json.loads(requests.get(status_zone_url).text) 45 assert resp[f"{virtual_server_setup.vs_host}"]