|
1
|
|
|
import unittest |
|
2
|
|
|
import os |
|
3
|
|
|
import argparse |
|
4
|
|
|
from mock import MagicMock |
|
5
|
|
|
from kafka_influxdb.config import loader, default_config |
|
6
|
|
|
|
|
7
|
|
|
|
|
8
|
|
|
class Config: |
|
9
|
|
|
def __init__(self, configfile): |
|
10
|
|
|
self.configfile = configfile |
|
11
|
|
|
|
|
12
|
|
|
|
|
13
|
|
|
class ParsedConfig: |
|
14
|
|
|
def __init__(self, kafka): |
|
15
|
|
|
self.kafka_host = kafka |
|
16
|
|
|
|
|
17
|
|
|
|
|
18
|
|
|
class TestConfig(unittest.TestCase): |
|
19
|
|
|
def setUp(self): |
|
20
|
|
|
path = os.path.dirname(os.path.abspath(__file__)) |
|
21
|
|
|
self.configfile = "{}/../fixtures/config.yaml".format(path) |
|
22
|
|
|
|
|
23
|
|
|
def test_load_config(self): |
|
24
|
|
|
parsed_config = loader.parse_configfile(self.configfile) |
|
25
|
|
|
self.assertEqual(parsed_config["kafka"]["host"], "kafkahost") |
|
26
|
|
|
self.assertEqual(parsed_config["kafka"]["port"], 1234) |
|
27
|
|
|
self.assertEqual(parsed_config["kafka"]["topic"], "kafkatopic") |
|
28
|
|
|
self.assertEqual(parsed_config["kafka"]["group"], "foogroup") |
|
29
|
|
|
self.assertEqual(parsed_config["influxdb"]["host"], "influxdbhost") |
|
30
|
|
|
self.assertEqual(parsed_config["influxdb"]["port"], 9999) |
|
31
|
|
|
self.assertEqual(parsed_config["influxdb"]["user"], "hans") |
|
32
|
|
|
self.assertEqual(parsed_config["influxdb"]["password"], "hans") |
|
33
|
|
|
self.assertEqual(parsed_config["influxdb"]["dbname"], "influxdbname") |
|
34
|
|
|
self.assertEqual(parsed_config["influxdb"]["use_ssl"], True) |
|
35
|
|
|
self.assertEqual(parsed_config["influxdb"]["verify_ssl"], True) |
|
36
|
|
|
self.assertEqual(parsed_config["influxdb"]["timeout"], 9000) |
|
37
|
|
|
self.assertEqual(parsed_config["influxdb"]["use_udp"], False) |
|
38
|
|
|
self.assertEqual(parsed_config["influxdb"] |
|
39
|
|
|
["retention_policy"], "my_rp") |
|
40
|
|
|
self.assertEqual(parsed_config["encoder"], "collectd_graphite_encoder") |
|
41
|
|
|
self.assertEqual(parsed_config["buffer_size"], 444) |
|
42
|
|
|
self.assertEqual(parsed_config["statistics"], True) |
|
43
|
|
|
|
|
44
|
|
|
def test_argparse_flags(self): |
|
45
|
|
|
long_flags = [ |
|
46
|
|
|
'influxdb_use_ssl', |
|
47
|
|
|
'influxdb_verify_ssl', |
|
48
|
|
|
'influxdb_use_udp', |
|
49
|
|
|
'statistics' |
|
50
|
|
|
] |
|
51
|
|
|
for flag in long_flags: |
|
52
|
|
|
parsed = loader.parse_args(['--' + flag]) |
|
53
|
|
|
self.assertEqual(parsed[flag], True) |
|
54
|
|
|
|
|
55
|
|
|
parsed = loader.parse_args(['-s']) |
|
56
|
|
|
self.assertEqual(parsed['statistics'], True) |
|
57
|
|
|
|
|
58
|
|
|
def test_cli_overwrite(self): |
|
59
|
|
|
# Fake commandline arguments |
|
60
|
|
|
# Argparse returns a namespace, not a dictionary |
|
61
|
|
|
fake_args = argparse.Namespace() |
|
62
|
|
|
fake_args.influxdb_use_ssl = False |
|
63
|
|
|
argparse.ArgumentParser.parse_args = MagicMock(return_value=fake_args) |
|
64
|
|
|
|
|
65
|
|
|
# Fake default config |
|
66
|
|
|
default_config.DEFAULT_CONFIG = MagicMock( |
|
67
|
|
|
return_value={'influxdb_use_ssl': True}) |
|
68
|
|
|
config = loader.load_config() |
|
69
|
|
|
|
|
70
|
|
|
# Check if the default setting got overwritten |
|
71
|
|
|
self.assertEqual(config.influxdb_use_ssl, False) |
|
72
|
|
|
|
|
73
|
|
|
def test_overwrite_default_config(self): |
|
74
|
|
|
default_config = {'kafka_host': 'defaulthost'} |
|
75
|
|
|
config = loader.overwrite_config( |
|
76
|
|
|
default_config, {'kafka_host': 'otherhost'}) |
|
77
|
|
|
self.assertEqual(config['kafka_host'], 'otherhost') |
|
78
|
|
|
|
|
79
|
|
|
|
|
80
|
|
|
if __name__ == '__main__': |
|
81
|
|
|
unittest.main() |
|
82
|
|
|
|