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

Commit 6777240d authored by Ling Ma's avatar Ling Ma
Browse files

Extend canoical linger time

Previously, the linger time for a requets is 0.5 second. Extend it to 5 seconds after reviewing the BR to give TNF enough time to move requests to the new DDS.

Bug: 396490332
Test: basic voice call + data browsing
Flag: EXEMPT bugfix
Change-Id: I0ec72554cd678e1c0033b4ff679599442be1ef01
parent e1db9bd7
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
package: "com.android.internal.telephony.flags"
container: "system"

# OWNER=linggm TARGET=25Q2
flag {
  name: "keep_ping_request"
  namespace: "telephony"
  description: "If ping test is not required to pass, keep the ping request to avoid deactivate followed by reactivate"
  bug: "366318732"
  metadata {
    purpose: PURPOSE_BUGFIX
  }
}

# OWNER=linggm TARGET=25Q2
flag {
  name: "auto_data_switch_enhanced"
+2 −3
Original line number Diff line number Diff line
@@ -342,11 +342,10 @@ public class CellularNetworkValidator {
        if (mState == STATE_VALIDATING) {
            mValidationCallback.onValidationDone(passed, mSubId);
            mState = STATE_VALIDATED;
            boolean keepRequest = mFlags.keepPingRequest()
                    ? (passed || !mRequireTestPass) : (!mRequireTestPass && passed);
            boolean keepRequest = passed || !mRequireTestPass;
            // If validation passed and per request to NOT release after validation, delay cleanup.
            if (keepRequest) {
                mHandler.postDelayed(this::stopValidation, 500);
                mHandler.postDelayed(this::stopValidation, 5000);
            } else {
                stopValidation();
            }
+1 −1
Original line number Diff line number Diff line
@@ -1618,7 +1618,7 @@ public class PhoneSwitcher extends Handler {
        mSetOpptSubCallback = callback;
        long validationTimeout = getValidationTimeout(subIdToValidate, needValidation);
        mValidator.validate(subIdToValidate, validationTimeout,
                mFlags.keepPingRequest() && mPendingSwitchNeedValidation, mValidationCallback);
                mPendingSwitchNeedValidation, mValidationCallback);
    }

    private long getValidationTimeout(int subId, boolean needValidation) {
+10 −3
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.internal.telephony.data;

import static com.android.internal.telephony.TelephonyTestUtils.waitForMs;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -64,6 +62,7 @@ public class CellularNetworkValidatorTest extends TelephonyTest {
            new PhoneCapability(1, 1, null, true, new int[0]);
    private static final PhoneCapability CAPABILITY_WITHOUT_VALIDATION_SUPPORTED =
            new PhoneCapability(1, 1, null, false, new int[0]);
    private static final int CLEANUP_VALIDATION_TIMEOUT = 5010;
    private final CellIdentityLte mCellIdentityLte1 = new CellIdentityLte(123, 456, 0, 0, 111);
    private final CellIdentityLte mCellIdentityLte2 = new CellIdentityLte(321, 654, 0, 0, 222);

@@ -226,7 +225,7 @@ public class CellularNetworkValidatorTest extends TelephonyTest {

        // Mark mValidationCacheTtl to only 1 second.
        setCacheTtlInCarrierConfig(1000);
        waitForMs(1100);
        moveTimeForward(1100);

        resetStates();
        mValidatorUT.validate(subId, timeout, true, mCallback);
@@ -309,6 +308,8 @@ public class CellularNetworkValidatorTest extends TelephonyTest {
        mValidatorUT.validate(1, timeout, true, mCallback);
        mValidatorUT.mNetworkCallback.onCapabilitiesChanged(null, new NetworkCapabilities()
                .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED));
        moveTimeForward(CLEANUP_VALIDATION_TIMEOUT);
        processAllMessages();
        assertNetworkRecentlyValidated(1, true);

        // Change reg state to a different network.
@@ -340,6 +341,9 @@ public class CellularNetworkValidatorTest extends TelephonyTest {
            mValidatorUT.validate(subId, timeout, true, mCallback);
            mValidatorUT.mNetworkCallback.onCapabilitiesChanged(null, new NetworkCapabilities()
                    .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED));
            // release the request
            moveTimeForward(CLEANUP_VALIDATION_TIMEOUT);
            processAllMessages();
            assertNetworkRecentlyValidated(subId, true);
        }

@@ -457,6 +461,9 @@ public class CellularNetworkValidatorTest extends TelephonyTest {
    }

    private void assertValidationResult(int subId, boolean shouldPass) {
        // release the request
        moveTimeForward(CLEANUP_VALIDATION_TIMEOUT);
        processAllMessages();
        // Verify that validation is over.
        verify(mConnectivityManager).unregisterNetworkCallback(eq(mValidatorUT.mNetworkCallback));
        assertFalse(mValidatorUT.mHandler.hasMessagesOrCallbacks());
+7 −6
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ public class PhoneSwitcherTest extends TelephonyTest {
        processAllFutureMessages();

        // Mock validation failed, expect retry attempt
        verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false),
        verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true),
                eq(mPhoneSwitcherUT.mValidationCallback));
        mPhoneSwitcherUT.mValidationCallback.onValidationDone(false, 2/*Phone2*/);
        processAllMessages();
@@ -227,6 +227,7 @@ public class PhoneSwitcherTest extends TelephonyTest {

        // Test clear failed count upon switch succeeded.
        mAutoDataSwitchCallback.onRequireValidation(1/*Phone2*/, true);
        moveTimeForward(5100);
        processAllFutureMessages();
        mPhoneSwitcherUT.mValidationCallback.onValidationDone(true, 2/*Phone2*/);
        processAllMessages();
@@ -623,7 +624,7 @@ public class PhoneSwitcherTest extends TelephonyTest {
        // Set sub 2 as preferred sub should make phone 1 activated and phone 0 deactivated.
        mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, null);
        processAllMessages();
        verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false),
        verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true),
                eq(mPhoneSwitcherUT.mValidationCallback));
        // Validation failed. Preferred data sub should remain 1, data phone should remain 0.
        mPhoneSwitcherUT.mValidationCallback.onValidationDone(false, 2);
@@ -644,7 +645,7 @@ public class PhoneSwitcherTest extends TelephonyTest {
        mPhoneSwitcherUT.trySetOpportunisticDataSubscription(
                SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, true, null);
        processAllMessages();
        verify(mCellularNetworkValidator).validate(eq(1), eq(timeout), eq(false),
        verify(mCellularNetworkValidator).validate(eq(1), eq(timeout), eq(true),
                eq(mPhoneSwitcherUT.mValidationCallback));
        mPhoneSwitcherUT.mValidationCallback.onValidationDone(true, 1);
        processAllMessages();
@@ -874,7 +875,7 @@ public class PhoneSwitcherTest extends TelephonyTest {

        // verify the attempt to do auto data switch to Phone2(nDDS)
        processAllFutureMessages();
        verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false),
        verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true),
                eq(mPhoneSwitcherUT.mValidationCallback));

        // Phone2 has holding call on VoWifi, no need to switch data
@@ -1258,7 +1259,7 @@ public class PhoneSwitcherTest extends TelephonyTest {
        clearInvocations(mCellularNetworkValidator);
        mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, mSetOpptDataCallback1);
        processAllMessages();
        verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false),
        verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true),
                eq(mPhoneSwitcherUT.mValidationCallback));
        doReturn(true).when(mCellularNetworkValidator).isValidating();
        mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, mSetOpptDataCallback2);
@@ -1282,7 +1283,7 @@ public class PhoneSwitcherTest extends TelephonyTest {
        // Back to back call, call 1 to switch to subId 2, call 2 to switch back.
        mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, mSetOpptDataCallback1);
        processAllMessages();
        verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false),
        verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true),
                eq(mPhoneSwitcherUT.mValidationCallback));
        doReturn(true).when(mCellularNetworkValidator).isValidating();
        mPhoneSwitcherUT.trySetOpportunisticDataSubscription(