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()
+    }