Merge "Change score cache eviction time to settings value." into oc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
2193f912f3
@@ -8531,6 +8531,16 @@ public final class Settings {
|
||||
*/
|
||||
public static final String NETWORK_SCORING_UI_ENABLED = "network_scoring_ui_enabled";
|
||||
|
||||
/**
|
||||
* Value to specify how long in milliseconds to retain seen score cache curves to be used
|
||||
* when generating SSID only bases score curves.
|
||||
*
|
||||
* Type: long
|
||||
* @hide
|
||||
*/
|
||||
public static final String SPEED_LABEL_CACHE_EVICTION_AGE_MILLIS =
|
||||
"speed_label_cache_eviction_age_millis";
|
||||
|
||||
/**
|
||||
* Value to specify if network recommendations from
|
||||
* {@link com.android.server.NetworkScoreService} are enabled.
|
||||
|
||||
@@ -328,6 +328,7 @@ public class SettingsBackupTest {
|
||||
Settings.Global.SMS_SHORT_CODE_RULE,
|
||||
Settings.Global.SMS_SHORT_CODES_UPDATE_CONTENT_URL,
|
||||
Settings.Global.SMS_SHORT_CODES_UPDATE_METADATA_URL,
|
||||
Settings.Global.SPEED_LABEL_CACHE_EVICTION_AGE_MILLIS,
|
||||
Settings.Global.STORAGE_BENCHMARK_INTERVAL,
|
||||
Settings.Global.STORAGE_SETTINGS_CLOBBER_THRESHOLD,
|
||||
Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS,
|
||||
|
||||
@@ -51,7 +51,6 @@ import android.support.annotation.NonNull;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.TextUtils;
|
||||
import android.text.format.DateUtils;
|
||||
import android.text.style.TtsSpan;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -133,10 +132,6 @@ public class AccessPoint implements Comparable<AccessPoint> {
|
||||
*/
|
||||
private final Map<String, TimestampedScoredNetwork> mScoredNetworkCache = new HashMap<>();
|
||||
|
||||
/** Maximum age in millis of cached scored networks in {@link #mScoredNetworkCache}. */
|
||||
@VisibleForTesting static final long MAX_CACHED_SCORE_AGE_MILLIS =
|
||||
24 * DateUtils.DAY_IN_MILLIS;
|
||||
|
||||
/** Maximum age of scan results to hold onto while actively scanning. **/
|
||||
private static final long MAX_SCAN_RESULT_AGE_MILLIS = 15000;
|
||||
|
||||
@@ -438,13 +433,18 @@ public class AccessPoint implements Comparable<AccessPoint> {
|
||||
* Updates the AccessPoint rankingScore, metering, and speed, returning true if the data has
|
||||
* changed.
|
||||
*
|
||||
* @param scoreCache The score cache to use to retrieve scores.
|
||||
* @param scoringUiEnabled Whether to show scoring and badging UI.
|
||||
* @param scoreCache The score cache to use to retrieve scores
|
||||
* @param scoringUiEnabled Whether to show scoring and badging UI
|
||||
* @param maxScoreCacheAgeMillis the maximum age in milliseconds of scores to consider when
|
||||
* generating speed labels
|
||||
*/
|
||||
boolean update(WifiNetworkScoreCache scoreCache, boolean scoringUiEnabled) {
|
||||
boolean update(
|
||||
WifiNetworkScoreCache scoreCache,
|
||||
boolean scoringUiEnabled,
|
||||
long maxScoreCacheAgeMillis) {
|
||||
boolean scoreChanged = false;
|
||||
if (scoringUiEnabled) {
|
||||
scoreChanged = updateScores(scoreCache);
|
||||
scoreChanged = updateScores(scoreCache, maxScoreCacheAgeMillis);
|
||||
}
|
||||
return updateMetered(scoreCache) || scoreChanged;
|
||||
}
|
||||
@@ -452,15 +452,18 @@ public class AccessPoint implements Comparable<AccessPoint> {
|
||||
/**
|
||||
* Updates the AccessPoint rankingScore and speed, returning true if the data has changed.
|
||||
*
|
||||
* <p>Any cached {@link TimestampedScoredNetwork} objects older than
|
||||
* {@link #MAX_CACHED_SCORE_AGE_MILLIS} will be removed when this method is invoked.
|
||||
* <p>Any cached {@link TimestampedScoredNetwork} objects older than the given max age in millis
|
||||
* will be removed when this method is invoked.
|
||||
*
|
||||
* <p>Precondition: {@link #mRssi} is up to date before invoking this method.
|
||||
*
|
||||
* @param scoreCache The score cache to use to retrieve scores.
|
||||
* @param scoreCache The score cache to use to retrieve scores
|
||||
* @param maxScoreCacheAgeMillis the maximum age in milliseconds of scores to consider when
|
||||
* generating speed labels
|
||||
*
|
||||
* @return true if the set speed has changed
|
||||
*/
|
||||
private boolean updateScores(WifiNetworkScoreCache scoreCache) {
|
||||
private boolean updateScores(WifiNetworkScoreCache scoreCache, long maxScoreCacheAgeMillis) {
|
||||
long nowMillis = SystemClock.elapsedRealtime();
|
||||
for (ScanResult result : mScanResultCache.values()) {
|
||||
ScoredNetwork score = scoreCache.getScoredNetwork(result);
|
||||
@@ -478,7 +481,7 @@ public class AccessPoint implements Comparable<AccessPoint> {
|
||||
}
|
||||
|
||||
// Remove old cached networks
|
||||
long evictionCutoff = nowMillis - MAX_CACHED_SCORE_AGE_MILLIS;
|
||||
long evictionCutoff = nowMillis - maxScoreCacheAgeMillis;
|
||||
Iterator<TimestampedScoredNetwork> iterator = mScoredNetworkCache.values().iterator();
|
||||
iterator.forEachRemaining(timestampedScoredNetwork -> {
|
||||
if (timestampedScoredNetwork.getUpdatedTimestampMillis() < evictionCutoff) {
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.database.ContentObserver;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.Network;
|
||||
import android.net.NetworkCapabilities;
|
||||
@@ -41,6 +40,7 @@ import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.provider.Settings;
|
||||
import android.support.annotation.GuardedBy;
|
||||
import android.text.format.DateUtils;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
@@ -65,7 +65,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
* Tracks saved or available wifi networks and their state.
|
||||
*/
|
||||
public class WifiTracker {
|
||||
// TODO(b/36733768): Remove flag includeSaved and includePasspoints.
|
||||
/**
|
||||
* Default maximum age in millis of cached scored networks in
|
||||
* {@link AccessPoint#mScoredNetworkCache} to be used for speed label generation.
|
||||
*/
|
||||
private static final long DEFAULT_MAX_CACHED_SCORE_AGE_MILLIS = 20 * DateUtils.MINUTE_IN_MILLIS;
|
||||
|
||||
private static final String TAG = "WifiTracker";
|
||||
private static final boolean DBG() {
|
||||
@@ -76,6 +80,8 @@ public class WifiTracker {
|
||||
* and used so as to assist with in-the-field WiFi connectivity debugging */
|
||||
public static boolean sVerboseLogging;
|
||||
|
||||
// TODO(b/36733768): Remove flag includeSaved and includePasspoints.
|
||||
|
||||
// TODO: Allow control of this?
|
||||
// Combo scans can take 5-6s to complete - set to 10s.
|
||||
private static final int WIFI_RESCAN_INTERVAL_MS = 10 * 1000;
|
||||
@@ -138,7 +144,7 @@ public class WifiTracker {
|
||||
private final NetworkScoreManager mNetworkScoreManager;
|
||||
private final WifiNetworkScoreCache mScoreCache;
|
||||
private boolean mNetworkScoringUiEnabled;
|
||||
private final ContentObserver mObserver;
|
||||
private long mMaxSpeedLabelScoreCacheAge;
|
||||
|
||||
@GuardedBy("mLock")
|
||||
private final Set<NetworkKey> mRequestedScores = new ArraySet<>();
|
||||
@@ -229,16 +235,6 @@ public class WifiTracker {
|
||||
updateNetworkScores();
|
||||
}
|
||||
});
|
||||
|
||||
mObserver = new ContentObserver(mWorkHandler) {
|
||||
@Override
|
||||
public void onChange(boolean selfChange) {
|
||||
mNetworkScoringUiEnabled =
|
||||
Settings.Global.getInt(
|
||||
mContext.getContentResolver(),
|
||||
Settings.Global.NETWORK_SCORING_UI_ENABLED, 0) == 1;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/** Synchronously update the list of access points with the latest information. */
|
||||
@@ -314,11 +310,16 @@ public class WifiTracker {
|
||||
synchronized (mLock) {
|
||||
registerScoreCache();
|
||||
|
||||
mContext.getContentResolver().registerContentObserver(
|
||||
Settings.Global.getUriFor(Settings.Global.NETWORK_SCORING_UI_ENABLED),
|
||||
false /* notifyForDescendants */,
|
||||
mObserver);
|
||||
mObserver.onChange(false /* selfChange */); // Set mScoringUiEnabled
|
||||
mNetworkScoringUiEnabled =
|
||||
Settings.Global.getInt(
|
||||
mContext.getContentResolver(),
|
||||
Settings.Global.NETWORK_SCORING_UI_ENABLED, 0) == 1;
|
||||
|
||||
mMaxSpeedLabelScoreCacheAge =
|
||||
Settings.Global.getLong(
|
||||
mContext.getContentResolver(),
|
||||
Settings.Global.SPEED_LABEL_CACHE_EVICTION_AGE_MILLIS,
|
||||
DEFAULT_MAX_CACHED_SCORE_AGE_MILLIS);
|
||||
|
||||
resumeScanning();
|
||||
if (!mRegistered) {
|
||||
@@ -370,7 +371,6 @@ public class WifiTracker {
|
||||
}
|
||||
unregisterScoreCache();
|
||||
pauseScanning();
|
||||
mContext.getContentResolver().unregisterContentObserver(mObserver);
|
||||
|
||||
mWorkHandler.removePendingMessages();
|
||||
mMainHandler.removePendingMessages();
|
||||
@@ -609,7 +609,7 @@ public class WifiTracker {
|
||||
|
||||
requestScoresForNetworkKeys(scoresToRequest);
|
||||
for (AccessPoint ap : accessPoints) {
|
||||
ap.update(mScoreCache, mNetworkScoringUiEnabled);
|
||||
ap.update(mScoreCache, mNetworkScoringUiEnabled, mMaxSpeedLabelScoreCacheAge);
|
||||
}
|
||||
|
||||
// Pre-sort accessPoints to speed preference insertion
|
||||
@@ -710,7 +710,7 @@ public class WifiTracker {
|
||||
updated = true;
|
||||
if (previouslyConnected != ap.isActive()) reorder = true;
|
||||
}
|
||||
if (ap.update(mScoreCache, mNetworkScoringUiEnabled)) {
|
||||
if (ap.update(mScoreCache, mNetworkScoringUiEnabled, mMaxSpeedLabelScoreCacheAge)) {
|
||||
reorder = true;
|
||||
updated = true;
|
||||
}
|
||||
@@ -744,7 +744,8 @@ public class WifiTracker {
|
||||
synchronized (mLock) {
|
||||
boolean updated = false;
|
||||
for (int i = 0; i < mInternalAccessPoints.size(); i++) {
|
||||
if (mInternalAccessPoints.get(i).update(mScoreCache, mNetworkScoringUiEnabled)) {
|
||||
if (mInternalAccessPoints.get(i).update(
|
||||
mScoreCache, mNetworkScoringUiEnabled, mMaxSpeedLabelScoreCacheAge)) {
|
||||
updated = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ import android.support.test.InstrumentationRegistry;
|
||||
import android.support.test.filters.SmallTest;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
import android.text.SpannableString;
|
||||
import android.text.format.DateUtils;
|
||||
import android.text.style.TtsSpan;
|
||||
|
||||
import com.android.settingslib.R;
|
||||
@@ -72,6 +73,8 @@ public class AccessPointTest {
|
||||
private static final RssiCurve FAST_BADGE_CURVE =
|
||||
new RssiCurve(-150, 10, new byte[]{Speed.FAST});
|
||||
public static final String TEST_BSSID = "00:00:00:00:00:00";
|
||||
private static final long MAX_SCORE_CACHE_AGE_MILLIS =
|
||||
20 * DateUtils.MINUTE_IN_MILLIS;;
|
||||
|
||||
private Context mContext;
|
||||
@Mock private RssiCurve mockBadgeCurve;
|
||||
@@ -335,7 +338,8 @@ public class AccessPointTest {
|
||||
null /* NetworkKey */,
|
||||
null /* rssiCurve */,
|
||||
true /* metered */));
|
||||
ap.update(mockWifiNetworkScoreCache, false /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, false /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
assertThat(ap.isMetered()).isTrue();
|
||||
}
|
||||
@@ -364,7 +368,8 @@ public class AccessPointTest {
|
||||
.thenReturn(buildScoredNetworkWithMockBadgeCurve());
|
||||
when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.VERY_FAST);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
assertThat(ap.getSpeed()).isEqualTo(AccessPoint.Speed.VERY_FAST);
|
||||
assertThat(ap.getSpeedLabel())
|
||||
@@ -379,7 +384,9 @@ public class AccessPointTest {
|
||||
.thenReturn(buildScoredNetworkWithMockBadgeCurve());
|
||||
when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.FAST);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
|
||||
assertThat(ap.getSpeed()).isEqualTo(AccessPoint.Speed.FAST);
|
||||
assertThat(ap.getSpeedLabel())
|
||||
@@ -394,7 +401,8 @@ public class AccessPointTest {
|
||||
.thenReturn(buildScoredNetworkWithMockBadgeCurve());
|
||||
when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.MODERATE);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
assertThat(ap.getSpeed()).isEqualTo(AccessPoint.Speed.MODERATE);
|
||||
assertThat(ap.getSpeedLabel())
|
||||
@@ -409,7 +417,8 @@ public class AccessPointTest {
|
||||
.thenReturn(buildScoredNetworkWithMockBadgeCurve());
|
||||
when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.SLOW);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
assertThat(ap.getSpeed()).isEqualTo(AccessPoint.Speed.SLOW);
|
||||
assertThat(ap.getSpeedLabel())
|
||||
@@ -424,7 +433,8 @@ public class AccessPointTest {
|
||||
.thenReturn(buildScoredNetworkWithMockBadgeCurve());
|
||||
when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.VERY_FAST);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
assertThat(ap.getSummary()).isEqualTo(mContext.getString(R.string.speed_label_very_fast));
|
||||
}
|
||||
@@ -442,7 +452,8 @@ public class AccessPointTest {
|
||||
.thenReturn(buildScoredNetworkWithMockBadgeCurve());
|
||||
when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.VERY_FAST);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
String summary = ap.verboseScanResultSummary(scanResults.get(0), null);
|
||||
|
||||
assertThat(summary.contains(mContext.getString(R.string.speed_label_very_fast))).isTrue();
|
||||
@@ -457,7 +468,8 @@ public class AccessPointTest {
|
||||
.thenReturn(buildScoredNetworkWithMockBadgeCurve());
|
||||
when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.VERY_FAST);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
String expectedString = mContext.getString(R.string.speed_label_very_fast) + " / "
|
||||
+ mContext.getString(R.string.wifi_remembered);
|
||||
@@ -864,7 +876,8 @@ public class AccessPointTest {
|
||||
|
||||
int expectedSpeed = (speed1 + speed2) / 2;
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
assertThat(ap.getSpeed()).isEqualTo(expectedSpeed);
|
||||
}
|
||||
@@ -884,7 +897,8 @@ public class AccessPointTest {
|
||||
when(mockWifiNetworkScoreCache.getScoredNetwork(SCAN_RESULTS.get(1)))
|
||||
.thenReturn(buildScoredNetworkWithGivenBadgeCurve(badgeCurve2));
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(
|
||||
mockWifiNetworkScoreCache, true /* scoringUiEnabled */, MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
assertThat(ap.getSpeed()).isEqualTo(speed1);
|
||||
}
|
||||
@@ -925,7 +939,8 @@ public class AccessPointTest {
|
||||
when(mockWifiNetworkScoreCache.getScoredNetwork(scanResultConnected))
|
||||
.thenReturn(null);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
assertThat(ap.getSpeed()).isEqualTo(fallbackSpeed);
|
||||
}
|
||||
@@ -952,7 +967,8 @@ public class AccessPointTest {
|
||||
AccessPoint ap =
|
||||
createApWithFastTimestampedScoredNetworkCache(SystemClock.elapsedRealtime());
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
assertThat(ap.getSpeed()).isEqualTo(Speed.FAST);
|
||||
}
|
||||
@@ -960,11 +976,12 @@ public class AccessPointTest {
|
||||
@Test
|
||||
public void testNetworkScoresAreUsedForSpeedLabelGenerationWhenWithinAgeRange() {
|
||||
long withinRangeTimeMillis =
|
||||
SystemClock.elapsedRealtime() - (AccessPoint.MAX_CACHED_SCORE_AGE_MILLIS - 10000);
|
||||
SystemClock.elapsedRealtime() - (MAX_SCORE_CACHE_AGE_MILLIS - 10000);
|
||||
AccessPoint ap =
|
||||
createApWithFastTimestampedScoredNetworkCache(withinRangeTimeMillis);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
assertThat(ap.getSpeed()).isEqualTo(Speed.FAST);
|
||||
}
|
||||
@@ -972,11 +989,12 @@ public class AccessPointTest {
|
||||
@Test
|
||||
public void testOldNetworkScoresAreNotUsedForSpeedLabelGeneration() {
|
||||
long tooOldTimeMillis =
|
||||
SystemClock.elapsedRealtime() - (AccessPoint.MAX_CACHED_SCORE_AGE_MILLIS + 1);
|
||||
SystemClock.elapsedRealtime() - (MAX_SCORE_CACHE_AGE_MILLIS + 1);
|
||||
AccessPoint ap =
|
||||
createApWithFastTimestampedScoredNetworkCache(tooOldTimeMillis);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
assertThat(ap.getSpeed()).isEqualTo(Speed.NONE);
|
||||
}
|
||||
@@ -984,7 +1002,7 @@ public class AccessPointTest {
|
||||
@Test
|
||||
public void testUpdateScoresRefreshesScoredNetworkCacheTimestamps () {
|
||||
long tooOldTimeMillis =
|
||||
SystemClock.elapsedRealtime() - (AccessPoint.MAX_CACHED_SCORE_AGE_MILLIS + 1);
|
||||
SystemClock.elapsedRealtime() - (MAX_SCORE_CACHE_AGE_MILLIS + 1);
|
||||
|
||||
ScoredNetwork scoredNetwork = buildScoredNetworkWithGivenBadgeCurve(FAST_BADGE_CURVE);
|
||||
TimestampedScoredNetwork recentScore = new TimestampedScoredNetwork(
|
||||
@@ -1002,7 +1020,8 @@ public class AccessPointTest {
|
||||
when(mockWifiNetworkScoreCache.getScoredNetwork(any(ScanResult.class)))
|
||||
.thenReturn(scoredNetwork);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
// Fast should still be returned since cache was updated with recent time
|
||||
assertThat(ap.getSpeed()).isEqualTo(Speed.FAST);
|
||||
@@ -1011,7 +1030,7 @@ public class AccessPointTest {
|
||||
@Test
|
||||
public void testUpdateScoresRefreshesScoredNetworkCacheWithNewSpeed () {
|
||||
long tooOldTimeMillis =
|
||||
SystemClock.elapsedRealtime() - (AccessPoint.MAX_CACHED_SCORE_AGE_MILLIS + 1);
|
||||
SystemClock.elapsedRealtime() - (MAX_SCORE_CACHE_AGE_MILLIS + 1);
|
||||
|
||||
ScoredNetwork scoredNetwork = buildScoredNetworkWithGivenBadgeCurve(FAST_BADGE_CURVE);
|
||||
TimestampedScoredNetwork recentScore = new TimestampedScoredNetwork(
|
||||
@@ -1031,7 +1050,8 @@ public class AccessPointTest {
|
||||
.thenReturn(buildScoredNetworkWithMockBadgeCurve());
|
||||
when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) newSpeed);
|
||||
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */);
|
||||
ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */,
|
||||
MAX_SCORE_CACHE_AGE_MILLIS);
|
||||
|
||||
// Fast should still be returned since cache was updated with recent time
|
||||
assertThat(ap.getSpeed()).isEqualTo(newSpeed);
|
||||
|
||||
Reference in New Issue
Block a user