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