Merge "[DU01]Remove INetworkManagementService from NetworkStatsService" am: 231503a08c

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1925678

Change-Id: Iddcd1db36b88e7e8231d584fb71a6a9409b8ae13
This commit is contained in:
Frank Li
2022-01-13 05:58:03 +00:00
committed by Automerger Merge Worker

View File

@@ -41,7 +41,6 @@ import static android.net.NetworkStats.ROAMING_YES;
import static android.net.NetworkStats.SET_ALL; import static android.net.NetworkStats.SET_ALL;
import static android.net.NetworkStats.SET_DEFAULT; import static android.net.NetworkStats.SET_DEFAULT;
import static android.net.NetworkStats.SET_FOREGROUND; import static android.net.NetworkStats.SET_FOREGROUND;
import static android.net.NetworkStats.STATS_PER_UID;
import static android.net.NetworkStats.TAG_ALL; import static android.net.NetworkStats.TAG_ALL;
import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.TAG_NONE;
import static android.net.NetworkStats.UID_ALL; import static android.net.NetworkStats.UID_ALL;
@@ -86,7 +85,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.net.DataUsageRequest; import android.net.DataUsageRequest;
import android.net.INetworkManagementEventObserver; import android.net.INetd;
import android.net.INetworkStatsSession; import android.net.INetworkStatsSession;
import android.net.LinkProperties; import android.net.LinkProperties;
import android.net.Network; import android.net.Network;
@@ -96,6 +95,7 @@ import android.net.NetworkStats;
import android.net.NetworkStatsHistory; import android.net.NetworkStatsHistory;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.net.TelephonyNetworkSpecifier; import android.net.TelephonyNetworkSpecifier;
import android.net.TetherStatsParcel;
import android.net.TetheringManager; import android.net.TetheringManager;
import android.net.UnderlyingNetworkInfo; import android.net.UnderlyingNetworkInfo;
import android.net.netstats.provider.INetworkStatsProviderCallback; import android.net.netstats.provider.INetworkStatsProviderCallback;
@@ -105,7 +105,6 @@ import android.os.ConditionVariable;
import android.os.Handler; import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;
import android.os.IBinder; import android.os.IBinder;
import android.os.INetworkManagementService;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.Messenger; import android.os.Messenger;
@@ -120,6 +119,7 @@ import androidx.test.filters.SmallTest;
import com.android.internal.util.ArrayUtils; import com.android.internal.util.ArrayUtils;
import com.android.internal.util.test.BroadcastInterceptingContext; import com.android.internal.util.test.BroadcastInterceptingContext;
import com.android.server.net.NetworkStatsService.AlertObserver;
import com.android.server.net.NetworkStatsService.NetworkStatsSettings; import com.android.server.net.NetworkStatsService.NetworkStatsSettings;
import com.android.server.net.NetworkStatsService.NetworkStatsSettings.Config; import com.android.server.net.NetworkStatsService.NetworkStatsSettings.Config;
import com.android.testutils.DevSdkIgnoreRule; import com.android.testutils.DevSdkIgnoreRule;
@@ -184,7 +184,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
private MockContext mServiceContext; private MockContext mServiceContext;
private @Mock TelephonyManager mTelephonyManager; private @Mock TelephonyManager mTelephonyManager;
private static @Mock WifiInfo sWifiInfo; private static @Mock WifiInfo sWifiInfo;
private @Mock INetworkManagementService mNetManager; private @Mock INetd mNetd;
private @Mock TetheringManager mTetheringManager; private @Mock TetheringManager mTetheringManager;
private @Mock NetworkStatsFactory mStatsFactory; private @Mock NetworkStatsFactory mStatsFactory;
private @Mock NetworkStatsSettings mSettings; private @Mock NetworkStatsSettings mSettings;
@@ -196,7 +196,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
private NetworkStatsService mService; private NetworkStatsService mService;
private INetworkStatsSession mSession; private INetworkStatsSession mSession;
private INetworkManagementEventObserver mNetworkObserver; private AlertObserver mAlertObserver;
private ContentObserver mContentObserver; private ContentObserver mContentObserver;
private Handler mHandler; private Handler mHandler;
private TetheringManager.TetheringEventCallback mTetheringEventCallback; private TetheringManager.TetheringEventCallback mTetheringEventCallback;
@@ -243,6 +243,20 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
return currentTimeMillis(); return currentTimeMillis();
} }
}; };
@NonNull
private static TetherStatsParcel buildTetherStatsParcel(String iface, long rxBytes,
long rxPackets, long txBytes, long txPackets, int ifIndex) {
TetherStatsParcel parcel = new TetherStatsParcel();
parcel.iface = iface;
parcel.rxBytes = rxBytes;
parcel.rxPackets = rxPackets;
parcel.txBytes = txBytes;
parcel.txPackets = txPackets;
parcel.ifIndex = ifIndex;
return parcel;
}
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
@@ -258,7 +272,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
mHandlerThread = new HandlerThread("HandlerThread"); mHandlerThread = new HandlerThread("HandlerThread");
final NetworkStatsService.Dependencies deps = makeDependencies(); final NetworkStatsService.Dependencies deps = makeDependencies();
mService = new NetworkStatsService(mServiceContext, mNetManager, mAlarmManager, wakeLock, mService = new NetworkStatsService(mServiceContext, mNetd, mAlarmManager, wakeLock,
mClock, mSettings, mStatsFactory, new NetworkStatsObservers(), mStatsDir, mClock, mSettings, mStatsFactory, new NetworkStatsObservers(), mStatsDir,
getBaseDir(mStatsDir), deps); getBaseDir(mStatsDir), deps);
@@ -283,11 +297,11 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
mSession = mService.openSession(); mSession = mService.openSession();
assertNotNull("openSession() failed", mSession); assertNotNull("openSession() failed", mSession);
// Catch INetworkManagementEventObserver during systemReady(). // Catch AlertObserver during systemReady().
ArgumentCaptor<INetworkManagementEventObserver> networkObserver = final ArgumentCaptor<AlertObserver> alertObserver =
ArgumentCaptor.forClass(INetworkManagementEventObserver.class); ArgumentCaptor.forClass(AlertObserver.class);
verify(mNetManager).registerObserver(networkObserver.capture()); verify(mNetd).registerUnsolicitedEventListener(alertObserver.capture());
mNetworkObserver = networkObserver.getValue(); mAlertObserver = alertObserver.getValue();
// Catch TetheringEventCallback during systemReady(). // Catch TetheringEventCallback during systemReady().
ArgumentCaptor<TetheringManager.TetheringEventCallback> tetheringEventCbCaptor = ArgumentCaptor<TetheringManager.TetheringEventCallback> tetheringEventCbCaptor =
@@ -328,7 +342,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
mServiceContext = null; mServiceContext = null;
mStatsDir = null; mStatsDir = null;
mNetManager = null; mNetd = null;
mSettings = null; mSettings = null;
mSession.close(); mSession.close();
@@ -1026,13 +1040,15 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
new UnderlyingNetworkInfo[0]); new UnderlyingNetworkInfo[0]);
NetworkStats.Entry uidStats = new NetworkStats.Entry( NetworkStats.Entry uidStats = new NetworkStats.Entry(
TEST_IFACE, UID_BLUE, SET_DEFAULT, 0xF00D, 1024L, 8L, 512L, 4L, 0L); TEST_IFACE, UID_BLUE, SET_DEFAULT, TAG_NONE, 1024L, 8L, 512L, 4L, 0L);
// Stacked on matching interface // Stacked on matching interface
NetworkStats.Entry tetheredStats1 = new NetworkStats.Entry( NetworkStats.Entry tetheredStats1 = new NetworkStats.Entry(
stackedIface, UID_BLUE, SET_DEFAULT, 0xF00D, 1024L, 8L, 512L, 4L, 0L); stackedIface, UID_TETHERING, SET_DEFAULT, TAG_NONE, 1024L, 8L, 512L, 4L, 0L);
TetherStatsParcel tetherStatsParcel1 =
buildTetherStatsParcel(stackedIface, 1024L, 8L, 512L, 4L, 0);
// Different interface // Different interface
NetworkStats.Entry tetheredStats2 = new NetworkStats.Entry( TetherStatsParcel tetherStatsParcel2 =
"otherif", UID_BLUE, SET_DEFAULT, 0xF00D, 1024L, 8L, 512L, 4L, 0L); buildTetherStatsParcel("otherif", 1024L, 8L, 512L, 4L, 0);
final String[] ifaceFilter = new String[] { TEST_IFACE }; final String[] ifaceFilter = new String[] { TEST_IFACE };
final String[] augmentedIfaceFilter = new String[] { stackedIface, TEST_IFACE }; final String[] augmentedIfaceFilter = new String[] { stackedIface, TEST_IFACE };
@@ -1044,10 +1060,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
when(mStatsFactory.readNetworkStatsDetail(eq(UID_ALL), any(), eq(TAG_ALL))) when(mStatsFactory.readNetworkStatsDetail(eq(UID_ALL), any(), eq(TAG_ALL)))
.thenReturn(new NetworkStats(getElapsedRealtime(), 1) .thenReturn(new NetworkStats(getElapsedRealtime(), 1)
.insertEntry(uidStats)); .insertEntry(uidStats));
when(mNetManager.getNetworkStatsTethering(STATS_PER_UID)) final TetherStatsParcel[] tetherStatsParcels = {tetherStatsParcel1, tetherStatsParcel2};
.thenReturn(new NetworkStats(getElapsedRealtime(), 2) when(mNetd.tetherGetStats()).thenReturn(tetherStatsParcels);
.insertEntry(tetheredStats1)
.insertEntry(tetheredStats2));
NetworkStats stats = mService.getDetailedUidStats(ifaceFilter); NetworkStats stats = mService.getDetailedUidStats(ifaceFilter);
@@ -1249,12 +1263,11 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
final NetworkStats localUidStats = new NetworkStats(now, 1) final NetworkStats localUidStats = new NetworkStats(now, 1)
.insertEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 128L, 2L, 128L, 2L, 0L); .insertEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 128L, 2L, 128L, 2L, 0L);
// Software per-uid tethering traffic. // Software per-uid tethering traffic.
final NetworkStats tetherSwUidStats = new NetworkStats(now, 1) final TetherStatsParcel[] tetherStatsParcels =
.insertEntry(TEST_IFACE, UID_TETHERING, SET_DEFAULT, TAG_NONE, 1408L, 10L, 256L, 1L, {buildTetherStatsParcel(TEST_IFACE, 1408L, 10L, 256L, 1L, 0)};
0L);
expectNetworkStatsSummary(swIfaceStats); expectNetworkStatsSummary(swIfaceStats);
expectNetworkStatsUidDetail(localUidStats, tetherSwUidStats); expectNetworkStatsUidDetail(localUidStats, tetherStatsParcels);
forcePollAndWaitForIdle(); forcePollAndWaitForIdle();
// verify service recorded history // verify service recorded history
@@ -1748,16 +1761,17 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
} }
private void expectNetworkStatsUidDetail(NetworkStats detail) throws Exception { private void expectNetworkStatsUidDetail(NetworkStats detail) throws Exception {
expectNetworkStatsUidDetail(detail, new NetworkStats(0L, 0)); final TetherStatsParcel[] tetherStatsParcels = {};
expectNetworkStatsUidDetail(detail, tetherStatsParcels);
} }
private void expectNetworkStatsUidDetail(NetworkStats detail, NetworkStats tetherStats) private void expectNetworkStatsUidDetail(NetworkStats detail,
throws Exception { TetherStatsParcel[] tetherStatsParcels) throws Exception {
when(mStatsFactory.readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL)) when(mStatsFactory.readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL))
.thenReturn(detail); .thenReturn(detail);
// also include tethering details, since they are folded into UID // also include tethering details, since they are folded into UID
when(mNetManager.getNetworkStatsTethering(STATS_PER_UID)).thenReturn(tetherStats); when(mNetd.tetherGetStats()).thenReturn(tetherStatsParcels);
} }
private void expectDefaultSettings() throws Exception { private void expectDefaultSettings() throws Exception {