github.com/nginxinc/kubernetes-ingress@v1.12.5/tests/suite/test_v_s_route_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.vsr 12 @pytest.mark.skip_for_nginx_oss 13 @pytest.mark.parametrize('crd_ingress_controller, v_s_route_setup', 14 [({"type": "complete", "extra_args": ["-enable-custom-resources", 15 "-nginx-status-allow-cidrs=0.0.0.0/0"]}, 16 {"example": "virtual-server-route-dynamic-configuration"})], 17 indirect=True) 18 class TestVSRNginxPlusApi: 19 def test_dynamic_configuration(self, kube_apis, 20 ingress_controller_endpoint, crd_ingress_controller, 21 v_s_route_setup, v_s_route_app_setup): 22 req_url = f"http://{ingress_controller_endpoint.public_ip}:{ingress_controller_endpoint.api_port}" 23 vsr_s_upstream = f"vs_{v_s_route_setup.namespace}_{v_s_route_setup.vs_name}_" \ 24 f"vsr_{v_s_route_setup.route_s.namespace}_{v_s_route_setup.route_s.name}_backend2" 25 vsr_m_upstream = f"vs_{v_s_route_setup.namespace}_{v_s_route_setup.vs_name}_" \ 26 f"vsr_{v_s_route_setup.route_m.namespace}_{v_s_route_setup.route_m.name}_backend1" 27 initial_reloads_count = get_nginx_generation_value(req_url) 28 upstream_servers_s_url = f"{req_url}/api/{NGINX_API_VERSION}/http/upstreams/{vsr_s_upstream}/servers" 29 upstream_servers_m_url = f"{req_url}/api/{NGINX_API_VERSION}/http/upstreams/{vsr_m_upstream}/servers" 30 print("Scale BE deployment") 31 scale_deployment(kube_apis.apps_v1_api, "backend2", v_s_route_setup.route_s.namespace, 0) 32 scale_deployment(kube_apis.apps_v1_api, "backend1", v_s_route_setup.route_m.namespace, 0) 33 wait_for_empty_array(upstream_servers_s_url) 34 wait_for_empty_array(upstream_servers_m_url) 35 scale_deployment(kube_apis.apps_v1_api, "backend2", v_s_route_setup.route_s.namespace, 1) 36 scale_deployment(kube_apis.apps_v1_api, "backend1", v_s_route_setup.route_m.namespace, 1) 37 wait_for_non_empty_array(upstream_servers_s_url) 38 wait_for_non_empty_array(upstream_servers_m_url) 39 40 print("Run checks") 41 resp_s = json.loads(requests.get(upstream_servers_s_url).text) 42 resp_m = json.loads(requests.get(upstream_servers_m_url).text) 43 new_reloads_count = get_nginx_generation_value(req_url) 44 assert new_reloads_count == initial_reloads_count, "Expected: no new reloads" 45 for resp in [resp_s, resp_m]: 46 assert resp[0]['max_conns'] == 32 47 assert resp[0]['max_fails'] == 25 48 assert resp[0]['fail_timeout'] == '15s' 49 assert resp[0]['slow_start'] == '10s' 50 51 def test_status_zone_support(self, kube_apis, 52 ingress_controller_endpoint, crd_ingress_controller, 53 v_s_route_setup, v_s_route_app_setup): 54 req_url = f"http://{ingress_controller_endpoint.public_ip}:{ingress_controller_endpoint.api_port}" 55 status_zone_url = f"{req_url}/api/{NGINX_API_VERSION}/http/server_zones" 56 resp = json.loads(requests.get(status_zone_url).text) 57 assert resp[f"{v_s_route_setup.vs_host}"]