import _bootstrap # noqa: F401 import unittest from unittest.mock import patch from fault_log_analyzer.config import Config class TestConfig(unittest.TestCase): def test_defaults(self): with patch.dict("os.environ", {}, clear=True): cfg = Config.from_env() self.assertEqual(cfg.kafka_logs_raw_topic, "logs.raw") self.assertEqual(cfg.kafka_logs_fault_topic, "logs.fault") self.assertEqual(cfg.cluster_eps, 0.75) self.assertEqual(cfg.cluster_min_samples, 5) self.assertEqual(cfg.storage, "memory") self.assertEqual(cfg.api_port, 8080) def test_env_overrides(self): env = { "KAFKA_LOGS_RAW_TOPIC": "my.logs", "CLUSTER_EPS": "0.5", "CLUSTER_MIN_SAMPLES": "3", "API_PORT": "9090", "STORAGE": "mysql", "ES_HOSTS": "http://es1:9200, http://es2:9200", "CLUSTER_USE_SKLEARN": "true", } with patch.dict("os.environ", env, clear=True): cfg = Config.from_env() self.assertEqual(cfg.kafka_logs_raw_topic, "my.logs") self.assertEqual(cfg.cluster_eps, 0.5) self.assertEqual(cfg.cluster_min_samples, 3) self.assertEqual(cfg.api_port, 9090) self.assertEqual(cfg.storage, "mysql") self.assertEqual(cfg.es_hosts, ["http://es1:9200", "http://es2:9200"]) self.assertTrue(cfg.cluster_use_sklearn) if __name__ == "__main__": unittest.main()