Add more public url tests for UIs
Related-PROD: PROD-23746
Change-Id: Ie680d0d934cf36f4147b9d9a079f53469d26eccc
diff --git a/test_set/cvp-sanity/fixtures/base.py b/test_set/cvp-sanity/fixtures/base.py
index 60b8f28..0b83260 100644
--- a/test_set/cvp-sanity/fixtures/base.py
+++ b/test_set/cvp-sanity/fixtures/base.py
@@ -16,6 +16,50 @@
@pytest.fixture(scope='session')
+def ctl_nodes_pillar(local_salt_client):
+ '''Return controller node pillars (OS or k8s ctls).
+ This will help to identify nodes to use for UI curl tests.
+ If no platform is installed (no OS or k8s) we need to skip
+ the test (product team use case).
+ '''
+ salt_output = local_salt_client.cmd(
+ 'keystone:server',
+ 'test.ping',
+ expr_form='pillar')
+ if salt_output:
+ return "keystone:server"
+ else:
+ salt_output = local_salt_client.cmd(
+ 'etcd:server',
+ 'test.ping',
+ expr_form='pillar')
+ return "etcd:server" if salt_output else pytest.skip("Neither \
+ Openstack nor k8s is found. Skipping test")
+
+
+@pytest.fixture(scope='session')
+def check_openstack(local_salt_client):
+ salt_output = local_salt_client.cmd(
+ 'keystone:server',
+ 'test.ping',
+ expr_form='pillar')
+ if not salt_output:
+ pytest.skip("Openstack not found or keystone:server pillar \
+ are not found on this environment.")
+
+
+@pytest.fixture(scope='session')
+def check_drivetrain(local_salt_client):
+ salt_output = local_salt_client.cmd(
+ 'I@jenkins:client and not I@salt:master',
+ 'test.ping',
+ expr_form='compound')
+ if not salt_output:
+ pytest.skip("Drivetrain service or jenkins:client pillar \
+ are not found on this environment.")
+
+
+@pytest.fixture(scope='session')
def check_prometheus(local_salt_client):
salt_output = local_salt_client.cmd(
'prometheus:server',
diff --git a/test_set/cvp-sanity/tests/test_contrail.py b/test_set/cvp-sanity/tests/test_contrail.py
index 5e7e108..e5722bd 100644
--- a/test_set/cvp-sanity/tests/test_contrail.py
+++ b/test_set/cvp-sanity/tests/test_contrail.py
@@ -1,5 +1,6 @@
import pytest
import json
+import utils
pytestmark = pytest.mark.usefixtures("contrail")
@@ -85,3 +86,18 @@
'The length of vRouters {} differs' \
' from the length of compute nodes {}'.format(actual_vrouter_count,
len(cs.keys()))
+
+
+def test_public_ui_contrail(local_salt_client, ctl_nodes_pillar):
+ IP = utils.get_monitoring_ip('cluster_public_host')
+ protocol = 'https'
+ port = '8143'
+ url = "{}://{}:{}".format(protocol, IP, port)
+ result = local_salt_client.cmd(
+ ctl_nodes_pillar,
+ 'cmd.run',
+ ['curl -k {}/ 2>&1 | \
+ grep Contrail'.format(url)],
+ expr_form='pillar')
+ assert len(result[result.keys()[0]]) != 0, \
+ 'Public Contrail UI is not reachable on {} from ctl nodes'.format(url)
diff --git a/test_set/cvp-sanity/tests/test_stacklight.py b/test_set/cvp-sanity/tests/test_stacklight.py
index bd6401d..c91a5f6 100644
--- a/test_set/cvp-sanity/tests/test_stacklight.py
+++ b/test_set/cvp-sanity/tests/test_stacklight.py
@@ -121,13 +121,13 @@
@pytest.mark.usefixtures('check_prometheus')
-def test_prometheus_alert_count(local_salt_client):
+def test_prometheus_alert_count(local_salt_client, ctl_nodes_pillar):
IP = utils.get_monitoring_ip('cluster_public_host')
# keystone:server can return 3 nodes instead of 1
# this will be fixed later
# TODO
nodes_info = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl -s http://{}:15010/alerts | grep icon-chevron-down | '
'grep -v "0 active"'.format(IP)],
diff --git a/test_set/cvp-sanity/tests/test_ui_addresses.py b/test_set/cvp-sanity/tests/test_ui_addresses.py
index 1bb67ec..a2f0f2d 100644
--- a/test_set/cvp-sanity/tests/test_ui_addresses.py
+++ b/test_set/cvp-sanity/tests/test_ui_addresses.py
@@ -2,7 +2,8 @@
import pytest
-def test_ui_horizon(local_salt_client):
+@pytest.mark.usefixtures('check_openstack')
+def test_ui_horizon(local_salt_client, ctl_nodes_pillar):
salt_output = local_salt_client.cmd(
'horizon:server',
'pillar.get',
@@ -13,7 +14,7 @@
IP = [salt_output[node] for node in salt_output
if salt_output[node]]
result = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl --insecure https://{}/auth/login/ 2>&1 | \
grep Login'.format(IP[0])],
@@ -23,14 +24,30 @@
IP[0])
+@pytest.mark.usefixtures('check_openstack')
+def test_public_openstack(local_salt_client, ctl_nodes_pillar):
+ IP = utils.get_monitoring_ip('cluster_public_host')
+ protocol = 'https'
+ port = '5000'
+ url = "{}://{}:{}/v3".format(protocol, IP, port)
+ result = local_salt_client.cmd(
+ ctl_nodes_pillar,
+ 'cmd.run',
+ ['curl -k {}/ 2>&1 | \
+ grep stable'.format(url)],
+ expr_form='pillar')
+ assert len(result[result.keys()[0]]) != 0, \
+ 'Public Openstack url is not reachable on {} from ctl nodes'.format(url)
+
+
@pytest.mark.usefixtures('check_kibana')
-def test_internal_ui_kibana(local_salt_client):
+def test_internal_ui_kibana(local_salt_client, ctl_nodes_pillar):
IP = utils.get_monitoring_ip('stacklight_log_address')
protocol = 'http'
port = '5601'
url = "{}://{}:{}".format(protocol, IP, port)
result = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl {}/app/kibana 2>&1 | \
grep loading'.format(url)],
@@ -41,13 +58,13 @@
@pytest.mark.usefixtures('check_kibana')
-def test_public_ui_kibana(local_salt_client):
- IP = utils.get_monitoring_ip('openstack_proxy_address')
+def test_public_ui_kibana(local_salt_client, ctl_nodes_pillar):
+ IP = utils.get_monitoring_ip('cluster_public_host')
protocol = 'https'
port = '5601'
url = "{}://{}:{}".format(protocol, IP, port)
result = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl {}/app/kibana 2>&1 | \
grep loading'.format(url)],
@@ -58,13 +75,13 @@
@pytest.mark.usefixtures('check_prometheus')
-def test_internal_ui_prometheus(local_salt_client):
+def test_internal_ui_prometheus(local_salt_client, ctl_nodes_pillar):
IP = utils.get_monitoring_ip('stacklight_monitor_address')
protocol = 'http'
port = '15010'
url = "{}://{}:{}".format(protocol, IP, port)
result = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl {}/graph 2>&1 | \
grep Prometheus'.format(url)],
@@ -75,13 +92,13 @@
@pytest.mark.usefixtures('check_prometheus')
-def test_public_ui_prometheus(local_salt_client):
- IP = utils.get_monitoring_ip('openstack_proxy_address')
+def test_public_ui_prometheus(local_salt_client, ctl_nodes_pillar):
+ IP = utils.get_monitoring_ip('cluster_public_host')
protocol = 'https'
port = '15010'
url = "{}://{}:{}".format(protocol, IP, port)
result = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl {}/graph 2>&1 | \
grep Prometheus'.format(url)],
@@ -92,13 +109,13 @@
@pytest.mark.usefixtures('check_prometheus')
-def test_internal_ui_alert_manager(local_salt_client):
+def test_internal_ui_alert_manager(local_salt_client, ctl_nodes_pillar):
IP = utils.get_monitoring_ip('stacklight_monitor_address')
protocol = 'http'
port = '15011'
url = "{}://{}:{}".format(protocol, IP, port)
result = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl -s {}/ | grep Alertmanager'.format(url)],
expr_form='pillar')
@@ -108,13 +125,13 @@
@pytest.mark.usefixtures('check_prometheus')
-def test_public_ui_alert_manager(local_salt_client):
- IP = utils.get_monitoring_ip('openstack_proxy_address')
+def test_public_ui_alert_manager(local_salt_client, ctl_nodes_pillar):
+ IP = utils.get_monitoring_ip('cluster_public_host')
protocol = 'https'
port = '15011'
url = "{}://{}:{}".format(protocol, IP, port)
result = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl -s {}/ | grep Alertmanager'.format(url)],
expr_form='pillar')
@@ -124,13 +141,13 @@
@pytest.mark.usefixtures('check_grafana')
-def test_internal_ui_grafana(local_salt_client):
+def test_internal_ui_grafana(local_salt_client, ctl_nodes_pillar):
IP = utils.get_monitoring_ip('stacklight_monitor_address')
protocol = 'http'
port = '15013'
url = "{}://{}:{}".format(protocol, IP, port)
result = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl {}/login 2>&1 | grep Grafana'.format(url)],
expr_form='pillar')
@@ -140,13 +157,13 @@
@pytest.mark.usefixtures('check_grafana')
-def test_public_ui_grafana(local_salt_client):
- IP = utils.get_monitoring_ip('openstack_proxy_address')
+def test_public_ui_grafana(local_salt_client, ctl_nodes_pillar):
+ IP = utils.get_monitoring_ip('cluster_public_host')
protocol = 'https'
port = '8084'
url = "{}://{}:{}".format(protocol, IP, port)
result = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl {}/login 2>&1 | grep Grafana'.format(url)],
expr_form='pillar')
@@ -155,13 +172,13 @@
@pytest.mark.usefixtures('check_alerta')
-def test_internal_ui_alerta(local_salt_client):
+def test_internal_ui_alerta(local_salt_client, ctl_nodes_pillar):
IP = utils.get_monitoring_ip('stacklight_monitor_address')
protocol = 'http'
port = '15017'
url = "{}://{}:{}".format(protocol, IP, port)
result = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl {}/ 2>&1 | \
grep Alerta'.format(url)],
@@ -171,16 +188,48 @@
@pytest.mark.usefixtures('check_alerta')
-def test_public_ui_alerta(local_salt_client):
- IP = utils.get_monitoring_ip('openstack_proxy_address')
+def test_public_ui_alerta(local_salt_client, ctl_nodes_pillar):
+ IP = utils.get_monitoring_ip('cluster_public_host')
protocol = 'https'
port = '15017'
url = "{}://{}:{}".format(protocol, IP, port)
result = local_salt_client.cmd(
- 'keystone:server',
+ ctl_nodes_pillar,
'cmd.run',
['curl {}/ 2>&1 | \
grep Alerta'.format(url)],
expr_form='pillar')
assert len(result[result.keys()[0]]) != 0, \
'Public Alerta page is not reachable on {} from ctl nodes'.format(url)
+
+
+@pytest.mark.usefixtures('check_drivetrain')
+def test_public_ui_jenkins(local_salt_client, ctl_nodes_pillar):
+ IP = utils.get_monitoring_ip('cluster_public_host')
+ protocol = 'https'
+ port = '8081'
+ url = "{}://{}:{}".format(protocol, IP, port)
+ result = local_salt_client.cmd(
+ ctl_nodes_pillar,
+ 'cmd.run',
+ ['curl -k {}/ 2>&1 | \
+ grep Authentication'.format(url)],
+ expr_form='pillar')
+ assert len(result[result.keys()[0]]) != 0, \
+ 'Public Jenkins page is not reachable on {} from ctl nodes'.format(url)
+
+
+@pytest.mark.usefixtures('check_drivetrain')
+def test_public_ui_gerrit(local_salt_client, ctl_nodes_pillar):
+ IP = utils.get_monitoring_ip('cluster_public_host')
+ protocol = 'https'
+ port = '8070'
+ url = "{}://{}:{}".format(protocol, IP, port)
+ result = local_salt_client.cmd(
+ ctl_nodes_pillar,
+ 'cmd.run',
+ ['curl -k {}/ 2>&1 | \
+ grep "Gerrit Code Review"'.format(url)],
+ expr_form='pillar')
+ assert len(result[result.keys()[0]]) != 0, \
+ 'Public Gerrit page is not reachable on {} from ctl nodes'.format(url)