diff --git a/test/case/infix_services/services_basic.py b/test/case/infix_services/services_basic.py index 4b747456..7249bdb7 100755 --- a/test/case/infix_services/services_basic.py +++ b/test/case/infix_services/services_basic.py @@ -3,6 +3,11 @@ # Verify that basic services like SSDP, mDNS and LLDP can be enabled and # disabled. We verify operation and non-operation by using tcpdump. # +# XXX: with socat in the Docker container we could speed up the LLDP +# detection considerably by sending a probe: +# +# echo -ne "\x01\x80\xc2\x00\x00\x0e\x01\x80\xc2\x00\x00\x0e\x88\xcc\x02\x07\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | socat - UDP4-DATAGRAM:255.255.255.255:7010,broadcast +# import time import infamy @@ -13,25 +18,30 @@ def verify(enabled, sec): _, hport = env.ltop.xlate("host", "data") with infamy.IsolatedMacVlan(hport) as netns: - snif = infamy.Sniffer(netns, "port 1900 or port 5353") + snif = infamy.Sniffer(netns, "port 1900 or port 5353 or ether proto 0x88cc") ssdp = SsdpClient(netns, retries=sec) netns.addip("10.0.0.1") netns.addroute("0.0.0.0/0", "10.0.0.1") + # Put service enable/disable before starting tcpdump, because + # LLDP lingers and will send a final shutdown message that + # otherwise would get in the capture for disable. + target.put_config_dict("infix-services", { + "ssdp": { + "enabled": enabled + }, + "mdns": { + "enabled": enabled + } + }) + target.put_config_dict("ieee802-dot1ab-lldp", { + "lldp": { + "enabled": enabled + } + }) + with snif: - target.put_config_dict("infix-services", { - "ssdp": { - "enabled": enabled - }, - "mdns": { - "enabled": enabled - } - }) - - #running = target.get_config_dict("/infix-services:mdns") - #assert running["mdns"]["enabled"] == enabled - ssdp.start() time.sleep(sec) ssdp.stop() @@ -73,24 +83,31 @@ with infamy.Test() as test: "enabled": False } }) - cfg = target.get_config_dict("/infix-services:ssdp") - assert not cfg["ssdp"]["enabled"] + target.put_config_dict("ieee802-dot1ab-lldp", { + "lldp": { + "enabled": False + } + }) with test.step("Start sniffer and enable services on target ..."): - rc = verify(True, 3) + rc = verify(True, 20) print(rc.stdout) # breakpoint() if "10.0.0.10.1900 > 10.0.0.1" not in rc.stdout: test.fail() if "10.0.0.10.5353" not in rc.stdout: test.fail() + if "LLDP" not in rc.stdout: + test.fail() with test.step("Disable services on target, verify they're not running anymore ..."): - rc = verify(False, 3) + rc = verify(False, 20) print(rc.stdout) if "10.0.0.10.1900 > 10.0.0.1" in rc.stdout: test.fail() if "10.0.0.10.5353" in rc.stdout: test.fail() + if "LLDP" in rc.stdout: + test.fail() test.succeed()