Пример #1
0
    def test_should_handle_canonical_names_setting_True(self, urlopen_mock,
                                                        create_request_mock):
        config = get_collector_config('JolokiaCollector', {})
        config['collectors']['JolokiaCollector']['use_canonical_names'] = 'True'
        config['collectors']['JolokiaCollector']['domains'] = ['foo']
        request = Mock()
        request.read.return_value = "{status: 400}"
        urlopen_mock.return_value = request

        collector = JolokiaCollector(config, None)
        collector.collect()

        self.assertIn('canonicalNaming=true',
                      create_request_mock.call_args[0][0])
        self.assertIs(collector.config['use_canonical_names'], True)
Пример #2
0
    def test_should_handle_invalid_canonical_names_setting_values(self):
        config = get_collector_config('JolokiaCollector', {})
        config['collectors']['JolokiaCollector']['use_canonical_names'] = 'foo'
        logger_mock = Mock()
        patch_logger = patch('logging.getLogger', Mock(
            return_value=logger_mock))
        patch_logger.start()

        collector = JolokiaCollector(config, None)

        patch_logger.stop()
        logger_mock.error.assert_called_once_with(
            'Unexpected value "%s" for "use_canonical_names" setting. '
            'Expected "True" or "False". Using default value.', 'foo')
        self.assertEqual(collector.config['use_canonical_names'],
                         collector.get_default_config()['use_canonical_names'])
Пример #3
0
    def test_should_handle_invalid_canonical_names_setting_values(self):
        config = get_collector_config('JolokiaCollector', {})
        config['collectors']['JolokiaCollector']['use_canonical_names'] = 'foo'
        logger_mock = Mock()
        patch_logger = patch('logging.getLogger',
                             Mock(return_value=logger_mock))
        patch_logger.start()

        collector = JolokiaCollector(config, None)

        patch_logger.stop()
        logger_mock.error.assert_called_once_with(
            'Unexpected value "%s" for "use_canonical_names" setting. '
            'Expected "True" or "False". Using default value.', 'foo')
        self.assertEqual(collector.config['use_canonical_names'],
                         collector.get_default_config()['use_canonical_names'])
Пример #4
0
    def test_should_handle_canonical_names_setting_False(
            self, urlopen_mock, create_request_mock):
        config = get_collector_config('JolokiaCollector', {})
        config['collectors']['JolokiaCollector']['use_canonical_names'] = \
            'False'
        config['collectors']['JolokiaCollector']['domains'] = ['foo']
        request = Mock()
        request.read.return_value = "{status: 400}"
        urlopen_mock.return_value = request

        collector = JolokiaCollector(config, None)
        collector.collect()

        self.assertIn('canonicalNaming=false',
                      create_request_mock.call_args[0][0])
        self.assertIs(collector.config['use_canonical_names'], False)
Пример #5
0
    def test_canonical_names_setting_not_set(self):
        config = get_collector_config('JolokiaCollector', {})
        logger_mock = Mock()
        patch_logger = patch('logging.getLogger',
                             Mock(return_value=logger_mock))
        patch_logger.start()

        JolokiaCollector(config, None)

        patch_logger.stop()
        logger_mock.error.assert_not_called()
Пример #6
0
    def setUp(self):
        config = get_collector_config('JolokiaCollector', {})

        self.collector = JolokiaCollector(config, None)
Пример #7
0
class TestJolokiaCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config('JolokiaCollector', {})

        self.collector = JolokiaCollector(config, None)

    def test_import(self):
        self.assertTrue(JolokiaCollector)

    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):
        def se(url):
            if url == 'http://*****:*****@patch.object(Collector, 'publish')
    def test_should_fail_gracefully(self, publish_mock):
        patch_urlopen = patch('urllib2.urlopen', Mock(
                              return_value=self.getFixture('stats_blank')))

        patch_urlopen.start()
        self.collector.collect()
        patch_urlopen.stop()

        self.assertPublishedMany(publish_mock, {})
Пример #8
0
    def setUp(self):
        config = get_collector_config('JolokiaCollector', {})

        self.collector = JolokiaCollector(config, None)
