87 lines
2.4 KiB
Python
87 lines
2.4 KiB
Python
"""Test HffsContext."""
|
|
|
|
from pytest import fixture
|
|
|
|
from hffs.common.context import HffsContext
|
|
from hffs.common.peer import Peer as ContextPeer
|
|
from hffs.config.hffs_config import HffsConfig, Peer
|
|
|
|
|
|
@fixture()
|
|
def test_config() -> HffsConfig:
|
|
"""Return a test HffsConfig."""
|
|
return HffsConfig(
|
|
cache_dir="test_cache_dir",
|
|
peers=[Peer(ip="127.0.0.1", port=8081)],
|
|
daemon_port=8088,
|
|
)
|
|
|
|
|
|
def test_port(test_config: HffsConfig) -> None:
|
|
"""Test get port."""
|
|
context = HffsContext.init_with_config(test_config)
|
|
assert context.port == test_config.daemon_port
|
|
|
|
|
|
def test_model_dir(test_config: HffsConfig) -> None:
|
|
"""Test get model dir."""
|
|
context = HffsContext.init_with_config(test_config)
|
|
assert str(context.model_dir) == "test_cache_dir/models"
|
|
|
|
|
|
def test_etag_dir(test_config: HffsConfig) -> None:
|
|
"""Test get etag dir."""
|
|
context = HffsContext.init_with_config(test_config)
|
|
assert str(context.etag_dir) == "test_cache_dir/etags"
|
|
|
|
|
|
def test_log_dir(test_config: HffsConfig) -> None:
|
|
"""Test log dir."""
|
|
context = HffsContext.init_with_config(test_config)
|
|
assert str(context.log_dir) == "test_cache_dir/logs"
|
|
|
|
|
|
def test_get_peers(test_config: HffsConfig) -> None:
|
|
"""Test get peers."""
|
|
context = HffsContext.init_with_config(test_config)
|
|
assert len(context.peers) == 1
|
|
|
|
act_peer = context.peers[0]
|
|
exp_peer = test_config.peers[0]
|
|
assert act_peer.ip == exp_peer.ip
|
|
assert act_peer.port == exp_peer.port
|
|
assert act_peer.alive is False
|
|
assert act_peer.epoch == 0
|
|
|
|
|
|
def test_update_peers() -> None:
|
|
"""Test update peers."""
|
|
num_peers = 2
|
|
ip_1, ip_2, ip_3 = "127.0.0.1", "127.0.0.2", "127.0.0.3"
|
|
port_1, port_2, port_3 = 8081, 8082, 8083
|
|
|
|
old_conf = HffsConfig(
|
|
peers=[
|
|
Peer(ip=ip_1, port=port_1),
|
|
Peer(ip=ip_2, port=port_2),
|
|
],
|
|
)
|
|
old_context = HffsContext.init_with_config(old_conf)
|
|
assert len(old_context.peers) == num_peers
|
|
|
|
old_context.peers[0].alive = True
|
|
old_context.peers[0].epoch = 42
|
|
|
|
new_conf = HffsConfig(
|
|
peers=[
|
|
Peer(ip=ip_1, port=port_1),
|
|
Peer(ip=ip_3, port=port_3),
|
|
],
|
|
)
|
|
|
|
new_peers = HffsContext.update_peers(new_conf, old_context.peers)
|
|
|
|
assert len(new_peers) == num_peers
|
|
assert ContextPeer(ip=ip_1, port=port_1, alive=True, epoch=42) in new_peers
|
|
assert ContextPeer(ip=ip_3, port=port_3, alive=False, epoch=0) in new_peers
|