def test_external_host_node(kiali_client): try: assert command_exec.oc_apply(conftest.EXTERNAL_HOST_SERVICE_FILE, conftest.get_bookinfo_namespace()) == True PARAMS['namespaces'] = conftest.get_bookinfo_namespace() response = kiali_client.request(method_name='graphNamespaces', params=PARAMS) assert response.status_code == 200 nodes = response.json().get('elements').get('nodes') with timeout(seconds=60, error_message='Timed out waiting for \"{}\"'.format( EXPECTED_EXTERNAL_SERVICE_NAME)): wiat_for = True while wiat_for: for node in nodes: name = node.get('data').get('service') if name != None and name == EXPECTED_EXTERNAL_SERVICE_NAME: wiat_for = False break time.sleep(1) finally: command_exec.oc_delete(conftest.EXTERNAL_HOST_SERVICE_FILE, conftest.get_bookinfo_namespace())
def test_application_metrics_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() app_metrics = kiali_client.app_metrics(namespace=bookinfo_namespace, app=APPLICATION_TO_VALIDATE) assert app_metrics != None for direction in ['dest', 'source']: metrics = app_metrics.get(direction).get('metrics') assert 'request_count_in' in metrics assert 'request_count_out' in metrics assert 'request_error_count_in' in metrics assert 'request_error_count_out' in metrics assert 'tcp_received_in' in metrics assert 'tcp_received_out' in metrics assert 'tcp_sent_in' in metrics assert 'tcp_sent_out' in metrics histograms = app_metrics.get(direction).get('histograms') assert 'request_duration_in' in histograms assert 'request_duration_out' in histograms assert 'request_size_in' in histograms assert 'request_size_out' in histograms assert 'response_size_in' in histograms assert 'response_size_out' in histograms
def test_workload_health(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() workload = kiali_client.request(method_name='workloadHealth', path={'namespace': bookinfo_namespace, 'workload': WORKLOAD_TO_VALIDATE}).json() assert workload != None assert WORKLOAD_TO_VALIDATE in workload.get('workloadStatus').get('name') assert 'requests' in workload
def test_workload_metrics(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() workload = kiali_client.workload_metrics(namespace=bookinfo_namespace, workload=WORKLOAD_TO_VALIDATE) for direction in ['dest', 'source']: assert workload != None metrics = workload.get(direction).get('metrics') assert 'request_count_in' in metrics assert 'request_count_out' in metrics assert 'request_error_count_in' in metrics assert 'request_error_count_out' in metrics assert 'tcp_received_in' in metrics assert 'tcp_received_out' in metrics assert 'tcp_sent_in' in metrics assert 'tcp_sent_out' in metrics histograms = workload.get(direction).get('histograms') assert 'request_duration_in' in histograms assert 'request_duration_out' in histograms assert 'request_size_in' in histograms assert 'request_size_out' in histograms assert 'response_size_in' in histograms assert 'response_size_out' in histograms
def test_service_spans(kiali_client): if 'v1.0' in get_kiali_version(kiali_client).get('Kiali core version'): pytest.skip() bookinfo_namespace = conftest.get_bookinfo_namespace() services = get_service_list(kiali_client, bookinfo_namespace) assert services != None for service in services: name = service.get('name') spansList = kiali_client.request(method_name='appSpans', path={ 'namespace': bookinfo_namespace, 'service': name }, params={ 'startMicros': calendar.timegm(gmt()) }).json() assert spansList != None for span in spansList: assert span.get('traceID') != None assert span.get('spanID') != None assert span.get('operationName') != None
def test_service_traces_detail(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() if 'v1.0' in get_kiali_version(kiali_client).get('Kiali core version'): pytest.skip() services = get_service_list(kiali_client, bookinfo_namespace) assert services != None for service in services: name = service.get('name') tracesDetailsList = kiali_client.request(method_name='appTraces', path={ 'namespace': bookinfo_namespace, 'service': name }, params={ 'startMicros': calendar.timegm(gmt()) }).json() assert tracesDetailsList != None for tracesDetail in tracesDetailsList.get('data'): assert tracesDetail.get('traceID') != None assert tracesDetail.get('spans') != None
def test_workload_health(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() workload = kiali_client.workload_health(namespace=bookinfo_namespace, workload=WORKLOAD_TO_VALIDATE) assert workload != None assert WORKLOAD_TO_VALIDATE in workload.get('workloadStatus').get('name') assert 'requests' in workload
def test_istio_validations_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() istio_validations = kiali_client.istio_validations( namespace=bookinfo_namespace) assert istio_validations != None assert bookinfo_namespace in istio_validations
def _test_service_validations_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() service_validations = kiali_client.service_validations( namespace=bookinfo_namespace, service=SERVICE_TO_VALIDATE) assert service_validations != None assert len(service_validations.get('pod')) > 0
def get_graph_json(kiali_client): PARAMS['namespaces'] = conftest.get_bookinfo_namespace() response = kiali_client.request(method_name='graphNamespaces', params=PARAMS) assert response.status_code == 200 return response.json()
def test_istio_config_list(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() json = kiali_client.request(method_name='istioConfigList', path={'namespace': bookinfo_namespace}).json() assert json != None assert "destinationRules" in json assert json.get('destinationRules') != None assert bookinfo_namespace in json.get('namespace').get('name')
def test_istio_object_type(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() istio_object_type = kiali_client.request(method_name='istioConfigDetails', path={'namespace': bookinfo_namespace, 'object_type': OBJECT_TYPE, 'object': OBJECT}).json() assert istio_object_type != None assert "destinationRule" in istio_object_type assert bookinfo_namespace in istio_object_type.get('namespace').get('name')
def test_istio_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() istio = kiali_client.istio(namespace=bookinfo_namespace) assert istio != None assert "destinationRules" in istio assert istio.get('destinationRules') != None assert bookinfo_namespace in istio.get('namespace').get('name')
def test_istio_config_authorization_policies(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() istio_policies = kiali_client.request(method_name='istioConfigList', path={'namespace': bookinfo_namespace}, params={'objects': 'authorizationpolicies'}).json() assert istio_policies != None assert "virtualServices" in istio_policies assert istio_policies.get('virtualServices') != None assert bookinfo_namespace in istio_policies.get('namespace').get('name')
def test_service_detail_with_virtual_service(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() try: # Add a virtual service that will be tested assert command_exec.oc_apply(VIRTUAL_SERVICE_FILE, bookinfo_namespace) == True with timeout(seconds=30, error_message='Timed out waiting for virtual service creation'): while True: service_details = kiali_client.service_details(namespace=bookinfo_namespace, service=SERVICE_TO_VALIDATE) if service_details != None and service_details.get('virtualServices') != None and len(service_details.get('virtualServices').get('items')) > 0: break time.sleep(1) assert service_details != None virtual_service_descriptor = service_details.get('virtualServices') assert virtual_service_descriptor != None permissions = virtual_service_descriptor.get('permissions') assert permissions != None assert permissions.get('update') == False assert permissions.get('delete') == True virtual_service = virtual_service_descriptor.get('items')[0] assert virtual_service != None assert virtual_service.get('name') == 'reviews' https = virtual_service.get('http') assert https != None assert len (https) == 1 routes = https[0].get('route') assert len (routes) == 2 assert routes[0].get('weight') == 80 destination = routes[0].get('destination') assert destination != None assert destination.get('host') == 'reviews' assert destination.get('subset') == 'v1' assert routes[1].get('weight') == 20 destination = routes[1].get('destination') assert destination != None assert destination.get('host') == 'reviews' assert destination.get('subset') == 'v2' finally: assert command_exec.oc_delete(VIRTUAL_SERVICE_FILE, bookinfo_namespace) == True with timeout(seconds=30, error_message='Timed out waiting for virtual service deletion'): while True: service_details = kiali_client.service_details(namespace=bookinfo_namespace, service=SERVICE_TO_VALIDATE) if service_details != None and len(service_details.get('virtualServices').get('items')) == 0: break time.sleep(1)
def _test_workload_istio_validations(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() workload = kiali_client.workload_istio_validations(namespace=bookinfo_namespace, workload=WORKLOAD_TO_VALIDATE) assert workload != None wp = workload.get('pod') assert wp != None assert WORKLOAD_TO_VALIDATE in wp.get(list(wp.keys())[0]).get('name') assert wp.get(list(wp.keys())[0]).get('valid') == True
def test_application_health_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() app_health = kiali_client.request(method_name='appHealth', path={'namespace': bookinfo_namespace, 'app': 'productpage'}).json() assert app_health != None assert 'workloadStatuses' in app_health workload = app_health.get('workloadStatuses')[0] assert workload != None
def _test_istio_object_type(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() istio_object_type = kiali_client.istio_object_type(bookinfo_namespace, OBJECT_TYPE, bookinfo_namespace) assert istio_object_type != None assert "destinationRule" in istio_object_type assert bookinfo_namespace in istio_object_type.get('namespace').get('name')
def test_istio_permissions_namespaces(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() istio_namespace = kiali_client.request(method_name='getPermissions', params={'namespaces': bookinfo_namespace}).json() assert istio_namespace != None assert "bookinfo" in istio_namespace assert istio_namespace.get('bookinfo') != None gateway = istio_namespace.get('bookinfo').get('authorizationpolicies') assert gateway != None
def test_workload_details(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() workload = kiali_client.workload_details(namespace=bookinfo_namespace, workload=WORKLOAD_TO_VALIDATE) assert workload != None assert WORKLOAD_TO_VALIDATE in workload.get('name') assert WORKLOAD_TYPE in workload.get('type') assert 'labels' in workload assert 'pods' in workload assert 'services' in workload
def test_istio_object_istio_validations(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() istio_validations = kiali_client.request(method_name='istioConfigDetails', path={'namespace': bookinfo_namespace, 'object_type': OBJECT_TYPE, 'object': OBJECT}, params={'validate': 'true'}).json() assert istio_validations != None assert istio_validations.get('validation') != None assert OBJECT in istio_validations.get('validation').get('name') assert OBJECT_TYPE_SINGLE in istio_validations.get('validation').get('objectType')
def test_workload_details(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() workload = kiali_client.request(method_name='workloadDetails', path={'namespace': bookinfo_namespace, 'workload': WORKLOAD_TO_VALIDATE}).json() assert workload != None assert WORKLOAD_TO_VALIDATE in workload.get('name') assert WORKLOAD_TYPE in workload.get('type') assert 'labels' in workload assert 'pods' in workload assert 'services' in workload
def test_application_list_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() app_list = kiali_client.app_list(namespace=bookinfo_namespace) assert app_list != None for app in app_list.get('applications'): assert app.get('name') != None and app.get('name') != '' assert app.get('istioSidecar') == True assert app_list.get('namespace').get('name') == bookinfo_namespace
def test_istio_namespace_validations_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() istio_validations = kiali_client.request( method_name='namespaceValidations', path={ 'namespace': bookinfo_namespace }).json() assert istio_validations != None assert bookinfo_namespace in istio_validations
def _test_istio_object_istio_validations(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() istio_validations = kiali_client.istio_object_istio_validations( bookinfo_namespace, OBJECT_TYPE, bookinfo_namespace) assert istio_validations != None #assert istio_validations.get('virtualservice') != None assert istio_validations.get('virtualservice').get( bookinfo_namespace) != None assert bookinfo_namespace in istio_validations.get('virtualservice').get( bookinfo_namespace).get('name')
def test_service_list_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() services = get_service_list(kiali_client, bookinfo_namespace) assert (len (services) == BOOKINFO_EXPECTED_SERVICES) or (len (services) >= BOOKINFO_EXPECTED_SERVICES_MONGODB) for service in services: assert service != None assert service.get('name') != None and service.get('name') != '' assert service.get('istioSidecar') == True assert service.get('appLabel') == True
def _test_workload_list_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() workload_list = kiali_client.workload_list(namespace=bookinfo_namespace) assert workload_list != None for workload in workload_list.get('workloads'): assert workload != None assert workload.get('name') != None and workload.get('name') != '' assert workload.get('istioSidecar') == True assert workload.get('appLabel') == True assert workload.get('versionLabel') == True
def test_service_validations_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() service_validations = kiali_client.request( method_name='serviceValidations', path={ 'namespace': bookinfo_namespace, 'service': SERVICE_TO_VALIDATE }).json() assert service_validations != None assert service_validations.get('gateway') != None
def test_application_list_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() app_list = kiali_client.request(method_name='appList', path={'namespace': bookinfo_namespace, 'app': APPLICATION_TO_VALIDATE}).json() assert app_list != None for app in app_list.get('applications'): assert app.get('name') != None and app.get('name') != '' if 'traffic-generator' not in app.get('name'): assert app.get('istioSidecar') == True assert app_list.get('namespace').get('name') == bookinfo_namespace
def test_service_health_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_namespace() service_health = kiali_client.service_health(namespace=bookinfo_namespace, service=SERVICE_TO_VALIDATE) assert service_health != None envoy = service_health.get('envoy') assert envoy != None assert 'inbound' in envoy assert 'outbound' in envoy assert 'requests' in service_health