diff options
author | Mingguang Xu <mingguangxu@google.com> | 2020-08-26 15:36:56 -0700 |
---|---|---|
committer | Mingguang Xu <mingguangxu@google.com> | 2020-09-04 05:37:10 +0000 |
commit | e39ae652622987db1bfbb3410a9f13a813e20abd (patch) | |
tree | a4e64ca44731bd5891a0739ccb18a074aa34765a /tests | |
parent | edc209e114cb84977b592bd4ef2fe8203a68951c (diff) |
Add Adaptive Connectivity toggle
The Adaptive Connectivity toggle is enabled by default: no behavior
change in WifiScoreReport. When it is disabled the following changes
are made:
1. Send a constant score of 51 to connectivity service.
2. Never recommend a NUD check.
Bug: 166644305
Test: atest com.android.server.wifi
Signed-off-by: Mingguang Xu <mingguangxu@google.com>
Change-Id: I72762fc129c9f026ca9323b11e4e159ed2706cb7
Merged-In: I72762fc129c9f026ca9323b11e4e159ed2706cb7
Diffstat (limited to 'tests')
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiScoreReportTest.java | 74 |
1 files changed, 73 insertions, 1 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiScoreReportTest.java b/tests/wifitests/src/com/android/server/wifi/WifiScoreReportTest.java index 82dbbe941..cf83fbee3 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiScoreReportTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiScoreReportTest.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertTrue; import static org.mockito.AdditionalAnswers.answerVoid; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyLong; @@ -38,6 +39,7 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.res.Resources; +import android.database.ContentObserver; import android.net.ConnectivityManager; import android.net.LinkProperties; import android.net.Network; @@ -50,6 +52,7 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.os.Handler; import android.os.IBinder; +import android.os.Looper; import android.os.RemoteException; import android.os.test.TestLooper; @@ -60,6 +63,7 @@ import com.android.wifi.resources.R; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -102,6 +106,8 @@ public class WifiScoreReportTest extends WifiBaseTest { @Mock BssidBlocklistMonitor mBssidBlocklistMonitor; @Mock Network mNetwork; @Mock DeviceConfigFacade mDeviceConfigFacade; + @Mock Looper mWifiLooper; + @Mock FrameworkFacade mFrameworkFacade; private TestLooper mLooper; public class WifiConnectedNetworkScorerImpl extends IWifiConnectedNetworkScorer.Stub { @@ -200,10 +206,14 @@ public class WifiScoreReportTest extends WifiBaseTest { mClock = new FakeClock(); mScoringParams = new ScoringParams(); mWifiThreadRunner = new WifiThreadRunner(new Handler(mLooper.getLooper())); + when(mFrameworkFacade.getIntegerSetting(any(Context.class), + eq(WifiScoreReport.SETTINGS_SECURE_ADAPTIVE_CONNECTIVITY_ENABLED), eq(1))) + .thenReturn(1); mWifiScoreReport = new WifiScoreReport(mScoringParams, mClock, mWifiMetrics, mWifiInfo, mWifiNative, mBssidBlocklistMonitor, mWifiThreadRunner, - mDeviceConfigFacade, mContext); + mDeviceConfigFacade, mContext, mWifiLooper, mFrameworkFacade); mWifiScoreReport.setNetworkAgent(mNetworkAgent); + mWifiScoreReport.initialize(); when(mDeviceConfigFacade.getMinConfirmationDurationSendLowScoreMs()).thenReturn( DeviceConfigFacade.DEFAULT_MIN_CONFIRMATION_DURATION_SEND_LOW_SCORE_MS); when(mDeviceConfigFacade.getMinConfirmationDurationSendHighScoreMs()).thenReturn( @@ -999,4 +1009,66 @@ public class WifiScoreReportTest extends WifiBaseTest { mLooper.dispatchAll(); verify(mNetworkAgent).sendNetworkScore(53); } + + /** + * Verify NUD check is not recommended and the score of 51 is sent to connectivity service + * when adaptive connectivity is disabled for AOSP scorer. + */ + @Test + public void verifyNudCheckAndScoreIfToggleOffForAospScorer() throws Exception { + mWifiInfo.setFrequency(5220); + mWifiInfo.setRssi(-85); + ArgumentCaptor<ContentObserver> observer = ArgumentCaptor.forClass(ContentObserver.class); + verify(mFrameworkFacade).registerContentObserver( + any(), any(), eq(true), observer.capture()); + when(mFrameworkFacade.getIntegerSetting(any(Context.class), + eq(WifiScoreReport.SETTINGS_SECURE_ADAPTIVE_CONNECTIVITY_ENABLED), eq(1))) + .thenReturn(0); + observer.getValue().onChange(true); + mWifiScoreReport.calculateAndReportScore(); + assertFalse(mWifiScoreReport.shouldCheckIpLayer()); + verify(mNetworkAgent).sendNetworkScore(51); + } + + /** + * Verify NUD check is not recommended and the score of 51 is sent to connectivity service + * when adaptive connectivity is disabled for external Wi-Fi scorer. + */ + @Test + public void verifyNudCheckAndScoreIfToggleOffForExternalScorer() throws Exception { + WifiConnectedNetworkScorerImpl scorerImpl = new WifiConnectedNetworkScorerImpl(); + // Register Client for verification. + mWifiScoreReport.setWifiConnectedNetworkScorer(mAppBinder, scorerImpl); + when(mNetwork.getNetId()).thenReturn(TEST_NETWORK_ID); + mWifiScoreReport.startConnectedNetworkScorer(TEST_NETWORK_ID); + mClock.mStepMillis = 0; + when(mContext.getResources().getBoolean( + R.bool.config_wifiMinConfirmationDurationSendNetworkScoreEnabled)).thenReturn(true); + when(mDeviceConfigFacade.getMinConfirmationDurationSendHighScoreMs()).thenReturn(4000); + + ArgumentCaptor<ContentObserver> observer = ArgumentCaptor.forClass(ContentObserver.class); + verify(mFrameworkFacade).registerContentObserver( + any(), any(), eq(true), observer.capture()); + when(mFrameworkFacade.getIntegerSetting(any(Context.class), + eq(WifiScoreReport.SETTINGS_SECURE_ADAPTIVE_CONNECTIVITY_ENABLED), eq(1))) + .thenReturn(0); + observer.getValue().onChange(true); + + mClock.mWallClockMillis = 10; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 49); + mLooper.dispatchAll(); + verify(mNetworkAgent, never()).sendNetworkScore(anyInt()); + assertFalse(mWifiScoreReport.shouldCheckIpLayer()); + + mClock.mWallClockMillis = 10 + + mDeviceConfigFacade.DEFAULT_MIN_CONFIRMATION_DURATION_SEND_LOW_SCORE_MS - 1; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 48); + mLooper.dispatchAll(); + verify(mNetworkAgent, never()).sendNetworkScore(anyInt()); + mClock.mWallClockMillis = 10 + + mDeviceConfigFacade.DEFAULT_MIN_CONFIRMATION_DURATION_SEND_LOW_SCORE_MS; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 47); + mLooper.dispatchAll(); + verify(mNetworkAgent).sendNetworkScore(51); + } } |