import pytest
from ymmsl.v0_2 import Conduit, Identifier as Id, Reference as Ref, Port, Operator
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)
]