ci: cram: update OSPv2 cram tests

Backport OSPv1 new test scripts 100-pwhm.t and
110-prplmesh-dataelements.t

References: PPW-99, PPW-86

Closes:PPW-227

Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
This commit is contained in:
Houssem Dafdouf 2025-01-30 23:16:15 +01:00 committed by Petr Štetiar
parent 899584cb7f
commit f641080fd0
No known key found for this signature in database
GPG Key ID: 58EE120F30CC02D3
3 changed files with 608 additions and 303 deletions

View File

@ -1,303 +0,0 @@
Create R alias:
$ alias R="${CRAM_REMOTE_COMMAND:-}"
Disable autochannel :
$ R "ubus -S call WiFi.Radio.2 _set '{\"parameters\":{\"AutoChannelEnable\":0}}'"
{"WiFi.Radio.2.":{"AutoChannelEnable":false}}
{}
{"amxd-error-code":0}
$ R "ubus -S call WiFi.Radio.1 _set '{\"parameters\":{\"AutoChannelEnable\":0}}'"
{"WiFi.Radio.1.":{"AutoChannelEnable":false}}
{}
{"amxd-error-code":0}
$ sleep 1
Set channel to a non DFS one
$ R "ubus -S call WiFi.Radio.2 _set '{\"parameters\":{\"Channel\":36}}'"
{"WiFi.Radio.2.":{"Channel":36}}
{}
{"amxd-error-code":0}
$ sleep 1
Switch channel bandwith from 160 to 80 Mhz to avoid doing DFS CAC operation, that lead to long delay before vaps being up (to be removed when PPM 2810 is fixed):
$ R "ubus -S call WiFi.Radio.2 _set '{\"parameters\":{\"OperatingChannelBandwidth\":\"80MHz\"}}'"
{"WiFi.Radio.2.":{"OperatingChannelBandwidth":"80MHz"}}
{}
{"amxd-error-code":0}
Check that wireless has desired configuration and state after boot:
$ R "ubus -S call WiFi.SSID _get | jsonfilter -e @[*].SSID -e @[*].Status | sort"
Down
Down
Down
Down
Down
Down
Down
SSID_NOT_SET
prplOS
prplOS
prplOS
prplOS-guest
prplOS-guest
prplOS-guest
$ R "pgrep -f 'hostapd -t'"
[1]
Restart prplmesh:
$ R logger -t cram "Restart prplmesh"
$ R "( /etc/init.d/prplmesh gateway_mode ; sleep 2 ) > /tmp/prplmesh-gw-mode.log 2>&1 ; logger -t prplmesh-gateway-mode < /tmp/prplmesh-gw-mode.log"
$ R "ubus -t 60 wait_for Device.WiFi"
Start wireless:
$ R logger -t cram "Start wireless"
$ R "ubus -S call WiFi.AccessPoint.1 _set '{\"parameters\":{\"Enable\":1}}'"
{"WiFi.AccessPoint.1.":{"Enable":true}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.1 _get '{\"rel_path\":\"Status\"}'| grep -q Up && echo 'SSID.1 Up' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.1 Up
$ R "ubus -S call WiFi.AccessPoint.2 _set '{\"parameters\":{\"Enable\":1}}'"
{"WiFi.AccessPoint.2.":{"Enable":true}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.2 _get '{\"rel_path\":\"Status\"}'| grep -q Up && echo 'SSID.2 Up' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.2 Up
$ R "ubus -S call WiFi.AccessPoint.3 _set '{\"parameters\":{\"Enable\":1}}'"
{"WiFi.AccessPoint.3.":{"Enable":true}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.3 _get '{\"rel_path\":\"Status\"}'| grep -q Up && echo 'SSID.3 Up' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.3 Up
$ R "ubus -S call WiFi.AccessPoint.4 _set '{\"parameters\":{\"Enable\":1}}'"
{"WiFi.AccessPoint.4.":{"Enable":true}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.4 _get '{\"rel_path\":\"Status\"}'| grep -q Up && echo 'SSID.4 Up' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.4 Up
$ R "ubus -S call WiFi.AccessPoint.5 _set '{\"parameters\":{\"Enable\":1}}'"
{"WiFi.AccessPoint.5.":{"Enable":true}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.5 _get '{\"rel_path\":\"Status\"}'| grep -q Up && echo 'SSID.5 Up' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.5 Up
$ R "ubus -S call WiFi.AccessPoint.6 _set '{\"parameters\":{\"Enable\":1}}'"
{"WiFi.AccessPoint.6.":{"Enable":true}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.6 _get '{\"rel_path\":\"Status\"}'| grep -q Up && echo 'SSID.6 Up' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.6 Up
Check that hostapd is operating as expected:
$ R logger -t cram "Check that hostapd is operating after reboot"
$ R "ps axw" | sed -nE 's/.*(hostapd.*)/\1/p' | head -3 | LC_ALL=C sort
hostapd -ddt /tmp/wlan0_hapd.conf
hostapd -ddt /tmp/wlan2_hapd.conf
hostapd -ddt /tmp/wlan4_hapd.conf
Check that wireless is operating:
$ R "ubus -S call WiFi.SSID _get | jsonfilter -e @[*].SSID -e @[*].Status | sort"
Down
SSID_NOT_SET
Up
Up
Up
Up
Up
Up
prplOS
prplOS
prplOS
prplOS-guest
prplOS-guest
prplOS-guest
$ R "iw dev | grep -e Interface -e ssid | tr -d '\t' | sort"
Interface wlan0
Interface wlan0.1
Interface wlan0.2
Interface wlan2
Interface wlan2.1
Interface wlan2.2
Interface wlan4
Interface wlan4.1
Interface wlan4.2
ssid dummy_ssid_2.4GHz
ssid dummy_ssid_5GHz
ssid dummy_ssid_6GHz
ssid prplOS
ssid prplOS
ssid prplOS
ssid prplOS-guest
ssid prplOS-guest
ssid prplOS-guest
Check that prplmesh processes are running:
$ R logger -t cram "Check that prplmesh processes are running"
$ R "ps axw" | sed -nE 's/.*(\/opt\/prplmesh\/bin.*)/\1/p' | LC_ALL=C sort
/opt/prplmesh/bin/beerocks_agent
/opt/prplmesh/bin/beerocks_controller
/opt/prplmesh/bin/beerocks_fronthaul -i wlan0
/opt/prplmesh/bin/beerocks_fronthaul -i wlan2
/opt/prplmesh/bin/beerocks_fronthaul -i wlan4
/opt/prplmesh/bin/ieee1905_transport
Check that prplmesh is operational:
$ R logger -t cram "Check that prplmesh is operational"
$ R "/opt/prplmesh/scripts/prplmesh_utils.sh status" | LC_ALL=C sort
\x1b[0m (esc)
\x1b[0m\x1b[1;32mOK Main radio agent operational (esc)
\x1b[1;32moperational test success! (esc)
/opt/prplmesh/scripts/prplmesh_utils.sh: status
[0-9]+ beerocks_contro (re)
[0-9]+ beerocks_agent (re)
[0-9]+ beerocks_fronth (re)
[0-9]+ beerocks_fronth (re)
[0-9]+ beerocks_fronth (re)
OK wlan0 radio agent operational
OK wlan2 radio agent operational
OK wlan4 radio agent operational
executing operational test using bml
Check that prplmesh is in operational state:
$ R logger -t cram "Check that prplmesh is in operational state"
$ R "/opt/prplmesh/bin/beerocks_cli -c bml_conn_map" | egrep '(wlan|OK)' | sed -E "s/.*: (wlan[0-9.]+) .*/\1/" | LC_ALL=C sort
bml_connect: return value is: BML_RET_OK, Success status
bml_disconnect: return value is: BML_RET_OK, Success status
bml_nw_map_query: return value is: BML_RET_OK, Success status
wlan0
wlan0.0
wlan0.1
wlan2
wlan2.0
wlan2.1
wlan4
wlan4.0
wlan4.1
Disable wireless:
$ R logger -t cram "Stop wireless"
$ R "ubus -S call WiFi.AccessPoint.6 _set '{\"parameters\":{\"Enable\":0}}'"
{"WiFi.AccessPoint.6.":{"Enable":false}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.6 _get '{\"rel_path\":\"Status\"}'| grep -q Down && echo 'SSID.6 Down' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.6 Down
$ R "ubus -S call WiFi.AccessPoint.5 _set '{\"parameters\":{\"Enable\":0}}'"
{"WiFi.AccessPoint.5.":{"Enable":false}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.5 _get '{\"rel_path\":\"Status\"}'| grep -q Down && echo 'SSID.5 Down' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.5 Down
$ R "ubus -S call WiFi.AccessPoint.4 _set '{\"parameters\":{\"Enable\":0}}'"
{"WiFi.AccessPoint.4.":{"Enable":false}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.4 _get '{\"rel_path\":\"Status\"}'| grep -q Down && echo 'SSID.4 Down' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.4 Down
$ R "ubus -S call WiFi.AccessPoint.3 _set '{\"parameters\":{\"Enable\":0}}'"
{"WiFi.AccessPoint.3.":{"Enable":false}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.3 _get '{\"rel_path\":\"Status\"}'| grep -q Down && echo 'SSID.3 Down' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.3 Down
$ R "ubus -S call WiFi.AccessPoint.2 _set '{\"parameters\":{\"Enable\":0}}'"
{"WiFi.AccessPoint.2.":{"Enable":false}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.2 _get '{\"rel_path\":\"Status\"}'| grep -q Down && echo 'SSID.2 Down' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.2 Down
$ R "ubus -S call WiFi.AccessPoint.1 _set '{\"parameters\":{\"Enable\":0}}'"
{"WiFi.AccessPoint.1.":{"Enable":false}}
{}
{"amxd-error-code":0}
$ sleep 10
$ R "i=15 ; while [ \$i -gt 1 ]; do ubus -S call WiFi.SSID.1 _get '{\"rel_path\":\"Status\"}'| grep -q Down && echo 'SSID.1 Down' && i=0 ; i=\$(( i-1 )); sleep 2 ; done"
SSID.1 Down
Check that wireless is disabled:
$ R "ubus -S call WiFi.SSID _get | jsonfilter -e @[*].SSID -e @[*].Status | sort"
Down
Down
Down
Down
Down
Down
Down
SSID_NOT_SET
prplOS
prplOS
prplOS
prplOS-guest
prplOS-guest
prplOS-guest
$ R "pgrep -f 'hostapd -t'"
[1]

View File

@ -0,0 +1,354 @@
Create R alias:
$ alias R="${CRAM_REMOTE_COMMAND:-}"
Provide common helpers:
$ enable_ap() { R "ba-cli -j -l WiFi.AccessPoint.${1}.Enable=1 | grep -q Enable && echo '"WiFi.AccessPoint.${1}" enabled'";}
$ disable_ap() { R "ba-cli -j -l WiFi.AccessPoint.${1}.Enable=0 | grep -q Enable && echo '"WiFi.AccessPoint.${1}" disabled'";}
$ check_ap_ref_ssid() { R "i=15 ; while [ \$i -gt 1 ]; do ba-cli -j -l WiFi.AccessPoint.${1}.SSIDReference+.Status? | grep WiFi.SSID. | grep -q "${2}" && echo '"WiFi.AccessPoint.${1}" SSID Reference is "${2}"' && i=0 ; i=\$(( i-1 )); sleep 2 ; done";}
$ get_ssid_ref() { msg=$(R "ba-cli -j -l WiFi.AccessPoint.${1}.SSIDReference+.Status?"); echo "$msg" | sed '/^$/d';}
$ get_ssid_status() { R "ba-cli -j -l WiFi.SSID.?0 | jsonfilter -e @[0]'[@.Alias != \"ep2g0\" && @.Alias != \"ep5g0\" && @.Alias != \"ep6g0\"].Status'" | LC_ALL=C sort;}
$ R logger -t cram "Starting test ..."
Wait for Device.WiFi. datamodel availability:
$ R "amx_wait_for "Device.WiFi." "
$ sleep 10
Try Suspending prplMesh processes:
$ R "killall -SIGSTOP beerocks_agent > /dev/null 2>&1 || true"
$ R "killall -SIGSTOP beerocks_fronthaul > /dev/null 2>&1 || true"
Set AutoChannelEnable=0 on all WiFi.Radio. interfaces:
$ R "ba-cli -j -l WiFi.Radio.*.AutoChannelEnable=0 | sed '/^$/d'"
[{"WiFi.Radio.1.":{"AutoChannelEnable":0},"WiFi.Radio.2.":{"AutoChannelEnable":0},"WiFi.Radio.3.":{"AutoChannelEnable":0}}]
Set channel to a non DFS one:
$ R "ba-cli -j -l WiFi.Radio.2.Channel=36 | sed '/^$/d'"
[{"WiFi.Radio.2.":{"Channel":36}}]
$ sleep 5
Check default SSID status:
$ get_ssid_status
Down
Down
Down
Down
Down
Down
Check default SSID configuration of access points:
$ R "ba-cli -j -l WiFi.SSID.?0 | jsonfilter -e @[0]'[@.Alias != \"ep2g0\" && @.Alias != \"ep5g0\" && @.Alias != \"ep6g0\"].SSID'" | LC_ALL=C sort
prplOS
prplOS
prplOS
prplOS-guest
prplOS-guest
prplOS-guest
Check that no hostapd instance is running:
$ R "pgrep -f 'hostapd -ddt'"
[1]
Test activation of access point 1:
$ R logger -t cram "Test AccessPoint 1 activation "$(get_ssid_ref 1)""
$ enable_ap 1
WiFi.AccessPoint.1 enabled
$ check_ap_ref_ssid 1 Up
WiFi.AccessPoint.1 SSID Reference is Up
$ sleep 5
$ get_ssid_status
Down
Down
Down
Down
Down
Up
Test activation of access point 2:
$ R logger -t cram "Test AccessPoint 2 activation "$(get_ssid_ref 2)""
$ enable_ap 2
WiFi.AccessPoint.2 enabled
$ check_ap_ref_ssid 2 Up
WiFi.AccessPoint.2 SSID Reference is Up
$ sleep 5
$ get_ssid_status
Down
Down
Down
Down
Up
Up
Test activation of access point 3:
$ R logger -t cram "Test AccessPoint 3 activation "$(get_ssid_ref 3)""
$ enable_ap 3
WiFi.AccessPoint.3 enabled
$ check_ap_ref_ssid 3 Up
WiFi.AccessPoint.3 SSID Reference is Up
$ sleep 5
$ get_ssid_status
Down
Down
Down
Up
Up
Up
Test activation of access point 4:
$ R logger -t cram "Test AccessPoint 4 activation "$(get_ssid_ref 4)""
$ enable_ap 4
WiFi.AccessPoint.4 enabled
$ check_ap_ref_ssid 4 Up
WiFi.AccessPoint.4 SSID Reference is Up
$ sleep 5
$ get_ssid_status
Down
Down
Up
Up
Up
Up
Test activation of access point 5:
$ R logger -t cram "Test AccessPoint 5 activation "$(get_ssid_ref 5)""
$ enable_ap 5
WiFi.AccessPoint.5 enabled
$ check_ap_ref_ssid 5 Up
WiFi.AccessPoint.5 SSID Reference is Up
$ sleep 5
$ get_ssid_status
Down
Up
Up
Up
Up
Up
Test activation of access point 6:
$ R logger -t cram "Test AccessPoint 6 activation "$(get_ssid_ref 6)""
$ enable_ap 6
WiFi.AccessPoint.6 enabled
$ check_ap_ref_ssid 6 Up
WiFi.AccessPoint.6 SSID Reference is Up
$ sleep 5
$ get_ssid_status
Up
Up
Up
Up
Up
Up
Check that hostapd is operating as expected:
$ R logger -t cram "Check that hostapd is operating"
$ R "ps axw" | sed -nE 's/.*(hostapd.*)/\1/p' | head -3 | LC_ALL=C sort
hostapd -ddt /tmp/wlan0_hapd.conf
hostapd -ddt /tmp/wlan2_hapd.conf
hostapd -ddt /tmp/wlan4_hapd.conf
Check iw interfaces and beaconing:
$ R "iw dev | grep -e Interface -e ssid | tr -d '\t' | sort"
Interface wlan0
Interface wlan0.1
Interface wlan0.2
Interface wlan1
Interface wlan2
Interface wlan2.1
Interface wlan2.2
Interface wlan3
Interface wlan4
Interface wlan4.1
Interface wlan4.2
Interface wlan5
ssid dummy_ssid_2.4GHz
ssid dummy_ssid_5GHz
ssid dummy_ssid_6GHz
ssid prplOS
ssid prplOS
ssid prplOS
ssid prplOS-guest
ssid prplOS-guest
ssid prplOS-guest
Test deactivation of access point 6:
$ R logger -t cram "Test AccessPoint 6 deactivation "$(get_ssid_ref 6)""
$ disable_ap 6
WiFi.AccessPoint.6 disabled
$ check_ap_ref_ssid 6 Down
WiFi.AccessPoint.6 SSID Reference is Down
$ sleep 5
$ get_ssid_status
Down
Up
Up
Up
Up
Up
Test deactivation of access point 5:
$ R logger -t cram "Test AccessPoint 5 deactivation "$(get_ssid_ref 5)""
$ disable_ap 5
WiFi.AccessPoint.5 disabled
$ check_ap_ref_ssid 5 Down
WiFi.AccessPoint.5 SSID Reference is Down
$ sleep 5
$ get_ssid_status
Down
Down
Up
Up
Up
Up
Test deactivation of access point 4:
$ R logger -t cram "Test AccessPoint 4 deactivation "$(get_ssid_ref 4)""
$ disable_ap 4
WiFi.AccessPoint.4 disabled
$ check_ap_ref_ssid 4 Down
WiFi.AccessPoint.4 SSID Reference is Down
$ sleep 5
$ get_ssid_status
Down
Down
Down
Up
Up
Up
Test deactivation of access point 3:
$ R logger -t cram "Test AccessPoint 3 deactivation "$(get_ssid_ref 3)""
$ disable_ap 3
WiFi.AccessPoint.3 disabled
$ check_ap_ref_ssid 3 Down
WiFi.AccessPoint.3 SSID Reference is Down
$ sleep 5
$ get_ssid_status
Down
Down
Down
Down
Up
Up
Test deactivation of access point 2:
$ R logger -t cram "Test AccessPoint 2 deactivation "$(get_ssid_ref 2)""
$ disable_ap 2
WiFi.AccessPoint.2 disabled
$ check_ap_ref_ssid 2 Down
WiFi.AccessPoint.2 SSID Reference is Down
$ sleep 5
$ get_ssid_status
Down
Down
Down
Down
Down
Up
Test deactivation of access point 1:
$ R logger -t cram "Test AccessPoint 1 deactivation "$(get_ssid_ref 1)""
$ disable_ap 1
WiFi.AccessPoint.1 disabled
$ check_ap_ref_ssid 1 Down
WiFi.AccessPoint.1 SSID Reference is Down
$ sleep 5
$ get_ssid_status
Down
Down
Down
Down
Down
Down
Check if hostapd process is stopped:
$ R "pgrep -f 'hostapd -ddt'"
[1]
Resume prplMesh processes:
$ R "killall -SIGCONT beerocks_agent > /dev/null 2>&1 || true"
$ R "killall -SIGCONT beerocks_fronthaul > /dev/null 2>&1 || true"
$ R logger -t cram "Stopping test .."
Wait 20s before leaving the test:
$ sleep 20
$ R logger -t cram "Test finished!"

View File

@ -0,0 +1,254 @@
Create R alias:
$ alias R="${CRAM_REMOTE_COMMAND:-}"
Provide common helpers:
$ get_ssid_status() { R "ba-cli -j -l WiFi.SSID.?0 | jsonfilter -e @[0]'[@.Alias != \"ep2g0\" && @.Alias != \"ep5g0\" && @.Alias != \"ep6g0\"].Status'" | LC_ALL=C sort;}
$ get_ssid_ssid() { R "ba-cli -j -l WiFi.SSID.?0 | jsonfilter -e @[0]'[@.Alias != \"ep2g0\" && @.Alias != \"ep5g0\" && @.Alias != \"ep6g0\"].SSID'" | LC_ALL=C sort;}
Set AutoChannelEnable=0 on all WiFi.Radio. interfaces:
$ R "ba-cli -j -l WiFi.Radio.*.AutoChannelEnable=0 | sed '/^$/d'"
[{"WiFi.Radio.1.":{"AutoChannelEnable":0},"WiFi.Radio.2.":{"AutoChannelEnable":0},"WiFi.Radio.3.":{"AutoChannelEnable":0}}]
Set channel to a non DFS one:
$ R "ba-cli -j -l WiFi.Radio.2.Channel=36 | sed '/^$/d'"
[{"WiFi.Radio.2.":{"Channel":36}}]
$ sleep 5
Configure controller, requires PPM-3022 to work:
$ R logger -t cram "Stop prplmesh"
$ R "( /etc/init.d/prplmesh stop ; sleep 2 ) 2>&1 > /dev/null"
$ R "sed -i 's/use_dataelements_vap_configs=0/use_dataelements_vap_configs=1/g' /opt/prplmesh/config/beerocks_controller.conf"
Restart prplmesh:
$ R logger -t cram "Restart prplmesh"
$ R "( /etc/init.d/prplmesh gateway_mode ; sleep 2 ) > /tmp/prplmesh-gw-mode.log 2>&1 ; logger -t prplmesh-gateway-mode < /tmp/prplmesh-gw-mode.log"
$ R "ubus -t 60 wait_for Device.WiFi"
First call of AccessPointCommit, controller should push empty config to agents:
$ R logger -t cram "first call of AccessPointCommit pushes empty config, global teardown"
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network AccessPointCommit"
{"retval":""}
{}
{"amxd-error-code":0}
$ R sleep 15
Check all AccessPoint.SSIDReference+ instances are disabled
$ get_ssid_status
Down
Down
Down
Down
Down
Down
$ get_ssid_ssid
prplOS
prplOS
prplOS
prplOS-guest
prplOS-guest
prplOS-guest
Create instances of Network.AccessPoint and push them to the agent:
$ R logger -t cram "create instances of Network.AccessPoint and push them to the agent"
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint _add"
{"object":"X_PRPL-ORG_WiFiController.Network.AccessPoint.1.","index":1,"name":"1","parameters":{},"path":"X_PRPL-ORG_WiFiController.Network.AccessPoint.1."}
{}
{"amxd-error-code":0}
Since no persistent storage of NbAPI Network subsection, always index:1 after controller restart:
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.1 _set '{\"parameters\":{\"Band2_4G\":1,\"Band5GH\":1,\"Band5GL\":1,\"Band6G\":1}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.1.":{"Band5GH":true,"Band6G":true,"Band5GL":true,"Band2_4G":true}}
{}
{"amxd-error-code":0}
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.1 _set '{\"parameters\":{\"MultiApMode\":\"Fronthaul+Backhaul\"}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.1.":{"MultiApMode":"Fronthaul+Backhaul"}}
{}
{"amxd-error-code":0}
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.1.Security _set '{\"parameters\":{\"ModeEnabled\":\"WPA2-Personal\",\"KeyPassphrase\":\"password\"}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.1.Security.":{"KeyPassphrase":"password","ModeEnabled":"WPA2-Personal"}}
{}
{"amxd-error-code":0}
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.1 _set '{\"parameters\":{\"SSID\":\"prplOSpriv\"}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.1.":{"SSID":"prplOSpriv"}}
{}
{"amxd-error-code":0}
In case the controller does not yet have this parameter, catch error here isof later during teardown test:
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.1 _set '{\"parameters\":{\"Enable\":1}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.1.":{"Enable":true}}
{}
{"amxd-error-code":0}
Create second instance of Network.AccessPoint for guest VAPs:
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint _add"
{"object":"X_PRPL-ORG_WiFiController.Network.AccessPoint.2.","index":2,"name":"2","parameters":{},"path":"X_PRPL-ORG_WiFiController.Network.AccessPoint.2."}
{}
{"amxd-error-code":0}
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.2 _set '{\"parameters\":{\"Band2_4G\":1,\"Band5GH\":1,\"Band5GL\":1,\"Band6G\":1}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.2.":{"Band5GH":true,"Band6G":true,"Band5GL":true,"Band2_4G":true}}
{}
{"amxd-error-code":0}
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.2 _set '{\"parameters\":{\"MultiApMode\":\"Fronthaul\"}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.2.":{"MultiApMode":"Fronthaul"}}
{}
{"amxd-error-code":0}
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.2.Security _set '{\"parameters\":{\"ModeEnabled\":\"WPA2-Personal\",\"KeyPassphrase\":\"passwordGUEST\"}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.2.Security.":{"KeyPassphrase":"passwordGUEST","ModeEnabled":"WPA2-Personal"}}
{}
{"amxd-error-code":0}
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.2 _set '{\"parameters\":{\"SSID\":\"prplOSguest\"}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.2.":{"SSID":"prplOSguest"}}
{}
{"amxd-error-code":0}
In case the controller does not yet have this parameter, catch error here isof later during teardown test:
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.2 _set '{\"parameters\":{\"Enable\":1}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.2.":{"Enable":true}}
{}
{"amxd-error-code":0}
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network AccessPointCommit"
{"retval":""}
{}
{"amxd-error-code":0}
$ sleep 15
Check that wireless is operating:
$ get_ssid_status
Up
Up
Up
Up
Up
Up
$ get_ssid_ssid
prplOSguest
prplOSguest
prplOSguest
prplOSpriv
prplOSpriv
prplOSpriv
$ sleep 10
Check that prplmesh processes are running:
$ R logger -t cram "Check that prplmesh processes are running"
$ R "ps axw" | sed -nE 's/.*(\/opt\/prplmesh\/bin.*)/\1/p' | LC_ALL=C sort
/opt/prplmesh/bin/beerocks_agent
/opt/prplmesh/bin/beerocks_controller
/opt/prplmesh/bin/beerocks_fronthaul -i wlan0
/opt/prplmesh/bin/beerocks_fronthaul -i wlan2
/opt/prplmesh/bin/beerocks_fronthaul -i wlan4
/opt/prplmesh/bin/ieee1905_transport
Check that prplmesh is operational:
$ R logger -t cram "Check that prplmesh is operational"
$ R "/opt/prplmesh/scripts/prplmesh_utils.sh status" | LC_ALL=C sort
\x1b[0m (esc)
\x1b[0m\x1b[1;32mOK Main radio agent operational (esc)
\x1b[1;32moperational test success! (esc)
/opt/prplmesh/scripts/prplmesh_utils.sh: status
[0-9]+ beerocks_contro (re)
[0-9]+ beerocks_agent (re)
[0-9]+ beerocks_fronth (re)
[0-9]+ beerocks_fronth (re)
[0-9]+ beerocks_fronth (re)
OK wlan0 radio agent operational
OK wlan2 radio agent operational
OK wlan4 radio agent operational
executing operational test using bml
Check that controller received correct info about wifi subsystem:
$ R logger -t cram "Check controller info about network"
$ R "/opt/prplmesh/bin/beerocks_cli -c bml_conn_map" | egrep '(wlan|OK)' | sed -E "s/.*: (wlan[0-9.]+) .*/\1/" | LC_ALL=C sort
bml_connect: return value is: BML_RET_OK, Success status
bml_disconnect: return value is: BML_RET_OK, Success status
bml_nw_map_query: return value is: BML_RET_OK, Success status
wlan0
wlan0.0
wlan0.1
wlan2
wlan2.0
wlan2.1
wlan4
wlan4.0
wlan4.1
To disable wireless, disable instances of Network.AccessPoint{i} and call AccessPointCommit():
$ R logger -t cram "Stop wireless"
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.1 _set '{\"parameters\":{\"Enable\":0}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.1.":{"Enable":false}}
{}
{"amxd-error-code":0}
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network.AccessPoint.2 _set '{\"parameters\":{\"Enable\":0}}'"
{"X_PRPL-ORG_WiFiController.Network.AccessPoint.2.":{"Enable":false}}
{}
{"amxd-error-code":0}
$ R "ubus -S call X_PRPL-ORG_WiFiController.Network AccessPointCommit"
{"retval":""}
{}
{"amxd-error-code":0}
$ sleep 10
Check that wireless is disabled:
$ get_ssid_status
Down
Down
Down
Down
Down
Down
Check that SSIDs did not change:
$ get_ssid_ssid
prplOSguest
prplOSguest
prplOSguest
prplOSpriv
prplOSpriv
prplOSpriv