Filippo Giunchedi has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/397889 )

Change subject: mtail: restructure tests
......................................................................


mtail: restructure tests

Get rid of MtailMetric class and return samples in a fashion similar to 
Prometheus' python client.

Bug: T177199
Change-Id: I7bc5e375e355153c8d5cce9e496cb648deb24cb2
---
M modules/mtail/files/test/exim_test.py
M modules/mtail/files/test/mtail_store.py
2 files changed, 36 insertions(+), 42 deletions(-)

Approvals:
  jenkins-bot: Verified
  Filippo Giunchedi: Looks good to me, approved



diff --git a/modules/mtail/files/test/exim_test.py 
b/modules/mtail/files/test/exim_test.py
index a0de96c..345a9a4 100644
--- a/modules/mtail/files/test/exim_test.py
+++ b/modules/mtail/files/test/exim_test.py
@@ -12,39 +12,40 @@
                 os.path.join(test_dir, 'logs/exim.test'))
 
     def testEximMessages(self):
-        m = self.store.get_metric('exim_messages_total')
-        self.assertEqual(3, m._value)
-        self.assertIn('status=out', m._labelpairs)
+        s = self.store.get_samples('exim_messages_total')
+        self.assertIn(('status=out', 3), s)
 
-        m = self.store.get_metric('exim_messages_bytes')
-        self.assertEqual(183084, m._value)
-        self.assertIn('status=out', m._labelpairs)
+        s = self.store.get_samples('exim_messages_bytes')
+        self.assertIn(('status=out', 183084), s)
 
     def testDKIM(self):
-        m = self.store.get_metric('exim_dkim_failure_total')
-        self.assertEqual(2, m._value)
+        s = self.store.get_samples('exim_dkim_failure_total')
+        self.assertIn(('', 2), s)
 
-        m = self.store.get_metric('exim_dkim_success_total')
-        self.assertEqual(1, m._value)
+        s = self.store.get_samples('exim_dkim_success_total')
+        self.assertIn(('', 1), s)
 
     def testMiscErrors(self):
-        m = self.store.get_metric('exim_smtp_errors_total')
-        self.assertEqual(1, m._value)
+        s = self.store.get_samples('exim_smtp_errors_total')
+        self.assertIn(('', 1), s)
 
-        m = self.store.get_metric('exim_rejected_rcpt_total')
-        self.assertEqual(1, m._value)
+        s = self.store.get_samples('exim_smtp_errors_total')
+        self.assertIn(('', 1), s)
 
-        m = self.store.get_metric('exim_tls_errors_total')
-        self.assertEqual(1, m._value)
+        s = self.store.get_samples('exim_rejected_rcpt_total')
+        self.assertIn(('', 1), s)
 
-        m = self.store.get_metric('exim_sender_verify_fail_total')
-        self.assertEqual(1, m._value)
+        s = self.store.get_samples('exim_tls_errors_total')
+        self.assertIn(('', 1), s)
 
-        m = self.store.get_metric('exim_sender_verify_defer_total')
-        self.assertEqual(1, m._value)
+        s = self.store.get_samples('exim_sender_verify_fail_total')
+        self.assertIn(('', 1), s)
 
-        m = self.store.get_metric('exim_too_many_connections_total')
-        self.assertEqual(1, m._value)
+        s = self.store.get_samples('exim_sender_verify_defer_total')
+        self.assertIn(('', 1), s)
 
-        m = self.store.get_metric('exim_rejected_helo_total')
-        self.assertEqual(1, m._value)
+        s = self.store.get_samples('exim_too_many_connections_total')
+        self.assertIn(('', 1), s)
+
+        s = self.store.get_samples('exim_rejected_helo_total')
+        self.assertIn(('', 1), s)
diff --git a/modules/mtail/files/test/mtail_store.py 
b/modules/mtail/files/test/mtail_store.py
index 527e315..360611c 100644
--- a/modules/mtail/files/test/mtail_store.py
+++ b/modules/mtail/files/test/mtail_store.py
@@ -29,23 +29,16 @@
 
         self._store = json.loads(''.join(metrics_store))
 
-    def get_metric(self, name):
+    def get_samples(self, name):
+        """Return all samples for metric name as a list of samples.
+           Each sample is in this form: ("k1=v1,k2=v2", value)"""
+        samples = []
         if name not in self._store:
             raise ValueError('metric %s not found in store', name)
-        return MtailMetric(self._store[name][0].get('Keys', []),
-                           
self._store[name][0]['LabelValues'][0].get('Labels', []),
-                           
self._store[name][0]['LabelValues'][0]['Value']['Value'])
-
-
-class MtailMetric(object):
-    def __init__(self, keys, labels, value):
-        self._keys = keys
-        self._labels = labels
-        self._value = value
-        self._labelpairs = self.get_labelpairs(keys, labels)
-
-    def get_labelpairs(self, keys, labels):
-        res = []
-        for k, v in zip(keys, labels):
-            res.append('%s=%s' % (k, v))
-        return res
+        for metric in self._store[name][0]['LabelValues']:
+            label_names = self._store[name][0].get('Keys', [])
+            label_values = metric.get('Labels', [])
+            value = metric['Value']['Value']
+            labelpairs = ["%s=%s" % (k, v) for k, v in zip(label_names, 
label_values)]
+            samples.append((','.join(labelpairs), value))
+        return samples

-- 
To view, visit https://gerrit.wikimedia.org/r/397889
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I7bc5e375e355153c8d5cce9e496cb648deb24cb2
Gerrit-PatchSet: 4
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Filippo Giunchedi <fgiunch...@wikimedia.org>
Gerrit-Reviewer: Ema <e...@wikimedia.org>
Gerrit-Reviewer: Filippo Giunchedi <fgiunch...@wikimedia.org>
Gerrit-Reviewer: Volans <rcocci...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to