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