mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-30 04:33:00 +02:00
test: speed_duplex_coppar: Adapt to yangerd
This commit is contained in:
@@ -180,37 +180,13 @@ def clear_target_advertise(target, interface):
|
||||
target.delete_xpath(iface.get_xpath(interface, "ieee802-ethernet-interface:ethernet"))
|
||||
|
||||
|
||||
def verify_speed_duplex(target, ns, interface, exp_mbps, exp_duplex):
|
||||
until(lambda: _speed_duplex_present(target, interface))
|
||||
speed_bps, duplex = get_target_speed_duplex(target, interface)
|
||||
if speed_bps is None or duplex is None:
|
||||
print(f"Could not fetch speed/duplex from target for interface {interface}")
|
||||
test.fail()
|
||||
def _settle_speed_duplex(target, ns, interface, exp_mbps, exp_duplex):
|
||||
"""Poll until the link reaches exp speed/duplex AND carries traffic.
|
||||
|
||||
act_mbps = int(speed_bps) // 1_000_000
|
||||
if act_mbps != exp_mbps:
|
||||
print(f"act_mbps: {act_mbps}, exp_mbps: {exp_mbps}")
|
||||
test.fail()
|
||||
|
||||
if duplex.lower() != exp_duplex.lower():
|
||||
print(f"act_duplex: {duplex}, exp_duplex: {exp_duplex}")
|
||||
test.fail()
|
||||
|
||||
ns.must_reach("10.0.0.2")
|
||||
print(f"Verified: {interface} is operating at {act_mbps} Mbps, {duplex} duplex")
|
||||
|
||||
|
||||
def _speed_duplex_present(target, interface):
|
||||
speed_bps, duplex = get_target_speed_duplex(target, interface)
|
||||
return speed_bps is not None and duplex is not None
|
||||
|
||||
|
||||
def verify_forced_speed_duplex(target, ns, interface, exp_mbps, exp_duplex):
|
||||
"""Verify a forced (autoneg off) link reaches exp speed/duplex.
|
||||
|
||||
Turning auto-negotiation off bounces the link; it can take a few
|
||||
seconds to settle, so poll the operational speed/duplex AND a ping
|
||||
together until both hold instead of checking once.
|
||||
Any advertisement change (either peer) bounces the link, and while it
|
||||
renegotiates the operational data transiently shows the previous
|
||||
values or none at all -- a one-shot read races both ways. Poll the
|
||||
expected speed/duplex and a ping together until all hold.
|
||||
"""
|
||||
def settled():
|
||||
speed_bps, duplex = get_target_speed_duplex(target, interface)
|
||||
@@ -227,6 +203,16 @@ def verify_forced_speed_duplex(target, ns, interface, exp_mbps, exp_duplex):
|
||||
return True
|
||||
|
||||
until(settled, attempts=30)
|
||||
|
||||
|
||||
def verify_speed_duplex(target, ns, interface, exp_mbps, exp_duplex):
|
||||
_settle_speed_duplex(target, ns, interface, exp_mbps, exp_duplex)
|
||||
print(f"Verified: {interface} is operating at {exp_mbps} Mbps, {exp_duplex} duplex")
|
||||
|
||||
|
||||
def verify_forced_speed_duplex(target, ns, interface, exp_mbps, exp_duplex):
|
||||
"""Verify a forced (autoneg off) link reaches exp speed/duplex."""
|
||||
_settle_speed_duplex(target, ns, interface, exp_mbps, exp_duplex)
|
||||
print(f"Verified: {interface} forced to {exp_mbps} Mbps, {exp_duplex} duplex")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user