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

Commit abfeb06d authored by Hakjun Choi's avatar Hakjun Choi
Browse files

Add missed satellite metrics case

1. Added current NTN technology when reporting SatelliteSessionMetrics.
2. Reporting session metrics for bellow seenarion is added when requestSatelliteEnabled is invoked
   . when Radio is off
   . when enableState and demoMode argument are mismatched
   . when device is aleady in expected state
   . when disabling satellite is in progress, and current request is enable it.

Bug: 303852087
Test: SatelliteControllerTest

Change-Id: I0e19acef7fcb198a39e9b3992d12d675f9aaf1d5
parent ba32229a
Loading
Loading
Loading
Loading
+36 −7
Original line number Diff line number Diff line
@@ -794,7 +794,7 @@ public class SatelliteController extends Handler {
                    }
                    SessionMetricsStats.getInstance()
                            .setInitializationResult(error)
                            .setRadioTechnology(SatelliteManager.NT_RADIO_TECHNOLOGY_PROPRIETARY)
                            .setRadioTechnology(getSupportedNtnRadioTechnology())
                            .reportSessionMetrics();
                } else {
                    mControllerMetricsStats.onSatelliteDisabled();
@@ -1195,14 +1195,15 @@ public class SatelliteController extends Handler {
        Consumer<Integer> result = FunctionalUtils.ignoreRemoteException(callback::accept);
        int error = evaluateOemSatelliteRequestAllowed(true);
        if (error != SATELLITE_RESULT_SUCCESS) {
            result.accept(error);
            sendErrorAndReportSessionMetrics(error, result);
            return;
        }

        if (enableSatellite) {
            if (!mIsRadioOn) {
                loge("Radio is not on, can not enable satellite");
                result.accept(SatelliteManager.SATELLITE_RESULT_INVALID_MODEM_STATE);
                sendErrorAndReportSessionMetrics(
                        SatelliteManager.SATELLITE_RESULT_INVALID_MODEM_STATE, result);
                return;
            }
        } else {
@@ -1216,12 +1217,14 @@ public class SatelliteController extends Handler {
                    if (enableDemoMode != mIsDemoModeEnabled) {
                        loge("Received invalid demo mode while satellite session is enabled"
                                + " enableDemoMode = " + enableDemoMode);
                        result.accept(SatelliteManager.SATELLITE_RESULT_INVALID_ARGUMENTS);
                        sendErrorAndReportSessionMetrics(
                                SatelliteManager.SATELLITE_RESULT_INVALID_ARGUMENTS, result);
                        return;
                    } else {
                        logd("Enable request matches with current state"
                                + " enableSatellite = " + enableSatellite);
                        result.accept(SATELLITE_RESULT_SUCCESS);
                        sendErrorAndReportSessionMetrics(
                                SatelliteManager.SATELLITE_RESULT_SUCCESS, result);
                        return;
                    }
                }
@@ -1246,13 +1249,15 @@ public class SatelliteController extends Handler {
            } else if (mSatelliteEnabledRequest.enableSatellite == request.enableSatellite) {
                logd("requestSatelliteEnabled enableSatellite: " + enableSatellite
                        + " is already in progress.");
                result.accept(SatelliteManager.SATELLITE_RESULT_REQUEST_IN_PROGRESS);
                sendErrorAndReportSessionMetrics(
                        SatelliteManager.SATELLITE_RESULT_REQUEST_IN_PROGRESS, result);
                return;
            } else if (mSatelliteEnabledRequest.enableSatellite == false
                    && request.enableSatellite == true) {
                logd("requestSatelliteEnabled enableSatellite: " + enableSatellite + " cannot be "
                        + "processed. Disable satellite is already in progress.");
                result.accept(SatelliteManager.SATELLITE_RESULT_ERROR);
                sendErrorAndReportSessionMetrics(
                        SatelliteManager.SATELLITE_RESULT_ERROR, result);
                return;
            }
        }
@@ -2983,6 +2988,30 @@ public class SatelliteController extends Handler {
        return SATELLITE_RESULT_SUCCESS;
    }

    /**
     * Returns the non-terrestrial network radio technology that the satellite modem currently
     * supports. If multiple technologies are available, returns the first supported technology.
     */
    @VisibleForTesting
    protected @SatelliteManager.NTRadioTechnology int getSupportedNtnRadioTechnology() {
        synchronized (mSatelliteCapabilitiesLock) {
            if (mSatelliteCapabilities != null) {
                return mSatelliteCapabilities.getSupportedRadioTechnologies()
                        .stream().findFirst().orElse(SatelliteManager.NT_RADIO_TECHNOLOGY_UNKNOWN);
            }
            return SatelliteManager.NT_RADIO_TECHNOLOGY_UNKNOWN;
        }
    }

    private void sendErrorAndReportSessionMetrics(@SatelliteManager.SatelliteResult int error,
            Consumer<Integer> result) {
        result.accept(error);
        SessionMetricsStats.getInstance()
                .setInitializationResult(error)
                .setRadioTechnology(getSupportedNtnRadioTechnology())
                .reportSessionMetrics();
    }

    private static void logd(@NonNull String log) {
        Rlog.d(TAG, log);
    }
+19 −3
Original line number Diff line number Diff line
@@ -764,9 +764,9 @@ public class SatelliteControllerTest extends TelephonyTest {
        verify(mMockDatagramController, times(4)).setDemoMode(eq(false));
        verify(mMockControllerMetricsStats, times(2)).onSatelliteEnabled();
        verify(mMockControllerMetricsStats, times(2)).reportServiceEnablementSuccessCount();
        verify(mMockSessionMetricsStats, times(3)).setInitializationResult(anyInt());
        verify(mMockSessionMetricsStats, times(3)).setRadioTechnology(anyInt());
        verify(mMockSessionMetricsStats, times(3)).reportSessionMetrics();
        verify(mMockSessionMetricsStats, times(7)).setInitializationResult(anyInt());
        verify(mMockSessionMetricsStats, times(7)).setRadioTechnology(anyInt());
        verify(mMockSessionMetricsStats, times(7)).reportSessionMetrics();

        // Successfully enable satellite when it is already enabled.
        mIIntegerConsumerResults.clear();
@@ -921,6 +921,9 @@ public class SatelliteControllerTest extends TelephonyTest {
        assertTrue(waitForRequestSatelliteCapabilitiesResult(1));
        assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedSatelliteCapabilitiesResultCode);
        assertEquals(mSatelliteCapabilities, mQueriedSatelliteCapabilities);
        assertTrue(
                mQueriedSatelliteCapabilities.getSupportedRadioTechnologies().contains(
                        mSatelliteControllerUT.getSupportedNtnRadioTechnology()));

        resetSatelliteControllerUT();
        setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
@@ -1992,6 +1995,9 @@ public class SatelliteControllerTest extends TelephonyTest {
        assertTrue(waitForRequestSatelliteCapabilitiesResult(1));
        assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedSatelliteCapabilitiesResultCode);
        assertEquals(mEmptySatelliteCapabilities, mQueriedSatelliteCapabilities);
        assertEquals(SatelliteManager.NT_RADIO_TECHNOLOGY_UNKNOWN,
                mSatelliteControllerUT.getSupportedNtnRadioTechnology());

        assertFalse(satelliteController.isSatelliteAttachRequired());

        setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
@@ -2007,6 +2013,9 @@ public class SatelliteControllerTest extends TelephonyTest {
        assertTrue(waitForRequestSatelliteCapabilitiesResult(1));
        assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedSatelliteCapabilitiesResultCode);
        assertEquals(mSatelliteCapabilities, mQueriedSatelliteCapabilities);
        assertTrue(
                mQueriedSatelliteCapabilities.getSupportedRadioTechnologies().contains(
                        satelliteController.getSupportedNtnRadioTechnology()));
        assertTrue(satelliteController.isSatelliteAttachRequired());

        when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(false);
@@ -3023,5 +3032,12 @@ public class SatelliteControllerTest extends TelephonyTest {
        protected boolean areAllRadiosDisabled() {
            return allRadiosDisabled;
        }

        @Override
        protected int getSupportedNtnRadioTechnology() {
            int ntRadioTechnology = super.getSupportedNtnRadioTechnology();
            logd("getCurrentNtnRadioTechnology: val=" + ntRadioTechnology);
            return ntRadioTechnology;
        }
    }
}