Пример #9
0
class TestJolokiaCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config('JolokiaCollector', {})

        self.collector = JolokiaCollector(config, None)

    def test_import(self):
        self.assertTrue(JolokiaCollector)

    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):
        def se(url):
            if url == 'http://*****:*****@patch.object(Collector, 'publish')
    def test_real_data_with_rewrite(self, publish_mock):
        def se(url):
            if url == 'http://*****:*****@patch.object(Collector, 'publish')
    def test_should_fail_gracefully(self, publish_mock):
        patch_urlopen = patch('urllib2.urlopen', Mock(
                              return_value=self.getFixture('stats_blank')))

        patch_urlopen.start()
        self.collector.collect()
        patch_urlopen.stop()

        self.assertPublishedMany(publish_mock, {})

    @patch.object(Collector, 'publish')
    def test_should_skip_when_mbean_request_fails(self, publish_mock):
        def se(url):
            if url == 'http://localhost:8778/jolokia/list':
                return self.getFixture('listing_with_bad_mbean')
            elif url == ('http://localhost:8778/jolokia/?ignoreErrors=true'
                         '&p=read/xxx.bad.package:*'):
                return self.getFixture('stats_error')
            else:
                return self.getFixture('stats')
        patch_urlopen = patch('urllib2.urlopen', Mock(side_effect=se))

        patch_urlopen.start()
        self.collector.collect()
        patch_urlopen.stop()

        metrics = self.get_metrics()
        self.setDocExample(collector=self.collector.__class__.__name__,
                           metrics=metrics,
                           defaultpath=self.collector.config['path'])
        self.assertPublishedMany(publish_mock, metrics)

    def test_should_escape_jolokia_domains(self):
        domain_with_slash = self.collector.escape_domain('some/domain')
        domain_with_bang = self.collector.escape_domain('some!domain')
        domain_with_quote = self.collector.escape_domain('some"domain')
        self.assertEqual(domain_with_slash, 'some%21/domain')
        self.assertEqual(domain_with_bang, 'some%21%21domain')
        self.assertEqual(domain_with_quote, 'some%21%22domain')

    def get_metrics(self):
        prefix = 'java.lang.name_ParNew.type_GarbageCollector.LastGcInfo'
        return {
            prefix + '.startTime': 14259063,
            prefix + '.id': 219,
            prefix + '.duration': 2,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.max': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.committed': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.init': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.used': 25165824,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.max': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.committed': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.init': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.used': 5146840,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.max': 85983232,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.committed': 23920640,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.init': 21757952,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.used': 23796992,
            prefix + '.memoryUsageBeforeGc.Code_Cache.max': 50331648,
            prefix + '.memoryUsageBeforeGc.Code_Cache.committed': 2686976,
            prefix + '.memoryUsageBeforeGc.Code_Cache.init': 2555904,
            prefix + '.memoryUsageBeforeGc.Code_Cache.used': 2600768,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.max': 3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.committed':
            3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.init': 3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.used': 414088
        }

    def get_metrics_rewrite_test(self):
        prefix = 'java.lang.name_ParNew.type_GarbageCollector.LastGcInfo'
        return {
            prefix + '.startTime': 14259063,
            prefix + '.id': 219,
            prefix + '.duration': 2,
            prefix + '.memUsedBeforeGc.Par_Eden_Space.max': 25165824,
            prefix + '.memUsedBeforeGc.Par_Eden_Space.committed': 25165824,
            prefix + '.memUsedBeforeGc.Par_Eden_Space.used': 25165824,
            prefix + '.memUsedBeforeGc.CMS_Old_Gen.max': 73400320,
            prefix + '.memUsedBeforeGc.CMS_Old_Gen.committed': 73400320,
            prefix + '.memUsedBeforeGc.CMS_Old_Gen.used': 5146840,
            prefix + '.memUsedBeforeGc.CMS_Perm_Gen.max': 85983232,
            prefix + '.memUsedBeforeGc.CMS_Perm_Gen.committed': 23920640,
            prefix + '.memUsedBeforeGc.CMS_Perm_Gen.used': 23796992,
            prefix + '.memUsedBeforeGc.Code_Cache.max': 50331648,
            prefix + '.memUsedBeforeGc.Code_Cache.committed': 2686976,
            prefix + '.memUsedBeforeGc.Code_Cache.used': 2600768,
            prefix + '.memUsedBeforeGc.Par_Survivor_Space.max': 3145728,
            prefix + '.memUsedBeforeGc.Par_Survivor_Space.committed': 3145728,
            prefix + '.memUsedBeforeGc.Par_Survivor_Space.used': 414088
        }
