diff options
-rw-r--r-- | service/java/com/android/server/wifi/DeviceConfigFacade.java | 30 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java | 19 |
2 files changed, 49 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/DeviceConfigFacade.java b/service/java/com/android/server/wifi/DeviceConfigFacade.java index c5ca3c913..1c59797fe 100644 --- a/service/java/com/android/server/wifi/DeviceConfigFacade.java +++ b/service/java/com/android/server/wifi/DeviceConfigFacade.java @@ -19,10 +19,13 @@ package com.android.server.wifi; import android.content.Context; import android.os.Handler; import android.provider.DeviceConfig; +import android.util.ArraySet; import com.android.internal.annotations.VisibleForTesting; import com.android.wifi.R; +import java.util.Collections; +import java.util.Set; import java.util.concurrent.TimeUnit; /** @@ -60,6 +63,7 @@ public class DeviceConfigFacade { private int mDataStallRxTputThrKbps; private int mDataStallTxPerThr; private int mDataStallCcaLevelThr; + private Set<String> mRandomizationFlakySsidHotlist; public DeviceConfigFacade(Context context, Handler handler, WifiMetrics wifiMetrics) { mContext = context; @@ -101,6 +105,25 @@ public class DeviceConfigFacade { mWifiMetrics.setDataStallRxTputThrKbps(mDataStallRxTputThrKbps); mWifiMetrics.setDataStallTxPerThr(mDataStallTxPerThr); mWifiMetrics.setDataStallCcaLevelThr(mDataStallCcaLevelThr); + + createUnmodifiableRandomizationFlakySsidHotlist(); + } + + private void createUnmodifiableRandomizationFlakySsidHotlist() { + String ssidHotlist = DeviceConfig.getString(NAMESPACE, + "randomization_flaky_ssid_hotlist", ""); + mRandomizationFlakySsidHotlist = new ArraySet<String>(); + String[] ssidHotlistArray = ssidHotlist.split(","); + for (int i = 0; i < ssidHotlistArray.length; i++) { + String cur = ssidHotlistArray[i]; + if (cur.length() == 0) { + continue; + } + // Make sure the SSIDs are quoted. Server side should not quote ssids. + mRandomizationFlakySsidHotlist.add("\"" + cur + "\""); + } + mRandomizationFlakySsidHotlist = + Collections.unmodifiableSet(mRandomizationFlakySsidHotlist); } /** @@ -158,4 +181,11 @@ public class DeviceConfigFacade { public int getDataStallCcaLevelThr() { return mDataStallCcaLevelThr; } + + /** + * Gets the Set of SSIDs in the flaky SSID hotlist. + */ + public Set<String> getRandomizationFlakySsidHotlist() { + return mRandomizationFlakySsidHotlist; + } } diff --git a/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java b/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java index e23d402aa..900d3a7f3 100644 --- a/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java +++ b/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java @@ -28,6 +28,7 @@ import android.os.Handler; import android.os.test.TestLooper; import android.provider.DeviceConfig; import android.provider.DeviceConfig.OnPropertiesChangedListener; +import android.util.ArraySet; import androidx.test.filters.SmallTest; @@ -42,6 +43,9 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.MockitoSession; +import java.util.Collections; +import java.util.Set; + /** * Unit tests for {@link com.android.server.wifi.DeviceConfigFacade}. @@ -88,6 +92,12 @@ public class DeviceConfigFacadeTest extends WifiBaseTest { return def; } }); + when(DeviceConfig.getString(anyString(), anyString(), anyString())) + .then(new AnswerWithArguments() { + public String answer(String namespace, String field, String def) { + return def; + } + }); mDeviceConfigFacade = new DeviceConfigFacade(mContext, new Handler(mLooper.getLooper()), mWifiMetrics); @@ -125,6 +135,8 @@ public class DeviceConfigFacadeTest extends WifiBaseTest { mDeviceConfigFacade.getDataStallTxPerThr()); assertEquals(DeviceConfigFacade.DEFAULT_DATA_STALL_CCA_LEVEL_THR, mDeviceConfigFacade.getDataStallCcaLevelThr()); + assertEquals(Collections.emptySet(), + mDeviceConfigFacade.getRandomizationFlakySsidHotlist()); // Simulate updating the fields when(DeviceConfig.getBoolean(anyString(), eq("abnormal_connection_bugreport_enabled"), @@ -144,9 +156,14 @@ public class DeviceConfigFacadeTest extends WifiBaseTest { anyInt())).thenReturn(95); when(DeviceConfig.getInt(anyString(), eq("data_stall_cca_level_thr"), anyInt())).thenReturn(80); + when(DeviceConfig.getString(anyString(), eq("randomization_flaky_ssid_hotlist"), + anyString())).thenReturn("ssid_1,ssid_2"); mOnPropertiesChangedListenerCaptor.getValue().onPropertiesChanged(null); // Verifying fields are updated to the new values + Set<String> randomizationFlakySsidSet = new ArraySet<>(); + randomizationFlakySsidSet.add("\"ssid_1\""); + randomizationFlakySsidSet.add("\"ssid_2\""); assertEquals(true, mDeviceConfigFacade.isAbnormalConnectionBugreportEnabled()); assertEquals(100, mDeviceConfigFacade.getAbnormalConnectionDurationMs()); assertEquals(true, mDeviceConfigFacade.isAggressiveMacRandomizationSsidWhitelistEnabled()); @@ -155,5 +172,7 @@ public class DeviceConfigFacadeTest extends WifiBaseTest { assertEquals(1500, mDeviceConfigFacade.getDataStallRxTputThrKbps()); assertEquals(95, mDeviceConfigFacade.getDataStallTxPerThr()); assertEquals(80, mDeviceConfigFacade.getDataStallCcaLevelThr()); + assertEquals(randomizationFlakySsidSet, + mDeviceConfigFacade.getRandomizationFlakySsidHotlist()); } } |