Merged the hostap_2.6 updates, and the Leap of Faith work, from the hostap_update...
[mech_eap.git] / libeap / wpaspy / test.py
diff --git a/libeap/wpaspy/test.py b/libeap/wpaspy/test.py
new file mode 100755 (executable)
index 0000000..9141a8d
--- /dev/null
@@ -0,0 +1,82 @@
+#!/usr/bin/python
+#
+# Test script for wpaspy
+# Copyright (c) 2013, Jouni Malinen <j@w1.fi>
+#
+# This software may be distributed under the terms of the BSD license.
+# See README for more details.
+
+import os
+import sys
+import time
+import wpaspy
+
+wpas_ctrl = '/var/run/wpa_supplicant'
+
+def wpas_connect(host=None, port=9877):
+    ifaces = []
+
+    if host != None:
+        try:
+            wpas = wpaspy.Ctrl(host, port)
+            return wpas
+        except:
+            print "Could not connect to host: ", host
+            return None
+
+    if os.path.isdir(wpas_ctrl):
+        try:
+            ifaces = [os.path.join(wpas_ctrl, i) for i in os.listdir(wpas_ctrl)]
+        except OSError, error:
+            print "Could not find wpa_supplicant: ", error
+            return None
+
+    if len(ifaces) < 1:
+        print "No wpa_supplicant control interface found"
+        return None
+
+    for ctrl in ifaces:
+        try:
+            wpas = wpaspy.Ctrl(ctrl)
+            return wpas
+        except Exception, e:
+            pass
+    return None
+
+
+def main(host=None, port=9877):
+    print "Testing wpa_supplicant control interface connection"
+    wpas = wpas_connect(host, port)
+    if wpas is None:
+        return
+    print "Connected to wpa_supplicant"
+    print wpas.request('PING')
+
+    mon = wpas_connect(host, port)
+    if mon is None:
+        print "Could not open event monitor connection"
+        return
+
+    mon.attach()
+    print "Scan"
+    print wpas.request('SCAN')
+
+    count = 0
+    while count < 10:
+        count += 1
+        time.sleep(1)
+        while mon.pending():
+            ev = mon.recv()
+            print ev
+            if 'CTRL-EVENT-SCAN-RESULTS' in ev:
+                print 'Scan completed'
+                print wpas.request('SCAN_RESULTS')
+                count = 10
+                pass
+
+
+if __name__ == "__main__":
+    if len(sys.argv) > 2:
+        main(host=sys.argv[1], port=int(sys.argv[2]))
+    else:
+        main()