init
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
import asyncio
|
||||
|
||||
from services.integrations import nacos_service
|
||||
from services.integrations.nacos_service import NacosConfig, NacosManager, ServiceConfig, load_service_config
|
||||
|
||||
|
||||
class _FakeConfigParser:
|
||||
def get(self, section, option, fallback=None):
|
||||
if section == "app" and option == "host":
|
||||
return "0.0.0.0"
|
||||
if section == "app" and option == "service_name":
|
||||
return fallback
|
||||
if section == "app" and option == "version":
|
||||
return "1.2.3"
|
||||
if section == "app" and option == "model_section":
|
||||
return "qwen-80b"
|
||||
return fallback
|
||||
|
||||
def getint(self, section, option, fallback=None):
|
||||
if section == "app" and option == "port":
|
||||
return 8000
|
||||
return fallback
|
||||
|
||||
|
||||
class _RetryNacosManager(NacosManager):
|
||||
def __init__(self, nacos_config: NacosConfig, service_config: ServiceConfig):
|
||||
super().__init__(nacos_config, service_config)
|
||||
self.register_attempts = 0
|
||||
|
||||
def register_service(self) -> bool:
|
||||
self.register_attempts += 1
|
||||
# First attempt fails, later attempts succeed.
|
||||
self.is_registered = self.register_attempts >= 2
|
||||
return self.is_registered
|
||||
|
||||
|
||||
def test_load_service_config_streaming_metadata_and_service_name_fallback(monkeypatch):
|
||||
monkeypatch.setattr(nacos_service.Config, "_config", _FakeConfigParser())
|
||||
monkeypatch.setattr(nacos_service.Config, "DEFAULT_MODEL_SECTION", "gpt-4o")
|
||||
monkeypatch.setattr(nacos_service.Config, "get_section", lambda section: {} if section == "metadata" else {})
|
||||
monkeypatch.setattr(nacos_service, "_get_local_ip", lambda: "10.0.0.8")
|
||||
|
||||
cfg = load_service_config()
|
||||
|
||||
assert cfg.service_name == "apbo-boat-agent"
|
||||
assert cfg.ip == "10.0.0.8"
|
||||
assert cfg.metadata["streaming"] == "true"
|
||||
|
||||
|
||||
def test_nacos_manager_start_keeps_retry_loop_when_first_register_fails():
|
||||
nacos_cfg = NacosConfig(
|
||||
enabled=True,
|
||||
server_addresses="localhost:8848",
|
||||
namespace="public",
|
||||
group_name="DEFAULT_GROUP",
|
||||
cluster_name="DEFAULT",
|
||||
username=None,
|
||||
password=None,
|
||||
heartbeat_interval=1,
|
||||
weight=1.0,
|
||||
ephemeral=True,
|
||||
register_port=None,
|
||||
)
|
||||
service_cfg = ServiceConfig(
|
||||
service_name="apbo-boat-agent",
|
||||
host="0.0.0.0",
|
||||
port=8000,
|
||||
ip="10.0.0.8",
|
||||
metadata={},
|
||||
)
|
||||
|
||||
manager = _RetryNacosManager(nacos_cfg, service_cfg)
|
||||
|
||||
async def _run_case():
|
||||
await manager.start()
|
||||
await asyncio.sleep(1.2)
|
||||
await manager.stop()
|
||||
|
||||
asyncio.run(_run_case())
|
||||
|
||||
assert manager.register_attempts >= 2
|
||||
assert manager.is_registered is True
|
||||
|
||||
|
||||
class _CaptureClient:
|
||||
def __init__(self):
|
||||
self.register_calls = []
|
||||
self.heartbeat_calls = []
|
||||
self.remove_calls = []
|
||||
|
||||
def add_naming_instance(self, **kwargs):
|
||||
self.register_calls.append(kwargs)
|
||||
|
||||
def send_heartbeat(self, **kwargs):
|
||||
self.heartbeat_calls.append(kwargs)
|
||||
|
||||
def remove_naming_instance(self, **kwargs):
|
||||
self.remove_calls.append(kwargs)
|
||||
|
||||
|
||||
def test_nacos_manager_uses_register_port_override_for_registry_calls():
|
||||
nacos_cfg = NacosConfig(
|
||||
enabled=True,
|
||||
server_addresses="localhost:8848",
|
||||
namespace="public",
|
||||
group_name="DEFAULT_GROUP",
|
||||
cluster_name="DEFAULT",
|
||||
username=None,
|
||||
password=None,
|
||||
heartbeat_interval=1,
|
||||
weight=1.0,
|
||||
ephemeral=True,
|
||||
register_port=26004,
|
||||
)
|
||||
service_cfg = ServiceConfig(
|
||||
service_name="apbo-boat-agent",
|
||||
host="0.0.0.0",
|
||||
port=8000,
|
||||
ip="10.0.0.8",
|
||||
metadata={},
|
||||
)
|
||||
|
||||
manager = NacosManager(nacos_cfg, service_cfg)
|
||||
manager.client = _CaptureClient()
|
||||
|
||||
assert manager._registration_port() == 26004
|
||||
assert manager.register_service() is True
|
||||
|
||||
manager._send_heartbeat()
|
||||
manager.deregister_service()
|
||||
|
||||
assert manager.client.register_calls[0]["port"] == 26004
|
||||
assert manager.client.heartbeat_calls[0]["port"] == 26004
|
||||
assert manager.client.remove_calls[0]["port"] == 26004
|
||||
|
||||
|
||||
Reference in New Issue
Block a user