Пример #10
0
class TestJolokiaCollector(CollectorTestCase):

    def setUp(self):
        config = get_collector_config('JolokiaCollector', {})

        self.collector = JolokiaCollector(config, None)

    def test_import(self):
        self.assertTrue(JolokiaCollector)

    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):
        def se(url, timeout=0):
            if url == 'http://*****:*****@patch.object(Collector, 'publish')
    def test_real_data_with_rewrite(self, publish_mock):
        def se(url, timeout=0):
            if url == 'http://*****:*****@patch.object(Collector, 'publish')
    def test_should_work_with_real_data_and_basic_auth(self, publish_mock):
        self.collector.config["username"] = "******"
        self.collector.config["password"] = "******"
        self.test_should_work_with_real_data()

    @patch.object(Collector, 'publish')
    def test_should_fail_gracefully(self, publish_mock):
        patch_urlopen = patch('urllib2.urlopen', Mock(
                              return_value=self.getFixture('stats_blank')))

        patch_urlopen.start()
        self.collector.collect()
        patch_urlopen.stop()

        self.assertPublishedMany(publish_mock, {})

    @patch.object(Collector, 'publish')
    def test_should_skip_when_mbean_request_fails(self, publish_mock):
        def se(url, timeout=0):
            if url == 'http://*****:*****@patch('jolokia.JolokiaCollector._create_request')
    @patch('urllib2.urlopen')
    def test_should_handle_canonical_names_setting_True(self, urlopen_mock,
                                                        create_request_mock):
        config = get_collector_config('JolokiaCollector', {})
        config['collectors']['JolokiaCollector']['use_canonical_names'] = 'True'
        config['collectors']['JolokiaCollector']['domains'] = ['foo']
        request = Mock()
        request.read.return_value = "{status: 400}"
        urlopen_mock.return_value = request

        collector = JolokiaCollector(config, None)
        collector.collect()

        self.assertIn('canonicalNaming=true',
                      create_request_mock.call_args[0][0])
        self.assertIs(collector.config['use_canonical_names'], True)

    @patch('jolokia.JolokiaCollector._create_request')
    @patch('urllib2.urlopen')
    def test_should_handle_canonical_names_setting_False(self, urlopen_mock,
                                                         create_request_mock):
        config = get_collector_config('JolokiaCollector', {})
        config['collectors']['JolokiaCollector']['use_canonical_names'] = \
            'False'
        config['collectors']['JolokiaCollector']['domains'] = ['foo']
        request = Mock()
        request.read.return_value = "{status: 400}"
        urlopen_mock.return_value = request

        collector = JolokiaCollector(config, None)
        collector.collect()

        self.assertIn('canonicalNaming=false',
                      create_request_mock.call_args[0][0])
        self.assertIs(collector.config['use_canonical_names'], False)

    def test_should_handle_invalid_canonical_names_setting_values(self):
        config = get_collector_config('JolokiaCollector', {})
        config['collectors']['JolokiaCollector']['use_canonical_names'] = 'foo'
        logger_mock = Mock()
        patch_logger = patch('logging.getLogger', Mock(
            return_value=logger_mock))
        patch_logger.start()

        collector = JolokiaCollector(config, None)

        patch_logger.stop()
        logger_mock.error.assert_called_once_with(
            'Unexpected value "%s" for "use_canonical_names" setting. '
            'Expected "True" or "False". Using default value.', 'foo')
        self.assertEqual(collector.config['use_canonical_names'],
                         collector.get_default_config()['use_canonical_names'])

    def get_metrics(self):
        prefix = 'java.lang.name_ParNew.type_GarbageCollector.LastGcInfo'
        return {
            prefix + '.startTime': 14259063,
            prefix + '.id': 219,
            prefix + '.duration': 2,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.max': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.committed': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.init': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.used': 25165824,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.max': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.committed': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.init': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.used': 5146840,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.max': 85983232,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.committed': 23920640,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.init': 21757952,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.used': 23796992,
            prefix + '.memoryUsageBeforeGc.Code_Cache.max': 50331648,
            prefix + '.memoryUsageBeforeGc.Code_Cache.committed': 2686976,
            prefix + '.memoryUsageBeforeGc.Code_Cache.init': 2555904,
            prefix + '.memoryUsageBeforeGc.Code_Cache.used': 2600768,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.max': 3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.committed':
            3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.init': 3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.used': 414088
        }

    def get_metrics_rewrite_test(self):
        prefix = 'java.lang.name_ParNew.type_GarbageCollector.LastGcInfo'
        return {
            prefix + '.startTime': 14259063,
            prefix + '.id': 219,
            prefix + '.duration': 2,
            prefix + '.memUsedBeforeGc.Par_Eden_Space.max': 25165824,
            prefix + '.memUsedBeforeGc.Par_Eden_Space.committed': 25165824,
            prefix + '.memUsedBeforeGc.Par_Eden_Space.used': 25165824,
            prefix + '.memUsedBeforeGc.CMS_Old_Gen.max': 73400320,
            prefix + '.memUsedBeforeGc.CMS_Old_Gen.committed': 73400320,
            prefix + '.memUsedBeforeGc.CMS_Old_Gen.used': 5146840,
            prefix + '.memUsedBeforeGc.CMS_Perm_Gen.max': 85983232,
            prefix + '.memUsedBeforeGc.CMS_Perm_Gen.committed': 23920640,
            prefix + '.memUsedBeforeGc.CMS_Perm_Gen.used': 23796992,
            prefix + '.memUsedBeforeGc.Code_Cache.max': 50331648,
            prefix + '.memUsedBeforeGc.Code_Cache.committed': 2686976,
            prefix + '.memUsedBeforeGc.Code_Cache.used': 2600768,
            prefix + '.memUsedBeforeGc.Par_Survivor_Space.max': 3145728,
            prefix + '.memUsedBeforeGc.Par_Survivor_Space.committed': 3145728,
            prefix + '.memUsedBeforeGc.Par_Survivor_Space.used': 414088
        }
