Skip to content

Commit

Permalink
Merge pull request #501 from mattmahoneyrh/KIALI-1532
Browse files Browse the repository at this point in the history
KIALI-1532 - Added new test cases and restructured test classes
  • Loading branch information
xeviknal committed Sep 20, 2018
2 parents 96cc2b5 + 2586abe commit f0353d7
Show file tree
Hide file tree
Showing 9 changed files with 241 additions and 2 deletions.
2 changes: 1 addition & 1 deletion tests/e2e/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
virtualenv
pytest==3.6
pyyaml
kiali-client==0.4.7
kiali-client==0.4.8
3 changes: 3 additions & 0 deletions tests/e2e/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ def kiali_client():
config = __get_environment_config__(ENV_FILE)
return __get_kiali_client__(config)

def get_bookinfo_endpoint():
return __get_environment_config__(ENV_FILE).get('mesh_bookinfo_namespace')

def __get_kiali_client__(config):
if(config.get('kiali_ssl_enabled') is True):
context = ssl._create_unverified_context()
Expand Down
46 changes: 46 additions & 0 deletions tests/e2e/tests/test_kiali_application_endpoint.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import json
import tests.conftest as conftest

APPLICATION_TO_VALIDATE = 'productpage'

PARAMS = {'graphType': 'versionedApp', 'duration': '60s'}


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('istioSidecar') == True

assert app_list.get('namespace').get('name') == bookinfo_namespace

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 app_details.get('namespace').get('name') == bookinfo_namespace
assert 'workloads' in app_details and (len(app_details.get('workloads')) > 0)
assert app_details.get('workloads')[0].get('istioSidecar') == True

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
assert app_health.get('envoy') != None
assert app_health.get('deploymentStatuses')
assert app_health.get('requests')

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
assert app_metrics.get('source') != None
assert app_metrics.get('source').get('metrics') != None
assert app_metrics.get('dest').get('metrics') != None

33 changes: 33 additions & 0 deletions tests/e2e/tests/test_kiali_bookinfo_namespace_endpoint.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import pytest
import tests.conftest as conftest

# Note: Number of services +1 Views Group Node
# Note: Node and Edge counts are based on traffic origainating from the Ingress
BOOKINFO_EXPECTED_NODES=7
BOOKINFO_EXPECTED_EDGES=6
BOOKINFO_EXPECTED_SERVICES = 4

PARAMS = {'graphType': 'versionedApp', 'duration': '60s'}

def test_service_graph_rest_endpoint(kiali_json):

assert kiali_json != None, "Json: {}".format(kiali_json)

# Validate that there are Nodes
assert len(kiali_json.get('elements').get('nodes')) >= 1

# Validate that there are Edges
assert len(kiali_json.get('elements').get('edges')) >= 1

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
3 changes: 2 additions & 1 deletion tests/e2e/tests/test_kiali_graph_badges.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ def test_kiali_virtual_service_app(kiali_client):

def do_test(kiali_client, graph_params, yaml_file, badge):
environment_configmap = conftest.__get_environment_config__(conftest.ENV_FILE)
bookinfo_namespace = environment_configmap.get('mesh_bookinfo_namespace')
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')
Expand Down
38 changes: 38 additions & 0 deletions tests/e2e/tests/test_kiali_istio_endpoint.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import pytest
import tests.conftest as conftest

OBJECT_TYPE = 'virtualservices'

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_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_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_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')

46 changes: 46 additions & 0 deletions tests/e2e/tests/test_kiali_service_endpoint.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import pytest
import tests.conftest as conftest

BOOKINFO_EXPECTED_SERVICES = 4
BOOKINFO_EXPECTED_SERVICES_MONGODB = 5
SERVICE_TO_VALIDATE = 'reviews'

def test_service_list_endpoint(kiali_client):
bookinfo_namespace = conftest.get_bookinfo_endpoint()

assert kiali_client.service_list(namespace=bookinfo_namespace).get('namespace').get('name') == bookinfo_namespace
number_services = len (kiali_client.service_list(namespace=bookinfo_namespace).get('services'))
assert (number_services == BOOKINFO_EXPECTED_SERVICES) or (number_services == BOOKINFO_EXPECTED_SERVICES_MONGODB)

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 'workloads' in service_details
assert 'service' in service_details

def test_service_metrics_endpoint(kiali_client):
bookinfo_namespace = conftest.get_bookinfo_endpoint()

service_metrics = kiali_client.service_metrics(namespace=bookinfo_namespace, service=SERVICE_TO_VALIDATE).get('dest')
assert 'metrics' in service_metrics

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

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

25 changes: 25 additions & 0 deletions tests/e2e/tests/test_kiali_urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import pytest
import tests.conftest as conftest
from utils.url_connection import url_connection

VALIDATE_GRAFANA_URL_CONNECTION = False
VALIDATE_JAEGER_URL_CONNECTION = False

def test_grafana_url_endpoint(kiali_client):
url = kiali_client.grafana().get('url')
assert url != None and 'grafana-istio-system' in url
if VALIDATE_GRAFANA_URL_CONNECTION:
content = url_connection.open_url_connection(url)
assert content != None
else:
print("Skipping Grafana URL Connection Validation")

def test_jaeger_url_endpoint(kiali_client):
url = kiali_client.jaeger().get('url')
assert url != None and 'jaeger-query-istio-system' in url

if VALIDATE_JAEGER_URL_CONNECTION:
content = url_connection.open_url_connection(url)
assert content != None
else:
print ("Skipping Jaeger URL Connection Validation")
47 changes: 47 additions & 0 deletions tests/e2e/tests/test_kiali_workload_endpoint.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import pytest
import tests.conftest as conftest

WORKLOAD_TO_VALIDATE = 'details-v1'
WORKLOAD_TYPE = 'Deployment'

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.get('istioSidecar') == True

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')

def test_workload_metrics(kiali_client):
bookinfo_namespace = conftest.get_bookinfo_endpoint()

workload = kiali_client.workload_metrics(namespace=bookinfo_namespace, workload=WORKLOAD_TO_VALIDATE)
assert workload != None
metrics = workload.get('source').get('metrics')
assert 'request_count_in' in metrics
assert 'request_count_out' in metrics

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')

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

0 comments on commit f0353d7

Please sign in to comment.