Use IDnsResolver instead of INetd for resolver related binder commands
migrate resolver related commands from INetd to IDnsResolver
Bug: 126141549
Test: atest FrameworksNetTests ConnectivityServiceTest Nat464XlatTest
atest DnsManagerTest
Change-Id: I559c0c1304d53dde408c062e1a52e742595e7cbe
This commit is contained in:
@@ -63,6 +63,7 @@ import android.net.ConnectionInfo;
|
|||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.ICaptivePortal;
|
import android.net.ICaptivePortal;
|
||||||
import android.net.IConnectivityManager;
|
import android.net.IConnectivityManager;
|
||||||
|
import android.net.IDnsResolver;
|
||||||
import android.net.IIpConnectivityMetrics;
|
import android.net.IIpConnectivityMetrics;
|
||||||
import android.net.INetd;
|
import android.net.INetd;
|
||||||
import android.net.INetdEventCallback;
|
import android.net.INetdEventCallback;
|
||||||
@@ -294,6 +295,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
|
|
||||||
private INetworkManagementService mNMS;
|
private INetworkManagementService mNMS;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
protected IDnsResolver mDnsResolver;
|
||||||
|
@VisibleForTesting
|
||||||
protected INetd mNetd;
|
protected INetd mNetd;
|
||||||
private INetworkStatsService mStatsService;
|
private INetworkStatsService mStatsService;
|
||||||
private INetworkPolicyManager mPolicyManager;
|
private INetworkPolicyManager mPolicyManager;
|
||||||
@@ -525,6 +528,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
return sMagicDecoderRing.get(what, Integer.toString(what));
|
return sMagicDecoderRing.get(what, Integer.toString(what));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static IDnsResolver getDnsResolver() {
|
||||||
|
return IDnsResolver.Stub
|
||||||
|
.asInterface(ServiceManager.getService("dnsresolver"));
|
||||||
|
}
|
||||||
|
|
||||||
/** Handler thread used for both of the handlers below. */
|
/** Handler thread used for both of the handlers below. */
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected final HandlerThread mHandlerThread;
|
protected final HandlerThread mHandlerThread;
|
||||||
@@ -810,13 +818,14 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
|
|
||||||
public ConnectivityService(Context context, INetworkManagementService netManager,
|
public ConnectivityService(Context context, INetworkManagementService netManager,
|
||||||
INetworkStatsService statsService, INetworkPolicyManager policyManager) {
|
INetworkStatsService statsService, INetworkPolicyManager policyManager) {
|
||||||
this(context, netManager, statsService, policyManager, new IpConnectivityLog());
|
this(context, netManager, statsService, policyManager,
|
||||||
|
getDnsResolver(), new IpConnectivityLog());
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected ConnectivityService(Context context, INetworkManagementService netManager,
|
protected ConnectivityService(Context context, INetworkManagementService netManager,
|
||||||
INetworkStatsService statsService, INetworkPolicyManager policyManager,
|
INetworkStatsService statsService, INetworkPolicyManager policyManager,
|
||||||
IpConnectivityLog logger) {
|
IDnsResolver dnsresolver, IpConnectivityLog logger) {
|
||||||
if (DBG) log("ConnectivityService starting up");
|
if (DBG) log("ConnectivityService starting up");
|
||||||
|
|
||||||
mSystemProperties = getSystemProperties();
|
mSystemProperties = getSystemProperties();
|
||||||
@@ -853,6 +862,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
mPolicyManagerInternal = checkNotNull(
|
mPolicyManagerInternal = checkNotNull(
|
||||||
LocalServices.getService(NetworkPolicyManagerInternal.class),
|
LocalServices.getService(NetworkPolicyManagerInternal.class),
|
||||||
"missing NetworkPolicyManagerInternal");
|
"missing NetworkPolicyManagerInternal");
|
||||||
|
mDnsResolver = checkNotNull(dnsresolver, "missing IDnsResolver");
|
||||||
mProxyTracker = makeProxyTracker();
|
mProxyTracker = makeProxyTracker();
|
||||||
|
|
||||||
mNetd = NetdService.getInstance();
|
mNetd = NetdService.getInstance();
|
||||||
@@ -1006,7 +1016,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
|
|
||||||
mMultipathPolicyTracker = new MultipathPolicyTracker(mContext, mHandler);
|
mMultipathPolicyTracker = new MultipathPolicyTracker(mContext, mHandler);
|
||||||
|
|
||||||
mDnsManager = new DnsManager(mContext, mNMS, mSystemProperties);
|
mDnsManager = new DnsManager(mContext, mDnsResolver, mSystemProperties);
|
||||||
registerPrivateDnsSettingsCallbacks();
|
registerPrivateDnsSettingsCallbacks();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3021,9 +3031,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
// NetworkFactories, so network traffic isn't interrupted for an unnecessarily
|
// NetworkFactories, so network traffic isn't interrupted for an unnecessarily
|
||||||
// long time.
|
// long time.
|
||||||
try {
|
try {
|
||||||
mNMS.removeNetwork(nai.network.netId);
|
mNetd.networkDestroy(nai.network.netId);
|
||||||
} catch (Exception e) {
|
} catch (RemoteException | ServiceSpecificException e) {
|
||||||
loge("Exception removing network: " + e);
|
loge("Exception destroying network: " + e);
|
||||||
}
|
}
|
||||||
mDnsManager.removeNetwork(nai.network);
|
mDnsManager.removeNetwork(nai.network);
|
||||||
}
|
}
|
||||||
@@ -5372,8 +5382,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
final NetworkCapabilities nc = new NetworkCapabilities(networkCapabilities);
|
final NetworkCapabilities nc = new NetworkCapabilities(networkCapabilities);
|
||||||
final NetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(),
|
final NetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(),
|
||||||
new Network(reserveNetId()), new NetworkInfo(networkInfo), lp, nc, currentScore,
|
new Network(reserveNetId()), new NetworkInfo(networkInfo), lp, nc, currentScore,
|
||||||
mContext, mTrackerHandler, new NetworkMisc(networkMisc), this, mNetd, mNMS,
|
mContext, mTrackerHandler, new NetworkMisc(networkMisc), this, mNetd, mDnsResolver,
|
||||||
factorySerialNumber);
|
mNMS, factorySerialNumber);
|
||||||
// Make sure the network capabilities reflect what the agent info says.
|
// Make sure the network capabilities reflect what the agent info says.
|
||||||
nai.networkCapabilities = mixInCapabilities(nai, nc);
|
nai.networkCapabilities = mixInCapabilities(nai, nc);
|
||||||
final String extraInfo = networkInfo.getExtraInfo();
|
final String extraInfo = networkInfo.getExtraInfo();
|
||||||
|
|||||||
@@ -30,13 +30,15 @@ import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER;
|
|||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.net.IDnsResolver;
|
||||||
import android.net.LinkProperties;
|
import android.net.LinkProperties;
|
||||||
import android.net.Network;
|
import android.net.Network;
|
||||||
import android.net.NetworkUtils;
|
import android.net.NetworkUtils;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.net.shared.PrivateDnsConfig;
|
import android.net.shared.PrivateDnsConfig;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.INetworkManagementService;
|
import android.os.RemoteException;
|
||||||
|
import android.os.ServiceSpecificException;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
@@ -229,7 +231,7 @@ public class DnsManager {
|
|||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final ContentResolver mContentResolver;
|
private final ContentResolver mContentResolver;
|
||||||
private final INetworkManagementService mNMS;
|
private final IDnsResolver mDnsResolver;
|
||||||
private final MockableSystemProperties mSystemProperties;
|
private final MockableSystemProperties mSystemProperties;
|
||||||
// TODO: Replace these Maps with SparseArrays.
|
// TODO: Replace these Maps with SparseArrays.
|
||||||
private final Map<Integer, PrivateDnsConfig> mPrivateDnsMap;
|
private final Map<Integer, PrivateDnsConfig> mPrivateDnsMap;
|
||||||
@@ -243,10 +245,10 @@ public class DnsManager {
|
|||||||
private String mPrivateDnsMode;
|
private String mPrivateDnsMode;
|
||||||
private String mPrivateDnsSpecifier;
|
private String mPrivateDnsSpecifier;
|
||||||
|
|
||||||
public DnsManager(Context ctx, INetworkManagementService nms, MockableSystemProperties sp) {
|
public DnsManager(Context ctx, IDnsResolver dnsResolver, MockableSystemProperties sp) {
|
||||||
mContext = ctx;
|
mContext = ctx;
|
||||||
mContentResolver = mContext.getContentResolver();
|
mContentResolver = mContext.getContentResolver();
|
||||||
mNMS = nms;
|
mDnsResolver = dnsResolver;
|
||||||
mSystemProperties = sp;
|
mSystemProperties = sp;
|
||||||
mPrivateDnsMap = new HashMap<>();
|
mPrivateDnsMap = new HashMap<>();
|
||||||
mPrivateDnsValidationMap = new HashMap<>();
|
mPrivateDnsValidationMap = new HashMap<>();
|
||||||
@@ -260,6 +262,12 @@ public class DnsManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void removeNetwork(Network network) {
|
public void removeNetwork(Network network) {
|
||||||
|
try {
|
||||||
|
mDnsResolver.clearResolverConfiguration(network.netId);
|
||||||
|
} catch (RemoteException | ServiceSpecificException e) {
|
||||||
|
Slog.e(TAG, "Error clearing DNS configuration: " + e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
mPrivateDnsMap.remove(network.netId);
|
mPrivateDnsMap.remove(network.netId);
|
||||||
mPrivateDnsValidationMap.remove(network.netId);
|
mPrivateDnsValidationMap.remove(network.netId);
|
||||||
}
|
}
|
||||||
@@ -344,10 +352,12 @@ public class DnsManager {
|
|||||||
Slog.d(TAG, String.format("setDnsConfigurationForNetwork(%d, %s, %s, %s, %s, %s)",
|
Slog.d(TAG, String.format("setDnsConfigurationForNetwork(%d, %s, %s, %s, %s, %s)",
|
||||||
netId, Arrays.toString(assignedServers), Arrays.toString(domainStrs),
|
netId, Arrays.toString(assignedServers), Arrays.toString(domainStrs),
|
||||||
Arrays.toString(params), tlsHostname, Arrays.toString(tlsServers)));
|
Arrays.toString(params), tlsHostname, Arrays.toString(tlsServers)));
|
||||||
|
final String[] tlsFingerprints = new String[0];
|
||||||
try {
|
try {
|
||||||
mNMS.setDnsConfigurationForNetwork(
|
mDnsResolver.setResolverConfiguration(
|
||||||
netId, assignedServers, domainStrs, params, tlsHostname, tlsServers);
|
netId, assignedServers, domainStrs, params,
|
||||||
} catch (Exception e) {
|
tlsHostname, tlsServers, tlsFingerprints);
|
||||||
|
} catch (RemoteException | ServiceSpecificException e) {
|
||||||
Slog.e(TAG, "Error setting DNS configuration: " + e);
|
Slog.e(TAG, "Error setting DNS configuration: " + e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.android.server.connectivity;
|
package com.android.server.connectivity;
|
||||||
|
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.IDnsResolver;
|
||||||
import android.net.INetd;
|
import android.net.INetd;
|
||||||
import android.net.InetAddresses;
|
import android.net.InetAddresses;
|
||||||
import android.net.InterfaceConfiguration;
|
import android.net.InterfaceConfiguration;
|
||||||
@@ -65,6 +66,7 @@ public class Nat464Xlat extends BaseNetworkObserver {
|
|||||||
NetworkInfo.State.SUSPENDED,
|
NetworkInfo.State.SUSPENDED,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private final IDnsResolver mDnsResolver;
|
||||||
private final INetd mNetd;
|
private final INetd mNetd;
|
||||||
private final INetworkManagementService mNMService;
|
private final INetworkManagementService mNMService;
|
||||||
|
|
||||||
@@ -84,7 +86,9 @@ public class Nat464Xlat extends BaseNetworkObserver {
|
|||||||
private Inet6Address mIPv6Address;
|
private Inet6Address mIPv6Address;
|
||||||
private State mState = State.IDLE;
|
private State mState = State.IDLE;
|
||||||
|
|
||||||
public Nat464Xlat(NetworkAgentInfo nai, INetd netd, INetworkManagementService nmService) {
|
public Nat464Xlat(NetworkAgentInfo nai, INetd netd, IDnsResolver dnsResolver,
|
||||||
|
INetworkManagementService nmService) {
|
||||||
|
mDnsResolver = dnsResolver;
|
||||||
mNetd = netd;
|
mNetd = netd;
|
||||||
mNMService = nmService;
|
mNMService = nmService;
|
||||||
mNetwork = nai;
|
mNetwork = nai;
|
||||||
@@ -269,7 +273,7 @@ public class Nat464Xlat extends BaseNetworkObserver {
|
|||||||
|
|
||||||
private void startPrefixDiscovery() {
|
private void startPrefixDiscovery() {
|
||||||
try {
|
try {
|
||||||
mNetd.resolverStartPrefix64Discovery(getNetId());
|
mDnsResolver.startPrefix64Discovery(getNetId());
|
||||||
mState = State.DISCOVERING;
|
mState = State.DISCOVERING;
|
||||||
} catch (RemoteException | ServiceSpecificException e) {
|
} catch (RemoteException | ServiceSpecificException e) {
|
||||||
Slog.e(TAG, "Error starting prefix discovery on netId " + getNetId() + ": " + e);
|
Slog.e(TAG, "Error starting prefix discovery on netId " + getNetId() + ": " + e);
|
||||||
@@ -278,7 +282,7 @@ public class Nat464Xlat extends BaseNetworkObserver {
|
|||||||
|
|
||||||
private void stopPrefixDiscovery() {
|
private void stopPrefixDiscovery() {
|
||||||
try {
|
try {
|
||||||
mNetd.resolverStopPrefix64Discovery(getNetId());
|
mDnsResolver.stopPrefix64Discovery(getNetId());
|
||||||
} catch (RemoteException | ServiceSpecificException e) {
|
} catch (RemoteException | ServiceSpecificException e) {
|
||||||
Slog.e(TAG, "Error stopping prefix discovery on netId " + getNetId() + ": " + e);
|
Slog.e(TAG, "Error stopping prefix discovery on netId " + getNetId() + ": " + e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.android.server.connectivity;
|
package com.android.server.connectivity;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.net.IDnsResolver;
|
||||||
import android.net.INetd;
|
import android.net.INetd;
|
||||||
import android.net.INetworkMonitor;
|
import android.net.INetworkMonitor;
|
||||||
import android.net.LinkProperties;
|
import android.net.LinkProperties;
|
||||||
@@ -255,7 +256,7 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> {
|
|||||||
public NetworkAgentInfo(Messenger messenger, AsyncChannel ac, Network net, NetworkInfo info,
|
public NetworkAgentInfo(Messenger messenger, AsyncChannel ac, Network net, NetworkInfo info,
|
||||||
LinkProperties lp, NetworkCapabilities nc, int score, Context context, Handler handler,
|
LinkProperties lp, NetworkCapabilities nc, int score, Context context, Handler handler,
|
||||||
NetworkMisc misc, ConnectivityService connService, INetd netd,
|
NetworkMisc misc, ConnectivityService connService, INetd netd,
|
||||||
INetworkManagementService nms, int factorySerialNumber) {
|
IDnsResolver dnsResolver, INetworkManagementService nms, int factorySerialNumber) {
|
||||||
this.messenger = messenger;
|
this.messenger = messenger;
|
||||||
asyncChannel = ac;
|
asyncChannel = ac;
|
||||||
network = net;
|
network = net;
|
||||||
@@ -263,7 +264,7 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> {
|
|||||||
linkProperties = lp;
|
linkProperties = lp;
|
||||||
networkCapabilities = nc;
|
networkCapabilities = nc;
|
||||||
currentScore = score;
|
currentScore = score;
|
||||||
clatd = new Nat464Xlat(this, netd, nms);
|
clatd = new Nat464Xlat(this, netd, dnsResolver, nms);
|
||||||
mConnService = connService;
|
mConnService = connService;
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mHandler = handler;
|
mHandler = handler;
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ import android.net.ConnectivityManager.PacketKeepalive;
|
|||||||
import android.net.ConnectivityManager.PacketKeepaliveCallback;
|
import android.net.ConnectivityManager.PacketKeepaliveCallback;
|
||||||
import android.net.ConnectivityManager.TooManyRequestsException;
|
import android.net.ConnectivityManager.TooManyRequestsException;
|
||||||
import android.net.ConnectivityThread;
|
import android.net.ConnectivityThread;
|
||||||
|
import android.net.IDnsResolver;
|
||||||
import android.net.INetd;
|
import android.net.INetd;
|
||||||
import android.net.INetworkMonitor;
|
import android.net.INetworkMonitor;
|
||||||
import android.net.INetworkMonitorCallbacks;
|
import android.net.INetworkMonitorCallbacks;
|
||||||
@@ -240,6 +241,7 @@ public class ConnectivityServiceTest {
|
|||||||
private static final String CLAT_PREFIX = "v4-";
|
private static final String CLAT_PREFIX = "v4-";
|
||||||
private static final String MOBILE_IFNAME = "test_rmnet_data0";
|
private static final String MOBILE_IFNAME = "test_rmnet_data0";
|
||||||
private static final String WIFI_IFNAME = "test_wlan0";
|
private static final String WIFI_IFNAME = "test_wlan0";
|
||||||
|
private static final String[] EMPTY_STRING_ARRAY = new String[0];
|
||||||
|
|
||||||
private MockContext mServiceContext;
|
private MockContext mServiceContext;
|
||||||
private WrappedConnectivityService mService;
|
private WrappedConnectivityService mService;
|
||||||
@@ -256,6 +258,7 @@ public class ConnectivityServiceTest {
|
|||||||
@Mock INetworkManagementService mNetworkManagementService;
|
@Mock INetworkManagementService mNetworkManagementService;
|
||||||
@Mock INetworkStatsService mStatsService;
|
@Mock INetworkStatsService mStatsService;
|
||||||
@Mock INetworkPolicyManager mNpm;
|
@Mock INetworkPolicyManager mNpm;
|
||||||
|
@Mock IDnsResolver mMockDnsResolver;
|
||||||
@Mock INetd mMockNetd;
|
@Mock INetd mMockNetd;
|
||||||
@Mock NetworkStackClient mNetworkStack;
|
@Mock NetworkStackClient mNetworkStack;
|
||||||
|
|
||||||
@@ -1053,8 +1056,8 @@ public class ConnectivityServiceTest {
|
|||||||
|
|
||||||
public WrappedConnectivityService(Context context, INetworkManagementService netManager,
|
public WrappedConnectivityService(Context context, INetworkManagementService netManager,
|
||||||
INetworkStatsService statsService, INetworkPolicyManager policyManager,
|
INetworkStatsService statsService, INetworkPolicyManager policyManager,
|
||||||
IpConnectivityLog log, INetd netd) {
|
IpConnectivityLog log, INetd netd, IDnsResolver dnsResolver) {
|
||||||
super(context, netManager, statsService, policyManager, log);
|
super(context, netManager, statsService, policyManager, dnsResolver, log);
|
||||||
mNetd = netd;
|
mNetd = netd;
|
||||||
mLingerDelayMs = TEST_LINGER_DELAY_MS;
|
mLingerDelayMs = TEST_LINGER_DELAY_MS;
|
||||||
}
|
}
|
||||||
@@ -1218,7 +1221,8 @@ public class ConnectivityServiceTest {
|
|||||||
mStatsService,
|
mStatsService,
|
||||||
mNpm,
|
mNpm,
|
||||||
mock(IpConnectivityLog.class),
|
mock(IpConnectivityLog.class),
|
||||||
mMockNetd);
|
mMockNetd,
|
||||||
|
mMockDnsResolver);
|
||||||
|
|
||||||
final ArgumentCaptor<INetworkPolicyListener> policyListenerCaptor =
|
final ArgumentCaptor<INetworkPolicyListener> policyListenerCaptor =
|
||||||
ArgumentCaptor.forClass(INetworkPolicyListener.class);
|
ArgumentCaptor.forClass(INetworkPolicyListener.class);
|
||||||
@@ -4772,14 +4776,14 @@ public class ConnectivityServiceTest {
|
|||||||
ArgumentCaptor<String[]> tlsServers = ArgumentCaptor.forClass(String[].class);
|
ArgumentCaptor<String[]> tlsServers = ArgumentCaptor.forClass(String[].class);
|
||||||
|
|
||||||
// Clear any interactions that occur as a result of CS starting up.
|
// Clear any interactions that occur as a result of CS starting up.
|
||||||
reset(mNetworkManagementService);
|
reset(mMockDnsResolver);
|
||||||
|
|
||||||
final String[] EMPTY_STRING_ARRAY = new String[0];
|
|
||||||
mCellNetworkAgent = new MockNetworkAgent(TRANSPORT_CELLULAR);
|
mCellNetworkAgent = new MockNetworkAgent(TRANSPORT_CELLULAR);
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
verify(mNetworkManagementService, never()).setDnsConfigurationForNetwork(
|
verify(mMockDnsResolver, never()).setResolverConfiguration(
|
||||||
anyInt(), eq(EMPTY_STRING_ARRAY), any(), any(), eq(""), eq(EMPTY_STRING_ARRAY));
|
anyInt(), eq(EMPTY_STRING_ARRAY), any(), any(), eq(""),
|
||||||
verifyNoMoreInteractions(mNetworkManagementService);
|
eq(EMPTY_STRING_ARRAY), eq(EMPTY_STRING_ARRAY));
|
||||||
|
verifyNoMoreInteractions(mMockDnsResolver);
|
||||||
|
|
||||||
final LinkProperties cellLp = new LinkProperties();
|
final LinkProperties cellLp = new LinkProperties();
|
||||||
cellLp.setInterfaceName(MOBILE_IFNAME);
|
cellLp.setInterfaceName(MOBILE_IFNAME);
|
||||||
@@ -4796,28 +4800,29 @@ public class ConnectivityServiceTest {
|
|||||||
mCellNetworkAgent.connect(false);
|
mCellNetworkAgent.connect(false);
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
// CS tells netd about the empty DNS config for this network.
|
// CS tells netd about the empty DNS config for this network.
|
||||||
verify(mNetworkManagementService, atLeastOnce()).setDnsConfigurationForNetwork(
|
verify(mMockDnsResolver, atLeastOnce()).setResolverConfiguration(
|
||||||
anyInt(), eq(EMPTY_STRING_ARRAY), any(), any(), eq(""), eq(EMPTY_STRING_ARRAY));
|
anyInt(), eq(EMPTY_STRING_ARRAY), any(), any(), eq(""),
|
||||||
reset(mNetworkManagementService);
|
eq(EMPTY_STRING_ARRAY), eq(EMPTY_STRING_ARRAY));
|
||||||
|
reset(mMockDnsResolver);
|
||||||
|
|
||||||
cellLp.addDnsServer(InetAddress.getByName("2001:db8::1"));
|
cellLp.addDnsServer(InetAddress.getByName("2001:db8::1"));
|
||||||
mCellNetworkAgent.sendLinkProperties(cellLp);
|
mCellNetworkAgent.sendLinkProperties(cellLp);
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
verify(mNetworkManagementService, atLeastOnce()).setDnsConfigurationForNetwork(
|
verify(mMockDnsResolver, atLeastOnce()).setResolverConfiguration(
|
||||||
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
||||||
eq(""), tlsServers.capture());
|
eq(""), tlsServers.capture(), eq(EMPTY_STRING_ARRAY));
|
||||||
assertEquals(1, mStringArrayCaptor.getValue().length);
|
assertEquals(1, mStringArrayCaptor.getValue().length);
|
||||||
assertTrue(ArrayUtils.contains(mStringArrayCaptor.getValue(), "2001:db8::1"));
|
assertTrue(ArrayUtils.contains(mStringArrayCaptor.getValue(), "2001:db8::1"));
|
||||||
// Opportunistic mode.
|
// Opportunistic mode.
|
||||||
assertTrue(ArrayUtils.contains(tlsServers.getValue(), "2001:db8::1"));
|
assertTrue(ArrayUtils.contains(tlsServers.getValue(), "2001:db8::1"));
|
||||||
reset(mNetworkManagementService);
|
reset(mMockDnsResolver);
|
||||||
|
|
||||||
cellLp.addDnsServer(InetAddress.getByName("192.0.2.1"));
|
cellLp.addDnsServer(InetAddress.getByName("192.0.2.1"));
|
||||||
mCellNetworkAgent.sendLinkProperties(cellLp);
|
mCellNetworkAgent.sendLinkProperties(cellLp);
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
verify(mNetworkManagementService, atLeastOnce()).setDnsConfigurationForNetwork(
|
verify(mMockDnsResolver, atLeastOnce()).setResolverConfiguration(
|
||||||
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
||||||
eq(""), tlsServers.capture());
|
eq(""), tlsServers.capture(), eq(EMPTY_STRING_ARRAY));
|
||||||
assertEquals(2, mStringArrayCaptor.getValue().length);
|
assertEquals(2, mStringArrayCaptor.getValue().length);
|
||||||
assertTrue(ArrayUtils.containsAll(mStringArrayCaptor.getValue(),
|
assertTrue(ArrayUtils.containsAll(mStringArrayCaptor.getValue(),
|
||||||
new String[]{"2001:db8::1", "192.0.2.1"}));
|
new String[]{"2001:db8::1", "192.0.2.1"}));
|
||||||
@@ -4825,7 +4830,7 @@ public class ConnectivityServiceTest {
|
|||||||
assertEquals(2, tlsServers.getValue().length);
|
assertEquals(2, tlsServers.getValue().length);
|
||||||
assertTrue(ArrayUtils.containsAll(tlsServers.getValue(),
|
assertTrue(ArrayUtils.containsAll(tlsServers.getValue(),
|
||||||
new String[]{"2001:db8::1", "192.0.2.1"}));
|
new String[]{"2001:db8::1", "192.0.2.1"}));
|
||||||
reset(mNetworkManagementService);
|
reset(mMockDnsResolver);
|
||||||
|
|
||||||
final String TLS_SPECIFIER = "tls.example.com";
|
final String TLS_SPECIFIER = "tls.example.com";
|
||||||
final String TLS_SERVER6 = "2001:db8:53::53";
|
final String TLS_SERVER6 = "2001:db8:53::53";
|
||||||
@@ -4835,22 +4840,21 @@ public class ConnectivityServiceTest {
|
|||||||
new PrivateDnsConfig(TLS_SPECIFIER, TLS_IPS).toParcel());
|
new PrivateDnsConfig(TLS_SPECIFIER, TLS_IPS).toParcel());
|
||||||
|
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
verify(mNetworkManagementService, atLeastOnce()).setDnsConfigurationForNetwork(
|
verify(mMockDnsResolver, atLeastOnce()).setResolverConfiguration(
|
||||||
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
||||||
eq(TLS_SPECIFIER), eq(TLS_SERVERS));
|
eq(TLS_SPECIFIER), eq(TLS_SERVERS), eq(EMPTY_STRING_ARRAY));
|
||||||
assertEquals(2, mStringArrayCaptor.getValue().length);
|
assertEquals(2, mStringArrayCaptor.getValue().length);
|
||||||
assertTrue(ArrayUtils.containsAll(mStringArrayCaptor.getValue(),
|
assertTrue(ArrayUtils.containsAll(mStringArrayCaptor.getValue(),
|
||||||
new String[]{"2001:db8::1", "192.0.2.1"}));
|
new String[]{"2001:db8::1", "192.0.2.1"}));
|
||||||
reset(mNetworkManagementService);
|
reset(mMockDnsResolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPrivateDnsSettingsChange() throws Exception {
|
public void testPrivateDnsSettingsChange() throws Exception {
|
||||||
final String[] EMPTY_STRING_ARRAY = new String[0];
|
|
||||||
ArgumentCaptor<String[]> tlsServers = ArgumentCaptor.forClass(String[].class);
|
ArgumentCaptor<String[]> tlsServers = ArgumentCaptor.forClass(String[].class);
|
||||||
|
|
||||||
// Clear any interactions that occur as a result of CS starting up.
|
// Clear any interactions that occur as a result of CS starting up.
|
||||||
reset(mNetworkManagementService);
|
reset(mMockDnsResolver);
|
||||||
|
|
||||||
// The default on Android is opportunistic mode ("Automatic").
|
// The default on Android is opportunistic mode ("Automatic").
|
||||||
setPrivateDnsSettings(PRIVATE_DNS_MODE_OPPORTUNISTIC, "ignored.example.com");
|
setPrivateDnsSettings(PRIVATE_DNS_MODE_OPPORTUNISTIC, "ignored.example.com");
|
||||||
@@ -4863,9 +4867,10 @@ public class ConnectivityServiceTest {
|
|||||||
mCellNetworkAgent = new MockNetworkAgent(TRANSPORT_CELLULAR);
|
mCellNetworkAgent = new MockNetworkAgent(TRANSPORT_CELLULAR);
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
// CS tells netd about the empty DNS config for this network.
|
// CS tells netd about the empty DNS config for this network.
|
||||||
verify(mNetworkManagementService, never()).setDnsConfigurationForNetwork(
|
verify(mMockDnsResolver, never()).setResolverConfiguration(
|
||||||
anyInt(), eq(EMPTY_STRING_ARRAY), any(), any(), eq(""), eq(EMPTY_STRING_ARRAY));
|
anyInt(), eq(EMPTY_STRING_ARRAY), any(), any(), eq(""),
|
||||||
verifyNoMoreInteractions(mNetworkManagementService);
|
eq(EMPTY_STRING_ARRAY), eq(EMPTY_STRING_ARRAY));
|
||||||
|
verifyNoMoreInteractions(mMockDnsResolver);
|
||||||
|
|
||||||
final LinkProperties cellLp = new LinkProperties();
|
final LinkProperties cellLp = new LinkProperties();
|
||||||
cellLp.setInterfaceName(MOBILE_IFNAME);
|
cellLp.setInterfaceName(MOBILE_IFNAME);
|
||||||
@@ -4884,9 +4889,9 @@ public class ConnectivityServiceTest {
|
|||||||
mCellNetworkAgent.sendLinkProperties(cellLp);
|
mCellNetworkAgent.sendLinkProperties(cellLp);
|
||||||
mCellNetworkAgent.connect(false);
|
mCellNetworkAgent.connect(false);
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
verify(mNetworkManagementService, atLeastOnce()).setDnsConfigurationForNetwork(
|
verify(mMockDnsResolver, atLeastOnce()).setResolverConfiguration(
|
||||||
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
||||||
eq(""), tlsServers.capture());
|
eq(""), tlsServers.capture(), eq(EMPTY_STRING_ARRAY));
|
||||||
assertEquals(2, mStringArrayCaptor.getValue().length);
|
assertEquals(2, mStringArrayCaptor.getValue().length);
|
||||||
assertTrue(ArrayUtils.containsAll(mStringArrayCaptor.getValue(),
|
assertTrue(ArrayUtils.containsAll(mStringArrayCaptor.getValue(),
|
||||||
new String[]{"2001:db8::1", "192.0.2.1"}));
|
new String[]{"2001:db8::1", "192.0.2.1"}));
|
||||||
@@ -4894,7 +4899,7 @@ public class ConnectivityServiceTest {
|
|||||||
assertEquals(2, tlsServers.getValue().length);
|
assertEquals(2, tlsServers.getValue().length);
|
||||||
assertTrue(ArrayUtils.containsAll(tlsServers.getValue(),
|
assertTrue(ArrayUtils.containsAll(tlsServers.getValue(),
|
||||||
new String[]{"2001:db8::1", "192.0.2.1"}));
|
new String[]{"2001:db8::1", "192.0.2.1"}));
|
||||||
reset(mNetworkManagementService);
|
reset(mMockDnsResolver);
|
||||||
cellNetworkCallback.expectCallback(CallbackState.AVAILABLE, mCellNetworkAgent);
|
cellNetworkCallback.expectCallback(CallbackState.AVAILABLE, mCellNetworkAgent);
|
||||||
cellNetworkCallback.expectCallback(CallbackState.NETWORK_CAPABILITIES,
|
cellNetworkCallback.expectCallback(CallbackState.NETWORK_CAPABILITIES,
|
||||||
mCellNetworkAgent);
|
mCellNetworkAgent);
|
||||||
@@ -4906,26 +4911,26 @@ public class ConnectivityServiceTest {
|
|||||||
assertNull(((LinkProperties)cbi.arg).getPrivateDnsServerName());
|
assertNull(((LinkProperties)cbi.arg).getPrivateDnsServerName());
|
||||||
|
|
||||||
setPrivateDnsSettings(PRIVATE_DNS_MODE_OFF, "ignored.example.com");
|
setPrivateDnsSettings(PRIVATE_DNS_MODE_OFF, "ignored.example.com");
|
||||||
verify(mNetworkManagementService, times(1)).setDnsConfigurationForNetwork(
|
verify(mMockDnsResolver, times(1)).setResolverConfiguration(
|
||||||
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
||||||
eq(""), eq(EMPTY_STRING_ARRAY));
|
eq(""), eq(EMPTY_STRING_ARRAY), eq(EMPTY_STRING_ARRAY));
|
||||||
assertEquals(2, mStringArrayCaptor.getValue().length);
|
assertEquals(2, mStringArrayCaptor.getValue().length);
|
||||||
assertTrue(ArrayUtils.containsAll(mStringArrayCaptor.getValue(),
|
assertTrue(ArrayUtils.containsAll(mStringArrayCaptor.getValue(),
|
||||||
new String[]{"2001:db8::1", "192.0.2.1"}));
|
new String[]{"2001:db8::1", "192.0.2.1"}));
|
||||||
reset(mNetworkManagementService);
|
reset(mMockDnsResolver);
|
||||||
cellNetworkCallback.assertNoCallback();
|
cellNetworkCallback.assertNoCallback();
|
||||||
|
|
||||||
setPrivateDnsSettings(PRIVATE_DNS_MODE_OPPORTUNISTIC, "ignored.example.com");
|
setPrivateDnsSettings(PRIVATE_DNS_MODE_OPPORTUNISTIC, "ignored.example.com");
|
||||||
verify(mNetworkManagementService, atLeastOnce()).setDnsConfigurationForNetwork(
|
verify(mMockDnsResolver, atLeastOnce()).setResolverConfiguration(
|
||||||
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
||||||
eq(""), tlsServers.capture());
|
eq(""), tlsServers.capture(), eq(EMPTY_STRING_ARRAY));
|
||||||
assertEquals(2, mStringArrayCaptor.getValue().length);
|
assertEquals(2, mStringArrayCaptor.getValue().length);
|
||||||
assertTrue(ArrayUtils.containsAll(mStringArrayCaptor.getValue(),
|
assertTrue(ArrayUtils.containsAll(mStringArrayCaptor.getValue(),
|
||||||
new String[]{"2001:db8::1", "192.0.2.1"}));
|
new String[]{"2001:db8::1", "192.0.2.1"}));
|
||||||
assertEquals(2, tlsServers.getValue().length);
|
assertEquals(2, tlsServers.getValue().length);
|
||||||
assertTrue(ArrayUtils.containsAll(tlsServers.getValue(),
|
assertTrue(ArrayUtils.containsAll(tlsServers.getValue(),
|
||||||
new String[]{"2001:db8::1", "192.0.2.1"}));
|
new String[]{"2001:db8::1", "192.0.2.1"}));
|
||||||
reset(mNetworkManagementService);
|
reset(mMockDnsResolver);
|
||||||
cellNetworkCallback.assertNoCallback();
|
cellNetworkCallback.assertNoCallback();
|
||||||
|
|
||||||
setPrivateDnsSettings(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME, "strict.example.com");
|
setPrivateDnsSettings(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME, "strict.example.com");
|
||||||
@@ -5756,6 +5761,7 @@ public class ConnectivityServiceTest {
|
|||||||
cellLp.addRoute(new RouteInfo((IpPrefix) null, myIpv6.getAddress(), MOBILE_IFNAME));
|
cellLp.addRoute(new RouteInfo((IpPrefix) null, myIpv6.getAddress(), MOBILE_IFNAME));
|
||||||
cellLp.addRoute(new RouteInfo(myIpv6, null, MOBILE_IFNAME));
|
cellLp.addRoute(new RouteInfo(myIpv6, null, MOBILE_IFNAME));
|
||||||
reset(mNetworkManagementService);
|
reset(mNetworkManagementService);
|
||||||
|
reset(mMockDnsResolver);
|
||||||
when(mNetworkManagementService.getInterfaceConfig(CLAT_PREFIX + MOBILE_IFNAME))
|
when(mNetworkManagementService.getInterfaceConfig(CLAT_PREFIX + MOBILE_IFNAME))
|
||||||
.thenReturn(getClatInterfaceConfig(myIpv4));
|
.thenReturn(getClatInterfaceConfig(myIpv4));
|
||||||
|
|
||||||
@@ -5763,7 +5769,7 @@ public class ConnectivityServiceTest {
|
|||||||
mCellNetworkAgent.sendLinkProperties(cellLp);
|
mCellNetworkAgent.sendLinkProperties(cellLp);
|
||||||
mCellNetworkAgent.connect(true);
|
mCellNetworkAgent.connect(true);
|
||||||
networkCallback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
|
networkCallback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
|
||||||
verify(mMockNetd, times(1)).resolverStartPrefix64Discovery(cellNetId);
|
verify(mMockDnsResolver, times(1)).startPrefix64Discovery(cellNetId);
|
||||||
|
|
||||||
// Switching default network updates TCP buffer sizes.
|
// Switching default network updates TCP buffer sizes.
|
||||||
verifyTcpBufferSizeChange(ConnectivityService.DEFAULT_TCP_BUFFER_SIZES);
|
verifyTcpBufferSizeChange(ConnectivityService.DEFAULT_TCP_BUFFER_SIZES);
|
||||||
@@ -5773,17 +5779,22 @@ public class ConnectivityServiceTest {
|
|||||||
cellLp.addLinkAddress(myIpv4);
|
cellLp.addLinkAddress(myIpv4);
|
||||||
mCellNetworkAgent.sendLinkProperties(cellLp);
|
mCellNetworkAgent.sendLinkProperties(cellLp);
|
||||||
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
||||||
verify(mMockNetd, times(1)).resolverStopPrefix64Discovery(cellNetId);
|
verify(mMockDnsResolver, times(1)).stopPrefix64Discovery(cellNetId);
|
||||||
|
verify(mMockDnsResolver, atLeastOnce()).setResolverConfiguration(
|
||||||
|
eq(cellNetId), eq(EMPTY_STRING_ARRAY), any(), any(),
|
||||||
|
eq(""), eq(EMPTY_STRING_ARRAY), eq(EMPTY_STRING_ARRAY));
|
||||||
|
|
||||||
verifyNoMoreInteractions(mMockNetd);
|
verifyNoMoreInteractions(mMockNetd);
|
||||||
|
verifyNoMoreInteractions(mMockDnsResolver);
|
||||||
reset(mMockNetd);
|
reset(mMockNetd);
|
||||||
|
reset(mMockDnsResolver);
|
||||||
|
|
||||||
// Remove IPv4 address. Expect prefix discovery to be started again.
|
// Remove IPv4 address. Expect prefix discovery to be started again.
|
||||||
cellLp.removeLinkAddress(myIpv4);
|
cellLp.removeLinkAddress(myIpv4);
|
||||||
cellLp.removeRoute(new RouteInfo(myIpv4, null, MOBILE_IFNAME));
|
cellLp.removeRoute(new RouteInfo(myIpv4, null, MOBILE_IFNAME));
|
||||||
mCellNetworkAgent.sendLinkProperties(cellLp);
|
mCellNetworkAgent.sendLinkProperties(cellLp);
|
||||||
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
||||||
verify(mMockNetd, times(1)).resolverStartPrefix64Discovery(cellNetId);
|
verify(mMockDnsResolver, times(1)).startPrefix64Discovery(cellNetId);
|
||||||
|
|
||||||
// When NAT64 prefix discovery succeeds, LinkProperties are updated and clatd is started.
|
// When NAT64 prefix discovery succeeds, LinkProperties are updated and clatd is started.
|
||||||
Nat464Xlat clat = mService.getNat464Xlat(mCellNetworkAgent);
|
Nat464Xlat clat = mService.getNat464Xlat(mCellNetworkAgent);
|
||||||
@@ -5813,6 +5824,12 @@ public class ConnectivityServiceTest {
|
|||||||
assertNotEquals(stackedLpsAfterChange, Collections.EMPTY_LIST);
|
assertNotEquals(stackedLpsAfterChange, Collections.EMPTY_LIST);
|
||||||
assertEquals(makeClatLinkProperties(myIpv4), stackedLpsAfterChange.get(0));
|
assertEquals(makeClatLinkProperties(myIpv4), stackedLpsAfterChange.get(0));
|
||||||
|
|
||||||
|
verify(mMockDnsResolver, times(1)).setResolverConfiguration(
|
||||||
|
eq(cellNetId), mStringArrayCaptor.capture(), any(), any(),
|
||||||
|
eq(""), eq(EMPTY_STRING_ARRAY), eq(EMPTY_STRING_ARRAY));
|
||||||
|
assertEquals(1, mStringArrayCaptor.getValue().length);
|
||||||
|
assertTrue(ArrayUtils.contains(mStringArrayCaptor.getValue(), "8.8.8.8"));
|
||||||
|
|
||||||
// Add ipv4 address, expect that clatd and prefix discovery are stopped and stacked
|
// Add ipv4 address, expect that clatd and prefix discovery are stopped and stacked
|
||||||
// linkproperties are cleaned up.
|
// linkproperties are cleaned up.
|
||||||
cellLp.addLinkAddress(myIpv4);
|
cellLp.addLinkAddress(myIpv4);
|
||||||
@@ -5820,7 +5837,7 @@ public class ConnectivityServiceTest {
|
|||||||
mCellNetworkAgent.sendLinkProperties(cellLp);
|
mCellNetworkAgent.sendLinkProperties(cellLp);
|
||||||
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
||||||
verify(mMockNetd, times(1)).clatdStop(MOBILE_IFNAME);
|
verify(mMockNetd, times(1)).clatdStop(MOBILE_IFNAME);
|
||||||
verify(mMockNetd, times(1)).resolverStopPrefix64Discovery(cellNetId);
|
verify(mMockDnsResolver, times(1)).stopPrefix64Discovery(cellNetId);
|
||||||
|
|
||||||
// As soon as stop is called, the linkproperties lose the stacked interface.
|
// As soon as stop is called, the linkproperties lose the stacked interface.
|
||||||
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
||||||
@@ -5835,7 +5852,9 @@ public class ConnectivityServiceTest {
|
|||||||
networkCallback.assertNoCallback();
|
networkCallback.assertNoCallback();
|
||||||
|
|
||||||
verifyNoMoreInteractions(mMockNetd);
|
verifyNoMoreInteractions(mMockNetd);
|
||||||
|
verifyNoMoreInteractions(mMockDnsResolver);
|
||||||
reset(mMockNetd);
|
reset(mMockNetd);
|
||||||
|
reset(mMockDnsResolver);
|
||||||
|
|
||||||
// Stopping prefix discovery causes netd to tell us that the NAT64 prefix is gone.
|
// Stopping prefix discovery causes netd to tell us that the NAT64 prefix is gone.
|
||||||
mService.mNetdEventCallback.onNat64PrefixEvent(cellNetId, false /* added */,
|
mService.mNetdEventCallback.onNat64PrefixEvent(cellNetId, false /* added */,
|
||||||
@@ -5849,7 +5868,7 @@ public class ConnectivityServiceTest {
|
|||||||
cellLp.removeDnsServer(InetAddress.getByName("8.8.8.8"));
|
cellLp.removeDnsServer(InetAddress.getByName("8.8.8.8"));
|
||||||
mCellNetworkAgent.sendLinkProperties(cellLp);
|
mCellNetworkAgent.sendLinkProperties(cellLp);
|
||||||
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
||||||
verify(mMockNetd, times(1)).resolverStartPrefix64Discovery(cellNetId);
|
verify(mMockDnsResolver, times(1)).startPrefix64Discovery(cellNetId);
|
||||||
mService.mNetdEventCallback.onNat64PrefixEvent(cellNetId, true /* added */,
|
mService.mNetdEventCallback.onNat64PrefixEvent(cellNetId, true /* added */,
|
||||||
kNat64PrefixString, 96);
|
kNat64PrefixString, 96);
|
||||||
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
networkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
|
||||||
@@ -5932,6 +5951,7 @@ public class ConnectivityServiceTest {
|
|||||||
|
|
||||||
// Disconnect cell
|
// Disconnect cell
|
||||||
reset(mNetworkManagementService);
|
reset(mNetworkManagementService);
|
||||||
|
reset(mMockNetd);
|
||||||
mCellNetworkAgent.disconnect();
|
mCellNetworkAgent.disconnect();
|
||||||
networkCallback.expectCallback(CallbackState.LOST, mCellNetworkAgent);
|
networkCallback.expectCallback(CallbackState.LOST, mCellNetworkAgent);
|
||||||
// LOST callback is triggered earlier than removing idle timer. Broadcast should also be
|
// LOST callback is triggered earlier than removing idle timer. Broadcast should also be
|
||||||
@@ -5939,8 +5959,9 @@ public class ConnectivityServiceTest {
|
|||||||
// unexpectedly before network being removed.
|
// unexpectedly before network being removed.
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
verify(mNetworkManagementService, times(0)).removeIdleTimer(eq(MOBILE_IFNAME));
|
verify(mNetworkManagementService, times(0)).removeIdleTimer(eq(MOBILE_IFNAME));
|
||||||
verify(mNetworkManagementService, times(1)).removeNetwork(
|
verify(mMockNetd, times(1)).networkDestroy(eq(mCellNetworkAgent.getNetwork().netId));
|
||||||
eq(mCellNetworkAgent.getNetwork().netId));
|
verify(mMockDnsResolver, times(1))
|
||||||
|
.clearResolverConfiguration(eq(mCellNetworkAgent.getNetwork().netId));
|
||||||
|
|
||||||
// Disconnect wifi
|
// Disconnect wifi
|
||||||
ConditionVariable cv = waitForConnectivityBroadcasts(1);
|
ConditionVariable cv = waitForConnectivityBroadcasts(1);
|
||||||
|
|||||||
@@ -29,13 +29,13 @@ import static org.junit.Assert.assertTrue;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.net.IDnsResolver;
|
||||||
import android.net.IpPrefix;
|
import android.net.IpPrefix;
|
||||||
import android.net.LinkAddress;
|
import android.net.LinkAddress;
|
||||||
import android.net.LinkProperties;
|
import android.net.LinkProperties;
|
||||||
import android.net.Network;
|
import android.net.Network;
|
||||||
import android.net.RouteInfo;
|
import android.net.RouteInfo;
|
||||||
import android.net.shared.PrivateDnsConfig;
|
import android.net.shared.PrivateDnsConfig;
|
||||||
import android.os.INetworkManagementService;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.test.mock.MockContentResolver;
|
import android.test.mock.MockContentResolver;
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ public class DnsManagerTest {
|
|||||||
MockContentResolver mContentResolver;
|
MockContentResolver mContentResolver;
|
||||||
|
|
||||||
@Mock Context mCtx;
|
@Mock Context mCtx;
|
||||||
@Mock INetworkManagementService mNMService;
|
@Mock IDnsResolver mMockDnsResolver;
|
||||||
@Mock MockableSystemProperties mSystemProperties;
|
@Mock MockableSystemProperties mSystemProperties;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -83,7 +83,7 @@ public class DnsManagerTest {
|
|||||||
mContentResolver.addProvider(Settings.AUTHORITY,
|
mContentResolver.addProvider(Settings.AUTHORITY,
|
||||||
new FakeSettingsProvider());
|
new FakeSettingsProvider());
|
||||||
when(mCtx.getContentResolver()).thenReturn(mContentResolver);
|
when(mCtx.getContentResolver()).thenReturn(mContentResolver);
|
||||||
mDnsManager = new DnsManager(mCtx, mNMService, mSystemProperties);
|
mDnsManager = new DnsManager(mCtx, mMockDnsResolver, mSystemProperties);
|
||||||
|
|
||||||
// Clear the private DNS settings
|
// Clear the private DNS settings
|
||||||
Settings.Global.putString(mContentResolver, PRIVATE_DNS_DEFAULT_MODE, "");
|
Settings.Global.putString(mContentResolver, PRIVATE_DNS_DEFAULT_MODE, "");
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import android.app.PendingIntent;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.IDnsResolver;
|
||||||
import android.net.INetd;
|
import android.net.INetd;
|
||||||
import android.net.Network;
|
import android.net.Network;
|
||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
@@ -69,6 +70,7 @@ public class LingerMonitorTest {
|
|||||||
LingerMonitor mMonitor;
|
LingerMonitor mMonitor;
|
||||||
|
|
||||||
@Mock ConnectivityService mConnService;
|
@Mock ConnectivityService mConnService;
|
||||||
|
@Mock IDnsResolver mDnsResolver;
|
||||||
@Mock INetd mNetd;
|
@Mock INetd mNetd;
|
||||||
@Mock INetworkManagementService mNMS;
|
@Mock INetworkManagementService mNMS;
|
||||||
@Mock Context mCtx;
|
@Mock Context mCtx;
|
||||||
@@ -353,7 +355,7 @@ public class LingerMonitorTest {
|
|||||||
caps.addCapability(0);
|
caps.addCapability(0);
|
||||||
caps.addTransportType(transport);
|
caps.addTransportType(transport);
|
||||||
NetworkAgentInfo nai = new NetworkAgentInfo(null, null, new Network(netId), info, null,
|
NetworkAgentInfo nai = new NetworkAgentInfo(null, null, new Network(netId), info, null,
|
||||||
caps, 50, mCtx, null, mMisc, mConnService, mNetd, mNMS,
|
caps, 50, mCtx, null, mMisc, mConnService, mNetd, mDnsResolver, mNMS,
|
||||||
NetworkFactory.SerialNumber.NONE);
|
NetworkFactory.SerialNumber.NONE);
|
||||||
nai.everValidated = true;
|
nai.everValidated = true;
|
||||||
return nai;
|
return nai;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.IDnsResolver;
|
||||||
import android.net.INetd;
|
import android.net.INetd;
|
||||||
import android.net.InterfaceConfiguration;
|
import android.net.InterfaceConfiguration;
|
||||||
import android.net.IpPrefix;
|
import android.net.IpPrefix;
|
||||||
@@ -63,6 +64,7 @@ public class Nat464XlatTest {
|
|||||||
|
|
||||||
@Mock ConnectivityService mConnectivity;
|
@Mock ConnectivityService mConnectivity;
|
||||||
@Mock NetworkMisc mMisc;
|
@Mock NetworkMisc mMisc;
|
||||||
|
@Mock IDnsResolver mDnsResolver;
|
||||||
@Mock INetd mNetd;
|
@Mock INetd mNetd;
|
||||||
@Mock INetworkManagementService mNms;
|
@Mock INetworkManagementService mNms;
|
||||||
@Mock InterfaceConfiguration mConfig;
|
@Mock InterfaceConfiguration mConfig;
|
||||||
@@ -72,7 +74,7 @@ public class Nat464XlatTest {
|
|||||||
Handler mHandler;
|
Handler mHandler;
|
||||||
|
|
||||||
Nat464Xlat makeNat464Xlat() {
|
Nat464Xlat makeNat464Xlat() {
|
||||||
return new Nat464Xlat(mNai, mNetd, mNms) {
|
return new Nat464Xlat(mNai, mNetd, mDnsResolver, mNms) {
|
||||||
@Override protected int getNetId() {
|
@Override protected int getNetId() {
|
||||||
return NETID;
|
return NETID;
|
||||||
}
|
}
|
||||||
@@ -205,7 +207,7 @@ public class Nat464XlatTest {
|
|||||||
verify(mNms).unregisterObserver(eq(nat));
|
verify(mNms).unregisterObserver(eq(nat));
|
||||||
assertTrue(c.getValue().getStackedLinks().isEmpty());
|
assertTrue(c.getValue().getStackedLinks().isEmpty());
|
||||||
assertFalse(c.getValue().getAllInterfaceNames().contains(STACKED_IFACE));
|
assertFalse(c.getValue().getAllInterfaceNames().contains(STACKED_IFACE));
|
||||||
verify(mNetd).resolverStopPrefix64Discovery(eq(NETID));
|
verify(mDnsResolver).stopPrefix64Discovery(eq(NETID));
|
||||||
assertIdle(nat);
|
assertIdle(nat);
|
||||||
|
|
||||||
// Stacked interface removed notification arrives and is ignored.
|
// Stacked interface removed notification arrives and is ignored.
|
||||||
@@ -331,7 +333,7 @@ public class Nat464XlatTest {
|
|||||||
verify(mNetd).clatdStop(eq(BASE_IFACE));
|
verify(mNetd).clatdStop(eq(BASE_IFACE));
|
||||||
verify(mConnectivity, times(2)).handleUpdateLinkProperties(eq(mNai), c.capture());
|
verify(mConnectivity, times(2)).handleUpdateLinkProperties(eq(mNai), c.capture());
|
||||||
verify(mNms).unregisterObserver(eq(nat));
|
verify(mNms).unregisterObserver(eq(nat));
|
||||||
verify(mNetd).resolverStopPrefix64Discovery(eq(NETID));
|
verify(mDnsResolver).stopPrefix64Discovery(eq(NETID));
|
||||||
assertTrue(c.getValue().getStackedLinks().isEmpty());
|
assertTrue(c.getValue().getStackedLinks().isEmpty());
|
||||||
assertFalse(c.getValue().getAllInterfaceNames().contains(STACKED_IFACE));
|
assertFalse(c.getValue().getAllInterfaceNames().contains(STACKED_IFACE));
|
||||||
assertIdle(nat);
|
assertIdle(nat);
|
||||||
@@ -358,7 +360,7 @@ public class Nat464XlatTest {
|
|||||||
|
|
||||||
verify(mNetd).clatdStop(eq(BASE_IFACE));
|
verify(mNetd).clatdStop(eq(BASE_IFACE));
|
||||||
verify(mNms).unregisterObserver(eq(nat));
|
verify(mNms).unregisterObserver(eq(nat));
|
||||||
verify(mNetd).resolverStopPrefix64Discovery(eq(NETID));
|
verify(mDnsResolver).stopPrefix64Discovery(eq(NETID));
|
||||||
assertIdle(nat);
|
assertIdle(nat);
|
||||||
|
|
||||||
// In-flight interface up notification arrives: no-op
|
// In-flight interface up notification arrives: no-op
|
||||||
@@ -390,7 +392,7 @@ public class Nat464XlatTest {
|
|||||||
|
|
||||||
verify(mNetd).clatdStop(eq(BASE_IFACE));
|
verify(mNetd).clatdStop(eq(BASE_IFACE));
|
||||||
verify(mNms).unregisterObserver(eq(nat));
|
verify(mNms).unregisterObserver(eq(nat));
|
||||||
verify(mNetd).resolverStopPrefix64Discovery(eq(NETID));
|
verify(mDnsResolver).stopPrefix64Discovery(eq(NETID));
|
||||||
assertIdle(nat);
|
assertIdle(nat);
|
||||||
|
|
||||||
verifyNoMoreInteractions(mNetd, mNms, mConnectivity);
|
verifyNoMoreInteractions(mNetd, mNms, mConnectivity);
|
||||||
|
|||||||
Reference in New Issue
Block a user