Пример #11
0
class TestJolokiaCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config('JolokiaCollector', {})

        self.collector = JolokiaCollector(config, None)

    def test_import(self):
        self.assertTrue(JolokiaCollector)

    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):
        def se(url):
            if url == 'http://*****:*****@patch.object(Collector, 'publish')
    def test_should_fail_gracefully(self, publish_mock):
        patch_urlopen = patch('urllib2.urlopen', Mock(
                              return_value=self.getFixture('stats_blank')))

        patch_urlopen.start()
        self.collector.collect()
        patch_urlopen.stop()

        self.assertPublishedMany(publish_mock, {})

    @patch.object(Collector, 'publish')
    def test_should_skip_when_mbean_request_fails(self, publish_mock):
        def se(url):
            if url == 'http://*****:*****@patch.object(Collector, 'publish')
    @patch.object(JolokiaCollector, 'interpret_bean_with_list')
    def test_should_allow_interpretation_of_list_values(self, interpret_bean_with_list_mock, publish_mock):
        self.collector.collect_bean('prefix', {
            'RecentWriteLatencyMicros': 100,
            'RecentReadLatencyHistogramMicros': [1,2,3]
        })
        self.assertPublishedMany(publish_mock, {
            'prefix.RecentWriteLatencyMicros': 100
        })
        interpret_bean_with_list_mock.assert_called_with('prefix.RecentReadLatencyHistogramMicros', [1, 2, 3])

    def get_metrics(self):
        prefix = 'java.lang.name_ParNew.type_GarbageCollector.LastGcInfo'
        return {
            prefix + '.startTime': 14259063,
            prefix + '.id': 219,
            prefix + '.duration': 2,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.max': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.committed': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.init': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.used': 25165824,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.max': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.committed': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.init': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.used': 5146840,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.max': 85983232,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.committed': 23920640,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.init': 21757952,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.used': 23796992,
            prefix + '.memoryUsageBeforeGc.Code_Cache.max': 50331648,
            prefix + '.memoryUsageBeforeGc.Code_Cache.committed': 2686976,
            prefix + '.memoryUsageBeforeGc.Code_Cache.init': 2555904,
            prefix + '.memoryUsageBeforeGc.Code_Cache.used': 2600768,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.max': 3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.committed':
            3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.init': 3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.used': 414088
        }
