mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-19 16:40:46 -09:00
support/testing: wpa_supplicant: new runtime test
Signed-off-by: Julien Olivain <ju.o@free.fr>
(cherry picked from commit 6eaa34ecdf)
Signed-off-by: Raphaël Mélotte <raphael.melotte@mind.be>
This commit is contained in:
committed by
Raphaël Mélotte
parent
91a64de253
commit
dd26121981
@@ -2045,6 +2045,8 @@ F: support/testing/tests/package/test_weston/
|
|||||||
F: support/testing/tests/package/test_wget.py
|
F: support/testing/tests/package/test_wget.py
|
||||||
F: support/testing/tests/package/test_which.py
|
F: support/testing/tests/package/test_which.py
|
||||||
F: support/testing/tests/package/test_wine.py
|
F: support/testing/tests/package/test_wine.py
|
||||||
|
F: support/testing/tests/package/test_wpa_supplicant.py
|
||||||
|
F: support/testing/tests/package/test_wpa_supplicant/
|
||||||
F: support/testing/tests/package/test_xfsprogs.py
|
F: support/testing/tests/package/test_xfsprogs.py
|
||||||
F: support/testing/tests/package/test_xfsprogs/
|
F: support/testing/tests/package/test_xfsprogs/
|
||||||
F: support/testing/tests/package/test_xvisor.py
|
F: support/testing/tests/package/test_xvisor.py
|
||||||
|
|||||||
121
support/testing/tests/package/test_wpa_supplicant.py
Normal file
121
support/testing/tests/package/test_wpa_supplicant.py
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
import os
|
||||||
|
import time
|
||||||
|
|
||||||
|
import infra.basetest
|
||||||
|
|
||||||
|
|
||||||
|
class TestWPASupplicant(infra.basetest.BRTest):
|
||||||
|
test_dir = "tests/package/test_wpa_supplicant"
|
||||||
|
# This test uses the mac80211_hwsim kernel test driver. See:
|
||||||
|
# https://docs.kernel.org/networking/mac80211_hwsim/mac80211_hwsim.html
|
||||||
|
kern_frag = \
|
||||||
|
infra.filepath(f"{test_dir}/linux-mac80211-hwsim.fragment")
|
||||||
|
rootfs_overlay = \
|
||||||
|
infra.filepath(f"{test_dir}/rootfs-overlay")
|
||||||
|
config = \
|
||||||
|
f"""
|
||||||
|
BR2_aarch64=y
|
||||||
|
BR2_TOOLCHAIN_EXTERNAL=y
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.44"
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
|
||||||
|
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{kern_frag}"
|
||||||
|
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
||||||
|
BR2_PACKAGE_HOSTAPD=y
|
||||||
|
BR2_PACKAGE_IPROUTE2=y
|
||||||
|
BR2_PACKAGE_IW=y
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT=y
|
||||||
|
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
|
||||||
|
BR2_ROOTFS_OVERLAY="{rootfs_overlay}"
|
||||||
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
|
BR2_TARGET_ROOTFS_EXT2_4=y
|
||||||
|
BR2_TARGET_ROOTFS_EXT2_SIZE="256M"
|
||||||
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
"""
|
||||||
|
|
||||||
|
def test_run(self):
|
||||||
|
disk = os.path.join(self.builddir, "images", "rootfs.ext4")
|
||||||
|
kern = os.path.join(self.builddir, "images", "Image")
|
||||||
|
bootargs = ["root=/dev/vda"]
|
||||||
|
qemu_opts = ["-M", "virt", "-cpu", "cortex-a57", "-m", "512M",
|
||||||
|
"-drive", f"file={disk},if=virtio,format=raw"]
|
||||||
|
self.emulator.boot(arch="aarch64",
|
||||||
|
kernel=kern,
|
||||||
|
kernel_cmdline=bootargs,
|
||||||
|
options=qemu_opts)
|
||||||
|
self.emulator.login()
|
||||||
|
|
||||||
|
# We check the program can run.
|
||||||
|
self.assertRunOk("wpa_supplicant -v")
|
||||||
|
|
||||||
|
# We define a network namespace to isolate our
|
||||||
|
# access point components.
|
||||||
|
ns = "ap-ns"
|
||||||
|
|
||||||
|
# We create the network namespace.
|
||||||
|
self.assertRunOk(f"ip netns add {ns}")
|
||||||
|
|
||||||
|
# We isolate our wireless network device in our namespace.
|
||||||
|
self.assertRunOk(f"iw phy phy0 set netns name {ns}")
|
||||||
|
|
||||||
|
# We define the command prefix to execute commands inside
|
||||||
|
# our network namespace.
|
||||||
|
ns_exec = f"ip netns exec {ns}"
|
||||||
|
|
||||||
|
# We start the hostapd daemon.
|
||||||
|
cmd = [
|
||||||
|
ns_exec,
|
||||||
|
"hostapd",
|
||||||
|
"-B",
|
||||||
|
"-f /var/log/hostapd.log",
|
||||||
|
"/etc/hostapd.conf"
|
||||||
|
]
|
||||||
|
self.assertRunOk(" ".join(cmd))
|
||||||
|
|
||||||
|
# We wait for the wlan0 interface to come up.
|
||||||
|
for attempt in range(10):
|
||||||
|
time.sleep(3)
|
||||||
|
|
||||||
|
cmd = ns_exec
|
||||||
|
cmd += " cat /sys/class/net/wlan0/operstate"
|
||||||
|
out, ret = self.emulator.run(cmd)
|
||||||
|
self.assertEqual(ret, 0)
|
||||||
|
if out[0] == "up":
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
self.fail("Timeout while waiting for wlan0 to be up.")
|
||||||
|
|
||||||
|
# We start the wpa_supplicant client process.
|
||||||
|
cmd = [
|
||||||
|
"wpa_supplicant",
|
||||||
|
"-B",
|
||||||
|
"-f /var/log/wpa_supplicant.log",
|
||||||
|
"-i wlan1",
|
||||||
|
"-c /etc/wpa_supplicant.conf"
|
||||||
|
]
|
||||||
|
self.assertRunOk(" ".join(cmd))
|
||||||
|
|
||||||
|
# We wait for the wlan1 interface to come up.
|
||||||
|
for attempt in range(10):
|
||||||
|
time.sleep(3)
|
||||||
|
|
||||||
|
cmd = "cat /sys/class/net/wlan1/operstate"
|
||||||
|
out, ret = self.emulator.run(cmd)
|
||||||
|
self.assertEqual(ret, 0)
|
||||||
|
if out[0] == "up":
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
self.fail("Timeout while waiting for wlan1 to be up.")
|
||||||
|
|
||||||
|
# We set an IP address on the wlan0 hostapd side.
|
||||||
|
cmd = ns_exec
|
||||||
|
cmd += " ip addr add dev wlan0 192.168.1.111/24"
|
||||||
|
self.assertRunOk(cmd)
|
||||||
|
|
||||||
|
# We set an IP address on the wlan1 wpa_supplicant side.
|
||||||
|
self.assertRunOk("ip addr add dev wlan1 192.168.1.222/24")
|
||||||
|
|
||||||
|
# We check we can ping the hostapd wlan0 IP address.
|
||||||
|
self.assertRunOk("ping -c 3 -i 0.2 -W 2 192.168.1.111")
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
CONFIG_CFG80211=y
|
||||||
|
CONFIG_MAC80211=y
|
||||||
|
CONFIG_MAC80211_HWSIM=y
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Config example taken from kernel
|
||||||
|
# Documentation/networking/mac80211_hwsim/hostapd.conf
|
||||||
|
|
||||||
|
interface=wlan0
|
||||||
|
driver=nl80211
|
||||||
|
|
||||||
|
hw_mode=g
|
||||||
|
channel=1
|
||||||
|
ssid=mac80211 test
|
||||||
|
|
||||||
|
wpa=2
|
||||||
|
wpa_key_mgmt=WPA-PSK
|
||||||
|
wpa_pairwise=CCMP
|
||||||
|
wpa_passphrase=12345678
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# Config example taken from kernel
|
||||||
|
# Documentation/networking/mac80211_hwsim/wpa_supplicant.conf
|
||||||
|
|
||||||
|
ctrl_interface=/var/run/wpa_supplicant
|
||||||
|
|
||||||
|
network={
|
||||||
|
ssid="mac80211 test"
|
||||||
|
psk="12345678"
|
||||||
|
key_mgmt=WPA-PSK
|
||||||
|
proto=WPA2
|
||||||
|
pairwise=CCMP
|
||||||
|
group=CCMP
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user