diff --git a/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java b/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java index 132ca9247d..e2a583b6ef 100644 --- a/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java +++ b/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java @@ -16,7 +16,10 @@ package android.net.wifi.cts; -import java.util.List; +import dalvik.annotation.TestLevel; +import dalvik.annotation.TestTargetClass; +import dalvik.annotation.TestTargetNew; +import dalvik.annotation.TestTargets; import android.content.BroadcastReceiver; import android.content.Context; @@ -28,10 +31,11 @@ import android.net.wifi.WifiManager; import android.net.wifi.WifiConfiguration.Status; import android.net.wifi.WifiManager.WifiLock; import android.test.AndroidTestCase; -import dalvik.annotation.TestLevel; -import dalvik.annotation.TestTargetClass; -import dalvik.annotation.TestTargetNew; -import dalvik.annotation.TestTargets; +import android.util.Log; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; @TestTargetClass(WifiManager.class) public class WifiManagerTest extends AndroidTestCase { @@ -341,58 +345,87 @@ public class WifiManagerTest extends AndroidTestCase { ) }) public void testWifiManagerNetWork() throws Exception { - WifiConfiguration wifiConfiguration; - // add a WifiConfig - final int notExist = -1; - List wifiConfiguredNetworks = mWifiManager.getConfiguredNetworks(); - int pos = findConfiguredNetworks(SSID1, wifiConfiguredNetworks); - if (notExist != pos) { + // store the list of enabled networks, so they can be re-enabled after test completes + Set enabledSsids = getEnabledNetworks(mWifiManager.getConfiguredNetworks()); + try { + WifiConfiguration wifiConfiguration; + // add a WifiConfig + final int notExist = -1; + List wifiConfiguredNetworks = mWifiManager.getConfiguredNetworks(); + int pos = findConfiguredNetworks(SSID1, wifiConfiguredNetworks); + if (notExist != pos) { + wifiConfiguration = wifiConfiguredNetworks.get(pos); + mWifiManager.removeNetwork(wifiConfiguration.networkId); + } + pos = findConfiguredNetworks(SSID1, wifiConfiguredNetworks); + assertEquals(notExist, pos); + final int size = wifiConfiguredNetworks.size(); + + wifiConfiguration = new WifiConfiguration(); + wifiConfiguration.SSID = SSID1; + int netId = mWifiManager.addNetwork(wifiConfiguration); + assertTrue(existSSID(SSID1)); + + wifiConfiguredNetworks = mWifiManager.getConfiguredNetworks(); + assertEquals(size + 1, wifiConfiguredNetworks.size()); + pos = findConfiguredNetworks(SSID1, wifiConfiguredNetworks); + assertTrue(notExist != pos); + + // Enable & disable network + boolean disableOthers = false; + assertTrue(mWifiManager.enableNetwork(netId, disableOthers)); + wifiConfiguration = mWifiManager.getConfiguredNetworks().get(pos); + assertDisableOthers(wifiConfiguration, disableOthers); + assertEquals(Status.ENABLED, wifiConfiguration.status); + disableOthers = true; + + assertTrue(mWifiManager.enableNetwork(netId, disableOthers)); + wifiConfiguration = mWifiManager.getConfiguredNetworks().get(pos); + assertDisableOthers(wifiConfiguration, disableOthers); + + assertTrue(mWifiManager.disableNetwork(netId)); + wifiConfiguration = mWifiManager.getConfiguredNetworks().get(pos); + assertEquals(Status.DISABLED, wifiConfiguration.status); + + // Update a WifiConfig wifiConfiguration = wifiConfiguredNetworks.get(pos); - mWifiManager.removeNetwork(wifiConfiguration.networkId); + wifiConfiguration.SSID = SSID2; + netId = mWifiManager.updateNetwork(wifiConfiguration); + assertFalse(existSSID(SSID1)); + assertTrue(existSSID(SSID2)); + + // Remove a WifiConfig + assertTrue(mWifiManager.removeNetwork(netId)); + assertFalse(mWifiManager.removeNetwork(notExist)); + assertFalse(existSSID(SSID1)); + assertFalse(existSSID(SSID2)); + + assertTrue(mWifiManager.saveConfiguration()); + } finally { + reEnableNetworks(enabledSsids, mWifiManager.getConfiguredNetworks()); + mWifiManager.saveConfiguration(); } - pos = findConfiguredNetworks(SSID1, wifiConfiguredNetworks); - assertEquals(notExist, pos); - final int size = wifiConfiguredNetworks.size(); + } - wifiConfiguration = new WifiConfiguration(); - wifiConfiguration.SSID = SSID1; - int netId = mWifiManager.addNetwork(wifiConfiguration); - assertTrue(existSSID(SSID1)); + private Set getEnabledNetworks(List configuredNetworks) { + Set ssids = new HashSet(); + for (WifiConfiguration wifiConfig : configuredNetworks) { + if (Status.ENABLED == wifiConfig.status || Status.CURRENT == wifiConfig.status) { + ssids.add(wifiConfig.SSID); + Log.i(TAG, String.format("remembering enabled network %s", wifiConfig.SSID)); + } + } + return ssids; + } - wifiConfiguredNetworks = mWifiManager.getConfiguredNetworks(); - assertEquals(size + 1, wifiConfiguredNetworks.size()); - pos = findConfiguredNetworks(SSID1, wifiConfiguredNetworks); - assertTrue(notExist != pos); - - // Enable & disable network - boolean disableOthers = false; - assertTrue(mWifiManager.enableNetwork(netId, disableOthers)); - wifiConfiguration = mWifiManager.getConfiguredNetworks().get(pos); - assertDisableOthers(wifiConfiguration, disableOthers); - assertEquals(Status.ENABLED, wifiConfiguration.status); - disableOthers = true; - assertTrue(mWifiManager.enableNetwork(netId, disableOthers)); - wifiConfiguration = mWifiManager.getConfiguredNetworks().get(pos); - assertDisableOthers(wifiConfiguration, disableOthers); - - assertTrue(mWifiManager.disableNetwork(netId)); - wifiConfiguration = mWifiManager.getConfiguredNetworks().get(pos); - assertEquals(Status.DISABLED, wifiConfiguration.status); - - // Update a WifiConfig - wifiConfiguration = wifiConfiguredNetworks.get(pos); - wifiConfiguration.SSID = SSID2; - netId = mWifiManager.updateNetwork(wifiConfiguration); - assertFalse(existSSID(SSID1)); - assertTrue(existSSID(SSID2)); - - // Remove a WifiConfig - assertTrue(mWifiManager.removeNetwork(netId)); - assertFalse(mWifiManager.removeNetwork(notExist)); - assertFalse(existSSID(SSID1)); - assertFalse(existSSID(SSID2)); - - assertTrue(mWifiManager.saveConfiguration()); + private void reEnableNetworks(Set enabledSsids, + List configuredNetworks) { + for (WifiConfiguration wifiConfig : configuredNetworks) { + if (enabledSsids.contains(wifiConfig.SSID)) { + mWifiManager.enableNetwork(wifiConfig.networkId, false); + Log.i(TAG, String.format("re-enabling network %s", wifiConfig.SSID)); + } + } } @TestTargets({