Пример #12
0
class TestJolokiaCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config('JolokiaCollector', {})

        self.collector = JolokiaCollector(config, None)

    def test_import(self):
        self.assertTrue(JolokiaCollector)

    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):
        def se(url, timeout=0):
            if url == 'http://*****:*****@patch.object(Collector, 'publish')
    def test_real_data_with_rewrite(self, publish_mock):
        def se(url, timeout=0):
            if url == 'http://*****:*****@patch.object(Collector, 'publish')
    def test_should_work_with_real_data_and_basic_auth(self, publish_mock):
        self.collector.config["username"] = "******"
        self.collector.config["password"] = "******"
        self.test_should_work_with_real_data()

    @patch.object(Collector, 'publish')
    def test_should_fail_gracefully(self, publish_mock):
        patch_urlopen = patch(
            'urllib2.urlopen',
            Mock(return_value=self.getFixture('stats_blank')))

        patch_urlopen.start()
        self.collector.collect()
        patch_urlopen.stop()

        self.assertPublishedMany(publish_mock, {})

    @patch.object(Collector, 'publish')
    def test_should_skip_when_mbean_request_fails(self, publish_mock):
        def se(url, timeout=0):
            if url == 'http://*****:*****@patch('jolokia.JolokiaCollector._create_request')
    @patch('urllib2.urlopen')
    def test_should_handle_canonical_names_setting_True(
            self, urlopen_mock, create_request_mock):
        config = get_collector_config('JolokiaCollector', {})
        config['collectors']['JolokiaCollector'][
            'use_canonical_names'] = 'True'
        config['collectors']['JolokiaCollector']['domains'] = ['foo']
        request = Mock()
        request.read.return_value = "{status: 400}"
        urlopen_mock.return_value = request

        collector = JolokiaCollector(config, None)
        collector.collect()

        self.assertIn('canonicalNaming=true',
                      create_request_mock.call_args[0][0])
        self.assertIs(collector.config['use_canonical_names'], True)

    @patch('jolokia.JolokiaCollector._create_request')
    @patch('urllib2.urlopen')
    def test_should_handle_canonical_names_setting_False(
            self, urlopen_mock, create_request_mock):
        config = get_collector_config('JolokiaCollector', {})
        config['collectors']['JolokiaCollector']['use_canonical_names'] = \
            'False'
        config['collectors']['JolokiaCollector']['domains'] = ['foo']
        request = Mock()
        request.read.return_value = "{status: 400}"
        urlopen_mock.return_value = request

        collector = JolokiaCollector(config, None)
        collector.collect()

        self.assertIn('canonicalNaming=false',
                      create_request_mock.call_args[0][0])
        self.assertIs(collector.config['use_canonical_names'], False)

    def test_should_handle_invalid_canonical_names_setting_values(self):
        config = get_collector_config('JolokiaCollector', {})
        config['collectors']['JolokiaCollector']['use_canonical_names'] = 'foo'
        logger_mock = Mock()
        patch_logger = patch('logging.getLogger',
                             Mock(return_value=logger_mock))
        patch_logger.start()

        collector = JolokiaCollector(config, None)

        patch_logger.stop()
        logger_mock.error.assert_called_once_with(
            'Unexpected value "%s" for "use_canonical_names" setting. '
            'Expected "True" or "False". Using default value.', 'foo')
        self.assertEqual(collector.config['use_canonical_names'],
                         collector.get_default_config()['use_canonical_names'])

    def get_metrics(self):
        prefix = 'java.lang.name_ParNew.type_GarbageCollector.LastGcInfo'
        return {
            prefix + '.startTime': 14259063,
            prefix + '.id': 219,
            prefix + '.duration': 2,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.max': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.committed': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.init': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.used': 25165824,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.max': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.committed': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.init': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.used': 5146840,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.max': 85983232,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.committed': 23920640,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.init': 21757952,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.used': 23796992,
            prefix + '.memoryUsageBeforeGc.Code_Cache.max': 50331648,
            prefix + '.memoryUsageBeforeGc.Code_Cache.committed': 2686976,
            prefix + '.memoryUsageBeforeGc.Code_Cache.init': 2555904,
            prefix + '.memoryUsageBeforeGc.Code_Cache.used': 2600768,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.max': 3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.committed':
            3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.init': 3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.used': 414088
        }

    def get_metrics_rewrite_test(self):
        prefix = 'java.lang.name_ParNew.type_GarbageCollector.LastGcInfo'
        return {
            prefix + '.startTime': 14259063,
            prefix + '.id': 219,
            prefix + '.duration': 2,
            prefix + '.memUsedBeforeGc.Par_Eden_Space.max': 25165824,
            prefix + '.memUsedBeforeGc.Par_Eden_Space.committed': 25165824,
            prefix + '.memUsedBeforeGc.Par_Eden_Space.used': 25165824,
            prefix + '.memUsedBeforeGc.CMS_Old_Gen.max': 73400320,
            prefix + '.memUsedBeforeGc.CMS_Old_Gen.committed': 73400320,
            prefix + '.memUsedBeforeGc.CMS_Old_Gen.used': 5146840,
            prefix + '.memUsedBeforeGc.CMS_Perm_Gen.max': 85983232,
            prefix + '.memUsedBeforeGc.CMS_Perm_Gen.committed': 23920640,
            prefix + '.memUsedBeforeGc.CMS_Perm_Gen.used': 23796992,
            prefix + '.memUsedBeforeGc.Code_Cache.max': 50331648,
            prefix + '.memUsedBeforeGc.Code_Cache.committed': 2686976,
            prefix + '.memUsedBeforeGc.Code_Cache.used': 2600768,
            prefix + '.memUsedBeforeGc.Par_Survivor_Space.max': 3145728,
            prefix + '.memUsedBeforeGc.Par_Survivor_Space.committed': 3145728,
            prefix + '.memUsedBeforeGc.Par_Survivor_Space.used': 414088
        }
