Exemplo n.º 1
0
def test_post_normal_addition_dimensions_metadata():
    met_buffer = Helper.get_buffer(10)
    met_config = Helper.default_config()

    configs = {
        'dimension_tags': ('dim_key1', 'dim_val1', 'dim_key2', 'dim_val2'),
        'meta_tags': ('meta_key1', 'meta_val1', 'meta_key2', 'meta_val2')
    }
    for (key, value) in configs.items():
        node = ConfigNode(getattr(ConfigOptions, key), value)
        config = CollectdConfig([Helper.url_node(), Helper.types_db_node(), node])
        met_config.parse_config(config)

    for i in range(10):
        met_buffer.put_pending_batch(['batch_%s' % i])

    met_sender = Helper.get_sender(met_config.conf, met_buffer)

    sleep_helper(10, 0.100, 100)

    assert requests.mock_server.url == met_config.conf[ConfigOptions.url]
    assert requests.mock_server.headers == {
        HeaderKeys.content_type: met_config.conf[ConfigOptions.content_type],
        HeaderKeys.content_encoding: met_config.conf[ConfigOptions.content_encoding],
        HeaderKeys.x_sumo_dimensions: 'dim_key1=dim_val1,dim_key2=dim_val2',
        HeaderKeys.x_sumo_metadata: 'meta_key1=meta_val1,meta_key2=meta_val2',
    }

    for i in range(10):
        assert_utf8_equal(met_config.conf, requests.mock_server.data[i], 'batch_%s' % i)

    met_sender.cancel_timer()
Exemplo n.º 2
0
def test_no_types_db_exception():
    with pytest.raises(Exception) as e:
        met_config = MetricsConfig(CollecdMock())
        config = CollectdConfig([Helper.url_node()])
        met_config.parse_config(config)

    assert 'Specify TypesDB in collectd.conf' in str(e)
Exemplo n.º 3
0
def test_init_callback():
    metrics_writer = Helper.default_writer()
    config = CollectdConfig([Helper.url_node(), Helper.types_db_node()])
    metrics_writer.parse_config(config)
    metrics_writer.init_callback()
    assert metrics_writer.met_buffer is not None
    assert metrics_writer.met_batcher is not None
    assert metrics_writer.met_sender is not None
Exemplo n.º 4
0
def test_parse_string_exception():
    with pytest.raises(Exception) as e:
        met_config = Helper.default_config()
        url_node = ConfigNode(ConfigOptions.url, [''])
        config = CollectdConfig([url_node])
        met_config.parse_config(config)

    assert 'Value for key URL cannot be empty' in str(e)
Exemplo n.º 5
0
def test_invalid_ds_in_types_db():
    met_config = Helper.default_config()
    types_db_node = ConfigNode(ConfigOptions.types_db,
                               [cwd + '/test/types_invalid_ds.db'])
    config = CollectdConfig([Helper.url_node(), types_db_node])
    met_config.parse_config(config)

    assert 'bytes' not in met_config.conf.keys()
Exemplo n.º 6
0
def test_types_db_no_exist_exception():
    with pytest.raises(Exception) as e:
        met_config = Helper.default_config()
        types_db_node = ConfigNode(ConfigOptions.types_db,
                                   [cwd + '/test/types_not_exist.db'])
        config = CollectdConfig([Helper.url_node(), types_db_node])
        met_config.parse_config(config)

    assert 'No such file or directory' in str(e)
Exemplo n.º 7
0
def test_write_callback():
    metrics_writer = Helper.default_writer()
    config = CollectdConfig([Helper.url_node(), Helper.types_db_node()])
    metrics_writer.parse_config(config)
    metrics_writer.init_callback()
    d = Values()
    metrics_writer.write_callback(d)
    assert metrics_writer.met_batcher.queue.qsize() == 1
    assert [metrics_writer.met_batcher.queue.get()] == d.metrics_str()
Exemplo n.º 8
0
def test_parse_int_exception():
    with pytest.raises(ValueError):
        met_config = Helper.default_config()
        max_batch_size = ''
        max_batch_size_node = ConfigNode(ConfigOptions.max_batch_size,
                                         [max_batch_size])
        config = CollectdConfig(
            [Helper.url_node(),
             Helper.types_db_node(), max_batch_size_node])
        met_config.parse_config(config)
Exemplo n.º 9
0
def test_parse_unknown_config_option():
    met_config = Helper.default_config()
    unknown_config = 'unknown_config'
    unknown_config_node = ConfigNode('unknown_config', unknown_config)
    config = CollectdConfig(
        [Helper.url_node(),
         Helper.types_db_node(), unknown_config_node])
    met_config.parse_config(config)

    assert hasattr(met_config, 'unknown_config') is False
Exemplo n.º 10
0
def test_parse_meta_tags():
    met_config = Helper.default_config()
    tags = ('meta_key1', 'meta_val1', 'meta_key2', 'meta_val2')
    config = CollectdConfig([
        Helper.url_node(),
        Helper.types_db_node(),
        tags_node(ConfigOptions.meta_tags, tags)
    ])
    met_config.parse_config(config)

    assert list(met_config.conf[ConfigOptions.meta_tags]) == list(
        tuple_to_pair(tags))
