Completed
Push — master ( 5cbcf8...d3d059 )
by Matthias
01:08
created

TestConfig   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Importance

Changes 4
Bugs 0 Features 0
Metric Value
dl 0
loc 61
rs 10
c 4
b 0
f 0
wmc 6

5 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 3 1
A test_cli_overwrite() 0 13 1
A test_argparse_flags() 0 16 2
A test_load_config() 0 20 1
A test_overwrite_default_config() 0 4 1
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"]["retention_policy"], "my_rp")
39
        self.assertEqual(parsed_config["encoder"], "collectd_graphite_encoder")
40
        self.assertEqual(parsed_config["benchmark"], False)
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
            'benchmark',
50
            'statistics'
51
        ]
52
        for flag in long_flags:
53
            parsed = loader.parse_args(['--' + flag])
54
            self.assertEqual(parsed[flag], True)
55
56
        parsed = loader.parse_args(['-s'])
57
        self.assertEqual(parsed['statistics'], True)
58
        parsed = loader.parse_args(['-b'])
59
        self.assertEqual(parsed['benchmark'], True)
60
61
    def test_cli_overwrite(self):
62
        # Fake commandline arguments
63
        # Argparse returns a namespace, not a dictionary
64
        fake_args = argparse.Namespace()
65
        fake_args.influxdb_use_ssl = False
66
        argparse.ArgumentParser.parse_args = MagicMock(return_value=fake_args)
67
68
        # Fake default config
69
        default_config.DEFAULT_CONFIG = MagicMock(return_value={'influxdb_use_ssl': True})
70
        config = loader.load_config()
71
72
        # Check if the default setting got overwritten
73
        self.assertEqual(config.influxdb_use_ssl, False)
74
75
    def test_overwrite_default_config(self):
76
        default_config = {'kafka_host': 'defaulthost'}
77
        config = loader.overwrite_config(default_config, {'kafka_host': 'otherhost'})
78
        self.assertEqual(config['kafka_host'], 'otherhost')
79
80
81
if __name__ == '__main__':
82
    unittest.main()
83