From 55b3a974c6cfc4f66ab4814783ac6a631770d204 Mon Sep 17 00:00:00 2001 From: Tim Kourt Date: Mon, 18 Mar 2019 16:55:12 -0700 Subject: [PATCH] auto-t: Split EAP-WPS tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, the WPS tests have shared a single instance of iwd among themselves. This approach didn’t allow to identify which tests have passed and which failed. The new solution makes WPS tests independent from each other by creating a new instance of iwd for each one of them. --- autotests/testEAP-WPS/four_digit_pin_test.py | 52 +++++++++++++ autotests/testEAP-WPS/hw.conf | 1 + autotests/testEAP-WPS/pin_test.py | 51 +++++++++++++ autotests/testEAP-WPS/push_button_test.py | 50 ++++++++++++ autotests/testEAP-WPS/wps_test.py | 80 -------------------- 5 files changed, 154 insertions(+), 80 deletions(-) create mode 100644 autotests/testEAP-WPS/four_digit_pin_test.py create mode 100644 autotests/testEAP-WPS/pin_test.py create mode 100644 autotests/testEAP-WPS/push_button_test.py delete mode 100644 autotests/testEAP-WPS/wps_test.py diff --git a/autotests/testEAP-WPS/four_digit_pin_test.py b/autotests/testEAP-WPS/four_digit_pin_test.py new file mode 100644 index 00000000..5de74ccc --- /dev/null +++ b/autotests/testEAP-WPS/four_digit_pin_test.py @@ -0,0 +1,52 @@ +#!/usr/bin/python3 + +import unittest +import sys + +sys.path.append('../util') +import iwd +from iwd import IWD +from iwd import DeviceState + +from hostapd import HostapdCLI +from hostapd import hostapd_map + +class Test(unittest.TestCase): + + def four_digit_pin_success(self, wd): + + devices = wd.list_devices(1) + device = devices[0] + pin = '1234' + self.hostapd.wps_pin(pin) + + device.wps_start_pin(pin) + + condition = 'obj.state == DeviceState.connected' + wd.wait_for_object_condition(device, condition) + + device.disconnect() + + condition = 'obj.state == DeviceState.disconnected' + wd.wait_for_object_condition(device, condition) + + def test_connection_success(self): + + wd = IWD(True) + + try: + self.four_digit_pin_success(wd) + finally: + del wd + + @classmethod + def setUpClass(cls): + cls.hostapd_if = list(hostapd_map.values())[0] + cls.hostapd = HostapdCLI(cls.hostapd_if) + + @classmethod + def tearDownClass(cls): + IWD.clear_storage() + +if __name__ == '__main__': + unittest.main(exit=True) diff --git a/autotests/testEAP-WPS/hw.conf b/autotests/testEAP-WPS/hw.conf index 0c12f181..61af4456 100644 --- a/autotests/testEAP-WPS/hw.conf +++ b/autotests/testEAP-WPS/hw.conf @@ -1,5 +1,6 @@ [SETUP] num_radios=2 +start_iwd=false max_test_exec_interval_sec=40 [HOSTAPD] diff --git a/autotests/testEAP-WPS/pin_test.py b/autotests/testEAP-WPS/pin_test.py new file mode 100644 index 00000000..c8bb2fd1 --- /dev/null +++ b/autotests/testEAP-WPS/pin_test.py @@ -0,0 +1,51 @@ +#!/usr/bin/python3 + +import unittest +import sys + +sys.path.append('../util') +import iwd +from iwd import IWD +from iwd import DeviceState + +from hostapd import HostapdCLI +from hostapd import hostapd_map + +class Test(unittest.TestCase): + + def pin_success(self, wd): + + devices = wd.list_devices(1) + device = devices[0] + pin = device.wps_generate_pin() + self.hostapd.wps_pin(pin) + + device.wps_start_pin(pin) + + condition = 'obj.state == DeviceState.connected' + wd.wait_for_object_condition(device, condition) + + device.disconnect() + + condition = 'obj.state == DeviceState.disconnected' + wd.wait_for_object_condition(device, condition) + + def test_connection_success(self): + wd = IWD(True) + + try: + self.pin_success(wd) + finally: + del wd + + @classmethod + def setUpClass(cls): + cls.hostapd_if = list(hostapd_map.values())[0] + cls.hostapd = HostapdCLI(cls.hostapd_if) + + @classmethod + def tearDownClass(cls): + IWD.clear_storage() + +if __name__ == '__main__': + unittest.main(exit=True) diff --git a/autotests/testEAP-WPS/push_button_test.py b/autotests/testEAP-WPS/push_button_test.py new file mode 100644 index 00000000..9e72fa33 --- /dev/null +++ b/autotests/testEAP-WPS/push_button_test.py @@ -0,0 +1,50 @@ +#!/usr/bin/python3 + +import unittest +import sys + +sys.path.append('../util') +import iwd +from iwd import IWD +from iwd import DeviceState + +from hostapd import HostapdCLI +from hostapd import hostapd_map + +class Test(unittest.TestCase): + + def push_button_success(self, wd): + self.hostapd.wps_push_button() + + devices = wd.list_devices(1) + device = devices[0] + + device.wps_push_button() + + condition = 'obj.state == DeviceState.connected' + wd.wait_for_object_condition(device, condition) + + device.disconnect() + + condition = 'obj.state == DeviceState.disconnected' + wd.wait_for_object_condition(device, condition) + + def test_connection_success(self): + wd = IWD(True) + + try: + self.push_button_success(wd) + finally: + del wd + + @classmethod + def setUpClass(cls): + cls.hostapd_if = list(hostapd_map.values())[0] + cls.hostapd = HostapdCLI(cls.hostapd_if) + + @classmethod + def tearDownClass(cls): + IWD.clear_storage() + +if __name__ == '__main__': + unittest.main(exit=True) diff --git a/autotests/testEAP-WPS/wps_test.py b/autotests/testEAP-WPS/wps_test.py deleted file mode 100644 index 4cabe34d..00000000 --- a/autotests/testEAP-WPS/wps_test.py +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/python3 - -import unittest -import sys - -sys.path.append('../util') -import iwd -from iwd import IWD -from iwd import DeviceState - -from hostapd import HostapdCLI -from hostapd import hostapd_map - -class Test(unittest.TestCase): - - def test_push_button_success(self): - self.hostapd.wps_push_button() - - wd = IWD() - - devices = wd.list_devices(1) - device = devices[0] - - device.wps_push_button() - - condition = 'obj.state == DeviceState.connected' - wd.wait_for_object_condition(device, condition) - - device.disconnect() - - condition = 'obj.state == DeviceState.disconnected' - wd.wait_for_object_condition(device, condition) - - def test_pin_success(self): - wd = IWD() - - devices = wd.list_devices(1) - device = devices[0] - pin = device.wps_generate_pin() - self.hostapd.wps_pin(pin) - - device.wps_start_pin(pin) - - condition = 'obj.state == DeviceState.connected' - wd.wait_for_object_condition(device, condition) - - device.disconnect() - - condition = 'obj.state == DeviceState.disconnected' - wd.wait_for_object_condition(device, condition) - - def test_4_digit_pin_success(self): - wd = IWD() - - devices = wd.list_devices(1) - device = devices[0] - pin = '1234' - self.hostapd.wps_pin(pin) - - device.wps_start_pin(pin) - - condition = 'obj.state == DeviceState.connected' - wd.wait_for_object_condition(device, condition) - - device.disconnect() - - condition = 'obj.state == DeviceState.disconnected' - wd.wait_for_object_condition(device, condition) - - @classmethod - def setUpClass(cls): - cls.hostapd_if = list(hostapd_map.values())[0] - cls.hostapd = HostapdCLI(cls.hostapd_if) - - @classmethod - def tearDownClass(cls): - IWD.clear_storage() - -if __name__ == '__main__': - unittest.main(exit=True)