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

Commit 77161c36 authored by Sarah Chin's avatar Sarah Chin Committed by Automerger Merge Worker
Browse files

Merge "DataNetwork default handover failure mode to UNKNOWN" am: 27c003b3...

Merge "DataNetwork default handover failure mode to UNKNOWN" am: 27c003b3 am: 47079463 am: c8bed8a2

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



Change-Id: I6d18889bedd4a1f3a8ad61c0c263ef4b21071478
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents d1af9cd1 c8bed8a2
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -3196,8 +3196,10 @@ public class DataNetwork extends StateMachine {


            long retry = response != null ? response.getRetryDurationMillis()
            long retry = response != null ? response.getRetryDurationMillis()
                    : DataCallResponse.RETRY_DURATION_UNDEFINED;
                    : DataCallResponse.RETRY_DURATION_UNDEFINED;
            // If the handover mode is unspecified, default to HANDOVER_FAILURE_MODE_UNKNOWN,
            // which will retry handover if retry rules are defined.
            int handoverFailureMode = response != null ? response.getHandoverFailureMode()
            int handoverFailureMode = response != null ? response.getHandoverFailureMode()
                    : DataCallResponse.HANDOVER_FAILURE_MODE_LEGACY;
                    : DataCallResponse.HANDOVER_FAILURE_MODE_UNKNOWN;
            if (retryEntry != null) retryEntry.setState(DataRetryEntry.RETRY_STATE_FAILED);
            if (retryEntry != null) retryEntry.setState(DataRetryEntry.RETRY_STATE_FAILED);
            mDataNetworkCallback.invokeFromExecutor(
            mDataNetworkCallback.invokeFromExecutor(
                    () -> mDataNetworkCallback.onHandoverFailed(DataNetwork.this,
                    () -> mDataNetworkCallback.onHandoverFailed(DataNetwork.this,
+38 −0
Original line number Original line Diff line number Diff line
@@ -2143,6 +2143,44 @@ public class DataNetworkControllerTest extends TelephonyTest {
        verifyConnectedNetworkHasDataProfile(mImsIwlanDataProfile);
        verifyConnectedNetworkHasDataProfile(mImsIwlanDataProfile);
    }
    }


    @Test
    public void testHandoverDataNetworkFailedNullResponse() throws Exception {
        testSetupImsDataNetwork();
        DataNetwork dataNetwork = getDataNetworks().get(0);

        // Set failed null response
        doAnswer(invocation -> {
            final Message msg = (Message) invocation.getArguments()[10];
            msg.getData().putParcelable("data_call_response", null);
            msg.arg1 = DataServiceCallback.RESULT_ERROR_TEMPORARILY_UNAVAILABLE;
            msg.getTarget().sendMessageDelayed(msg, 0);
            return null;
        }).when(mMockedWlanDataServiceManager).setupDataCall(anyInt(), any(DataProfile.class),
                anyBoolean(), anyBoolean(), eq(DataService.REQUEST_REASON_HANDOVER), any(),
                anyInt(), any(), any(), anyBoolean(), any(Message.class));

        // Attempt handover
        updateTransport(NetworkCapabilities.NET_CAPABILITY_IMS,
                AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
        processAllMessages();

        // Verify that data network is still on cellular and data network was not torn down
        assertThat(dataNetwork.getTransport()).isEqualTo(
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        assertThat(dataNetwork.isConnected()).isTrue();

        // Process all handover retries and failures
        processAllFutureMessages();

        // Verify that original data network was torn down and new connection set up on cellular
        assertThat(dataNetwork.getTransport()).isEqualTo(
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        assertThat(dataNetwork.isConnected()).isFalse();
        dataNetwork = getDataNetworks().get(0);
        assertThat(dataNetwork.getTransport()).isEqualTo(
                AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
        assertThat(dataNetwork.isConnected()).isTrue();
    }


    @Test
    @Test
    public void testSetupDataNetworkRetrySuggestedByNetwork() {
    public void testSetupDataNetworkRetrySuggestedByNetwork() {
+1 −1
Original line number Original line Diff line number Diff line
@@ -943,7 +943,7 @@ public class DataNetworkTest extends TelephonyTest {
        verify(mMockedWwanDataServiceManager).cancelHandover(eq(123), any(Message.class));
        verify(mMockedWwanDataServiceManager).cancelHandover(eq(123), any(Message.class));
        verify(mDataNetworkCallback).onHandoverFailed(eq(mDataNetworkUT),
        verify(mDataNetworkCallback).onHandoverFailed(eq(mDataNetworkUT),
                eq(DataFailCause.SERVICE_TEMPORARILY_UNAVAILABLE), eq(-1L),
                eq(DataFailCause.SERVICE_TEMPORARILY_UNAVAILABLE), eq(-1L),
                eq(DataCallResponse.HANDOVER_FAILURE_MODE_LEGACY));
                eq(DataCallResponse.HANDOVER_FAILURE_MODE_UNKNOWN));
        verify(mLinkBandwidthEstimator, never()).unregisterForBandwidthChanged(
        verify(mLinkBandwidthEstimator, never()).unregisterForBandwidthChanged(
                eq(mDataNetworkUT.getHandler()));
                eq(mDataNetworkUT.getHandler()));
        assertThat(mDataNetworkUT.getTransport())
        assertThat(mDataNetworkUT.getTransport())