prplos/.gitlab/tests/cram/generic/acceleration-plan-components/dhcpv4-force-option/017-dhcpv4-force-option.t
Alexandre Fiset 951c2d1d74 ci: cram: add DHCPv4 Force option cram tests
Test the Force parameter of Device.DHCPv4.Server.Pool.{i}.Options.{i} to
force an option when ever it is not requested by the client

Closes: PCF-2462
Signed-off-by: Alexandre Fiset <alexandre.fiset@softathome.com>
2026-06-02 17:59:31 +01:00

55 lines
1.9 KiB
Perl

Create R alias:
$ alias R="${CRAM_REMOTE_COMMAND:-}"
Install scapy with pip:
$ pip install scapy >/dev/null 2>&1
Verify python can import scapy:
$ python3 -c "import scapy.all" >/dev/null 2>&1
Pick test constants:
$ TAG=42
$ VALUE_HEX=74657374
$ REQ_WITHOUT_TAG=1,3,6,15
$ REQ_WITH_TAG=1,3,6,15,42
$ PROBE_TIMEOUT=12
Create pool option with Force=true:
$ R "ba-cli 'Device.DHCPv4.Server.Pool.lan.Option.+{Alias=\"cpe-force-opt\",Enable=1,Tag=${TAG},Value=\"${VALUE_HEX}\",Force=1}'" | grep -Ev '^(>|$)'
Device\.DHCPv4\.Server\.Pool\.1\.Option\.[0-9]+\. (re)
Device\.DHCPv4\.Server\.Pool\.1\.Option\.[0-9]+\.Alias="cpe-force-opt" (re)
$ sleep 1
Force=true, tag 42 absent from DHCPREQUEST PRL -> tag must be present in final DHCPACK:
$ sudo -E python3 "$TESTDIR/dhcpv4_option_probe.py" --iface "$TESTBED_LAN_INTERFACE" --request-options "$REQ_WITHOUT_TAG" --timeout "$PROBE_TIMEOUT" 2>/dev/null
RECEIVED_TAGS=.*(=|,)42(,|$).* (re)
Set Force=false:
$ R "ba-cli 'Device.DHCPv4.Server.Pool.lan.Option.cpe-force-opt.Force=0'" | grep -Ev '^(>|$)'
Device\.DHCPv4\.Server\.Pool\.1\.Option\.[0-9]+\. (re)
Device\.DHCPv4\.Server\.Pool\.1\.Option\.[0-9]+\.Force=0 (re)
$ sleep 1
Force=false, tag 42 absent from DHCPREQUEST PRL -> tag must be absent from final DHCPACK:
$ sudo -E python3 "$TESTDIR/dhcpv4_option_probe.py" --iface "$TESTBED_LAN_INTERFACE" --request-options "$REQ_WITHOUT_TAG" --timeout "$PROBE_TIMEOUT" 2>/dev/null
RECEIVED_TAGS=(?!.*(=|,)42(,|$)).* (re)
Force=false, tag 42 present in DHCPREQUEST PRL -> tag must be present in final DHCPACK:
$ sudo -E python3 "$TESTDIR/dhcpv4_option_probe.py" --iface "$TESTBED_LAN_INTERFACE" --request-options "$REQ_WITH_TAG" --timeout "$PROBE_TIMEOUT" 2>/dev/null
RECEIVED_TAGS=.*(=|,)42(,|$).* (re)
Cleanup:
$ R "ba-cli 'Device.DHCPv4.Server.Pool.lan.Option.cpe-force-opt.-'" | grep -Ev '^(>|$)'
Device\.DHCPv4\.Server\.Pool\.1\.Option\.[0-9]+\. (re)