Пример #13
0
class TestJolokiaCollector(CollectorTestCase):
    def setUp(self):
        config = get_collector_config('JolokiaCollector', {})

        self.collector = JolokiaCollector(config, None)

    def test_import(self):
        self.assertTrue(JolokiaCollector)

    @patch.object(Collector, 'publish')
    def test_should_work_with_real_data(self, publish_mock):
        def se(url):
            if url == 'http://*****:*****@patch.object(Collector, 'publish')
    def test_should_fail_gracefully(self, publish_mock):
        patch_urlopen = patch('urllib2.urlopen', Mock(
                              return_value=self.getFixture('stats_blank')))

        patch_urlopen.start()
        self.collector.collect()
        patch_urlopen.stop()

        self.assertPublishedMany(publish_mock, {})

    @patch.object(Collector, 'publish')
    def test_should_skip_when_mbean_request_fails(self, publish_mock):
        def se(url):
            if url == 'http://*****:*****@patch.object(Collector, 'publish')
    @patch.object(JolokiaCollector, 'interpret_bean_with_list')
    def test_should_allow_interpretation_of_list_values(
            self, interpret_bean_with_list_mock, publish_mock):
        self.collector.collect_bean('prefix', {
            'RecentWriteLatencyMicros': 100,
            'RecentReadLatencyHistogramMicros': [1, 2, 3]
        })
        self.assertPublishedMany(publish_mock, {
            'prefix.RecentWriteLatencyMicros': 100
        })
        interpret_bean_with_list_mock.assert_called_with(
            'prefix.RecentReadLatencyHistogramMicros', [1, 2, 3])

    def get_metrics(self):
        prefix = 'java.lang.name_ParNew.type_GarbageCollector.LastGcInfo'
        return {
            prefix + '.startTime': 14259063,
            prefix + '.id': 219,
            prefix + '.duration': 2,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.max': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.committed': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.init': 25165824,
            prefix + '.memoryUsageBeforeGc.Par_Eden_Space.used': 25165824,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.max': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.committed': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.init': 73400320,
            prefix + '.memoryUsageBeforeGc.CMS_Old_Gen.used': 5146840,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.max': 85983232,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.committed': 23920640,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.init': 21757952,
            prefix + '.memoryUsageBeforeGc.CMS_Perm_Gen.used': 23796992,
            prefix + '.memoryUsageBeforeGc.Code_Cache.max': 50331648,
            prefix + '.memoryUsageBeforeGc.Code_Cache.committed': 2686976,
            prefix + '.memoryUsageBeforeGc.Code_Cache.init': 2555904,
            prefix + '.memoryUsageBeforeGc.Code_Cache.used': 2600768,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.max': 3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.committed':
            3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.init': 3145728,
            prefix + '.memoryUsageBeforeGc.Par_Survivor_Space.used': 414088
        }