[RFC v1 3/3] tests: add remote_test.py script

Janusz Dziedzic janusz.dziedzic at tieto.com
Wed Jan 27 04:59:11 PST 2016


This is demo how we can use wpaspy/WpaSupplicant/Hostapd
with remote clients (UDP CTRL path).
I just copy/paste three hwsim test cases here and tested
this with my two ATH9K cards.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
---
 tests/hwsim/remote_test.py | 98 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 98 insertions(+)
 create mode 100755 tests/hwsim/remote_test.py

diff --git a/tests/hwsim/remote_test.py b/tests/hwsim/remote_test.py
new file mode 100755
index 0000000..b657364
--- /dev/null
+++ b/tests/hwsim/remote_test.py
@@ -0,0 +1,98 @@
+#!/usr/bin/python
+#
+# This software may be distributed under the terms of the BSD license.
+# See README for more details.
+
+import os
+import sys
+import time
+
+scriptsdir = os.path.dirname(os.path.realpath(sys.modules[__name__].__file__))
+sys.path.append(os.path.join(scriptsdir, '..', '..', 'wpaspy'))
+
+from wpasupplicant import WpaSupplicant
+from hostapd import HostapdGlobal
+import hostapd
+from wpaspy import Host
+
+def _test_ap_open(dev, apdev):
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" }, hostname=apdev[0]['hostname'])
+    dev[0].connect("open", key_mgmt="NONE", scan_freq="2412",
+                   bg_scan_period="0")
+    ev = hapd.wait_event([ "AP-STA-CONNECTED" ], timeout=5)
+    if ev is None:
+        raise Exception("No connection event received from hostapd")
+
+    dev[0].request("DISCONNECT")
+    ev = hapd.wait_event([ "AP-STA-DISCONNECTED" ], timeout=5)
+    if ev is None:
+        raise Exception("No disconnection event received from hostapd")
+
+def test_ap_open_reconnect_on_inactivity_disconnect(dev, apdev):
+    """Reconnect to open mode AP after inactivity related disconnection"""
+    hapd = hostapd.add_ap(apdev[0]['ifname'], { "ssid": "open" }, hostname=apdev[0]['hostname'])
+    dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
+    hapd.request("DEAUTHENTICATE " + dev[0].p2p_interface_addr() + " reason=4")
+    dev[0].wait_disconnected(timeout=5)
+    dev[0].wait_connected(timeout=2, error="Timeout on reconnection")
+
+def test_ap_wps_conf(dev, apdev):
+    """WPS PBC provisioning with configured AP"""
+    ssid = "test-wps-conf"
+    hostapd.add_ap(apdev[0]['ifname'],
+                   { "ssid": ssid, "eap_server": "1", "wps_state": "2",
+                     "wpa_passphrase": "12345678", "wpa": "2",
+                     "wpa_key_mgmt": "WPA-PSK", "rsn_pairwise": "CCMP"},
+                   hostname=apdev[0]['hostname'])
+    hapd = hostapd.Hostapd(apdev[0]['ifname'], hostname=apdev[0]['hostname'])
+    hapd.request("WPS_PBC")
+    dev[0].request("SET device_name Device A")
+    dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412")
+    dev[0].dump_monitor()
+    dev[0].request("WPS_PBC " + apdev[0]['bssid'])
+    dev[0].wait_connected(timeout=30)
+    status = dev[0].get_status()
+    if status['wpa_state'] != 'COMPLETED':
+        raise Exception("Not fully connected")
+    if status['bssid'] != apdev[0]['bssid']:
+        raise Exception("Unexpected BSSID")
+    if status['ssid'] != ssid:
+        raise Exception("Unexpected SSID")
+    if status['pairwise_cipher'] != 'CCMP' or status['group_cipher'] != 'CCMP':
+        raise Exception("Unexpected encryption configuration")
+    if status['key_mgmt'] != 'WPA2-PSK':
+        raise Exception("Unexpected key_mgmt")
+
+    sta = hapd.get_sta(dev[0].p2p_interface_addr())
+    if 'wpsDeviceName' not in sta or sta['wpsDeviceName'] != "Device A":
+        raise Exception("Device name not available in STA command")
+
+
+def main():
+
+    c = Host(host = "192.168.254.58", iface = "wlan0", port=9877)
+    s = Host(host = "192.168.254.50", iface = "wlan0", port=8878)
+
+    c.execute("killall wpa_supplicant")
+    s.execute("killall hostapd")
+    status, buf = c.execute("./tests/wpa_supplicant -B -i wlan0 -c ./tests/wpa_supplicant.conf")
+    if status != 0:
+        raise
+
+    status, buf = s.execute("./tests/hostapd -B -g /tmp/global9877")
+    if status != 0:
+        raise
+
+    time.sleep(3)
+
+    client=WpaSupplicant(hostname=c.host, ifname=c.iface, port=c.port)
+    dev = [client]
+    apdev = [ ]
+    apdev.append({"ifname": s.iface, "bssid": "00:6b:9e:01:ff:eb", "hostname": s.host, "port": s.port})
+
+    _test_ap_open(dev, apdev)
+    test_ap_open_reconnect_on_inactivity_disconnect(dev, apdev)
+    test_ap_wps_conf(dev, apdev)
+
+if __name__ == "__main__":
+        main()
-- 
1.9.1




More information about the Hostap mailing list