[PATCH v3 05/12] dts: add support for simpler topologies
Juraj Linkeš
juraj.linkes at pantheon.tech
Thu Sep 5 11:42:59 CEST 2024
On 26. 8. 2024 18:54, Jeremy Spewock wrote:
> I just had one question below, otherwise:
>
> Reviewed-by: Jeremy Spewock <jspewock at iol.unh.edu>
>
> On Wed, Aug 21, 2024 at 10:53 AM Juraj Linkeš
> <juraj.linkes at pantheon.tech> wrote:
> <snip>
>> diff --git a/dts/framework/testbed_model/topology.py b/dts/framework/testbed_model/topology.py
>> new file mode 100644
>> index 0000000000..19632ee890
>> --- /dev/null
>> +++ b/dts/framework/testbed_model/topology.py
> <snip>
>> +
>> +
>> +class TopologyType(IntEnum):
>> + """Supported topology types."""
>> +
>> + #: A topology with no Traffic Generator.
>> + no_link = 0
>> + #: A topology with one physical link between the SUT node and the TG node.
>> + one_link = 1
>> + #: A topology with two physical links between the Sut node and the TG node.
>> + two_links = 2
>> +
>> +
>> +class Topology:
>> + """Testbed topology.
>> +
>> + The topology contains ports processed into ingress and egress ports.
>> + It's assumed that port0 of the SUT node is connected to port0 of the TG node and so on.
>
> Do we need to make this assumption when you are comparing the port
> directly to its peer and matching the addresses? I think you could
> specify in conf.yaml that port 0 on the SUT is one of your ports and
> its peer is port 1 on the TG and because you do the matching, this
> would work fine.
>
Yes, the assumption is not adhered to yet. I guess I put this here
because we've been discussing this in the calls, but the actual code
doesn't use this. I'll remove this line.
>> + If there are no ports on a node, dummy ports (ports with no actual values) are stored.
>> + If there is only one link available, the ports of this link are stored
>> + as both ingress and egress ports.
>> +
>> + The dummy ports shouldn't be used. It's up to :class:`~framework.runner.DTSRunner`
>> + to ensure no test case or suite requiring actual links is executed
>> + when the topology prohibits it and up to the developers to make sure that test cases
>> + not requiring any links don't use any ports. Otherwise, the underlying methods
>> + using the ports will fail.
>> +
>> + Attributes:
>> + type: The type of the topology.
>> + tg_port_egress: The egress port of the TG node.
>> + sut_port_ingress: The ingress port of the SUT node.
>> + sut_port_egress: The egress port of the SUT node.
>> + tg_port_ingress: The ingress port of the TG node.
>> + """
>> +
>> + type: TopologyType
>> + tg_port_egress: Port
>> + sut_port_ingress: Port
>> + sut_port_egress: Port
>> + tg_port_ingress: Port
>> +
>> + def __init__(self, sut_ports: Iterable[Port], tg_ports: Iterable[Port]):
>> + """Create the topology from `sut_ports` and `tg_ports`.
>> +
>> + Args:
>> + sut_ports: The SUT node's ports.
>> + tg_ports: The TG node's ports.
>> + """
>> + port_links = []
>> + for sut_port in sut_ports:
>> + for tg_port in tg_ports:
>> + if (sut_port.identifier, sut_port.peer) == (
>> + tg_port.peer,
>> + tg_port.identifier,
>> + ):
>> + port_links.append(PortLink(sut_port=sut_port, tg_port=tg_port))
>> +
>> + self.type = TopologyType(len(port_links))
> <snip>
>>
More information about the dev
mailing list