Add some stacklight tests
diff --git a/cvp_checks/tests/test_stacklight.py b/cvp_checks/tests/test_stacklight.py
new file mode 100644
index 0000000..d839042
--- /dev/null
+++ b/cvp_checks/tests/test_stacklight.py
@@ -0,0 +1,44 @@
+import json
+import requests
+
+
+def test_elasticsearch_cluster(local_salt_client):
+ assert requests.get('http://log:9200/').status_code == 200, \
+ 'Cannot check elasticsearch url. Info:'
+
+
+def test_stacklight_services_replicas(local_salt_client):
+ salt_output = local_salt_client.cmd(
+ 'docker:client:stack:monitoring',
+ 'cmd.run',
+ ['docker service ls'],
+ expr_form='pillar')
+ wrong_items = []
+ for line in salt_output[salt_output.keys()[0]].split('\n'):
+ if line[line.find('/') - 1] != line[line.find('/') + 1] \
+ and 'replicated' in line:
+ wrong_items.append(line)
+ assert len(wrong_items) == 0, \
+ '''Some monitoring services doesn't have expected number of replicas:
+ {}'''.format(json.dumps(wrong_items, indent=4))
+
+
+def test_stacklight_containers_status(local_salt_client):
+ salt_output = local_salt_client.cmd(
+ 'docker:swarm:role:master',
+ 'cmd.run',
+ ['docker service ps $(docker stack services -q monitoring)'],
+ expr_form='pillar')
+ result = {}
+ for line in salt_output[salt_output.keys()[1]].split('\n')[1:]:
+ shift = 0
+ if line.split()[1] == '\\_':
+ shift = 1
+ if line.split()[1 + shift] not in result.keys():
+ result[line.split()[1]] = 'NOT OK'
+ if line.split()[4 + shift] == 'Running' \
+ or line.split()[4 + shift] == 'Ready':
+ result[line.split()[1 + shift]] = 'OK'
+ assert 'NOT OK' not in result.values(), \
+ '''Some containers are in incorrect state:
+ {}'''.format(json.dumps(result, indent=4))