Merge "Remove NetdService, NetworkStackClient dependency"

This commit is contained in:
Remi NGUYEN VAN
2021-06-04 07:28:20 +00:00
committed by Gerrit Code Review
5 changed files with 26 additions and 34 deletions

View File

@@ -149,7 +149,6 @@ import android.net.NetworkRequest;
import android.net.NetworkScore;
import android.net.NetworkSpecifier;
import android.net.NetworkStack;
import android.net.NetworkStackClient;
import android.net.NetworkState;
import android.net.NetworkStateSnapshot;
import android.net.NetworkTestResultParcelable;
@@ -176,13 +175,14 @@ import android.net.VpnTransportInfo;
import android.net.metrics.IpConnectivityLog;
import android.net.metrics.NetworkEvent;
import android.net.netlink.InetDiagMessage;
import android.net.networkstack.ModuleNetworkStackClient;
import android.net.networkstack.NetworkStackClientBase;
import android.net.resolv.aidl.DnsHealthEventParcel;
import android.net.resolv.aidl.IDnsResolverUnsolicitedEventListener;
import android.net.resolv.aidl.Nat64PrefixEventParcel;
import android.net.resolv.aidl.PrivateDnsValidationEventParcel;
import android.net.shared.PrivateDnsConfig;
import android.net.util.MultinetworkPolicyTracker;
import android.net.util.NetdService;
import android.os.BatteryStatsManager;
import android.os.Binder;
import android.os.Build;
@@ -1183,10 +1183,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
/**
* Get a reference to the NetworkStackClient.
* Get a reference to the ModuleNetworkStackClient.
*/
public NetworkStackClient getNetworkStack() {
return NetworkStackClient.getInstance();
public NetworkStackClientBase getNetworkStack() {
return ModuleNetworkStackClient.getInstance(null);
}
/**
@@ -1245,7 +1245,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
public ConnectivityService(Context context) {
this(context, getDnsResolver(context), new IpConnectivityLog(),
NetdService.getInstance(), new Dependencies());
INetd.Stub.asInterface((IBinder) context.getSystemService(Context.NETD_SERVICE)),
new Dependencies());
}
@VisibleForTesting
@@ -2988,10 +2989,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
pw.println();
pw.println("NetworkStackClient logs:");
pw.increaseIndent();
NetworkStackClient.getInstance().dump(pw);
pw.decreaseIndent();
pw.println();
pw.println("Permission Monitor:");

View File

@@ -35,7 +35,6 @@ import android.net.NetworkProvider;
import android.net.RouteInfo;
import android.net.TestNetworkInterface;
import android.net.TestNetworkSpecifier;
import android.net.util.NetdService;
import android.os.Binder;
import android.os.Handler;
import android.os.HandlerThread;
@@ -86,7 +85,9 @@ class TestNetworkService extends ITestNetworkManager.Stub {
mHandler = new Handler(mHandlerThread.getLooper());
mContext = Objects.requireNonNull(context, "missing Context");
mNetd = Objects.requireNonNull(NetdService.getInstance(), "could not get netd instance");
mNetd = Objects.requireNonNull(
INetd.Stub.asInterface((IBinder) context.getSystemService(Context.NETD_SERVICE)),
"could not get netd instance");
mCm = mContext.getSystemService(ConnectivityManager.class);
mNetworkProvider = new NetworkProvider(mContext, mHandler.getLooper(),
TEST_NETWORK_PROVIDER_NAME);

View File

@@ -19,6 +19,7 @@ package android.net
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.net.networkstack.NetworkStackClientBase
import android.os.IBinder
import com.android.server.net.integrationtests.TestNetworkStackService
import org.mockito.Mockito.any
@@ -29,28 +30,22 @@ import kotlin.test.fail
const val TEST_ACTION_SUFFIX = ".Test"
class TestNetworkStackClient(context: Context) : NetworkStackClient(TestDependencies(context)) {
class TestNetworkStackClient(private val context: Context) : NetworkStackClientBase() {
// TODO: consider switching to TrackRecord for more expressive checks
private val lastCallbacks = HashMap<Network, INetworkMonitorCallbacks>()
private val moduleConnector = ConnectivityModuleConnector { _, action, _, _ ->
val intent = Intent(action)
val serviceName = TestNetworkStackService::class.qualifiedName
?: fail("TestNetworkStackService name not found")
intent.component = ComponentName(context.packageName, serviceName)
return@ConnectivityModuleConnector intent
}.also { it.init(context) }
private class TestDependencies(private val context: Context) : Dependencies {
override fun addToServiceManager(service: IBinder) = Unit
override fun checkCallerUid() = Unit
override fun getConnectivityModuleConnector(): ConnectivityModuleConnector {
return ConnectivityModuleConnector { _, _, _, inSystemProcess ->
getNetworkStackIntent(inSystemProcess)
}.also { it.init(context) }
}
private fun getNetworkStackIntent(inSystemProcess: Boolean): Intent? {
// Simulate out-of-system-process config: in-process service not found (null intent)
if (inSystemProcess) return null
val intent = Intent(INetworkStackConnector::class.qualifiedName + TEST_ACTION_SUFFIX)
val serviceName = TestNetworkStackService::class.qualifiedName
?: fail("TestNetworkStackService name not found")
intent.component = ComponentName(context.packageName, serviceName)
return intent
fun start() {
moduleConnector.startModuleService(
INetworkStackConnector::class.qualifiedName + TEST_ACTION_SUFFIX,
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) { connector ->
onNetworkStackConnected(INetworkStackConnector.Stub.asInterface(connector))
}
}

View File

@@ -157,7 +157,6 @@ class ConnectivityServiceIntegrationTest {
doReturn(IntArray(0)).`when`(systemConfigManager).getSystemPermissionUids(anyString())
networkStackClient = TestNetworkStackClient(realContext)
networkStackClient.init()
networkStackClient.start()
service = TestConnectivityService(makeDependencies())

View File

@@ -228,7 +228,6 @@ import android.net.NetworkRequest;
import android.net.NetworkScore;
import android.net.NetworkSpecifier;
import android.net.NetworkStack;
import android.net.NetworkStackClient;
import android.net.NetworkStateSnapshot;
import android.net.NetworkTestResultParcelable;
import android.net.OemNetworkPreferences;
@@ -248,6 +247,7 @@ import android.net.Uri;
import android.net.VpnManager;
import android.net.VpnTransportInfo;
import android.net.metrics.IpConnectivityLog;
import android.net.networkstack.NetworkStackClientBase;
import android.net.resolv.aidl.Nat64PrefixEventParcel;
import android.net.resolv.aidl.PrivateDnsValidationEventParcel;
import android.net.shared.NetworkMonitorUtils;
@@ -461,7 +461,7 @@ public class ConnectivityServiceTest {
@Mock NetworkStatsManager mStatsManager;
@Mock IDnsResolver mMockDnsResolver;
@Mock INetd mMockNetd;
@Mock NetworkStackClient mNetworkStack;
@Mock NetworkStackClientBase mNetworkStack;
@Mock PackageManager mPackageManager;
@Mock UserManager mUserManager;
@Mock NotificationManager mNotificationManager;