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

Commit 6756de30 authored by Steve Statia's avatar Steve Statia
Browse files

Add is_provisioning_profile bool to DataCallSession metrics

Test: atest DataCallSessionStatsTest
Bug: 330382340
Change-Id: I928dc2c0b4f3df794f4f3dc1d64c8a952acea99f
parent c7d74ecb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -406,6 +406,7 @@ message DataCallSession {
    optional bool is_iwlan_cross_sim = 23;
    optional bool is_ntn = 24;
    optional bool is_satellite_transport = 25;
    optional bool is_provisioning_profile = 26;
}

message CellularServiceState {
+13 −0
Original line number Diff line number Diff line
@@ -309,6 +309,7 @@ public class DataCallSessionStats {
        copy.isIwlanCrossSim = call.isIwlanCrossSim;
        copy.isNtn = call.isNtn;
        copy.isSatelliteTransport = call.isSatelliteTransport;
        copy.isProvisioningProfile = call.isProvisioningProfile;
        return copy;
    }

@@ -339,6 +340,7 @@ public class DataCallSessionStats {
        proto.isNtn = mSatelliteController != null
                ? mSatelliteController.isInSatelliteModeForCarrierRoaming(mPhone) : false;
        proto.isSatelliteTransport = isSatellite;
        proto.isProvisioningProfile = getIsProvisioningProfile();
        return proto;
    }

@@ -355,6 +357,17 @@ public class DataCallSessionStats {
        return subInfo != null && subInfo.isOpportunistic();
    }

    private boolean getIsProvisioningProfile() {
        SubscriptionInfoInternal subInfo = SubscriptionManagerService.getInstance()
                .getSubscriptionInfoInternal(mPhone.getSubId());
        try {
            return subInfo.getProfileClass() == SubscriptionManager.PROFILE_CLASS_PROVISIONING;
        } catch (Exception ex) {
            loge("getIsProvisioningProfile: " + ex.getMessage());
            return false;
        }
    }

    private boolean getIsOos() {
        ServiceStateTracker serviceStateTracker = mPhone.getServiceStateTracker();
        ServiceState serviceState =
+2 −1
Original line number Diff line number Diff line
@@ -1206,7 +1206,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                dataCallSession.isNonDds,
                dataCallSession.isIwlanCrossSim,
                dataCallSession.isNtn,
                dataCallSession.isSatelliteTransport);
                dataCallSession.isSatelliteTransport,
                dataCallSession.isProvisioningProfile);
    }

    private static StatsEvent buildStatsEvent(ImsRegistrationStats stats) {
+52 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import androidx.test.filters.SmallTest;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.TelephonyTest;
import com.android.internal.telephony.nano.PersistAtomsProto.DataCallSession;
import com.android.internal.telephony.subscription.SubscriptionInfoInternal;

import org.junit.After;
import org.junit.Before;
@@ -356,4 +357,55 @@ public class DataCallSessionStatsTest extends TelephonyTest {

        assertFalse(stats.isNtn);
    }

    @Test
    public void testIsProvisioningProfile() {
        SubscriptionInfoInternal mSubInfoInternal = new SubscriptionInfoInternal.Builder()
            .setProfileClass(mSubscriptionManager.PROFILE_CLASS_PROVISIONING).build();

        when(mSubscriptionManagerService.getSubscriptionInfoInternal(mPhone.getSubId()))
            .thenReturn(mSubInfoInternal);

        mDataCallSessionStats.onSetupDataCall(ApnSetting.TYPE_IMS, false);
        mDataCallSessionStats.onSetupDataCallResponse(
            mDefaultImsResponse,
            TelephonyManager.NETWORK_TYPE_IWLAN,
            ApnSetting.TYPE_IMS,
            ApnSetting.PROTOCOL_IP,
            DataFailCause.NONE);

        mDataCallSessionStats.setTimeMillis(60000L);
        mDataCallSessionStats.conclude();

        ArgumentCaptor<DataCallSession> callCaptor =
            ArgumentCaptor.forClass(DataCallSession.class);
        verify(mPersistAtomsStorage, times(1)).addDataCallSession(
            callCaptor.capture());
        DataCallSession stats = callCaptor.getValue();

        assertTrue(stats.isProvisioningProfile);

        reset(mPersistAtomsStorage);

        mSubInfoInternal = new SubscriptionInfoInternal.Builder()
            .setProfileClass(mSubscriptionManager.PROFILE_CLASS_OPERATIONAL).build();

        when(mSubscriptionManagerService.getSubscriptionInfoInternal(mPhone.getSubId()))
            .thenReturn(mSubInfoInternal);

        mDataCallSessionStats.onSetupDataCall(ApnSetting.TYPE_IMS, false);
        mDataCallSessionStats.onSetupDataCallResponse(
            mDefaultImsResponse,
            TelephonyManager.NETWORK_TYPE_IWLAN,
            ApnSetting.TYPE_IMS,
            ApnSetting.PROTOCOL_IP,
            DataFailCause.NONE);

        mDataCallSessionStats.setTimeMillis(60000L);
        mDataCallSessionStats.conclude();
        verify(mPersistAtomsStorage).addDataCallSession(callCaptor.capture());
        stats = callCaptor.getValue();

        assertFalse(stats.isProvisioningProfile);
    }
}