Esempio n. 1
0
class TestScribeCollector(CollectorTestCase):

    def setUp(self):
        config = get_collector_config('ScribeCollector', {
            'ports': '1464',
            'bin': 'true'
        })

        self.collector = ScribeCollector(config, None)

    @patch.object(Collector, 'publish')
    def test_metrics(self, publish_mock):
        fixtures = [
            (self.getFixture('response1.txt').getvalue(), ''),
            (self.getFixture('response2.txt').getvalue(), '')]

        patch_communicate = patch(
            'subprocess.Popen.communicate',
            Mock(side_effect=lambda *args: fixtures.pop(0)))

        patch_communicate.start()
        self.collector.collect()
        # Clear the queue
        self.assertPublishedMany(publish_mock, {})
        self.collector.collect()
        patch_communicate.stop()

        published_metrics = {
            'denied_queue_size.notification': 0.0,
            'received_good.notification': 2.0,
            'received_good.scribe_overall': 500000.0,
            'denied_queue_size.scribe_overall': 10000.0
        }

        self.assertPublishedMany(publish_mock, published_metrics)