def test_workload_metrics(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() 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_application_metrics_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() 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_istio_validations_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() 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_endpoint() 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 test_istio_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() 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_workload_health(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() workload = kiali_client.workload_health(namespace=bookinfo_namespace, workload=WORKLOAD_TO_VALIDATE) assert workload != None assert WORKLOAD_TO_VALIDATE in workload.get('deploymentStatus').get('name') assert 'requests' in workload
def test_service_detail_with_virtual_service(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() # Add a virtual service that will be tested assert command_exec.oc_apply(VIRTUAL_SERVICE_FILE, bookinfo_namespace) == True with timeout( seconds=10, 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 len( service_details.get('virtualServices')) > 0: break time.sleep(1) assert service_details != None virtual_service = service_details.get('virtualServices')[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' assert command_exec.oc_delete(VIRTUAL_SERVICE_FILE, bookinfo_namespace) == True with timeout( seconds=10, 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 service_details.get( 'virtualServices') == None: break time.sleep(1)
def _test_istio_object_type(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() 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_application_list_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() 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_workload_istio_validations(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() 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_istio_object_istio_validations(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() 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_workload_list_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() 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_detail_with_destination_rule(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() # Add a virtual service that will be tested assert command_exec.oc_apply(DESTINATION_RULE_FILE, bookinfo_namespace) == True with timeout( seconds=10, error_message='Timed out waiting for destination rule creation'): while True: service_details = kiali_client.service_details( namespace=bookinfo_namespace, service=SERVICE_TO_VALIDATE) if service_details != None and len( service_details.get('destinationRules')) > 0: break time.sleep(1) assert service_details != None destination_rule = service_details.get('destinationRules')[0] assert destination_rule != None assert destination_rule.get('name') == 'reviews' assert 'trafficPolicy' in destination_rule subsets = destination_rule.get('subsets') assert subsets != None assert len(subsets) == 3 for i, subset in enumerate(subsets): subset_number = str(i + 1) name = subset.get('name') assert name == 'v' + subset_number labels = subset.get('labels') assert labels != None and labels.get('version') == 'v' + subset_number assert command_exec.oc_delete(DESTINATION_RULE_FILE, bookinfo_namespace) == True with timeout( seconds=10, error_message='Timed out waiting for destination rule deletion'): while True: service_details = kiali_client.service_details( namespace=bookinfo_namespace, service=SERVICE_TO_VALIDATE) if service_details != None and service_details.get( 'destinationRules') == None: break time.sleep(1)
def test_workload_details(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() 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 'templateAnnotations' in workload assert 'pods' in workload assert 'services' in workload
def test_service_health_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() 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
def test_service_graph_bookinfo_namespace_(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() # Validate Node count nodes = kiali_client.graph_namespace(namespace=bookinfo_namespace, params=PARAMS)["elements"]['nodes'] #print ("Node count: {}".format(len(nodes))) assert len(nodes) >= BOOKINFO_EXPECTED_NODES # validate edge count edges = kiali_client.graph_namespace(namespace=bookinfo_namespace, params=PARAMS)["elements"]['edges'] #print ("Edge count: {}".format(len(edges))) assert len(edges) >= BOOKINFO_EXPECTED_EDGES
def test_application_health_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() app_health = kiali_client.app_health(namespace=bookinfo_namespace, app=APPLICATION_TO_VALIDATE) assert app_health != None envoy = app_health.get('envoy')[0] assert envoy != None assert 'inbound' in envoy assert 'outbound' in envoy assert 'requests' in app_health assert 'deploymentStatuses' in app_health
def test_service_detail_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() service_details = kiali_client.service_details( namespace=bookinfo_namespace, service=SERVICE_TO_VALIDATE) assert service_details != None assert service_details.get('istioSidecar') == True assert 'ports' in service_details.get('service') assert 'labels' in service_details.get('service') assert 'workloads' in service_details assert 'service' in service_details assert 'endpoints' in service_details assert 'virtualServices' in service_details assert 'destinationRules' in service_details assert 'health' in service_details
def test_service_list_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() service_list_json = kiali_client.service_list(namespace=bookinfo_namespace) assert service_list_json.get('namespace').get('name') == bookinfo_namespace services = service_list_json.get('services') 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 do_test(kiali_client, graph_params, yaml_file, badge): environment_configmap = conftest.__get_environment_config__( conftest.ENV_FILE) bookinfo_namespace = bookinfo_namespace = conftest.get_bookinfo_endpoint() appType = kiali_client.graph_namespace(namespace=bookinfo_namespace, params=graph_params)['graphType'] assert appType == graph_params.get('graphType') count = get_badge_count(kiali_client, bookinfo_namespace, graph_params, badge) add_command_text = "oc apply -n " + bookinfo_namespace + " -f " + os.path.abspath( os.path.realpath(yaml_file)) add_command_result = os.popen(add_command_text).read() assert add_command_result.__contains__( "created") or add_command_result.__contains__("configured") graph = kiali_client.graph_namespace(namespace=bookinfo_namespace, params=graph_params) assert graph is not None with timeout(seconds=60, error_message='Timed out waiting for Create'): while True: new_count = get_badge_count(kiali_client, bookinfo_namespace, graph_params, badge) if new_count != 0 and new_count >= count: break time.sleep(1) delete_command_text = "oc delete -n " + bookinfo_namespace + " -f " + os.path.abspath( os.path.realpath(yaml_file)) delete_command_result = os.popen(delete_command_text).read() assert delete_command_result.__contains__("deleted") with timeout(seconds=30, error_message='Timed out waiting for Delete'): while True: # Validate that JSON no longer has Virtual Service if get_badge_count(kiali_client, bookinfo_namespace, graph_params, badge) <= count: break time.sleep(1) return True
def test_service_metrics_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() service = kiali_client.service_metrics(namespace=bookinfo_namespace, service=SERVICE_TO_VALIDATE) for direction in ['dest', 'source']: assert service != None metrics = service.get(direction).get('metrics') assert 'request_count_in' in metrics assert 'request_error_count_in' in metrics assert 'tcp_received_in' in metrics assert 'tcp_sent_in' in metrics histograms = service.get(direction).get('histograms') assert 'request_duration_in' in histograms assert 'request_size_in' in histograms assert 'response_size_in' in histograms
def test_application_details_endpoint(kiali_client): bookinfo_namespace = conftest.get_bookinfo_endpoint() app_details = kiali_client.app_details(namespace=bookinfo_namespace, app=APPLICATION_TO_VALIDATE) assert app_details != None assert 'namespace' in app_details and app_details.get('namespace').get( 'name') == bookinfo_namespace assert 'workloads' in app_details workloads = app_details.get('workloads') assert len(workloads) > 0 for workload in workloads: assert workload.get('istioSidecar') == True assert 'serviceNames' in workload and len( workload.get('serviceNames')) > 0