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
Example #2
0
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')
Example #9
0
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
Example #16
0
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
Example #17
0
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
Example #20
0
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
Example #22
0
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