import pytest
from ymmsl.v0_2 import Conduit, Operator, Port
from ymmsl.v0_2 import Identifier as Id
from ymmsl.v0_2 import Reference as Ref
from libmuscle.peer_info import PeerInfo
[docs]
@pytest.fixture
def peer_info() -> PeerInfo:
kernel = Ref("kernel")
index = [13]
conduits = [Conduit("kernel.out", "other.in"), Conduit("other.out", "kernel.in")]
peer_dims = {Ref("other"): []}
peer_locations = {Ref("other"): ["tcp:other"]}
ymmsl_ports = [Port(Id("out"), Operator.O_I), Port(Id("in"), Operator.S)]
return PeerInfo(kernel, index, conduits, peer_dims, peer_locations, ymmsl_ports)
[docs]
@pytest.fixture
def peer_info2() -> PeerInfo:
kernel = Ref("other")
index = []
conduits = [Conduit("kernel.out", "other.in"), Conduit("other.out", "kernel.in")]
peer_dims = {Ref("kernel"): [20]}
peer_locations = {Ref("kernel"): ["tcp:kernel"]}
ymmsl_ports = [Port(Id("out"), Operator.O_F), Port(Id("in"), Operator.F_INIT)]
return PeerInfo(kernel, index, conduits, peer_dims, peer_locations, ymmsl_ports)
[docs]
@pytest.fixture
def peer_info3() -> PeerInfo:
kernel = Ref("kernel")
index = []
conduits = [Conduit("kernel.out", "other.in"), Conduit("other.out", "kernel.in")]
peer_dims = {Ref("other"): []}
peer_locations = {Ref("other"): ["tcp:other"]}
ymmsl_ports = [Port(Id("out"), Operator.O_I), Port(Id("in"), Operator.S)]
return PeerInfo(kernel, index, conduits, peer_dims, peer_locations, ymmsl_ports)
[docs]
def test_create_peer_info(peer_info) -> None:
assert True
[docs]
def test_is_connected(peer_info) -> None:
assert peer_info.is_connected(Id("out"))
assert peer_info.is_connected(Id("in"))
assert not peer_info.is_connected(Id("not_connected"))
[docs]
def test_get_peer_port(peer_info, peer_info2, peer_info3) -> None:
assert peer_info.get_peer_ports(Id("out")) == [Ref("other.in")]
assert peer_info.get_peer_ports(Id("in")) == [Ref("other.out")]
assert peer_info2.get_peer_ports(Id("out")) == [Ref("kernel.in")]
assert peer_info2.get_peer_ports(Id("in")) == [Ref("kernel.out")]
assert peer_info3.get_peer_ports(Id("out")) == [Ref("other.in")]
assert peer_info3.get_peer_ports(Id("in")) == [Ref("other.out")]
[docs]
def test_get_peer_dims(peer_info, peer_info2, peer_info3) -> None:
assert peer_info.get_peer_dims(Ref("other")) == []
assert peer_info2.get_peer_dims(Ref("kernel")) == [20]
assert peer_info3.get_peer_dims(Ref("other")) == []
[docs]
def test_get_peer_locations(peer_info, peer_info2, peer_info3) -> None:
assert peer_info.get_peer_locations(Ref("other")) == ["tcp:other"]
assert peer_info2.get_peer_locations(Ref("kernel")) == ["tcp:kernel"]
assert peer_info3.get_peer_locations(Ref("other")) == ["tcp:other"]
[docs]
def test_get_peer_endpoint(peer_info, peer_info2, peer_info3) -> None:
assert str(peer_info.get_peer_endpoints(Id("out"), [])[0]) == "other.in[13]"
assert str(peer_info.get_peer_endpoints(Id("in"), [])[0]) == "other.out[13]"
assert str(peer_info2.get_peer_endpoints(Id("out"), [11])[0]) == "kernel[11].in"
assert str(peer_info2.get_peer_endpoints(Id("in"), [11])[0]) == "kernel[11].out"
assert str(peer_info3.get_peer_endpoints(Id("out"), [42])[0]) == "other.in[42]"
assert str(peer_info3.get_peer_endpoints(Id("in"), [42])[0]) == "other.out[42]"
[docs]
def test_get_ymmsl_ports(peer_info) -> None:
assert peer_info.list_ymmsl_ports() == [
Port(Id("out"), Operator.O_I),
Port(Id("in"), Operator.S),
]