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

Commit 69edcd0a authored by lucaslin's avatar lucaslin
Browse files

Add more log in NetworkMonitor for debugging

Add more log to confirm:
1. The feature of using neighbor resource by mcc is enabled or
   not.
2. TelephonyManager#getAllCellInfo() returns null or not.
3. If the carrier id matches the sCarrierIdToMccMnc.
4. If the using neighbor resource by mcc is enabled, then checking
   the sim state is ready or not.
5. If the getLocationMcc() can get the mcc or not.

Bug: 158541064
Test: 1. Build & flash.
      2. Check the log.
      3. Dump bugreport
      4. atest NetworkStackTests
Change-Id: Ib2b569234f670c62a1fc2f41463da76420cdf765
parent 9cf01c17
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -18,10 +18,12 @@ package android.net.util;

import android.content.Context;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.provider.DeviceConfig;
import android.util.Log;
import android.util.SparseArray;

import androidx.annotation.BoolRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

@@ -454,4 +456,17 @@ public class NetworkStackUtils {
        }
        return (int) value;
    }

    /**
     * Gets boolean config from resources.
     */
    public static boolean getResBooleanConfig(@NonNull final Context context,
            @BoolRes int configResource, final boolean defaultValue) {
        final Resources res = context.getResources();
        try {
            return res.getBoolean(configResource);
        } catch (Resources.NotFoundException e) {
            return defaultValue;
        }
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server;
import static android.net.dhcp.IDhcpServer.STATUS_INVALID_ARGUMENT;
import static android.net.dhcp.IDhcpServer.STATUS_SUCCESS;
import static android.net.dhcp.IDhcpServer.STATUS_UNKNOWN_ERROR;
import static android.net.util.NetworkStackUtils.getResBooleanConfig;

import static com.android.server.util.PermissionUtil.checkDumpPermission;

@@ -58,6 +59,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.IndentingPrintWriter;
import com.android.networkstack.NetworkStackNotifier;
import com.android.networkstack.R;
import com.android.networkstack.apishim.common.ShimUtils;
import com.android.server.connectivity.NetworkMonitor;
import com.android.server.connectivity.ipmemorystore.IpMemoryStoreService;
@@ -462,6 +464,11 @@ public class NetworkStackService extends Service {
                    pw.decreaseIndent();
                }
            }

            pw.println();
            pw.print("useNeighborResource: ");
            pw.println(getResBooleanConfig(mContext,
                    R.bool.config_no_sim_card_uses_neighbor_mcc, false));
        }

        /**
+8 −13
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ import static android.net.util.NetworkStackUtils.DNS_PROBE_PRIVATE_IP_NO_INTERNE
import static android.net.util.NetworkStackUtils.TEST_CAPTIVE_PORTAL_HTTPS_URL;
import static android.net.util.NetworkStackUtils.TEST_CAPTIVE_PORTAL_HTTP_URL;
import static android.net.util.NetworkStackUtils.TEST_URL_EXPIRATION_TIME;
import static android.net.util.NetworkStackUtils.getResBooleanConfig;
import static android.net.util.NetworkStackUtils.isEmpty;
import static android.net.util.NetworkStackUtils.isIPv6ULA;
import static android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY;
@@ -150,7 +151,6 @@ import android.util.Pair;
import android.util.SparseArray;

import androidx.annotation.ArrayRes;
import androidx.annotation.BoolRes;
import androidx.annotation.IntegerRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -1787,7 +1787,10 @@ public class NetworkMonitor extends StateMachine {
        }
        try {
            final List<CellInfo> cells = mTelephonyManager.getAllCellInfo();
            if (cells == null) return null;
            if (cells == null) {
                log("CellInfo is null");
                return null;
            }
            final Map<String, Integer> countryCodeMap = new HashMap<>();
            int maxCount = 0;
            for (final CellInfo cell : cells) {
@@ -1830,6 +1833,7 @@ public class NetworkMonitor extends StateMachine {
        // Return customized context if carrier id can match a record in sCarrierIdToMccMnc.
        final MccMncOverrideInfo overrideInfo = getMccMncOverrideInfo();
        if (overrideInfo != null) {
            log("Return customized context by MccMncOverrideInfo.");
            return getContextByMccMnc(overrideInfo.mcc, overrideInfo.mnc);
        }

@@ -1839,11 +1843,13 @@ public class NetworkMonitor extends StateMachine {
                getResBooleanConfig(mContext, R.bool.config_no_sim_card_uses_neighbor_mcc, false);
        if (!useNeighborResource
                || TelephonyManager.SIM_STATE_READY == mTelephonyManager.getSimState()) {
            if (useNeighborResource) log("Sim state is ready, return original context.");
            return mContext;
        }

        final String mcc = getLocationMcc();
        if (TextUtils.isEmpty(mcc)) {
            log("Return original context due to getting mcc failed.");
            return mContext;
        }

@@ -1918,17 +1924,6 @@ public class NetworkMonitor extends StateMachine {
        }
    }

    @VisibleForTesting
    boolean getResBooleanConfig(@NonNull final Context context,
            @BoolRes int configResource, final boolean defaultValue) {
        final Resources res = context.getResources();
        try {
            return res.getBoolean(configResource);
        } catch (Resources.NotFoundException e) {
            return defaultValue;
        }
    }

    /**
     * Gets integer config from resources.
     */
+19 −0
Original line number Diff line number Diff line
@@ -34,11 +34,14 @@ import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.provider.DeviceConfig;

import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

import com.android.networkstack.R;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -69,6 +72,7 @@ public class NetworkStackUtilsTest {
    @Mock private Context mContext;
    @Mock private PackageManager mPm;
    @Mock private PackageInfo mPi;
    @Mock private Resources mResources;

    @Before
    public void setUp() throws Exception {
@@ -81,6 +85,7 @@ public class NetworkStackUtilsTest {
        doReturn(mPm).when(mContext).getPackageManager();
        doReturn(TEST_PACKAGE_NAME).when(mContext).getPackageName();
        doReturn(pi).when(mPm).getPackageInfo(anyString(), anyInt());
        doReturn(mResources).when(mContext).getResources();
    }

    @After
@@ -199,4 +204,18 @@ public class NetworkStackUtilsTest {
        assertFalse(isIPv6ULA(parseNumericAddress("fe00::")));
        assertFalse(isIPv6ULA(parseNumericAddress("2480:1248::123:456")));
    }

    @Test
    public void testGetResBooleanConfig() {
        doReturn(true).when(mResources).getBoolean(R.bool.config_no_sim_card_uses_neighbor_mcc);
        assertTrue(NetworkStackUtils.getResBooleanConfig(mContext,
                R.bool.config_no_sim_card_uses_neighbor_mcc, false));
        doReturn(false).when(mResources).getBoolean(R.bool.config_no_sim_card_uses_neighbor_mcc);
        assertFalse(NetworkStackUtils.getResBooleanConfig(mContext,
                R.bool.config_no_sim_card_uses_neighbor_mcc, false));
        doThrow(new Resources.NotFoundException())
                .when(mResources).getBoolean(eq(R.bool.config_no_sim_card_uses_neighbor_mcc));
        assertFalse(NetworkStackUtils.getResBooleanConfig(mContext,
                R.bool.config_no_sim_card_uses_neighbor_mcc, false));
    }
}
 No newline at end of file