Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f26e9b4 authored by Ling Ma's avatar Ling Ma Committed by Automerger Merge Worker
Browse files

Merge "Fix testNetworkCachingOverflow failure in CellularNetworkValidatorTest"...

Merge "Fix testNetworkCachingOverflow failure in CellularNetworkValidatorTest" into main am: 8b2c3142

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/3438741



Change-Id: I640bdedc9d7cc28f494d064d94a2466c84282c48
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 1c496cf7 8b2c3142
Loading
Loading
Loading
Loading
+9 −11
Original line number Original line Diff line number Diff line
@@ -46,10 +46,9 @@ import com.android.internal.telephony.nano.TelephonyProto.TelephonyEvent;
import com.android.internal.telephony.subscription.SubscriptionInfoInternal;
import com.android.internal.telephony.subscription.SubscriptionInfoInternal;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
import com.android.internal.telephony.subscription.SubscriptionManagerService;


import java.util.Comparator;
import java.util.ArrayDeque;
import java.util.HashMap;
import java.util.HashMap;
import java.util.Map;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeUnit;


/**
/**
@@ -91,9 +90,8 @@ public class CellularNetworkValidator {
    private class ValidatedNetworkCache {
    private class ValidatedNetworkCache {
        // A cache with fixed size. It remembers 10 most recently successfully validated networks.
        // A cache with fixed size. It remembers 10 most recently successfully validated networks.
        private static final int VALIDATED_NETWORK_CACHE_SIZE = 10;
        private static final int VALIDATED_NETWORK_CACHE_SIZE = 10;
        private final PriorityQueue<ValidatedNetwork> mValidatedNetworkPQ =

                new PriorityQueue<>((Comparator<ValidatedNetwork>) Comparator.comparingLong(
        private final ArrayDeque<ValidatedNetwork> mValidatedNetworkAQ = new ArrayDeque<>();
                        (ValidatedNetwork n) -> n.mValidationTimeStamp));
        private final Map<String, ValidatedNetwork> mValidatedNetworkMap = new HashMap<>();
        private final Map<String, ValidatedNetwork> mValidatedNetworkMap = new HashMap<>();


        private static final class ValidatedNetwork {
        private static final class ValidatedNetwork {
@@ -128,7 +126,7 @@ public class CellularNetworkValidator {


            if (!validated) {
            if (!validated) {
                // If validation failed, clear it from the cache.
                // If validation failed, clear it from the cache.
                mValidatedNetworkPQ.remove(mValidatedNetworkMap.get(networkIdentity));
                mValidatedNetworkAQ.remove(mValidatedNetworkMap.get(networkIdentity));
                mValidatedNetworkMap.remove(networkIdentity);
                mValidatedNetworkMap.remove(networkIdentity);
                return;
                return;
            }
            }
@@ -138,16 +136,16 @@ public class CellularNetworkValidator {
                // Already existed in cache, update.
                // Already existed in cache, update.
                network.update(time);
                network.update(time);
                // Re-add to re-sort.
                // Re-add to re-sort.
                mValidatedNetworkPQ.remove(network);
                mValidatedNetworkAQ.remove(network);
                mValidatedNetworkPQ.add(network);
                mValidatedNetworkAQ.add(network);
            } else {
            } else {
                network = new ValidatedNetwork(networkIdentity, time);
                network = new ValidatedNetwork(networkIdentity, time);
                mValidatedNetworkMap.put(networkIdentity, network);
                mValidatedNetworkMap.put(networkIdentity, network);
                mValidatedNetworkPQ.add(network);
                mValidatedNetworkAQ.add(network);
            }
            }
            // If exceeded max size, remove the one with smallest validation timestamp.
            // If exceeded max size, remove the one with smallest validation timestamp.
            if (mValidatedNetworkPQ.size() > VALIDATED_NETWORK_CACHE_SIZE) {
            if (mValidatedNetworkAQ.size() > VALIDATED_NETWORK_CACHE_SIZE) {
                ValidatedNetwork networkToRemove = mValidatedNetworkPQ.poll();
                ValidatedNetwork networkToRemove = mValidatedNetworkAQ.poll();
                mValidatedNetworkMap.remove(networkToRemove.mValidationIdentity);
                mValidatedNetworkMap.remove(networkToRemove.mValidationIdentity);
            }
            }
        }
        }