Exemplo n.º 11
0
def test_parse_http_post_interval():
    met_config = Helper.default_config()
    http_post_interval = '0.5'
    http_post_interval_node = ConfigNode(ConfigOptions.http_post_interval,
                                         [http_post_interval])
    config = CollectdConfig(
        [Helper.url_node(),
         Helper.types_db_node(), http_post_interval_node])
    met_config.parse_config(config)

    assert met_config.conf[ConfigOptions.http_post_interval] == float(
        http_post_interval)
def test_write_callback_host_with_equal_char():
    metrics_writer = Helper.default_writer()
    config = CollectdConfig([Helper.url_node(), Helper.types_db_node()])
    metrics_writer.parse_config(config)
    metrics_writer.init_callback()
    d = Values(host="[invalid=host]")
    expected_value = ['host=[invalid:host] plugin=test_plugin plugin_instance=test_plugin_instance' \
    ' type=test_type type_instance=test_type_instance ds_name=test_ds_name ds_type=test_ds_type' \
    '  test_meta_key=test_meta_val 3.140000 1501775008']
    metrics_writer.write_callback(d)

    assert metrics_writer.met_batcher.queue.qsize() == 1
    assert [metrics_writer.met_batcher.queue.get()] == expected_value
Exemplo n.º 13
0
def test_invalid_http_post_interval_exception():
    with pytest.raises(Exception) as e:
        met_config = Helper.default_config()
        http_post_interval = '100.0'
        http_post_interval_node = ConfigNode(ConfigOptions.http_post_interval,
                                             [http_post_interval])
        config = CollectdConfig([
            Helper.url_node(),
            Helper.types_db_node(), http_post_interval_node
        ])
        met_config.parse_config(config)

    assert 'Specify HttpPostInterval' in str(e)
Exemplo n.º 14
0
def test_parse_meta_tags_missing_value():
    with pytest.raises(Exception) as e:
        met_config = Helper.default_config()
        tags = ('meta_key1', 'meta_val1', 'meta_key2')
        config = CollectdConfig([
            Helper.url_node(),
            Helper.types_db_node(),
            tags_node(ConfigOptions.meta_tags, tags)
        ])
        met_config.parse_config(config)

    assert "Missing tags key/value in options ('meta_key1', 'meta_val1', 'meta_key2')." in str(
        e)
Exemplo n.º 15
0
def test_contains_reserved_symbols_exception():
    with pytest.raises(Exception) as e:
        met_config = Helper.default_config()
        tags = ('meta_key1', 'meta_val1', 'meta_key2', 'meta val2')
        config = CollectdConfig([
            Helper.url_node(),
            Helper.types_db_node(),
            tags_node(ConfigOptions.meta_tags, tags)
        ])
        met_config.parse_config(config)

    assert 'Value meta val2 for Key Metadata must not contain reserved symbol " "' in str(
        e)
Exemplo n.º 16
0
def test_shutdown_call_back():
    metrics_writer = Helper.default_writer()
    config = CollectdConfig([Helper.url_node(), Helper.types_db_node()])
    metrics_writer.parse_config(config)
    metrics_writer.init_callback()

    for i in range(10):
        metrics_writer.met_buffer.put_pending_batch(['batch_%s' % i])

    metrics_writer.shutdown_callback()

    time.sleep(2)

    assert metrics_writer.met_buffer.empty() == True
Exemplo n.º 17
0
def test_parse_http_post_interval_exception():
    with pytest.raises(Exception) as e:
        met_config = Helper.default_config()
        http_post_interval = '0'
        http_post_interval_node = ConfigNode(ConfigOptions.http_post_interval,
                                             [http_post_interval])
        config = CollectdConfig([
            Helper.url_node(),
            Helper.types_db_node(), http_post_interval_node
        ])
        met_config.parse_config(config)

    assert 'Value 0.0 for key HttpPostInterval is not a positive number' in str(
        e)
 def parse_configs(met_config, configs):
     for (key, value) in configs.items():
         node = ConfigNode(getattr(ConfigOptions, key), [value])
         config = CollectdConfig([Helper.url_node(), Helper.types_db_node(), node])
         met_config.parse_config(config)
 def default_config():
     met_config = MetricsConfig(CollecdMock())
     config = CollectdConfig([Helper.url_node(), Helper.types_db_node()])
     met_config.parse_config(config)
     return met_config
Exemplo n.º 20
0
def test_parse_url():
    met_config = Helper.default_config()
    config = CollectdConfig([Helper.url_node(), Helper.types_db_node()])
    met_config.parse_config(config)

    assert met_config.conf[ConfigOptions.url] == Helper.url
Exemplo n.º 21
0
def test_config_callback():
    metrics_writer = Helper.default_writer()
    config = CollectdConfig([Helper.url_node(), Helper.types_db_node()])
    metrics_writer.parse_config(config)

    metrics_writer.met_config.conf[ConfigOptions.url] = Helper.url
Exemplo n.º 22
0
def test_parse_types_db():
    met_config = Helper.default_config()
    config = CollectdConfig([Helper.url_node(), Helper.types_db_node()])
    met_config.parse_config(config)

    assert len(met_config.types) == 271