Cover validation of elasticsearch cluster 75/55875/2
authorYujun Zhang <zhang.yujunz@zte.com.cn>
Tue, 17 Apr 2018 08:28:38 +0000 (16:28 +0800)
committerYujun Zhang <zhang.yujunz@zte.com.cn>
Tue, 17 Apr 2018 08:33:10 +0000 (16:33 +0800)
- cluster health is not red
- indics found
- log entry created by istio found
- requests in and out http load balance matches

pytest is used as the test runner and wrapped in `validate.py`

Change-Id: Iad540b69d05118fadc97df679cf3424513c15e38
Signed-off-by: Yujun Zhang <zhang.yujunz@zte.com.cn>
.gitignore
clover/logging/conftest.py [new file with mode: 0644]
clover/logging/es_test.py [new file with mode: 0644]
clover/logging/validate.py

index 988165b..e2075ec 100644 (file)
@@ -35,3 +35,4 @@ cover/
 .tox/
 # work env
 work/
+.pytest_cache
diff --git a/clover/logging/conftest.py b/clover/logging/conftest.py
new file mode 100644 (file)
index 0000000..d464fab
--- /dev/null
@@ -0,0 +1,15 @@
+# Copyright (c) Authors of Clover
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+
+from elasticsearch import Elasticsearch
+import pytest
+
+ES_HOST="localhost:9200"
+
+@pytest.fixture
+def es():
+    return Elasticsearch([ES_HOST])
diff --git a/clover/logging/es_test.py b/clover/logging/es_test.py
new file mode 100644 (file)
index 0000000..bd0e359
--- /dev/null
@@ -0,0 +1,30 @@
+# Copyright (c) Authors of Clover
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+
+INDEX_PATTERN='logstash-*'
+TAG='newlog.logentry.istio-system'
+
+def test_health(es):
+    assert es.cat.health(h='status') != 'red\n'
+
+def test_indices(es):
+    assert len(es.cat.indices(INDEX_PATTERN)) > 0
+
+def test_logentry(es):
+    assert es.count(
+        index=INDEX_PATTERN,
+        body={"query":{"match":{"tag":TAG}}})['count'] > 0
+
+def test_lb(es):
+    """requests in and out load balance should match"""
+    from_lb = es.count(
+        index=INDEX_PATTERN,
+        body={"query":{"match":{"source": "http-lb"}}})
+    to_lb = es.count(
+        index=INDEX_PATTERN,
+        body={"query":{"match":{"destination": "http-lb"}}})
+    assert from_lb['count'] == to_lb['count']
index 821f912..aca0394 100644 (file)
@@ -9,6 +9,8 @@ from kubernetes import client, config
 from kubernetes.stream import stream
 import sh
 import re
+import os
+import pytest
 
 FLUENTD_NAMESPACE = 'logging'
 FLUENTD_PATTERN = 'fluentd-.*'
@@ -54,3 +56,4 @@ def main():
 
 if __name__ == '__main__':
     main()
+    pytest.main([os.path.dirname(os.path.realpath(__file__))])