diff options
-rw-r--r-- | libs/WifiTrackerLib/res/values-ar/strings.xml | 2 | ||||
-rw-r--r-- | libs/WifiTrackerLib/res/values-bs/arrays.xml | 2 | ||||
-rw-r--r-- | libs/WifiTrackerLib/res/values-fa/arrays.xml | 2 | ||||
-rw-r--r-- | libs/WifiTrackerLib/res/values-fa/strings.xml | 2 | ||||
-rw-r--r-- | libs/WifiTrackerLib/res/values-gu/strings.xml | 2 | ||||
-rw-r--r-- | libs/WifiTrackerLib/res/values-hy/strings.xml | 2 | ||||
-rw-r--r-- | libs/WifiTrackerLib/res/values-ky/arrays.xml | 2 | ||||
-rw-r--r-- | libs/WifiTrackerLib/res/values-mr/strings.xml | 2 | ||||
-rw-r--r-- | service/java/com/android/server/wifi/ClientModeImpl.java | 3 | ||||
-rw-r--r-- | service/java/com/android/server/wifi/DeviceConfigFacade.java | 35 | ||||
-rw-r--r-- | service/java/com/android/server/wifi/WifiScoreReport.java | 63 | ||||
-rw-r--r-- | service/res/values-eu/strings.xml | 2 | ||||
-rw-r--r-- | service/res/values/config.xml | 3 | ||||
-rw-r--r-- | service/res/values/overlayable.xml | 1 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java | 10 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiScoreReportTest.java | 154 |
16 files changed, 262 insertions, 25 deletions
diff --git a/libs/WifiTrackerLib/res/values-ar/strings.xml b/libs/WifiTrackerLib/res/values-ar/strings.xml index ccb2dfa96..ef0f10748 100644 --- a/libs/WifiTrackerLib/res/values-ar/strings.xml +++ b/libs/WifiTrackerLib/res/values-ar/strings.xml @@ -23,7 +23,7 @@ <string name="wifi_no_internet" msgid="4461212237521310895">"لا يتوفّر اتصال بالإنترنت"</string> <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"مشكلة في المصادقة"</string> <string name="wifi_check_password_try_again" msgid="2643230209986217827">"يُرجى التحقق من كلمة المرور وإعادة المحاولة"</string> - <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"تعذّر إعداد عنوان IP"</string> + <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"تعذّرت تهيئة عنوان IP"</string> <string name="wifi_disabled_generic" msgid="8307050327779256414">"غير مفعّلة"</string> <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"نقطة الوصول ممتلئة مؤقتًا"</string> <string name="wifi_disconnected" msgid="3720926757662831062">"غير متصلة"</string> diff --git a/libs/WifiTrackerLib/res/values-bs/arrays.xml b/libs/WifiTrackerLib/res/values-bs/arrays.xml index 9428a3763..727f5d75a 100644 --- a/libs/WifiTrackerLib/res/values-bs/arrays.xml +++ b/libs/WifiTrackerLib/res/values-bs/arrays.xml @@ -27,7 +27,7 @@ <item msgid="1176401854208153464">"Autentifikacija…"</item> <item msgid="1377026397901197257">"Dobivanje IP adrese…"</item> <item msgid="7627139816052121509">"Povezano"</item> - <item msgid="1598801023719359130">"Obustavljeno"</item> + <item msgid="1598801023719359130">"Suspendirano"</item> <item msgid="9160765456671002324">"Prekidanje veze…"</item> <item msgid="8013176736494493734">"Veza je prekinuta"</item> <item msgid="4077393480368783785">"Neuspješno"</item> diff --git a/libs/WifiTrackerLib/res/values-fa/arrays.xml b/libs/WifiTrackerLib/res/values-fa/arrays.xml index 51ef4b84b..af40e8f4c 100644 --- a/libs/WifiTrackerLib/res/values-fa/arrays.xml +++ b/libs/WifiTrackerLib/res/values-fa/arrays.xml @@ -24,7 +24,7 @@ <item msgid="8763475525292171481"></item> <item msgid="903308535197209786">"درحال اسکن کردن…"</item> <item msgid="6222852518007967736">"درحال اتصال…"</item> - <item msgid="1176401854208153464">"درحال اصالتسنجی…"</item> + <item msgid="1176401854208153464">"درحال احراز هویت…"</item> <item msgid="1377026397901197257">"درحال دریافت نشانی IP…"</item> <item msgid="7627139816052121509">"متصل"</item> <item msgid="1598801023719359130">"معلق"</item> diff --git a/libs/WifiTrackerLib/res/values-fa/strings.xml b/libs/WifiTrackerLib/res/values-fa/strings.xml index dff0ebe00..70f79b695 100644 --- a/libs/WifiTrackerLib/res/values-fa/strings.xml +++ b/libs/WifiTrackerLib/res/values-fa/strings.xml @@ -21,7 +21,7 @@ <string name="saved_network" msgid="6241977554502802914">"ذخیرهشده توسط <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="wifi_no_internet_no_reconnect" msgid="3089980800841926268">"اتصال بهطور خودکار انجام نمیشود"</string> <string name="wifi_no_internet" msgid="4461212237521310895">"بدون دسترسی به اینترنت"</string> - <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"مشکل اصالتسنجی"</string> + <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"مشکل احراز هویت"</string> <string name="wifi_check_password_try_again" msgid="2643230209986217827">"گذرواژه را بررسی و دوباره امتحان کنید"</string> <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"پیکربندی IP انجام نشد"</string> <string name="wifi_disabled_generic" msgid="8307050327779256414">"غیرفعال شد"</string> diff --git a/libs/WifiTrackerLib/res/values-gu/strings.xml b/libs/WifiTrackerLib/res/values-gu/strings.xml index 181360418..e387dd397 100644 --- a/libs/WifiTrackerLib/res/values-gu/strings.xml +++ b/libs/WifiTrackerLib/res/values-gu/strings.xml @@ -33,7 +33,7 @@ <string name="connected_via_app" msgid="1818040967936972127">"<xliff:g id="NAME">%1$s</xliff:g> દ્વારા કનેક્ટ થયેલ"</string> <string name="available_via_app" msgid="9110324040292242769">"<xliff:g id="NAME">%1$s</xliff:g> મારફતે ઉપલબ્ધ"</string> <string name="connected_via_network_scorer" msgid="209764314005159012">"<xliff:g id="NAME">%1$s</xliff:g> મારફતે ઑટોમૅટિક રીતે કનેક્ટ કર્યું છે"</string> - <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"નેટવર્ક રેટિંગ પ્રદાતા દ્વારા ઑટોમૅટિક રીતે કનેક્ટ થયું"</string> + <string name="connected_via_network_scorer_default" msgid="3084818437004202462">"નેટવર્ક રેટિંગ પ્રદાતા દ્વારા આપમેળે કનેક્ટ થયું"</string> <string name="wifi_limited_connection" msgid="3646701342701276239">"મર્યાદિત કનેક્શન"</string> <string name="private_dns_broken" msgid="2212227512243587416">"ખાનગી DNS સર્વર ઍક્સેસ કરી શકાતા નથી"</string> <string name="wifi_connected_no_internet" msgid="7273909077465731259">"કોઈ ઇન્ટરનેટ નથી"</string> diff --git a/libs/WifiTrackerLib/res/values-hy/strings.xml b/libs/WifiTrackerLib/res/values-hy/strings.xml index 34c1fbdf3..60b2389c4 100644 --- a/libs/WifiTrackerLib/res/values-hy/strings.xml +++ b/libs/WifiTrackerLib/res/values-hy/strings.xml @@ -49,7 +49,7 @@ <string name="imsi_protection_warning" msgid="3207104049473134195">"Այս ցանցը ստանում է եզակի ID, որի օգնությամբ հնարավոր է հետագծել սարքի տեղադրությունը։ "<annotation id="url">"Իմանալ ավելին"</annotation></string> <string name="speed_label_very_slow" msgid="2401582671941367179">"Շատ դանդաղ"</string> <string name="speed_label_slow" msgid="8410385703344502127">"Դանդաղ"</string> - <string name="speed_label_okay" msgid="3741857805086997968">"Լավ"</string> + <string name="speed_label_okay" msgid="3741857805086997968">"Հաստատել"</string> <string name="speed_label_medium" msgid="3175703848952862009">"Միջին"</string> <string name="speed_label_fast" msgid="8344116097613544322">"Արագ"</string> <string name="speed_label_very_fast" msgid="1595806641512447877">"Շատ արագ"</string> diff --git a/libs/WifiTrackerLib/res/values-ky/arrays.xml b/libs/WifiTrackerLib/res/values-ky/arrays.xml index 00ab8f678..8bcf77784 100644 --- a/libs/WifiTrackerLib/res/values-ky/arrays.xml +++ b/libs/WifiTrackerLib/res/values-ky/arrays.xml @@ -26,7 +26,7 @@ <item msgid="6222852518007967736">"Туташууда…"</item> <item msgid="1176401854208153464">"Аныктыгы текшерилүүдө…"</item> <item msgid="1377026397901197257">"IP дареги алынууда…"</item> - <item msgid="7627139816052121509">"Туташып турат"</item> + <item msgid="7627139816052121509">"Туташты"</item> <item msgid="1598801023719359130">"Убактылуу токтотулду"</item> <item msgid="9160765456671002324">"Ажыратылууда…"</item> <item msgid="8013176736494493734">"Ажыратылды"</item> diff --git a/libs/WifiTrackerLib/res/values-mr/strings.xml b/libs/WifiTrackerLib/res/values-mr/strings.xml index 718d484d3..fc7811f18 100644 --- a/libs/WifiTrackerLib/res/values-mr/strings.xml +++ b/libs/WifiTrackerLib/res/values-mr/strings.xml @@ -23,7 +23,7 @@ <string name="wifi_no_internet" msgid="4461212237521310895">"इंटरनेट अॅक्सेस नाही"</string> <string name="wifi_disabled_password_failure" msgid="3015007143699702403">"ऑथेंटिकेशन समस्या"</string> <string name="wifi_check_password_try_again" msgid="2643230209986217827">"पासवर्ड तपासा आणि पुन्हा प्रयत्न करा"</string> - <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP कॉंफिगरेशन अयशस्वी"</string> + <string name="wifi_disabled_network_failure" msgid="6506742207778007439">"IP कॉन्फिगरेशन अयशस्वी"</string> <string name="wifi_disabled_generic" msgid="8307050327779256414">"अक्षम"</string> <string name="wifi_ap_unable_to_handle_new_sta" msgid="6552198761671428871">"अॅक्सेस पॉइंट तात्पुरते भरलेले"</string> <string name="wifi_disconnected" msgid="3720926757662831062">"डिस्कनेक्ट केले"</string> diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java index 6c31185da..e90064679 100644 --- a/service/java/com/android/server/wifi/ClientModeImpl.java +++ b/service/java/com/android/server/wifi/ClientModeImpl.java @@ -811,7 +811,8 @@ public class ClientModeImpl extends StateMachine { mWifiScoreReport = new WifiScoreReport(mWifiInjector.getScoringParams(), mClock, mWifiMetrics, mWifiInfo, mWifiNative, mBssidBlocklistMonitor, - mWifiInjector.getWifiThreadRunner()); + mWifiInjector.getWifiThreadRunner(), mWifiInjector.getDeviceConfigFacade(), + mContext); mNetworkCapabilitiesFilter = new NetworkCapabilities.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) diff --git a/service/java/com/android/server/wifi/DeviceConfigFacade.java b/service/java/com/android/server/wifi/DeviceConfigFacade.java index 0b707701f..3856ff1fd 100644 --- a/service/java/com/android/server/wifi/DeviceConfigFacade.java +++ b/service/java/com/android/server/wifi/DeviceConfigFacade.java @@ -129,6 +129,16 @@ public class DeviceConfigFacade { // Default health monitor firmware alert valid time. // -1 disables firmware alert time check static final int DEFAULT_HEALTH_MONITOR_FW_ALERT_VALID_TIME_MS = -1; + // Default minimum confirmation duration for sending network score to connectivity service + // when score breaches low. The actual confirmation duration is longer in general and it + // depends on the score evaluation period normally controlled by + // 'com.android.wifi.resources.R' config_wifiPollRssiIntervalMilliseconds. + static final int DEFAULT_MIN_CONFIRMATION_DURATION_SEND_LOW_SCORE_MS = 5000; + // Default minimum confirmation duration for sending network score to connectivity service + // when score breaches high. The actual confirmation duration is longer in general and it + // depends on the score evaluation period normally controlled by + // 'com.android.wifi.resources.R' config_wifiPollRssiIntervalMilliseconds. + static final int DEFAULT_MIN_CONFIRMATION_DURATION_SEND_HIGH_SCORE_MS = 0; // Cached values of fields updated via updateDeviceConfigFlags() private boolean mIsAbnormalConnectionBugreportEnabled; private int mAbnormalConnectionDurationMs; @@ -177,6 +187,8 @@ public class DeviceConfigFacade { private int mNonstationaryScanRssiValidTimeMs; private int mStationaryScanRssiValidTimeMs; private int mHealthMonitorFwAlertValidTimeMs; + private int mMinConfirmationDurationSendLowScoreMs; + private int mMinConfirmationDurationSendHighScoreMs; public DeviceConfigFacade(Context context, Handler handler, WifiMetrics wifiMetrics) { mContext = context; @@ -324,7 +336,12 @@ public class DeviceConfigFacade { "health_monitor_fw_alert_valid_time_ms", DEFAULT_HEALTH_MONITOR_FW_ALERT_VALID_TIME_MS); mWifiMetrics.setHealthMonitorRssiPollValidTimeMs(mHealthMonitorRssiPollValidTimeMs); - + mMinConfirmationDurationSendLowScoreMs = DeviceConfig.getInt(NAMESPACE, + "min_confirmation_duration_send_low_score_ms", + DEFAULT_MIN_CONFIRMATION_DURATION_SEND_LOW_SCORE_MS); + mMinConfirmationDurationSendHighScoreMs = DeviceConfig.getInt(NAMESPACE, + "min_confirmation_duration_send_high_score_ms", + DEFAULT_MIN_CONFIRMATION_DURATION_SEND_HIGH_SCORE_MS); } private Set<String> getUnmodifiableSetQuoted(String key) { @@ -673,4 +690,20 @@ public class DeviceConfigFacade { public int getHealthMonitorFwAlertValidTimeMs() { return mHealthMonitorFwAlertValidTimeMs; } + + /** + * Gets the minimum confirmation duration for sending network score to connectivity service + * when score breaches low. + */ + public int getMinConfirmationDurationSendLowScoreMs() { + return mMinConfirmationDurationSendLowScoreMs; + } + + /** + * Gets the minimum confirmation duration for sending network score to connectivity service + * when score breaches high. + */ + public int getMinConfirmationDurationSendHighScoreMs() { + return mMinConfirmationDurationSendHighScoreMs; + } } diff --git a/service/java/com/android/server/wifi/WifiScoreReport.java b/service/java/com/android/server/wifi/WifiScoreReport.java index fa0ba6a3c..a2c3e6c62 100644 --- a/service/java/com/android/server/wifi/WifiScoreReport.java +++ b/service/java/com/android/server/wifi/WifiScoreReport.java @@ -16,6 +16,7 @@ package com.android.server.wifi; +import android.content.Context; import android.net.Network; import android.net.NetworkAgent; import android.net.wifi.IScoreUpdateObserver; @@ -26,6 +27,8 @@ import android.os.IBinder; import android.os.RemoteException; import android.util.Log; +import com.android.wifi.resources.R; + import java.io.FileDescriptor; import java.io.PrintWriter; import java.text.SimpleDateFormat; @@ -62,7 +65,9 @@ public class WifiScoreReport { private int mSessionNumber = 0; // not to be confused with sessionid, this just counts resets private String mInterfaceName; private final BssidBlocklistMonitor mBssidBlocklistMonitor; - private long mLastScoreBreachLowTimeMillis = -1; + private final Context mContext; + private long mLastScoreBreachLowTimeMillis = INVALID_WALL_CLOCK_MILLIS; + private long mLastScoreBreachHighTimeMillis = INVALID_WALL_CLOCK_MILLIS; ConnectedScore mAggressiveConnectedScore; VelocityBasedConnectedScore mVelocityBasedConnectedScore; @@ -72,6 +77,7 @@ public class WifiScoreReport { WifiInfo mWifiInfo; WifiNative mWifiNative; WifiThreadRunner mWifiThreadRunner; + DeviceConfigFacade mDeviceConfigFacade; /** * Callback proxy. See {@link android.net.wifi.WifiManager.ScoreUpdateObserver}. @@ -89,10 +95,6 @@ public class WifiScoreReport { + " score=" + score); return; } - if (mNetworkAgent != null) { - mNetworkAgent.sendNetworkScore(score); - } - long millis = mClock.getWallClockMillis(); if (score < ConnectedScore.WIFI_TRANSITION_SCORE) { if (mScore >= ConnectedScore.WIFI_TRANSITION_SCORE) { @@ -101,7 +103,14 @@ public class WifiScoreReport { } else { mLastScoreBreachLowTimeMillis = INVALID_WALL_CLOCK_MILLIS; } - + if (score > ConnectedScore.WIFI_TRANSITION_SCORE) { + if (mScore <= ConnectedScore.WIFI_TRANSITION_SCORE) { + mLastScoreBreachHighTimeMillis = millis; + } + } else { + mLastScoreBreachHighTimeMillis = INVALID_WALL_CLOCK_MILLIS; + } + reportNetworkScoreToConnectivityServiceIfNecessary(score); mScore = score; updateWifiMetrics(millis, -1, mScore); }); @@ -167,6 +176,34 @@ public class WifiScoreReport { } /** + * Report network score to connectivity service. + */ + private void reportNetworkScoreToConnectivityServiceIfNecessary(int score) { + if (mNetworkAgent == null) { + return; + } + if (mWifiConnectedNetworkScorerHolder == null && score == mWifiInfo.getScore()) { + return; + } + if (mWifiConnectedNetworkScorerHolder != null + && mContext.getResources().getBoolean( + R.bool.config_wifiMinConfirmationDurationSendNetworkScoreEnabled)) { + long millis = mClock.getWallClockMillis(); + if (mLastScoreBreachLowTimeMillis != INVALID_WALL_CLOCK_MILLIS + && (millis - mLastScoreBreachLowTimeMillis) + < mDeviceConfigFacade.getMinConfirmationDurationSendLowScoreMs()) { + return; + } + if (mLastScoreBreachHighTimeMillis != INVALID_WALL_CLOCK_MILLIS + && (millis - mLastScoreBreachHighTimeMillis) + < mDeviceConfigFacade.getMinConfirmationDurationSendHighScoreMs()) { + return; + } + } + mNetworkAgent.sendNetworkScore(score); + } + + /** * Container for storing info about external scorer and tracking its death. */ private final class WifiConnectedNetworkScorerHolder implements IBinder.DeathRecipient { @@ -251,7 +288,8 @@ public class WifiScoreReport { WifiScoreReport(ScoringParams scoringParams, Clock clock, WifiMetrics wifiMetrics, WifiInfo wifiInfo, WifiNative wifiNative, BssidBlocklistMonitor bssidBlocklistMonitor, - WifiThreadRunner wifiThreadRunner) { + WifiThreadRunner wifiThreadRunner, DeviceConfigFacade deviceConfigFacade, + Context context) { mScoringParams = scoringParams; mClock = clock; mAggressiveConnectedScore = new AggressiveConnectedScore(scoringParams, clock); @@ -261,6 +299,8 @@ public class WifiScoreReport { mWifiNative = wifiNative; mBssidBlocklistMonitor = bssidBlocklistMonitor; mWifiThreadRunner = wifiThreadRunner; + mDeviceConfigFacade = deviceConfigFacade; + mContext = context; } /** @@ -276,6 +316,7 @@ public class WifiScoreReport { } mLastDownwardBreachTimeMillis = 0; mLastScoreBreachLowTimeMillis = INVALID_WALL_CLOCK_MILLIS; + mLastScoreBreachHighTimeMillis = INVALID_WALL_CLOCK_MILLIS; if (mVerboseLoggingEnabled) Log.d(TAG, "reset"); } @@ -357,12 +398,7 @@ public class WifiScoreReport { } //report score - if (score != mWifiInfo.getScore()) { - if (mNetworkAgent != null) { - mNetworkAgent.sendNetworkScore(score); - } - } - + reportNetworkScoreToConnectivityServiceIfNecessary(score); updateWifiMetrics(millis, s2, score); mScore = score; } @@ -611,6 +647,7 @@ public class WifiScoreReport { } mWifiConnectedNetworkScorerHolder.startSession(sessionId); mLastScoreBreachLowTimeMillis = INVALID_WALL_CLOCK_MILLIS; + mLastScoreBreachHighTimeMillis = INVALID_WALL_CLOCK_MILLIS; } /** diff --git a/service/res/values-eu/strings.xml b/service/res/values-eu/strings.xml index 822d724e1..b1f1fed87 100644 --- a/service/res/values-eu/strings.xml +++ b/service/res/values-eu/strings.xml @@ -55,7 +55,7 @@ <string name="wifi_p2p_invitation_sent_title" msgid="6684220950195735982">"Gonbidapena bidali da"</string> <string name="wifi_p2p_invitation_to_connect_title" msgid="5020192895172598089">"Konektatzeko gonbidapena"</string> <string name="wifi_p2p_from_message" msgid="3857436922001981191">"Igorlea:"</string> - <string name="wifi_p2p_to_message" msgid="6664932426704362946">"Hartzailea:"</string> + <string name="wifi_p2p_to_message" msgid="6664932426704362946">"Hartzaileak:"</string> <string name="wifi_p2p_enter_pin_message" msgid="5661843905965463456">"Idatzi beharrezko PINa:"</string> <string name="wifi_p2p_show_pin_message" msgid="4332876077723766909">"PINa:"</string> <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="3372859876274663802">"Tableta wifi-saretik deskonektatuko da <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailura konektatuta dagoen bitartean"</string> diff --git a/service/res/values/config.xml b/service/res/values/config.xml index cc80f608c..a0c73cc3b 100644 --- a/service/res/values/config.xml +++ b/service/res/values/config.xml @@ -462,4 +462,7 @@ <!-- integer indicating additional disconnect delay (in ms) after IMS onLost() indication is received --> <integer translatable="false" name="config_wifiDelayDisconnectOnImsLostMs">0</integer> + + <!-- Enable adding minimum confirmation duration when sending network score to connectivity service. --> + <bool translatable="false" name="config_wifiMinConfirmationDurationSendNetworkScoreEnabled">false</bool> </resources> diff --git a/service/res/values/overlayable.xml b/service/res/values/overlayable.xml index a4b7011b0..882890f17 100644 --- a/service/res/values/overlayable.xml +++ b/service/res/values/overlayable.xml @@ -144,6 +144,7 @@ <item type="integer" name="config_wifiMovingPnoScanIntervalMillis" /> <item type="integer" name="config_wifiStationaryPnoScanIntervalMillis" /> <item type="integer" name="config_wifiDelayDisconnectOnImsLostMs" /> + <item type="bool" name="config_wifiMinConfirmationDurationSendNetworkScoreEnabled" /> <!-- Params from config.xml that can be overlayed --> <!-- Params from strings.xml that can be overlayed --> diff --git a/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java b/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java index bb03d42d7..43a16fe4c 100644 --- a/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java +++ b/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java @@ -205,6 +205,10 @@ public class DeviceConfigFacadeTest extends WifiBaseTest { mDeviceConfigFacade.getStationaryScanRssiValidTimeMs()); assertEquals(DeviceConfigFacade.DEFAULT_HEALTH_MONITOR_FW_ALERT_VALID_TIME_MS, mDeviceConfigFacade.getHealthMonitorFwAlertValidTimeMs()); + assertEquals(DeviceConfigFacade.DEFAULT_MIN_CONFIRMATION_DURATION_SEND_LOW_SCORE_MS, + mDeviceConfigFacade.getMinConfirmationDurationSendLowScoreMs()); + assertEquals(DeviceConfigFacade.DEFAULT_MIN_CONFIRMATION_DURATION_SEND_HIGH_SCORE_MS, + mDeviceConfigFacade.getMinConfirmationDurationSendHighScoreMs()); } /** @@ -307,6 +311,10 @@ public class DeviceConfigFacadeTest extends WifiBaseTest { anyInt())).thenReturn(3000); when(DeviceConfig.getInt(anyString(), eq("health_monitor_fw_alert_valid_time_ms"), anyInt())).thenReturn(1000); + when(DeviceConfig.getInt(anyString(), eq("min_confirmation_duration_send_low_score_ms"), + anyInt())).thenReturn(4000); + when(DeviceConfig.getInt(anyString(), eq("min_confirmation_duration_send_high_score_ms"), + anyInt())).thenReturn(1000); mOnPropertiesChangedListenerCaptor.getValue().onPropertiesChanged(null); // Verifying fields are updated to the new values @@ -363,5 +371,7 @@ public class DeviceConfigFacadeTest extends WifiBaseTest { assertEquals(4000, mDeviceConfigFacade.getNonstationaryScanRssiValidTimeMs()); assertEquals(3000, mDeviceConfigFacade.getStationaryScanRssiValidTimeMs()); assertEquals(1000, mDeviceConfigFacade.getHealthMonitorFwAlertValidTimeMs()); + assertEquals(4000, mDeviceConfigFacade.getMinConfirmationDurationSendLowScoreMs()); + assertEquals(1000, mDeviceConfigFacade.getMinConfirmationDurationSendHighScoreMs()); } } diff --git a/tests/wifitests/src/com/android/server/wifi/WifiScoreReportTest.java b/tests/wifitests/src/com/android/server/wifi/WifiScoreReportTest.java index 674ff8c9d..7ba931523 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiScoreReportTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiScoreReportTest.java @@ -101,6 +101,7 @@ public class WifiScoreReportTest extends WifiBaseTest { @Mock WifiNative mWifiNative; @Mock BssidBlocklistMonitor mBssidBlocklistMonitor; @Mock Network mNetwork; + @Mock DeviceConfigFacade mDeviceConfigFacade; private TestLooper mLooper; public class WifiConnectedNetworkScorerImpl extends IWifiConnectedNetworkScorer.Stub { @@ -174,6 +175,9 @@ public class WifiScoreReportTest extends WifiBaseTest { when(resources.getInteger( R.integer.config_wifiFrameworkMinPacketPerSecondHighTraffic)) .thenReturn(100); + when(resources.getBoolean( + R.bool.config_wifiMinConfirmationDurationSendNetworkScoreEnabled)) + .thenReturn(false); } /** @@ -197,8 +201,13 @@ public class WifiScoreReportTest extends WifiBaseTest { mScoringParams = new ScoringParams(); mWifiThreadRunner = new WifiThreadRunner(new Handler(mLooper.getLooper())); mWifiScoreReport = new WifiScoreReport(mScoringParams, mClock, mWifiMetrics, mWifiInfo, - mWifiNative, mBssidBlocklistMonitor, mWifiThreadRunner); + mWifiNative, mBssidBlocklistMonitor, mWifiThreadRunner, + mDeviceConfigFacade, mContext); mWifiScoreReport.setNetworkAgent(mNetworkAgent); + when(mDeviceConfigFacade.getMinConfirmationDurationSendLowScoreMs()).thenReturn( + DeviceConfigFacade.DEFAULT_MIN_CONFIRMATION_DURATION_SEND_LOW_SCORE_MS); + when(mDeviceConfigFacade.getMinConfirmationDurationSendHighScoreMs()).thenReturn( + DeviceConfigFacade.DEFAULT_MIN_CONFIRMATION_DURATION_SEND_HIGH_SCORE_MS); } /** @@ -833,4 +842,147 @@ public class WifiScoreReportTest extends WifiBaseTest { mLooper.dispatchAll(); verify(mBssidBlocklistMonitor, never()).blockBssidForDurationMs(any(), any(), anyLong()); } + + /** + * Verify confirmation duration is not added when it is not enabled in config overlay by default + */ + @Test + public void confirmationDurationIsNotAddedWhenItIsNotEnabledInConfigOverlay() 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; + + mClock.mWallClockMillis = 10; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 49); + mLooper.dispatchAll(); + verify(mNetworkAgent).sendNetworkScore(anyInt()); + } + + /** + * Verify confirmation duration is not added when there is no score breacht + */ + @Test + public void confirmationDurationIsNotAddedWhenThereIsNoScoreBreach() 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); + + mClock.mWallClockMillis = 10; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 60); + mLooper.dispatchAll(); + verify(mNetworkAgent).sendNetworkScore(60); + mClock.mWallClockMillis = 3010; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 59); + mLooper.dispatchAll(); + verify(mNetworkAgent).sendNetworkScore(59); + mClock.mWallClockMillis = 6010; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 58); + mLooper.dispatchAll(); + verify(mNetworkAgent).sendNetworkScore(58); + } + + /** + * Verify confirmation duration is added for reporting low score when it is enabled in + * config overlay + */ + @Test + public void confirmationDurationIsAddedForSendingLowScore() 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); + + mClock.mWallClockMillis = 10; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 49); + mLooper.dispatchAll(); + verify(mNetworkAgent, never()).sendNetworkScore(anyInt()); + 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(47); + mClock.mWallClockMillis = 10 + + mDeviceConfigFacade.DEFAULT_MIN_CONFIRMATION_DURATION_SEND_LOW_SCORE_MS + 3000; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 46); + mLooper.dispatchAll(); + verify(mNetworkAgent).sendNetworkScore(46); + } + + /** + * Verify confirmation duration is not added for reporting high score with default zero value + */ + @Test + public void confirmationDurationIsNotAddedForSendingHighScore() 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); + + mClock.mWallClockMillis = 10; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 49); + mLooper.dispatchAll(); + verify(mNetworkAgent, never()).sendNetworkScore(anyInt()); + mClock.mWallClockMillis = 3000; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 51); + mLooper.dispatchAll(); + verify(mNetworkAgent).sendNetworkScore(51); + mClock.mWallClockMillis = 6000; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 52); + mLooper.dispatchAll(); + verify(mNetworkAgent).sendNetworkScore(52); + } + + /** + * Verify confirmation duration is added for reporting high score with non-zero value + */ + @Test + public void confirmationDurationIsAddedForSendingHighScore() 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); + + mClock.mWallClockMillis = 10; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 49); + mLooper.dispatchAll(); + verify(mNetworkAgent, never()).sendNetworkScore(anyInt()); + mClock.mWallClockMillis = 3000; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 51); + mLooper.dispatchAll(); + verify(mNetworkAgent, never()).sendNetworkScore(anyInt()); + mClock.mWallClockMillis = 6999; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 52); + mLooper.dispatchAll(); + verify(mNetworkAgent, never()).sendNetworkScore(anyInt()); + mClock.mWallClockMillis = 7000; + scorerImpl.mScoreUpdateObserver.notifyScoreUpdate(scorerImpl.mSessionId, 53); + mLooper.dispatchAll(); + verify(mNetworkAgent).sendNetworkScore(53); + } } |