Wireless Daemon for Linux
 help / color / mirror / Atom feed
From: James Prestwood <prestwoj@gmail.com>
To: iwd@lists.01.org
Subject: [PATCH v2 3/3] auto-t: add RRM autotest
Date: Wed, 06 Nov 2019 09:57:32 -0800	[thread overview]
Message-ID: <20191106175732.711-3-prestwoj@gmail.com> (raw)
In-Reply-To: <20191106175732.711-1-prestwoj@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 5393 bytes --]

This test merely verifies hostapd receieved our measurement reports
and verified they were valid. Hostapd does not verify the actual
beacon report body. Really, the only way to test this is on an
actual network which makes these requests.
---
 autotests/testRRM/connection_test.py | 114 +++++++++++++++++++++++++++
 autotests/testRRM/hw.conf            |   8 ++
 autotests/testRRM/ssidOther.conf     |  10 +++
 autotests/testRRM/ssidRRM.conf       |  13 +++
 4 files changed, 145 insertions(+)
 create mode 100644 autotests/testRRM/connection_test.py
 create mode 100644 autotests/testRRM/hw.conf
 create mode 100644 autotests/testRRM/ssidOther.conf
 create mode 100644 autotests/testRRM/ssidRRM.conf

diff --git a/autotests/testRRM/connection_test.py b/autotests/testRRM/connection_test.py
new file mode 100644
index 00000000..93fd6cb8
--- /dev/null
+++ b/autotests/testRRM/connection_test.py
@@ -0,0 +1,114 @@
+#!/usr/bin/python3
+
+import unittest
+import sys
+
+sys.path.append('../util')
+import iwd
+from iwd import IWD
+from iwd import PSKAgent
+from iwd import NetworkType
+from hostapd import HostapdCLI
+import testutil
+
+from time import sleep
+
+# Table beacon with wildcard BSSID
+basic_beacon = '51000000000002ffffffffffff020100'
+# Table beacon with wildcard BSSID and SSID filter
+beacon_with_ssid = '51000000000002ffffffffffff02010000077373696452524d'
+# Passive beacon with wildcard BSSID
+beacon_passive = '510b0000000000ffffffffffff020100'
+# Active beacon with wildcard BSSID
+beacon_active = '510b0000000001ffffffffffff020100'
+
+class Test(unittest.TestCase):
+
+    def test_connection_success(self):
+        hapd = HostapdCLI(config='ssidRRM.conf')
+        wd = IWD()
+
+        psk_agent = PSKAgent("secret123")
+        wd.register_psk_agent(psk_agent)
+
+        devices = wd.list_devices(1)
+        device = devices[0]
+
+        condition = 'not obj.scanning'
+        wd.wait_for_object_condition(device, condition)
+
+        device.scan()
+
+        condition = 'not obj.scanning'
+        wd.wait_for_object_condition(device, condition)
+
+        ordered_network = device.get_ordered_network('ssidRRM')
+
+        self.assertEqual(ordered_network.type, NetworkType.psk)
+
+        condition = 'not obj.connected'
+        wd.wait_for_object_condition(ordered_network.network_object, condition)
+
+        ordered_network.network_object.connect()
+
+        condition = 'obj.connected'
+        wd.wait_for_object_condition(ordered_network.network_object, condition)
+
+        testutil.test_iface_operstate()
+        testutil.test_ifaces_connected()
+
+        hapd.wait_for_event('AP-STA-CONNECTED')
+
+        # This should return both APs
+        hapd.req_beacon(device.address, basic_beacon)
+
+        for e in ['BEACON-RESP-RX', 'BEACON-RESP-RX']:
+            event = hapd.wait_for_event(e)
+            if event:
+                print(event)
+
+        sleep(0.5)
+
+        # This should return just ssidRRM
+        hapd.req_beacon(device.address, beacon_with_ssid)
+        event = hapd.wait_for_event('BEACON-RESP-RX')
+        if event:
+            print(event)
+
+        sleep(0.5)
+
+        # This should passive scan on channel 11, returning otherSSID
+        hapd.req_beacon(device.address, beacon_passive)
+        # TODO: See if we are scanning here (scan not initiated from station)
+
+        event = hapd.wait_for_event('BEACON-RESP-RX')
+        if event:
+            print(event)
+
+        sleep(0.5)
+
+        # This should active scan on channel 11, returning otherSSID
+        hapd.req_beacon(device.address, beacon_active)
+        # TODO: See if we are scanning here (scan not initiated from station)
+
+        event = hapd.wait_for_event('BEACON-RESP-RX')
+        if event:
+            print(event)
+
+        device.disconnect()
+
+        condition = 'not obj.connected'
+        wd.wait_for_object_condition(ordered_network.network_object, condition)
+
+        wd.unregister_psk_agent(psk_agent)
+
+    @classmethod
+    def setUpClass(cls):
+        pass
+
+    @classmethod
+    def tearDownClass(cls):
+        IWD.clear_storage()
+
+if __name__ == '__main__':
+    unittest.main(exit=True)
diff --git a/autotests/testRRM/hw.conf b/autotests/testRRM/hw.conf
new file mode 100644
index 00000000..91c757ce
--- /dev/null
+++ b/autotests/testRRM/hw.conf
@@ -0,0 +1,8 @@
+[SETUP]
+num_radios=3
+max_test_exec_interval_sec=40
+reg_domain=US
+
+[HOSTAPD]
+rad0=ssidRRM.conf
+rad1=ssidOther.conf
diff --git a/autotests/testRRM/ssidOther.conf b/autotests/testRRM/ssidOther.conf
new file mode 100644
index 00000000..e0f0fd40
--- /dev/null
+++ b/autotests/testRRM/ssidOther.conf
@@ -0,0 +1,10 @@
+ctrl_interface=/var/run/hostapd
+
+hw_mode=g
+channel=11
+ssid=ssidOther
+
+wpa=2
+wpa_pairwise=CCMP
+wpa_passphrase=secret123
+rrm_beacon_report=1
diff --git a/autotests/testRRM/ssidRRM.conf b/autotests/testRRM/ssidRRM.conf
new file mode 100644
index 00000000..233392f9
--- /dev/null
+++ b/autotests/testRRM/ssidRRM.conf
@@ -0,0 +1,13 @@
+ctrl_interface=/var/run/hostapd
+
+hw_mode=a
+ssid=ssidRRM
+
+wpa=2
+wpa_pairwise=CCMP
+wpa_passphrase=secret123
+rrm_beacon_report=1
+ht_capab=[HT40+]
+
+ieee80211n=1
+channel=36
-- 
2.17.1

      parent reply	other threads:[~2019-11-06 17:57 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-06 17:57 [PATCH v2 1/3] wiphy: add beacon bits to RM Enabled Capabilities James Prestwood
2019-11-06 17:57 ` [PATCH v2 2/3] rrm: add radio resource management module James Prestwood
2019-11-06 21:34   ` Denis Kenzior
2019-11-06 21:51     ` James Prestwood
2019-11-06 21:59       ` Denis Kenzior
2019-11-06 17:57 ` James Prestwood [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191106175732.711-3-prestwoj@gmail.com \
    --to=prestwoj@gmail.com \
    --cc=iwd@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox