ci: cram: warm apply: pwhm.t: apmld.t: update test cases (C2/C3)
100-pwhm.t: ----------- Add hostapd socket checks after each interface state change; other C2 requirements are implicitly covered by the apmld test. Replace ba-cli get/set calls with the new wifi_dm helper and use it for synchronous enable/disable operations, reducing test duration from ~4m40s to ~1m30s (PPW-1301 #2, #3). Verify the full interface name when reading status (PPW-1301 #4). wifi-apmld.t: ------------- ci: cram: warm apply: add main link interface removal new checks Add hostapd restart check during the execution of the test Add the check of wpactrl sockets after each operation References: FEAT-125 Closes: PPM-3689 Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
This commit is contained in:
parent
1e84bb5c50
commit
8f3423b8ba
@ -348,8 +348,9 @@ get_interface_name() {
|
||||
# In : wlan interface
|
||||
# Out : link number
|
||||
get_link_info() {
|
||||
local itf=$1
|
||||
R logger -t cram "get_link_info: interface ${1}"
|
||||
R "iw dev ${1} info" | grep -e addr -e channe | sed 's/^[ \t]*//' | sort | uniq
|
||||
R "iw dev ${itf} info" | grep -e addr -e channe -e link | sed 's/^[ \t]*//' | sed 's/:*$//' | sort | uniq
|
||||
}
|
||||
|
||||
# print main link interface name from MAC address
|
||||
|
||||
@ -86,6 +86,11 @@ Check AccessPoints status:
|
||||
WiFi.AccessPoint.8.Status="Enabled"
|
||||
WiFi.AccessPoint.9.Status="Enabled"
|
||||
|
||||
Save hostap pid:
|
||||
|
||||
$ hostap_pid=$(R pgrep -f 'hostapd')
|
||||
$ R logger -t cram "hostap PID : $hostap_pid"
|
||||
|
||||
Read private and guest MLDUnit:
|
||||
|
||||
$ private_mldunit=$(get_private_mldunit)
|
||||
@ -101,6 +106,9 @@ Check private APMLD number of links:
|
||||
channel 1 .* (re)
|
||||
channel 36 .* (re)
|
||||
channel 37 .* (re)
|
||||
link 0
|
||||
link 1
|
||||
link 2
|
||||
|
||||
Check APMLD 2 number (guest vaps) of links:
|
||||
|
||||
@ -111,6 +119,9 @@ Check APMLD 2 number (guest vaps) of links:
|
||||
channel 1 .* (re)
|
||||
channel 36 .* (re)
|
||||
channel 37 .* (re)
|
||||
link 0
|
||||
link 1
|
||||
link 2
|
||||
|
||||
Read all link IDs (3 links per MLD):
|
||||
(LinkID values do not matter, uniqueness will be checked implicitly later)
|
||||
@ -176,6 +187,26 @@ Cross check Affilated MACs addresses (guest):
|
||||
link \d+ addr ([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2} (re)
|
||||
link \d+ addr ([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2} (re)
|
||||
|
||||
Check wpacltrl socket file: default status
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.1_link2
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
wlan2.2_link2
|
||||
wlan2.3
|
||||
wlan2.3_link0
|
||||
wlan2.3_link1
|
||||
wlan2.3_link2
|
||||
|
||||
#########################################
|
||||
# Unset MLDUnit of one priv SSID #
|
||||
#########################################
|
||||
|
||||
Remove AP1 (private) from its APMLD:
|
||||
|
||||
$ R logger -t cram "Remove AP1 from its APMLD"
|
||||
@ -191,6 +222,8 @@ Check private APMLD number of links:
|
||||
addr ([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2} (re)
|
||||
channel 36 .* (re)
|
||||
channel 37 .* (re)
|
||||
link 0
|
||||
link 1
|
||||
|
||||
Read AffiliatedAP MAC addresses:
|
||||
|
||||
@ -204,6 +237,28 @@ Check link id of private MLD:
|
||||
WiFi.APMLD.1.AffiliatedAP.1.LinkID=0
|
||||
WiFi.APMLD.1.AffiliatedAP.2.LinkID=1
|
||||
|
||||
Check wpacltrl socket file: update of main link interface
|
||||
AP1 (wlan2.1) was the primary link, private MLD should have now another main
|
||||
link interface with 2 links and AP1 interface should appear with no link (ie MLDUnit=-1)
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan1.1
|
||||
wlan1.1_link0
|
||||
wlan1.1_link1
|
||||
wlan2.1
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
wlan2.2_link2
|
||||
wlan2.3
|
||||
wlan2.3_link0
|
||||
wlan2.3_link1
|
||||
wlan2.3_link2
|
||||
|
||||
#########################################
|
||||
# Restore MLDUnit #
|
||||
#########################################
|
||||
|
||||
Move back AP1 to its previous APMLD:
|
||||
|
||||
$ R logger -t cram "Move back AP1 to its previous APMLD"
|
||||
@ -221,6 +276,31 @@ Check private APMLD number of links:
|
||||
channel 1 .* (re)
|
||||
channel 36 .* (re)
|
||||
channel 37 .* (re)
|
||||
link 0
|
||||
link 1
|
||||
link 2
|
||||
|
||||
Check wpacltrl socket file: AP1 (wlan2.1) turns back to previous MLD,
|
||||
main link interface (wlan1.1) shouldn't change. private MLD should
|
||||
have again 3 links
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan1.1
|
||||
wlan1.1_link0
|
||||
wlan1.1_link1
|
||||
wlan1.1_link2
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
wlan2.2_link2
|
||||
wlan2.3
|
||||
wlan2.3_link0
|
||||
wlan2.3_link1
|
||||
wlan2.3_link2
|
||||
|
||||
#########################################
|
||||
# Set a distinct MLDUnit #
|
||||
#########################################
|
||||
|
||||
Move AP1 to a new APMLD:
|
||||
|
||||
@ -237,12 +317,15 @@ Check private APMLD number of links:
|
||||
addr ([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2} (re)
|
||||
channel 36 .* (re)
|
||||
channel 37 .* (re)
|
||||
link 0
|
||||
link 1
|
||||
|
||||
Check the new APMLD 3 number of links:
|
||||
|
||||
$ iw_affliated_link_info_from_mldid ${test_mldunit}
|
||||
addr ([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2} (re)
|
||||
channel 1 .* (re)
|
||||
link 0
|
||||
|
||||
Read AffiliatedAP MAC addresses:
|
||||
|
||||
@ -253,7 +336,29 @@ Read AffiliatedAP MAC addresses:
|
||||
$ iw_affilated_mac_list_from_mldid ${test_mldunit}
|
||||
link \d+ addr ([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2} (re)
|
||||
|
||||
Move back AP1 to its APMLD
|
||||
Check wpacltrl socket file: AP1 interface (wlan2.1) should appear as
|
||||
main link interface with one link
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan1.1
|
||||
wlan1.1_link0
|
||||
wlan1.1_link1
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
wlan2.2_link2
|
||||
wlan2.3
|
||||
wlan2.3_link0
|
||||
wlan2.3_link1
|
||||
wlan2.3_link2
|
||||
|
||||
#########################################
|
||||
# Restore MLDUnit #
|
||||
#########################################
|
||||
|
||||
Move back AP1 to its APMLD:
|
||||
|
||||
$ R logger -t cram "Move back AP1 to its previous APMLD"
|
||||
$ wifi_dm "AccessPoint.1.SSIDReference+.MLDUnit=${private_mldunit}"
|
||||
@ -270,12 +375,19 @@ Check private APMLD number of links:
|
||||
channel 1 .* (re)
|
||||
channel 36 .* (re)
|
||||
channel 37 .* (re)
|
||||
link 0
|
||||
link 1
|
||||
link 2
|
||||
|
||||
Check if new APMLD was cleared:
|
||||
|
||||
$ get_apmld_mac_from_dm ${test_mldunit}
|
||||
not_found
|
||||
|
||||
#########################################
|
||||
# Test Guest MLD deactivation #
|
||||
#########################################
|
||||
|
||||
Disable guest vaps:
|
||||
|
||||
$ R logger -t cram "Disable guest vaps"
|
||||
@ -302,7 +414,17 @@ Check if guest apmld is cleared:
|
||||
WiFi.APMLD.2.MLDID=1
|
||||
WiFi.APMLD.2.MLDMACAddress=""
|
||||
|
||||
Disable all AP:
|
||||
|
||||
#########################################
|
||||
# Terminate test #
|
||||
#########################################
|
||||
|
||||
Before deactivating all vaps, check if hostap pid has changed or not:
|
||||
|
||||
$ if [ "$(R pgrep -f 'hostapd')" = "$hostap_pid" ]; then echo "true"; else echo "hostap restarted during the test !"; fi
|
||||
true
|
||||
|
||||
Disable all vaps:
|
||||
|
||||
$ R logger -t cram "Disable all vaps"
|
||||
$ wifi_dm "AccessPoint.*.Enable=0"
|
||||
|
||||
@ -9,49 +9,47 @@ Wait for Device.WiFi. datamodel availability:
|
||||
|
||||
$ R "amx_wait_for "Device.WiFi." "
|
||||
|
||||
$ sleep 10
|
||||
|
||||
Stop prplMesh:
|
||||
|
||||
$ R "/etc/init.d/prplmesh stop 2>&1 > /dev/null"
|
||||
$ R "/etc/init.d/prplmesh stop > /dev/null 2>&1"
|
||||
|
||||
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}}]
|
||||
$ wifi_dm "Radio.*.AutoChannelEnable=0"
|
||||
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
|
||||
$ wifi_dm "Radio.2.Channel=36"
|
||||
WiFi.Radio.2.Channel=36 (re)
|
||||
|
||||
Check default SSID status:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
$ get_ap_status
|
||||
WiFi.AccessPoint.1.Status="Disabled"
|
||||
WiFi.AccessPoint.2.Status="Disabled"
|
||||
WiFi.AccessPoint.3.Status="Disabled"
|
||||
WiFi.AccessPoint.4.Status="Disabled"
|
||||
WiFi.AccessPoint.5.Status="Disabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
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
|
||||
backhaul_(AC:91:9B|58:E4:03):[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2} (re)
|
||||
backhaul_(AC:91:9B|58:E4:03):[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2} (re)
|
||||
backhaul_(AC:91:9B|58:E4:03):[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2} (re)
|
||||
prplOS
|
||||
prplOS
|
||||
prplOS
|
||||
prplOS-guest
|
||||
prplOS-guest
|
||||
prplOS-guest
|
||||
$ get_ap_ssid
|
||||
AccessPoint.1.SSID="prplOS"
|
||||
AccessPoint.2.SSID="prplOS-guest"
|
||||
AccessPoint.3.SSID="prplOS"
|
||||
AccessPoint.4.SSID="prplOS-guest"
|
||||
AccessPoint.5.SSID="prplOS"
|
||||
AccessPoint.6.SSID="prplOS-guest"
|
||||
AccessPoint.7.SSID="backhaul_(AC:91:9B|58:E4:03):[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}" (re)
|
||||
AccessPoint.8.SSID="backhaul_(AC:91:9B|58:E4:03):[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}" (re)
|
||||
AccessPoint.9.SSID="backhaul_(AC:91:9B|58:E4:03):[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}" (re)
|
||||
|
||||
Check that no hostapd instance is running:
|
||||
|
||||
@ -62,24 +60,28 @@ 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
|
||||
$ enable_ap_sync 1 1
|
||||
AccessPoint.\d+.Enable=1 (re)
|
||||
|
||||
$ check_ap_ref_ssid 1 Up
|
||||
WiFi.AccessPoint.1 SSID Reference is Up
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Disabled"
|
||||
WiFi.AccessPoint.3.Status="Disabled"
|
||||
WiFi.AccessPoint.4.Status="Disabled"
|
||||
WiFi.AccessPoint.5.Status="Disabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
$ ls_ap_hapd_socket 1
|
||||
/var/run/hostapd/wlan[0-9.]+_link[0-9].* (re)
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
|
||||
Save hostap pid:
|
||||
|
||||
@ -90,185 +92,267 @@ 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
|
||||
$ enable_ap_sync 2 1
|
||||
AccessPoint.2.Enable=1
|
||||
|
||||
$ check_ap_ref_ssid 2 Up
|
||||
WiFi.AccessPoint.2 SSID Reference is Up
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Disabled"
|
||||
WiFi.AccessPoint.4.Status="Disabled"
|
||||
WiFi.AccessPoint.5.Status="Disabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 2
|
||||
/var/run/hostapd/wlan[0-9.]+_link[0-9] (re)
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
|
||||
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
|
||||
$ enable_ap_sync 3 1
|
||||
AccessPoint.3.Enable=1
|
||||
|
||||
$ check_ap_ref_ssid 3 Up
|
||||
WiFi.AccessPoint.3 SSID Reference is Up
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Disabled"
|
||||
WiFi.AccessPoint.5.Status="Disabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 3
|
||||
/var/run/hostapd/wlan[0-9.]+_link[0-9] (re)
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
|
||||
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
|
||||
$ enable_ap_sync 4 1
|
||||
AccessPoint.4.Enable=1
|
||||
|
||||
$ check_ap_ref_ssid 4 Up
|
||||
WiFi.AccessPoint.4 SSID Reference is Up
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Enabled"
|
||||
WiFi.AccessPoint.5.Status="Disabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 4
|
||||
/var/run/hostapd/wlan[0-9.]+_link[0-9] (re)
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
|
||||
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
|
||||
$ enable_ap_sync 5 1
|
||||
AccessPoint.5.Enable=1
|
||||
|
||||
$ check_ap_ref_ssid 5 Up
|
||||
WiFi.AccessPoint.5 SSID Reference is Up
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Enabled"
|
||||
WiFi.AccessPoint.5.Status="Enabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 5
|
||||
/var/run/hostapd/wlan[0-9.]+_link[0-9] (re)
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.1_link2
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
|
||||
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
|
||||
$ enable_ap_sync 6 1
|
||||
AccessPoint.6.Enable=1
|
||||
|
||||
$ check_ap_ref_ssid 6 Up
|
||||
WiFi.AccessPoint.6 SSID Reference is Up
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Enabled"
|
||||
WiFi.AccessPoint.5.Status="Enabled"
|
||||
WiFi.AccessPoint.6.Status="Enabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 6
|
||||
/var/run/hostapd/wlan[0-9.]+_link[0-9] (re)
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.1_link2
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
wlan2.2_link2
|
||||
|
||||
Test activation of access point 7:
|
||||
|
||||
$ R logger -t cram "Test AccessPoint 7 activation "$(get_ssid_ref 7)""
|
||||
|
||||
$ enable_ap 7
|
||||
WiFi.AccessPoint.7 enabled
|
||||
$ enable_ap_sync 7 1
|
||||
AccessPoint.7.Enable=1
|
||||
|
||||
$ check_ap_ref_ssid 7 Up
|
||||
WiFi.AccessPoint.7 SSID Reference is Up
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Enabled"
|
||||
WiFi.AccessPoint.5.Status="Enabled"
|
||||
WiFi.AccessPoint.6.Status="Enabled"
|
||||
WiFi.AccessPoint.7.Status="Enabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ ls_ap_hapd_socket 7
|
||||
/var/run/hostapd/wlan[0-9.]+_link[0-9] (re)
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.1_link2
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
wlan2.2_link2
|
||||
wlan2.3
|
||||
wlan2.3_link0
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
|
||||
Test activation of access point 8:
|
||||
|
||||
$ R logger -t cram "Test AccessPoint 8 activation "$(get_ssid_ref 8)""
|
||||
|
||||
$ enable_ap 8
|
||||
WiFi.AccessPoint.8 enabled
|
||||
$ enable_ap_sync 8 1
|
||||
AccessPoint.8.Enable=1
|
||||
|
||||
$ check_ap_ref_ssid 8 Up
|
||||
WiFi.AccessPoint.8 SSID Reference is Up
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Enabled"
|
||||
WiFi.AccessPoint.5.Status="Enabled"
|
||||
WiFi.AccessPoint.6.Status="Enabled"
|
||||
WiFi.AccessPoint.7.Status="Enabled"
|
||||
WiFi.AccessPoint.8.Status="Enabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 8
|
||||
/var/run/hostapd/wlan[0-9.]+_link[0-9] (re)
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.1_link2
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
wlan2.2_link2
|
||||
wlan2.3
|
||||
wlan2.3_link0
|
||||
wlan2.3_link1
|
||||
|
||||
Test activation of access point 9:
|
||||
|
||||
$ R logger -t cram "Test AccessPoint 9 activation "$(get_ssid_ref 9)""
|
||||
|
||||
$ enable_ap 9
|
||||
WiFi.AccessPoint.9 enabled
|
||||
$ enable_ap_sync 9 1
|
||||
AccessPoint.9.Enable=1
|
||||
|
||||
$ check_ap_ref_ssid 9 Up
|
||||
WiFi.AccessPoint.9 SSID Reference is Up
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Enabled"
|
||||
WiFi.AccessPoint.5.Status="Enabled"
|
||||
WiFi.AccessPoint.6.Status="Enabled"
|
||||
WiFi.AccessPoint.7.Status="Enabled"
|
||||
WiFi.AccessPoint.8.Status="Enabled"
|
||||
WiFi.AccessPoint.9.Status="Enabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 9
|
||||
/var/run/hostapd/wlan[0-9.]+_link[0-9] (re)
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.1_link2
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
wlan2.2_link2
|
||||
wlan2.3
|
||||
wlan2.3_link0
|
||||
wlan2.3_link1
|
||||
wlan2.3_link2
|
||||
|
||||
$ sleep 5
|
||||
|
||||
Check that hostapd is operating as expected:
|
||||
|
||||
@ -329,187 +413,250 @@ Check that the tree interfaces are present in the main link interface:
|
||||
|
||||
Test deactivation of access point 9:
|
||||
|
||||
$ R logger -t cram "Test AccessPoint 9 deactivation "$(get_ssid_ref 9)""
|
||||
$ enable_ap_sync 9 0
|
||||
AccessPoint.9.Enable=0
|
||||
|
||||
$ disable_ap 9
|
||||
WiFi.AccessPoint.9 disabled
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Enabled"
|
||||
WiFi.AccessPoint.5.Status="Enabled"
|
||||
WiFi.AccessPoint.6.Status="Enabled"
|
||||
WiFi.AccessPoint.7.Status="Enabled"
|
||||
WiFi.AccessPoint.8.Status="Enabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ check_ap_ref_ssid 9 Down
|
||||
WiFi.AccessPoint.9 SSID Reference is Down
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ sleep 10
|
||||
$ ls_ap_hapd_socket 9
|
||||
not found
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.1_link2
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
wlan2.2_link2
|
||||
wlan2.3
|
||||
wlan2.3_link0
|
||||
wlan2.3_link1
|
||||
|
||||
Test deactivation of access point 8:
|
||||
|
||||
$ R logger -t cram "Test AccessPoint 8 deactivation "$(get_ssid_ref 8)""
|
||||
|
||||
$ disable_ap 8
|
||||
WiFi.AccessPoint.8 disabled
|
||||
$ enable_ap_sync 8 0
|
||||
AccessPoint.8.Enable=0
|
||||
|
||||
$ check_ap_ref_ssid 8 Down
|
||||
WiFi.AccessPoint.8 SSID Reference is Down
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Enabled"
|
||||
WiFi.AccessPoint.5.Status="Enabled"
|
||||
WiFi.AccessPoint.6.Status="Enabled"
|
||||
WiFi.AccessPoint.7.Status="Enabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 8
|
||||
not found
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.1_link2
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
wlan2.2_link2
|
||||
wlan2.3
|
||||
wlan2.3_link0
|
||||
|
||||
Test deactivation of access point 7:
|
||||
|
||||
$ R logger -t cram "Test AccessPoint 7 deactivation "$(get_ssid_ref 7)""
|
||||
|
||||
$ disable_ap 7
|
||||
WiFi.AccessPoint.7 disabled
|
||||
$ enable_ap_sync 7 0
|
||||
AccessPoint.7.Enable=0
|
||||
|
||||
$ check_ap_ref_ssid 7 Down
|
||||
WiFi.AccessPoint.7 SSID Reference is Down
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Enabled"
|
||||
WiFi.AccessPoint.5.Status="Enabled"
|
||||
WiFi.AccessPoint.6.Status="Enabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 7
|
||||
not found
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.1_link2
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
wlan2.2_link2
|
||||
|
||||
Test deactivation of access point 6:
|
||||
|
||||
$ R logger -t cram "Test AccessPoint 6 deactivation "$(get_ssid_ref 6)""
|
||||
$ enable_ap_sync 6 0
|
||||
AccessPoint.6.Enable=0
|
||||
|
||||
$ disable_ap 6
|
||||
WiFi.AccessPoint.6 disabled
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Enabled"
|
||||
WiFi.AccessPoint.5.Status="Enabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ check_ap_ref_ssid 6 Down
|
||||
WiFi.AccessPoint.6 SSID Reference is Down
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ sleep 10
|
||||
$ ls_ap_hapd_socket 6
|
||||
not found
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.1_link2
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
|
||||
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
|
||||
$ enable_ap_sync 5 0
|
||||
AccessPoint.5.Enable=0
|
||||
|
||||
$ check_ap_ref_ssid 5 Down
|
||||
WiFi.AccessPoint.5 SSID Reference is Down
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Enabled"
|
||||
WiFi.AccessPoint.5.Status="Disabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 5
|
||||
not found
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
wlan2.2_link1
|
||||
|
||||
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
|
||||
$ enable_ap_sync 4 0
|
||||
AccessPoint.4.Enable=0
|
||||
|
||||
$ check_ap_ref_ssid 4 Down
|
||||
WiFi.AccessPoint.4 SSID Reference is Down
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Enabled"
|
||||
WiFi.AccessPoint.4.Status="Disabled"
|
||||
WiFi.AccessPoint.5.Status="Disabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 4
|
||||
not found
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.1_link1
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
|
||||
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
|
||||
$ enable_ap_sync 3 0
|
||||
AccessPoint.3.Enable=0
|
||||
|
||||
$ check_ap_ref_ssid 3 Down
|
||||
WiFi.AccessPoint.3 SSID Reference is Down
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Enabled"
|
||||
WiFi.AccessPoint.3.Status="Disabled"
|
||||
WiFi.AccessPoint.4.Status="Disabled"
|
||||
WiFi.AccessPoint.5.Status="Disabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 10
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
Up
|
||||
$ ls_ap_hapd_socket 3
|
||||
not found
|
||||
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
wlan2.2
|
||||
wlan2.2_link0
|
||||
|
||||
Test deactivation of access point 2:
|
||||
|
||||
$ R logger -t cram "Test AccessPoint 2 deactivation "$(get_ssid_ref 2)""
|
||||
$ enable_ap_sync 2 0
|
||||
AccessPoint.2.Enable=0
|
||||
|
||||
$ disable_ap 2
|
||||
WiFi.AccessPoint.2 disabled
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Enabled"
|
||||
WiFi.AccessPoint.2.Status="Disabled"
|
||||
WiFi.AccessPoint.3.Status="Disabled"
|
||||
WiFi.AccessPoint.4.Status="Disabled"
|
||||
WiFi.AccessPoint.5.Status="Disabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ check_ap_ref_ssid 2 Down
|
||||
WiFi.AccessPoint.2 SSID Reference is Down
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ sleep 10
|
||||
$ ls_ap_hapd_socket 2
|
||||
not found
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Up
|
||||
$ ls_hapd_sockets
|
||||
wlan2.1
|
||||
wlan2.1_link0
|
||||
|
||||
Before deactivating last AP (ie stopping hostpad), check if hostap pid has changed or not:
|
||||
|
||||
@ -520,24 +667,27 @@ 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
|
||||
$ enable_ap_sync 1 0
|
||||
AccessPoint.1.Enable=0
|
||||
|
||||
$ check_ap_ref_ssid 1 Down
|
||||
WiFi.AccessPoint.1 SSID Reference is Down
|
||||
$ wifi_dm "AccessPoint.*.Status?0"
|
||||
WiFi.AccessPoint.1.Status="Disabled"
|
||||
WiFi.AccessPoint.2.Status="Disabled"
|
||||
WiFi.AccessPoint.3.Status="Disabled"
|
||||
WiFi.AccessPoint.4.Status="Disabled"
|
||||
WiFi.AccessPoint.5.Status="Disabled"
|
||||
WiFi.AccessPoint.6.Status="Disabled"
|
||||
WiFi.AccessPoint.7.Status="Disabled"
|
||||
WiFi.AccessPoint.8.Status="Disabled"
|
||||
WiFi.AccessPoint.9.Status="Disabled"
|
||||
|
||||
$ sleep 5
|
||||
Check wpacltrl socket file:
|
||||
|
||||
$ get_ssid_status
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
Down
|
||||
$ ls_ap_hapd_socket 1
|
||||
not found
|
||||
|
||||
$ ls_hapd_sockets
|
||||
ls: /var/run/hostapd/: No such file or directory
|
||||
|
||||
Check if hostapd process is stopped:
|
||||
|
||||
@ -552,7 +702,7 @@ Resume prplMesh:
|
||||
|
||||
Wait 20s before leaving the test:
|
||||
|
||||
$ sleep 20
|
||||
$ sleep 5
|
||||
|
||||
$ R logger -t cram "Test finished!"
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user