ScanScheduleUtilFilterTest.java revision 1a16020f8d611c94797884b212ee6a26817fad82
1297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills/* 2297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * Copyright (C) 2015 The Android Open Source Project 3297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * 4297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * Licensed under the Apache License, Version 2.0 (the "License"); 5297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * you may not use this file except in compliance with the License. 6297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * You may obtain a copy of the License at 7297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * 8297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * http://www.apache.org/licenses/LICENSE-2.0 9297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * 10297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * Unless required by applicable law or agreed to in writing, software 11297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * distributed under the License is distributed on an "AS IS" BASIS, 12297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * See the License for the specific language governing permissions and 14297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * limitations under the License 15297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills */ 16297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 17297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willspackage com.android.server.wifi; 18297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 19297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport static com.android.server.wifi.ScanTestUtil.channelsToSpec; 20297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport static com.android.server.wifi.ScanTestUtil.createRequest; 21297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport static com.android.server.wifi.ScanTestUtil.createScanDatas; 22297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport static com.android.server.wifi.ScanTestUtil.createScanResult; 23297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport static com.android.server.wifi.ScanTestUtil.installWlanWifiNative; 24297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport static com.android.server.wifi.ScanTestUtil.setupMockChannels; 25297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 2672c639e8b97067e948eca8be50dfea3173121090Mitchell Willsimport static org.junit.Assert.assertEquals; 2772c639e8b97067e948eca8be50dfea3173121090Mitchell Willsimport static org.junit.Assert.assertFalse; 2872c639e8b97067e948eca8be50dfea3173121090Mitchell Willsimport static org.junit.Assert.assertNotNull; 2972c639e8b97067e948eca8be50dfea3173121090Mitchell Willsimport static org.junit.Assert.assertNull; 3072c639e8b97067e948eca8be50dfea3173121090Mitchell Willsimport static org.junit.Assert.assertTrue; 31297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport static org.mockito.Mockito.mock; 32297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 33297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport android.net.wifi.WifiScanner; 34297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport android.net.wifi.WifiScanner.ScanData; 35297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport android.net.wifi.WifiScanner.ScanSettings; 36297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport android.test.suitebuilder.annotation.SmallTest; 37297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 38297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport org.junit.Before; 39297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport org.junit.Test; 40297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 41297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport java.util.Collection; 42297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport java.util.Collections; 43297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 44297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills/** 45297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * Unit tests for filtering of scan results in {@link com.android.server.wifi.MultiClientScheduler}. 46297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills */ 47297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills@SmallTest 48297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willspublic class MultiClientSchedulerFilterTest { 49297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 50297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills private static final int DEFAULT_MAX_BUCKETS = 8; 51297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills private static final int DEFAULT_MAX_CHANNELS = 8; 52297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills private static final int DEFAULT_MAX_BATCH = 10; 53297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 54297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills private WifiNative mWifiNative; 55297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills private MultiClientScheduler mScheduler; 56297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 57297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Before 58297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void setUp() throws Exception { 59297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mWifiNative = mock(WifiNative.class); 60297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills setupMockChannels(mWifiNative, 61297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills new int[]{2400, 2450}, 62297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills new int[]{5150, 5175}, 63297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills new int[]{5600, 5650}); 64297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills installWlanWifiNative(mWifiNative); 65297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 66297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler = new MultiClientScheduler(); 67297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.setMaxBuckets(DEFAULT_MAX_BUCKETS); 68297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.setMaxChannels(DEFAULT_MAX_CHANNELS); 69297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.setMaxBatch(DEFAULT_MAX_BATCH); 70297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 71297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 72297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 73297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void reportFullResultTrueForBands() { 74297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 75297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.WIFI_BAND_24_GHZ, 30000, 0, 20, 76297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 77297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 78297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 79297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 80297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 81297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertTrue(mScheduler.shouldReportFullScanResultForSettings( 82297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills createScanResult(2400), settings)); 83297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 84297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 85297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 86297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void reportFullResultFalseForBands() { 87297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 88297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.WIFI_BAND_24_GHZ, 30000, 0, 20, 89297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 90297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 91297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 92297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 93297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 94297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertFalse(mScheduler.shouldReportFullScanResultForSettings( 95297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills createScanResult(5150), settings)); 96297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 97297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 98297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 99297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void reportFullResultTrueForChannels() { 100297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 101297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 102297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 103297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 104297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 105297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 106297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 107297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertTrue(mScheduler.shouldReportFullScanResultForSettings( 108297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills createScanResult(2400), settings)); 109297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 110297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 111297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 112297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void reportFullResultFalseForChannels() { 113297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 114297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 115297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 116297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 117297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 118297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 119297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 120297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertFalse(mScheduler.shouldReportFullScanResultForSettings( 121297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills createScanResult(5175), settings)); 122297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 123297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 124297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 125297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void filterScanDataEmpty() { 126297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 127297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 128297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 129297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 130297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 131297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 132297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 133297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanData[] results = mScheduler.filterResultsForSettings(new ScanData[0], settings); 134297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(null, results); 135297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 136297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 137297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 138297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void filterScanDataSingleNotMatching() { 139297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 140297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 141297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 142297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 143297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 144297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 145297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 146297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanData[] results = mScheduler.filterResultsForSettings( 147297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills createScanDatas(new int[][]{ { 2450 } }), settings); 148297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(null, results); 149297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 150297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 151297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 152297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void filterScanDataSingleMatching() { 153297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 154297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 155297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 156297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 157297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 158297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 159297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 160297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanData[] results = mScheduler.filterResultsForSettings( 161297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills createScanDatas(new int[][]{ { 2400 } }), settings); 162297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 163297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400 } }, results); 164297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 165297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 166297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 167297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void filterScanDataSinglePartialMatching() { 168297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 169297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 170297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 171297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 172297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 173297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 174297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 175297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanData[] results = mScheduler.filterResultsForSettings( 176297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills createScanDatas(new int[][]{ { 2400, 2450, 5150, 5175 } }), settings); 177297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 178297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400, 5150 } }, results); 179297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 180297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 181297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 182297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void filterScanDataMultipleNotMatching() { 183297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 184297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 185297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 186297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 187297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 188297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 189297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 190297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanData[] results = mScheduler.filterResultsForSettings( 191297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills createScanDatas(new int[][]{ { 2450 }, { 2450, 5175 } }), settings); 192297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(null, results); 193297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 194297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 195297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 196297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void filterScanDataMultipleMatching() { 197297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 198297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 199297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 200297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 201297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 202297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 203297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 204297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanData[] results = mScheduler.filterResultsForSettings( 205297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills createScanDatas(new int[][]{ { 2400 }, {2400, 5150} }), settings); 206297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 207297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400 }, {2400, 5150} }, results); 208297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 209297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 210297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 211297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void filterScanDataMultiplePartialMatching() { 212297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 213297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 214297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 215297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 216297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 217297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 218297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 219297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanData[] results = mScheduler.filterResultsForSettings(createScanDatas( 220297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills new int[][]{ { 2400, 2450, 5150, 5175 }, { 2400, 2450, 5175 } }), settings); 221297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 222297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400, 5150 }, { 2400 } }, results); 223297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 224297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 225297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 226297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void filterScanDataMultipleDuplicateFrequencies() { 227297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 228297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 229297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 230297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 231297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 232297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 233297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 234297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanData[] results = mScheduler.filterResultsForSettings(createScanDatas( 235297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills new int[][]{ { 2400, 2450, 5150, 5175, 2400 }, 236297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills { 2400, 2450, 5175 }, 237297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills { 5175, 5175, 5150 } }), settings); 238297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 239297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400, 5150, 2400 }, { 2400 }, { 5150 } }, results); 240297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 241297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 242297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 243297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void filterScanDataMultipleSomeNotMatching() { 244297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 245297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 246297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 247297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 248297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 249297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills mScheduler.updateSchedule(requests); 250297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 251297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanData[] results = mScheduler.filterResultsForSettings(createScanDatas( 252297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills new int[][]{ { 2400, 2450, 5150, 5175, 2400 }, 253297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills { 5175 }, 254297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills { 5175, 5175, 5150 } }), settings); 255297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 256297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400, 5150, 2400 }, { 5150 } }, results); 257297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 258297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 2591a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills @Test 2601a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills public void filterScanDataExceedMaxBssidsPerScan() { 2611a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills ScanSettings settings = createRequest( 2621a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 3, 2631a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 2641a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills ); 2651a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills Collection<ScanSettings> requests = Collections.singleton(settings); 2661a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills mScheduler.updateSchedule(requests); 2671a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills 2681a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills ScanData[] results = mScheduler.filterResultsForSettings(createScanDatas( 2691a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills new int[][]{ { 2400, 2450, 5150, 5175, 2400, 2400}, 2701a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills { 5175 }, 2711a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills { 5175, 5175, 5150, 2400, 2400, 5150 } }), settings); 2721a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills 2731a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400, 5150, 2400 }, { 5150, 2400, 2400 } }, 2741a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills results); 2751a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills } 2761a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills 277297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 278297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public static void assertScanDataFreqsEquals(int[][] expected, ScanData[] results) { 279297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills if (expected == null) { 280297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertNull(results); 281297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } else { 282297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertNotNull(results); 283297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertEquals("num scans", expected.length, results.length); 284297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills for (int i = 0; i < expected.length; ++i) { 285297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertNotNull("scan[" + i + "] was null", results[i]); 286297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertEquals("num aps in scan[" + i + "]", expected[i].length, 287297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills results[i].getResults().length); 288297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills for (int j = 0; j < expected[i].length; ++j) { 289297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertNotNull("ap result[" + i + "][" + j + "] was null", 290297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills results[i].getResults()[j]); 291297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertEquals("ap freq in result[" + i + "][" + j + "]", expected[i][j], 292297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills results[i].getResults()[j].frequency); 293297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 294297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 295297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 296297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 297297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills} 298