Ejemplo n.º 1
0
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())
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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
Ejemplo n.º 10
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()
Ejemplo n.º 11
0
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')
Ejemplo n.º 12
0
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')
Ejemplo n.º 13
0
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')
Ejemplo n.º 14
0
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')
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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
Ejemplo n.º 17
0
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
Ejemplo n.º 18
0
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')
Ejemplo n.º 19
0
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
Ejemplo n.º 20
0
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
Ejemplo n.º 21
0
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')
Ejemplo n.º 22
0
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
Ejemplo n.º 24
0
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
Ejemplo n.º 25
0
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')
Ejemplo n.º 26
0
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
Ejemplo n.º 27
0
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
Ejemplo n.º 28
0
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
Ejemplo n.º 29
0
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
Ejemplo n.º 30
0
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