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}"]