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
|
|
|
|