From d493cd415eaf76851f17e186b9066e89340d9a2f Mon Sep 17 00:00:00 2001 From: Glen Kuhne Date: Thu, 27 Jul 2017 10:10:03 -0700 Subject: Move ScanResultMatchInfo to its own class This class is a useful way of grouping scan results into the networks they represent, agnostic of BSSID. Shifting it so it can be used in WifiMetrics. Bug: 36819798 Test: frameworks/opt/net/wifi/tests/wifitests/runtests.sh Change-Id: Ie4fdb488c7a7cb198e16cd5ba72c354045fbc312 --- .../server/wifi/ScanResultMatchInfoTest.java | 95 ++++++++++++++++++++++ .../server/wifi/WifiConfigurationTestUtil.java | 6 +- 2 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 tests/wifitests/src/com/android/server/wifi/ScanResultMatchInfoTest.java (limited to 'tests') diff --git a/tests/wifitests/src/com/android/server/wifi/ScanResultMatchInfoTest.java b/tests/wifitests/src/com/android/server/wifi/ScanResultMatchInfoTest.java new file mode 100644 index 000000000..e2905a64f --- /dev/null +++ b/tests/wifitests/src/com/android/server/wifi/ScanResultMatchInfoTest.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.server.wifi; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.*; + +import android.net.wifi.WifiConfiguration; +import android.test.suitebuilder.annotation.SmallTest; + +import org.junit.Test; + +/** + * Unit tests for {@link com.android.server.wifi.ScanResultMatchInfoTest}. + */ +@SmallTest +public class ScanResultMatchInfoTest { + /** + * Tests that equivalent ScanResultMatchInfo objects are created for WifiConfigurations and + * their associated ScanResult + */ + @Test + public void testScanResultMatchesWifiConfiguration() { + WifiConfiguration conf = + WifiConfigurationTestUtil.createPskNetwork("\"PrettyFlyForAWifi\""); + ScanDetail scan = createScanDetailForNetwork(conf, "AA:AA:AA:AA:AA:AA"); + assertEquals(ScanResultMatchInfo.fromWifiConfiguration(conf), + ScanResultMatchInfo.fromScanResult(scan.getScanResult())); + + conf = WifiConfigurationTestUtil.createOpenNetwork("\"WIFIght the inevitable\""); + scan = createScanDetailForNetwork(conf, "BB:BB:BB:BB:BB:BB"); + assertEquals(ScanResultMatchInfo.fromWifiConfiguration(conf), + ScanResultMatchInfo.fromScanResult(scan.getScanResult())); + } + + /** + * Tests that multiple ScanResults with different BSSIDs will produce equivalent + * ScanResultMatchInfo objects to their associated WifiConfiguration + */ + @Test + public void testDifferentBssidScanResultsMatch() { + WifiConfiguration conf = + WifiConfigurationTestUtil.createPskNetwork("\"PrettyFlyForAWifi-5G\""); + ScanDetail scan1 = createScanDetailForNetwork(conf, "AA:AA:AA:AA:AA:AA"); + ScanDetail scan2 = createScanDetailForNetwork(conf, "BB:BB:BB:BB:BB:BB"); + assertFalse(scan1.getScanResult().BSSID.equals(scan2.getScanResult().BSSID)); + assertEquals(ScanResultMatchInfo.fromScanResult(scan1.getScanResult()), + ScanResultMatchInfo.fromScanResult(scan2.getScanResult())); + } + + /** + * Tests that ScanResultMatchInfo objects created for different SSIDs or security types are not + * equivalent + */ + @Test + public void testDifferentNetworkScanResultsDontMatch() { + WifiConfiguration psk = + WifiConfigurationTestUtil.createPskNetwork("\"Series Of Tubes\""); + WifiConfiguration open1 = + WifiConfigurationTestUtil.createOpenNetwork("\"Series Of Tubes\""); + WifiConfiguration open2 = + WifiConfigurationTestUtil.createOpenNetwork("\"Mom, Click Here For Internet\""); + ScanDetail scanOpen1 = createScanDetailForNetwork(open1, "AA:AA:AA:AA:AA:AA"); + ScanDetail scanOpen2 = createScanDetailForNetwork(open2, "BB:BB:BB:BB:BB:BB"); + ScanDetail scanPsk = createScanDetailForNetwork(psk, "CC:CC:CC:CC:CC:CC"); + assertTrue(ScanResultMatchInfo.fromScanResult(scanOpen1.getScanResult()) + != ScanResultMatchInfo.fromScanResult(scanOpen2.getScanResult())); + assertTrue(ScanResultMatchInfo.fromScanResult(scanOpen1.getScanResult()) + != ScanResultMatchInfo.fromScanResult(scanPsk.getScanResult())); + } + + /** + * Creates a scan detail corresponding to the provided network and given BSSID + */ + private ScanDetail createScanDetailForNetwork( + WifiConfiguration configuration, String bssid) { + return WifiConfigurationTestUtil.createScanDetailForNetwork(configuration, bssid, -40, + 2402, 0, 0); + } +} diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java index 62a68d47b..16c9f300c 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java @@ -225,7 +225,11 @@ public class WifiConfigurationTestUtil { * use a static index to avoid duplicate configurations. */ public static WifiConfiguration createOpenNetwork() { - return generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true, null, + return createOpenNetwork(createNewSSID()); + } + + public static WifiConfiguration createOpenNetwork(String ssid) { + return generateWifiConfig(TEST_NETWORK_ID, TEST_UID, ssid, true, true, null, null, SECURITY_NONE); } -- cgit v1.2.3