示例#1
0
    def test_blacklist_metrics(self, mock_publish):
        c = Collector(self.config_object(), [])
        c.config['metrics_blacklist'] = re.compile('metric1')
        dimensions = {
            'dim1': 'val1',
            'dim2': 'val2',
        }
        c.dimensions = dimensions
        c.publish('metric1', 1)

        assert not mock_publish.called
        self.assertEqual(c.dimensions, None)

        dimensions = {
            'dim3': 'val3',
            'dim4': 'val4',
        }
        c.dimensions = dimensions
        c.publish('metric2', 2)

        assert mock_publish.called

        for call in mock_publish.mock_calls:
            name, args, kwargs = call
            metric = args[0]
            self.assertEquals(metric.dimensions, dimensions)
        self.assertEqual(c.dimensions, None)
示例#2
0
 def test_failed_error_metric_publish(self, mock_publish):
     c = Collector(self.config_object(), [])
     self.assertFalse(c.can_publish_metric())
     with patch.object(c, 'log'):
         try:
             c.publish('metric', "baz")
         except DiamondException:
             pass
     self.assertEquals(len(mock_publish.mock_calls), 0)
示例#3
0
 def test_SetCustomHostname(self):
     config = configobj.ConfigObj()
     config['server'] = {}
     config['server']['collectors_config_path'] = ''
     config['collectors'] = {}
     config['collectors']['default'] = {
         'hostname': 'custom.localhost',
     }
     c = Collector(config, [])
     self.assertEquals('custom.localhost', c.get_hostname())
示例#4
0
 def test_SetHostnameViaShellCmd(self):
     config = configobj.ConfigObj()
     config['server'] = {}
     config['server']['collectors_config_path'] = ''
     config['collectors'] = {}
     config['collectors']['default'] = {
         'hostname': 'echo custom.localhost',
         'hostname_method': 'shell',
     }
     c = Collector(config, [])
     self.assertEquals('custom.localhost', c.get_hostname())
示例#5
0
 def test_successful_error_metric(self, mock_publish):
     c = Collector(self.config_object(), [])
     mock_socket = Mock()
     c._socket = mock_socket
     with patch.object(c, 'log'):
         try:
             c.publish('metric', "bar")
         except DiamondException:
             pass
     for call in mock_publish.mock_calls:
         name, args, kwargs = call
         metric = args[0]
         self.assertEqual(metric.path, "servers.Collector.qcollect.collector_errors")
    def test_get_metric_path(self, get_hostname_mock):

        config = configobj.ConfigObj()
        config['collectors'] = {}
        config['collectors']['default'] = {}
        config['collectors']['default']['path_prefix'] = 'poof'
        config['collectors']['default']['path'] = 'xyz'

        get_hostname_mock.return_value = 'bar'

        result = Collector(config, []).get_metric_path('foo')

        self.assertEqual('poof.bar.xyz.foo', result)
    def test_get_metric_path_no_prefix_no_path(self, get_hostname_mock):

        config = configobj.ConfigObj()
        config['collectors'] = {}
        config['collectors']['default'] = {}
        config['collectors']['default']['path_prefix'] = ''
        config['collectors']['default']['path'] = ''

        get_hostname_mock.return_value = None

        result = Collector(config, []).get_metric_path('foo')

        self.assertEqual('foo', result)
示例#8
0
    def test_SetDimensions(self, mock_publish):
        c = Collector(self.config_object(), [])
        dimensions = {
            'dim1': 'alice',
            'dim2': 'chains',
        }
        c.dimensions = dimensions
        c.publish('metric1', 1)

        for call in mock_publish.mock_calls:
            name, args, kwargs = call
            metric = args[0]
            self.assertEquals(metric.dimensions, dimensions)
        self.assertEqual(c.dimensions, None)
示例#9
0
 def test_batch_size_flush(self):
     c = Collector(self.config_object(), [])
     mock_socket = Mock()
     c._socket = mock_socket
     c._reconnect = False
     c.config['max_buffer_size'] = 2
     with patch.object(c, 'log'):
         try:
             c.publish('metric1', 1)
             c.publish('metric2', 2)
             c.publish('metric3', 3)
         except DiamondException:
             pass
     self.assertEquals(mock_socket.sendall.call_count, 1)
     self.assertEquals(len(c.payload), 1)
示例#10
0
 def test_MergeNetuitiveHandlerConfig(self):
     config = configobj.ConfigObj()
     config['server'] = {}
     config['server']['collectors_config_path'] = ''
     config['collectors'] = {}
     config['collectors']['default'] = {
         'hostname': 'custom.localhost',
     }
     config['handlers'] = {}
     config['handlers']['NetuitiveHandler'] = {
         'url': 'https://api.app.netuitive.com/ingest/infrastructure',
         'api_key': '3bd5b41c0cbbbe3e8a1eefb16a6f8c58',
     }
     c = Collector(config, [])
     c.merge_config(config['handlers']['NetuitiveHandler'], prefix='netuitive_')
     self.assertEquals('https://api.app.netuitive.com/ingest/infrastructure', c.config['netuitive_url'])
     self.assertEquals('3bd5b41c0cbbbe3e8a1eefb16a6f8c58', c.config['netuitive_api_key'])
示例#11
0
 def test_configure_collector(self):
     c = Collector(self.config_object(), [], configfile=self.configfile())
     self.assertEquals(
         c.config, {
             'ttl_multiplier': 2,
             'path_suffix': '',
             'measure_collector_time': False,
             'metrics_blacklist': None,
             'byte_unit': ['byte'],
             'instance_prefix': 'instances',
             'conf': 'val',
             'fulleritePort': 0,
             'interval': 5,
             'enabled': True,
             'alice': 'bob',
             'metrics_whitelist': None,
             'max_buffer_size': 300,
             'path_prefix': 'servers'
         })
示例#12
0
    def test_SubConfigOverridesCollectorsConfig(self):
        temp_dir = tempfile.gettempdir()
        if not temp_dir:
            self.skipTest("No temporary directory in system")
        
        config = configobj.ConfigObj()
        config['server'] = {}
        config['server']['collectors_config_path'] = temp_dir
        config['collectors'] = {}
        config['collectors']['default'] = {}

        
        self.tmpfile = os.path.join(temp_dir, 'Collector.conf')
        collectorConfig = configobj.ConfigObj(self.tmpfile)
        collectorConfig['hostname'] = "Collector.hostname"
        collectorConfig['named instances'] = {}
        collectorConfig['named instances']['Instance B'] = {}
        collectorConfig['named instances']['Instance B']['hostname'] = 'custom.hostname'
        collectorConfig.write()

        c = Collector(config, [], instance_name='Instance B')

        self.assertEquals('custom.hostname', c.get_hostname())
示例#13
0
    def test_can_publish_metric(self):
        c = Collector(self.config_object(), [])
        self.assertFalse(c.can_publish_metric())

        c._socket = "socket"
        self.assertTrue(c.can_publish_metric())