Key features implemented: - Updated package metadata and dependencies in PKG-INFO, setup files - Added main.py entry point for backward compatibility with README launch method - Enhanced CLI with config options, system info command, and proper signal handling - Implemented minimal PluginManager loading only plugin-loader core plugin - Refactored PluginLoader to follow minimal core design, removed sandbox/isolation complexity - Updated auto-dependency plugin with safer PL injection mechanism and disabled pl_injection - Removed legacy plugin files (firewall, frp_proxy, ftp_server, multi_lang_deploy, ops_toolbox, security_gateway) as functionality moved to core plugin system - Improved gitignore with comprehensive ignore patterns The changes implement a minimal core framework design where only the plugin-loader is directly loaded by the core, with all other plugins managed through the PL injection mechanism, significantly simplifying the architecture.
106 lines
3.4 KiB
Python
106 lines
3.4 KiB
Python
"""配置管理测试"""
|
|
import os
|
|
import pytest
|
|
from pathlib import Path
|
|
import tempfile
|
|
import json
|
|
|
|
from oss.config.config import Config
|
|
|
|
|
|
class TestConfig:
|
|
"""配置管理测试类"""
|
|
|
|
def test_default_values(self):
|
|
"""测试默认配置值"""
|
|
config = Config()
|
|
assert config.http_api_port == 8080
|
|
assert config.http_tcp_port == 8082
|
|
assert config.host == "0.0.0.0"
|
|
assert config.log_level == "INFO"
|
|
assert config.permission_check is True
|
|
|
|
def test_env_override(self, monkeypatch):
|
|
"""测试环境变量覆盖"""
|
|
monkeypatch.setenv("HTTP_API_PORT", "9999")
|
|
monkeypatch.setenv("LOG_LEVEL", "DEBUG")
|
|
|
|
config = Config()
|
|
assert config.http_api_port == 9999
|
|
assert config.log_level == "DEBUG"
|
|
|
|
def test_file_config(self):
|
|
"""测试配置文件加载"""
|
|
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
|
|
json.dump({"HTTP_API_PORT": 7777, "LOG_LEVEL": "WARNING"}, f)
|
|
temp_path = f.name
|
|
|
|
try:
|
|
config = Config(temp_path)
|
|
assert config.http_api_port == 7777
|
|
assert config.log_level == "WARNING"
|
|
finally:
|
|
os.unlink(temp_path)
|
|
|
|
def test_env_priority_over_file(self, monkeypatch):
|
|
"""测试环境变量优先级高于配置文件"""
|
|
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
|
|
json.dump({"HTTP_API_PORT": 7777}, f)
|
|
temp_path = f.name
|
|
|
|
try:
|
|
monkeypatch.setenv("HTTP_API_PORT", "8888")
|
|
config = Config(temp_path)
|
|
assert config.http_api_port == 8888 # 环境变量优先
|
|
finally:
|
|
os.unlink(temp_path)
|
|
monkeypatch.delenv("HTTP_API_PORT", raising=False)
|
|
|
|
def test_get_set(self):
|
|
"""测试 get/set 方法"""
|
|
config = Config()
|
|
assert config.get("HTTP_API_PORT") == 8080
|
|
config.set("HTTP_API_PORT", 6666)
|
|
assert config.get("HTTP_API_PORT") == 6666
|
|
|
|
def test_properties(self):
|
|
"""测试属性访问"""
|
|
config = Config()
|
|
assert isinstance(config.data_dir, Path)
|
|
assert isinstance(config.store_dir, Path)
|
|
assert config.data_dir.name == "data"
|
|
assert config.store_dir.name == "store"
|
|
|
|
def test_all_method(self):
|
|
"""测试 all() 方法返回所有配置"""
|
|
config = Config()
|
|
all_config = config.all()
|
|
assert "HTTP_API_PORT" in all_config
|
|
assert "HOST" in all_config
|
|
assert len(all_config) > 5
|
|
|
|
def test_bool_conversion(self, monkeypatch):
|
|
"""测试布尔值转换"""
|
|
monkeypatch.setenv("PERMISSION_CHECK", "false")
|
|
config = Config()
|
|
assert config.permission_check is False
|
|
|
|
monkeypatch.setenv("PERMISSION_CHECK", "true")
|
|
config = Config()
|
|
assert config.permission_check is True
|
|
|
|
def test_int_conversion(self, monkeypatch):
|
|
"""测试整数转换"""
|
|
monkeypatch.setenv("MAX_WORKERS", "8")
|
|
config = Config()
|
|
assert config.get("MAX_WORKERS") == 8
|
|
|
|
# 无效值应该保持默认
|
|
monkeypatch.setenv("MAX_WORKERS", "invalid")
|
|
config = Config()
|
|
assert config.get("MAX_WORKERS") == 4 # 默认值
|
|
|
|
|
|
if __name__ == "__main__":
|
|
pytest.main([__file__, "-v"])
|