The ap_ht tests used to execute shell commands in the tests using the subprocess python module. Start using the cmd_execute() general function for executing shell commands so that this would also work on remote setups. Signed-off-by: Jonathan Afek <jonathanx.afek@xxxxxxxxx> --- tests/hwsim/test_ap_acs.py | 2 +- tests/hwsim/test_ap_ht.py | 90 ++++++++++++++++++++----------------- tests/hwsim/test_ap_vht.py | 2 +- tests/hwsim/test_p2p_concurrency.py | 2 +- 4 files changed, 52 insertions(+), 44 deletions(-) diff --git a/tests/hwsim/test_ap_acs.py b/tests/hwsim/test_ap_acs.py index 89abb24..0f9bc8c 100644 --- a/tests/hwsim/test_ap_acs.py +++ b/tests/hwsim/test_ap_acs.py @@ -106,7 +106,7 @@ def test_ap_multi_bss_acs(dev, apdev): def test_ap_acs_40mhz(dev, apdev): """Automatic channel selection for 40 MHz channel""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) force_prev_ap_on_24g(apdev[0]) params = hostapd.wpa2_params(ssid="test-acs", passphrase="12345678") params['channel'] = '0' diff --git a/tests/hwsim/test_ap_ht.py b/tests/hwsim/test_ap_ht.py index 2089218..2a23751 100644 --- a/tests/hwsim/test_ap_ht.py +++ b/tests/hwsim/test_ap_ht.py @@ -8,22 +8,22 @@ import time import logging logger = logging.getLogger() import struct -import subprocess import hostapd from utils import HwsimSkip, alloc_fail import hwsim_utils from test_ap_csa import csa_supported -def clear_scan_cache(ifname): - subprocess.call(['ifconfig', ifname, 'up']) - subprocess.call(['iw', ifname, 'scan', 'trigger', 'freq', '2412', 'flush']) +def clear_scan_cache(apdev): + ifname = apdev['ifname'] + hostapd.cmd_execute(apdev, ['ifconfig', ifname, 'up']) + hostapd.cmd_execute(apdev, ['iw', ifname, 'scan', 'trigger', 'freq', '2412', 'flush']) time.sleep(0.1) - subprocess.call(['ifconfig', ifname, 'down']) + hostapd.cmd_execute(apdev, ['ifconfig', ifname, 'down']) def test_ap_ht40_scan(dev, apdev): """HT40 co-ex scan""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "test-ht40", "channel": "5", "ht_capab": "[HT40-]"} @@ -58,7 +58,7 @@ def test_ap_ht40_scan(dev, apdev): def test_ap_ht40_scan_conflict(dev, apdev): """HT40 co-ex scan conflict""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "test-ht40", "channel": "6", "ht_capab": "[HT40+]"} @@ -98,7 +98,7 @@ def test_ap_ht40_scan_conflict(dev, apdev): def test_ap_ht40_scan_conflict2(dev, apdev): """HT40 co-ex scan conflict (HT40-)""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "test-ht40", "channel": "11", "ht_capab": "[HT40-]"} @@ -138,18 +138,17 @@ def test_ap_ht40_scan_conflict2(dev, apdev): def test_ap_ht40_scan_not_affected(dev, apdev): """HT40 co-ex scan and other BSS not affected""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "test-ht20", "channel": "11" } hostapd.add_ap(apdev[1], params) - subprocess.call(['ifconfig', apdev[0]['ifname'], 'up']) - subprocess.call(['iw', apdev[0]['ifname'], 'scan', 'trigger', 'freq', '2462']) + hostapd.cmd_execute(apdev[0], ['ifconfig', apdev[0]['ifname'], 'up']) + hostapd.cmd_execute(apdev[0], ['iw', apdev[0]['ifname'], 'scan', 'trigger', 'freq', '2462']) time.sleep(0.5) - subprocess.call(['iw', apdev[0]['ifname'], 'scan', 'dump'], - stdout=open('/dev/null', 'w')) + hostapd.cmd_execute(apdev[0], ['iw', apdev[0]['ifname'], 'scan', 'dump']) time.sleep(0.1) - subprocess.call(['ifconfig', apdev[0]['ifname'], 'down']) + hostapd.cmd_execute(apdev[0], ['ifconfig', apdev[0]['ifname'], 'down']) params = { "ssid": "test-ht40", "channel": "1", @@ -185,7 +184,7 @@ def test_ap_ht40_scan_not_affected(dev, apdev): def test_ap_ht40_scan_legacy_conflict(dev, apdev): """HT40 co-ex scan conflict with legacy 20 MHz AP""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "legacy-20", "channel": "7", "ieee80211n": "0" } hostapd.add_ap(apdev[1], params) @@ -224,7 +223,7 @@ def test_ap_ht40_scan_legacy_conflict(dev, apdev): def test_ap_ht40_scan_ht20_conflict(dev, apdev): """HT40 co-ex scan conflict with HT 20 MHz AP""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "ht-20", "channel": "7", "ieee80211n": "1" } hostapd.add_ap(apdev[1], params) @@ -263,7 +262,7 @@ def test_ap_ht40_scan_ht20_conflict(dev, apdev): def test_ap_ht40_scan_intolerant(dev, apdev): """HT40 co-ex scan finding an AP advertising 40 MHz intolerant""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "another-bss", "channel": "1", "ht_capab": "[40-INTOLERANT]" } @@ -303,7 +302,7 @@ def test_ap_ht40_scan_intolerant(dev, apdev): def test_ap_ht40_scan_match(dev, apdev): """HT40 co-ex scan matching configuration""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "test-ht40", "channel": "5", "ht_capab": "[HT40-]"} @@ -343,7 +342,7 @@ def test_ap_ht40_scan_match(dev, apdev): def test_ap_ht40_5ghz_match(dev, apdev): """HT40 co-ex scan on 5 GHz with matching pri/sec channel""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) try: hapd = None hapd2 = None @@ -392,12 +391,13 @@ def test_ap_ht40_5ghz_match(dev, apdev): hapd.request("DISABLE") if hapd2: hapd2.request("DISABLE") - subprocess.call(['iw', 'reg', 'set', '00']) - dev[0].flush_scan_cache() + hostapd.cmd_execute(apdev[0], ['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[1], ['iw', 'reg', 'set', '00']) + dev[0].cmd_execute(['iw', 'reg', 'set', '00']) def test_ap_ht40_5ghz_switch(dev, apdev): """HT40 co-ex scan on 5 GHz switching pri/sec channel""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) try: hapd = None hapd2 = None @@ -446,11 +446,13 @@ def test_ap_ht40_5ghz_switch(dev, apdev): hapd.request("DISABLE") if hapd2: hapd2.request("DISABLE") - subprocess.call(['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[0], ['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[1], ['iw', 'reg', 'set', '00']) + dev[0].cmd_execute(['iw', 'reg', 'set', '00']) def test_ap_ht40_5ghz_switch2(dev, apdev): """HT40 co-ex scan on 5 GHz switching pri/sec channel (2)""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) try: hapd = None hapd2 = None @@ -508,7 +510,9 @@ def test_ap_ht40_5ghz_switch2(dev, apdev): hapd.request("DISABLE") if hapd2: hapd2.request("DISABLE") - subprocess.call(['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[0], ['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[1], ['iw', 'reg', 'set', '00']) + dev[0].cmd_execute(['iw', 'reg', 'set', '00']) dev[0].flush_scan_cache() def test_obss_scan(dev, apdev): @@ -601,7 +605,7 @@ def test_obss_scan_40_intolerant(dev, apdev): def test_obss_coex_report_handling(dev, apdev): """Overlapping BSS scan report handling with obss_interval=0""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "obss-scan", "channel": "6", "ht_capab": "[HT40-]" } @@ -630,7 +634,7 @@ def test_obss_coex_report_handling(dev, apdev): def test_obss_coex_report_handling1(dev, apdev): """Overlapping BSS scan report handling with obss_interval=1""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "obss-scan", "channel": "6", "ht_capab": "[HT40+]", @@ -755,7 +759,8 @@ def test_olbc_5ghz(dev, apdev): hapd.request("DISABLE") if hapd2: hapd2.request("DISABLE") - subprocess.call(['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[0], ['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[1], ['iw', 'reg', 'set', '00']) def test_ap_require_ht(dev, apdev): """Require HT""" @@ -806,7 +811,7 @@ def test_ap_ht_capab_not_supported(dev, apdev): def test_ap_ht_40mhz_intolerant_sta(dev, apdev): """Associated STA indicating 40 MHz intolerant""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "intolerant", "channel": "6", "ht_capab": "[HT40-]" } @@ -839,7 +844,7 @@ def test_ap_ht_40mhz_intolerant_sta(dev, apdev): def test_ap_ht_40mhz_intolerant_ap(dev, apdev): """Associated STA reports 40 MHz intolerant AP after association""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) params = { "ssid": "ht", "channel": "6", "ht_capab": "[HT40-]", @@ -928,7 +933,8 @@ def test_ap_ht40_csa(dev, apdev): dev[0].request("DISCONNECT") if hapd: hapd.request("DISABLE") - subprocess.call(['iw', 'reg', 'set', '00']) + dev[0].cmd_execute(['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[0], ['iw', 'reg', 'set', '00']) dev[0].flush_scan_cache() def test_ap_ht40_csa2(dev, apdev): @@ -972,7 +978,8 @@ def test_ap_ht40_csa2(dev, apdev): dev[0].request("DISCONNECT") if hapd: hapd.request("DISABLE") - subprocess.call(['iw', 'reg', 'set', '00']) + dev[0].cmd_execute(['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[0], ['iw', 'reg', 'set', '00']) dev[0].flush_scan_cache() def test_ap_ht40_csa3(dev, apdev): @@ -1016,7 +1023,8 @@ def test_ap_ht40_csa3(dev, apdev): dev[0].request("DISCONNECT") if hapd: hapd.request("DISABLE") - subprocess.call(['iw', 'reg', 'set', '00']) + dev[0].cmd_execute(['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[0], ['iw', 'reg', 'set', '00']) dev[0].flush_scan_cache() def test_ap_ht_smps(dev, apdev): @@ -1108,20 +1116,20 @@ def test_prefer_ht20_during_roam(dev, apdev): dev[0].scan_for_bss(bssid2, freq=2412) dev[0].scan(freq=2412) dev[0].wait_connected() - + if dev[0].get_status_field('bssid') != bssid2: raise Exception("Unexpected BSS selected") def test_ap_ht40_5ghz_invalid_pair(dev, apdev): """HT40 on 5 GHz with invalid channel pair""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) try: params = { "ssid": "test-ht40", "hw_mode": "a", "channel": "40", "country_code": "US", "ht_capab": "[HT40+]"} - hapd = hostapd.add_ap(apdev[1], params, wait_enabled=False) + hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False) ev = hapd.wait_event(["AP-DISABLED", "AP-ENABLED"], timeout=10) if not ev: raise Exception("AP setup failure timed out") @@ -1130,18 +1138,18 @@ def test_ap_ht40_5ghz_invalid_pair(dev, apdev): if sec != "0": raise Exception("Invalid 40 MHz channel accepted") finally: - subprocess.call(['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[0], ['iw', 'reg', 'set', '00']) def test_ap_ht40_5ghz_disabled_sec(dev, apdev): """HT40 on 5 GHz with disabled secondary channel""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) try: params = { "ssid": "test-ht40", "hw_mode": "a", "channel": "48", "country_code": "US", "ht_capab": "[HT40+]"} - hapd = hostapd.add_ap(apdev[1], params, wait_enabled=False) + hapd = hostapd.add_ap(apdev[0], params, wait_enabled=False) ev = hapd.wait_event(["AP-DISABLED", "AP-ENABLED"], timeout=10) if not ev: raise Exception("AP setup failure timed out") @@ -1150,11 +1158,11 @@ def test_ap_ht40_5ghz_disabled_sec(dev, apdev): if sec != "0": raise Exception("Invalid 40 MHz channel accepted") finally: - subprocess.call(['iw', 'reg', 'set', '00']) + hostapd.cmd_execute(apdev[0], ['iw', 'reg', 'set', '00']) def test_ap_ht40_scan_broken_ap(dev, apdev): """HT40 co-ex scan and broken legacy/HT AP""" - clear_scan_cache(apdev[0]['ifname']) + clear_scan_cache(apdev[0]) # Broken AP: Include HT Capabilities element but not HT Operation element params = { "ssid": "legacy-20", diff --git a/tests/hwsim/test_ap_vht.py b/tests/hwsim/test_ap_vht.py index 1a2ab1f..f2806a1 100644 --- a/tests/hwsim/test_ap_vht.py +++ b/tests/hwsim/test_ap_vht.py @@ -63,7 +63,7 @@ def test_ap_vht80(dev, apdev): dev[0].flush_scan_cache() def vht80_test(apdev, dev, channel, ht_capab): - clear_scan_cache(apdev['ifname']) + clear_scan_cache(apdev) try: hapd = None params = { "ssid": "vht", diff --git a/tests/hwsim/test_p2p_concurrency.py b/tests/hwsim/test_p2p_concurrency.py index a85b1f1..cf0aea1 100644 --- a/tests/hwsim/test_p2p_concurrency.py +++ b/tests/hwsim/test_p2p_concurrency.py @@ -39,7 +39,7 @@ def test_concurrent_autogo(dev, apdev): def test_concurrent_autogo_5ghz_ht40(dev, apdev): """Concurrent P2P autonomous GO on 5 GHz and HT40 co-ex""" - clear_scan_cache(apdev[1]['ifname']) + clear_scan_cache(apdev[1]) try: hapd = None hapd2 = None -- 1.9.1 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap