From dcafde0c32d8d69a3854a8b416e20fa5b34949e5 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Tue, 8 Oct 2019 14:11:09 +0200 Subject: [PATCH] tests: Add negative scan tests There was a bug in wmediumd in that it didn't set the frequency of frames, and thus they were always received by mac80211_hwsim, regardless of channel it was on. Add two tests that verify we only find a single instance of an AP if we only have that one, and run this both with and without wmediumd. Signed-off-by: Johannes Berg --- tests/hwsim/test_scan.py | 17 +++++++++++++++++ tests/hwsim/test_wmediumd.py | 19 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/tests/hwsim/test_scan.py b/tests/hwsim/test_scan.py index 0b302d504..a1e41713a 100644 --- a/tests/hwsim/test_scan.py +++ b/tests/hwsim/test_scan.py @@ -1886,3 +1886,20 @@ def test_connect_mbssid_open_1(dev, apdev): # able to start connection attempt. dev[0].request("REMOVE_NETWORK all") dev[0].dump_monitor() + +def test_scan_only_one(dev, apdev): + """Test that scanning with a single active AP only returns that one""" + dev[0].flush_scan_cache() + hostapd.add_ap(apdev[0], {"ssid": "test-scan"}) + bssid = apdev[0]['bssid'] + + check_scan(dev[0], "use_id=1", test_busy=True) + dev[0].scan_for_bss(bssid, freq="2412") + + status, stdout = hostapd.cmd_execute(dev[0], ['iw', dev[0].ifname, 'scan', 'dump']) + if status != 0: + raise Exception("iw scan dump failed with code %d" % status) + lines = stdout.split('\n') + entries = len(list(filter(lambda x: x.startswith('BSS '), lines))) + if entries != 1: + raise Exception("expected to find 1 BSS entry, got %d" % entries) diff --git a/tests/hwsim/test_wmediumd.py b/tests/hwsim/test_wmediumd.py index 0a8810194..a9d4c8e19 100644 --- a/tests/hwsim/test_wmediumd.py +++ b/tests/hwsim/test_wmediumd.py @@ -9,6 +9,7 @@ from utils import HwsimSkip from wpasupplicant import WpaSupplicant from tshark import run_tshark from test_ap_open import _test_ap_open +from test_scan import test_scan_only_one as _test_scan_only_one from test_wpas_mesh import check_mesh_support, check_mesh_group_added from test_wpas_mesh import check_mesh_peer_connected, add_open_mesh_network from test_wpas_mesh import check_mesh_group_removed @@ -462,3 +463,21 @@ def _test_wmediumd_path_rann(dev, apdev): dev[i].mesh_group_remove() check_mesh_group_removed(dev[i]) dev[i].dump_monitor() + +def test_wmediumd_scan_only_one(dev, apdev, params): + """ + Test that scanning with a single active AP only returns that one + (with wmediumd enabled) + """ + fd, fn = tempfile.mkstemp() + try: + f = os.fdopen(fd, 'w') + f.write(CFG % (apdev[0]['bssid'], dev[0].own_addr())) + f.close() + p = start_wmediumd(fn, params) + try: + _test_scan_only_one(dev, apdev) + finally: + stop_wmediumd(p, params) + finally: + os.unlink(fn)