Init commit
Copied source: https://github.com/braedon/prometheus-es-exporter
with last commit: 05c52723859bfcc2fa2f9614743ac3f9380f4f64
Related-bug: PROD-27906 (PROD:27906)
Change-Id: I264c92d794c4554303873231a72284a24f2c55b1
(cherry picked from commit a16d07eaa4db83da68a1dcb1f301913fa94cb9f7)
diff --git a/tests/utils.py b/tests/utils.py
new file mode 100644
index 0000000..c81177f
--- /dev/null
+++ b/tests/utils.py
@@ -0,0 +1,36 @@
+from prometheus_es_exporter import group_metrics
+
+
+def format_label(key, value):
+ return key + '="' + value + '"'
+
+
+def format_metrics(metric_name, label_keys, value_dict):
+ metrics = {}
+
+ for label_values, value in value_dict.items():
+ if len(label_keys) > 0:
+ # sorted_keys = sorted(label_keys)
+ labels = '{'
+ labels += ','.join([format_label(label_keys[i], label_values[i])
+ for i in range(len(label_keys))])
+ labels += '}'
+ else:
+ labels = ''
+
+ metrics[metric_name + labels] = value
+
+ return metrics
+
+
+# Converts the parse_response() result into a psuedo-prometheus format
+# that is useful for comparing results in tests.
+# Uses the 'group_metrics()' function used by the exporter, so effectively
+# tests that function.
+def convert_result(result):
+ metric_dict = group_metrics(result)
+ return {
+ metric: value
+ for metric_name, (label_keys, value_dict) in metric_dict.items()
+ for metric, value in format_metrics(metric_name, label_keys, value_dict).items()
+ }