Move NetworkMonitor to NetworkStack
Bug: b/112869080 Test: atest FrameworksNetTests NetworkStackTests Change-Id: I1b8b6a3f4390adbabf92fb9e48da61c47b08b2ec
This commit is contained in:
@@ -26,6 +26,8 @@ import static android.net.ConnectivityManager.TYPE_MOBILE_FOTA;
|
||||
import static android.net.ConnectivityManager.TYPE_MOBILE_MMS;
|
||||
import static android.net.ConnectivityManager.TYPE_NONE;
|
||||
import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||
import static android.net.INetworkMonitor.NETWORK_TEST_RESULT_INVALID;
|
||||
import static android.net.INetworkMonitor.NETWORK_TEST_RESULT_VALID;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_CBS;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_DUN;
|
||||
@@ -69,17 +71,19 @@ import static org.junit.Assert.fail;
|
||||
import static org.mockito.Matchers.anyInt;
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.atLeastOnce;
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.reset;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.timeout;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.BroadcastReceiver;
|
||||
@@ -89,7 +93,6 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.res.Resources;
|
||||
import android.net.CaptivePortal;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.ConnectivityManager.NetworkCallback;
|
||||
import android.net.ConnectivityManager.PacketKeepalive;
|
||||
@@ -97,6 +100,8 @@ import android.net.ConnectivityManager.PacketKeepaliveCallback;
|
||||
import android.net.ConnectivityManager.TooManyRequestsException;
|
||||
import android.net.ConnectivityThread;
|
||||
import android.net.INetd;
|
||||
import android.net.INetworkMonitor;
|
||||
import android.net.INetworkMonitorCallbacks;
|
||||
import android.net.INetworkPolicyListener;
|
||||
import android.net.INetworkPolicyManager;
|
||||
import android.net.INetworkStatsService;
|
||||
@@ -114,12 +119,14 @@ import android.net.NetworkInfo.DetailedState;
|
||||
import android.net.NetworkMisc;
|
||||
import android.net.NetworkRequest;
|
||||
import android.net.NetworkSpecifier;
|
||||
import android.net.NetworkStack;
|
||||
import android.net.NetworkUtils;
|
||||
import android.net.RouteInfo;
|
||||
import android.net.StringNetworkSpecifier;
|
||||
import android.net.UidRange;
|
||||
import android.net.captiveportal.CaptivePortalProbeResult;
|
||||
import android.net.metrics.IpConnectivityLog;
|
||||
import android.net.shared.NetworkMonitorUtils;
|
||||
import android.net.shared.PrivateDnsConfig;
|
||||
import android.net.util.MultinetworkPolicyTracker;
|
||||
import android.os.ConditionVariable;
|
||||
import android.os.Handler;
|
||||
@@ -148,12 +155,9 @@ import com.android.internal.util.test.BroadcastInterceptingContext;
|
||||
import com.android.internal.util.test.FakeSettingsProvider;
|
||||
import com.android.server.connectivity.ConnectivityConstants;
|
||||
import com.android.server.connectivity.DefaultNetworkMetrics;
|
||||
import com.android.server.connectivity.DnsManager;
|
||||
import com.android.server.connectivity.IpConnectivityMetrics;
|
||||
import com.android.server.connectivity.MockableSystemProperties;
|
||||
import com.android.server.connectivity.Nat464Xlat;
|
||||
import com.android.server.connectivity.NetworkAgentInfo;
|
||||
import com.android.server.connectivity.NetworkMonitor;
|
||||
import com.android.server.connectivity.Tethering;
|
||||
import com.android.server.connectivity.Vpn;
|
||||
import com.android.server.net.NetworkPinner;
|
||||
@@ -168,6 +172,7 @@ import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.mockito.Spy;
|
||||
import org.mockito.stubbing.Answer;
|
||||
|
||||
import java.net.Inet4Address;
|
||||
import java.net.InetAddress;
|
||||
@@ -230,6 +235,7 @@ public class ConnectivityServiceTest {
|
||||
@Mock INetworkStatsService mStatsService;
|
||||
@Mock INetworkPolicyManager mNpm;
|
||||
@Mock INetd mMockNetd;
|
||||
@Mock NetworkStack mNetworkStack;
|
||||
|
||||
private ArgumentCaptor<String[]> mStringArrayCaptor = ArgumentCaptor.forClass(String[].class);
|
||||
|
||||
@@ -299,6 +305,7 @@ public class ConnectivityServiceTest {
|
||||
public Object getSystemService(String name) {
|
||||
if (Context.CONNECTIVITY_SERVICE.equals(name)) return mCm;
|
||||
if (Context.NOTIFICATION_SERVICE.equals(name)) return mock(NotificationManager.class);
|
||||
if (Context.NETWORK_STACK_SERVICE.equals(name)) return mNetworkStack;
|
||||
return super.getSystemService(name);
|
||||
}
|
||||
|
||||
@@ -386,7 +393,7 @@ public class ConnectivityServiceTest {
|
||||
}
|
||||
|
||||
private class MockNetworkAgent {
|
||||
private final WrappedNetworkMonitor mWrappedNetworkMonitor;
|
||||
private final INetworkMonitor mNetworkMonitor;
|
||||
private final NetworkInfo mNetworkInfo;
|
||||
private final NetworkCapabilities mNetworkCapabilities;
|
||||
private final HandlerThread mHandlerThread;
|
||||
@@ -402,6 +409,26 @@ public class ConnectivityServiceTest {
|
||||
// mNetworkStatusReceived.
|
||||
private String mRedirectUrl;
|
||||
|
||||
private INetworkMonitorCallbacks mNmCallbacks;
|
||||
private int mNmValidationResult = NETWORK_TEST_RESULT_INVALID;
|
||||
private String mNmValidationRedirectUrl = null;
|
||||
private boolean mNmProvNotificationRequested = false;
|
||||
|
||||
void setNetworkValid() {
|
||||
mNmValidationResult = NETWORK_TEST_RESULT_VALID;
|
||||
mNmValidationRedirectUrl = null;
|
||||
}
|
||||
|
||||
void setNetworkInvalid() {
|
||||
mNmValidationResult = NETWORK_TEST_RESULT_INVALID;
|
||||
mNmValidationRedirectUrl = null;
|
||||
}
|
||||
|
||||
void setNetworkPortal(String redirectUrl) {
|
||||
setNetworkInvalid();
|
||||
mNmValidationRedirectUrl = redirectUrl;
|
||||
}
|
||||
|
||||
MockNetworkAgent(int transport) {
|
||||
this(transport, new LinkProperties());
|
||||
}
|
||||
@@ -434,6 +461,29 @@ public class ConnectivityServiceTest {
|
||||
}
|
||||
mHandlerThread = new HandlerThread("Mock-" + typeName);
|
||||
mHandlerThread.start();
|
||||
|
||||
mNetworkMonitor = mock(INetworkMonitor.class);
|
||||
final Answer validateAnswer = inv -> {
|
||||
new Thread(this::onValidationRequested).start();
|
||||
return null;
|
||||
};
|
||||
|
||||
try {
|
||||
doAnswer(validateAnswer).when(mNetworkMonitor).notifyNetworkConnected();
|
||||
doAnswer(validateAnswer).when(mNetworkMonitor).forceReevaluation(anyInt());
|
||||
} catch (RemoteException e) {
|
||||
fail(e.getMessage());
|
||||
}
|
||||
|
||||
final ArgumentCaptor<Network> nmNetworkCaptor =
|
||||
ArgumentCaptor.forClass(Network.class);
|
||||
final ArgumentCaptor<INetworkMonitorCallbacks> nmCbCaptor =
|
||||
ArgumentCaptor.forClass(INetworkMonitorCallbacks.class);
|
||||
doNothing().when(mNetworkStack).makeNetworkMonitor(
|
||||
nmNetworkCaptor.capture(),
|
||||
any() /* name */,
|
||||
nmCbCaptor.capture());
|
||||
|
||||
mNetworkAgent = new NetworkAgent(mHandlerThread.getLooper(), mServiceContext,
|
||||
"Mock-" + typeName, mNetworkInfo, mNetworkCapabilities,
|
||||
linkProperties, mScore, new NetworkMisc()) {
|
||||
@@ -465,10 +515,40 @@ public class ConnectivityServiceTest {
|
||||
mPreventReconnectReceived.open();
|
||||
}
|
||||
};
|
||||
|
||||
assertEquals(mNetworkAgent.netId, nmNetworkCaptor.getValue().netId);
|
||||
mNmCallbacks = nmCbCaptor.getValue();
|
||||
|
||||
try {
|
||||
mNmCallbacks.onNetworkMonitorCreated(mNetworkMonitor);
|
||||
} catch (RemoteException e) {
|
||||
fail(e.getMessage());
|
||||
}
|
||||
|
||||
// Waits for the NetworkAgent to be registered, which includes the creation of the
|
||||
// NetworkMonitor.
|
||||
waitForIdle();
|
||||
mWrappedNetworkMonitor = mService.getLastCreatedWrappedNetworkMonitor();
|
||||
}
|
||||
|
||||
private void onValidationRequested() {
|
||||
try {
|
||||
if (mNmProvNotificationRequested
|
||||
&& mNmValidationResult == NETWORK_TEST_RESULT_VALID) {
|
||||
mNmCallbacks.hideProvisioningNotification();
|
||||
mNmProvNotificationRequested = false;
|
||||
}
|
||||
|
||||
mNmCallbacks.notifyNetworkTested(
|
||||
mNmValidationResult, mNmValidationRedirectUrl);
|
||||
|
||||
if (mNmValidationRedirectUrl != null) {
|
||||
mNmCallbacks.showProvisioningNotification(
|
||||
"test_provisioning_notif_action");
|
||||
mNmProvNotificationRequested = true;
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void adjustScore(int change) {
|
||||
@@ -539,7 +619,7 @@ public class ConnectivityServiceTest {
|
||||
NetworkCallback callback = null;
|
||||
final ConditionVariable validatedCv = new ConditionVariable();
|
||||
if (validated) {
|
||||
mWrappedNetworkMonitor.gen204ProbeResult = 204;
|
||||
setNetworkValid();
|
||||
NetworkRequest request = new NetworkRequest.Builder()
|
||||
.addTransportType(mNetworkCapabilities.getTransportTypes()[0])
|
||||
.clearCapabilities()
|
||||
@@ -564,15 +644,14 @@ public class ConnectivityServiceTest {
|
||||
if (validated) {
|
||||
// Wait for network to validate.
|
||||
waitFor(validatedCv);
|
||||
mWrappedNetworkMonitor.gen204ProbeResult = 500;
|
||||
setNetworkInvalid();
|
||||
}
|
||||
|
||||
if (callback != null) mCm.unregisterNetworkCallback(callback);
|
||||
}
|
||||
|
||||
public void connectWithCaptivePortal(String redirectUrl) {
|
||||
mWrappedNetworkMonitor.gen204ProbeResult = 200;
|
||||
mWrappedNetworkMonitor.gen204ProbeRedirectUrl = redirectUrl;
|
||||
setNetworkPortal(redirectUrl);
|
||||
connect(false);
|
||||
}
|
||||
|
||||
@@ -603,10 +682,6 @@ public class ConnectivityServiceTest {
|
||||
return mDisconnected;
|
||||
}
|
||||
|
||||
public WrappedNetworkMonitor getWrappedNetworkMonitor() {
|
||||
return mWrappedNetworkMonitor;
|
||||
}
|
||||
|
||||
public void sendLinkProperties(LinkProperties lp) {
|
||||
mNetworkAgent.sendLinkProperties(lp);
|
||||
}
|
||||
@@ -880,28 +955,6 @@ public class ConnectivityServiceTest {
|
||||
}
|
||||
}
|
||||
|
||||
// NetworkMonitor implementation allowing overriding of Internet connectivity probe result.
|
||||
private class WrappedNetworkMonitor extends NetworkMonitor {
|
||||
public final Handler connectivityHandler;
|
||||
// HTTP response code fed back to NetworkMonitor for Internet connectivity probe.
|
||||
public int gen204ProbeResult = 500;
|
||||
public String gen204ProbeRedirectUrl = null;
|
||||
|
||||
public WrappedNetworkMonitor(Context context, Handler handler,
|
||||
NetworkAgentInfo networkAgentInfo, NetworkRequest defaultRequest,
|
||||
IpConnectivityLog log) {
|
||||
super(context, handler, networkAgentInfo, defaultRequest, log,
|
||||
NetworkMonitor.Dependencies.DEFAULT);
|
||||
connectivityHandler = handler;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CaptivePortalProbeResult isCaptivePortal() {
|
||||
if (!mIsCaptivePortalCheckEnabled) { return new CaptivePortalProbeResult(204); }
|
||||
return new CaptivePortalProbeResult(gen204ProbeResult, gen204ProbeRedirectUrl, null);
|
||||
}
|
||||
}
|
||||
|
||||
private class WrappedMultinetworkPolicyTracker extends MultinetworkPolicyTracker {
|
||||
public volatile boolean configRestrictsAvoidBadWifi;
|
||||
public volatile int configMeteredMultipathPreference;
|
||||
@@ -923,7 +976,6 @@ public class ConnectivityServiceTest {
|
||||
|
||||
private class WrappedConnectivityService extends ConnectivityService {
|
||||
public WrappedMultinetworkPolicyTracker wrappedMultinetworkPolicyTracker;
|
||||
private WrappedNetworkMonitor mLastCreatedNetworkMonitor;
|
||||
private MockableSystemProperties mSystemProperties;
|
||||
|
||||
public WrappedConnectivityService(Context context, INetworkManagementService netManager,
|
||||
@@ -971,15 +1023,6 @@ public class ConnectivityServiceTest {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public NetworkMonitor createNetworkMonitor(Context context, Handler handler,
|
||||
NetworkAgentInfo nai, NetworkRequest defaultRequest) {
|
||||
final WrappedNetworkMonitor monitor = new WrappedNetworkMonitor(
|
||||
context, handler, nai, defaultRequest, mock(IpConnectivityLog.class));
|
||||
mLastCreatedNetworkMonitor = monitor;
|
||||
return monitor;
|
||||
}
|
||||
|
||||
public Nat464Xlat getNat464Xlat(MockNetworkAgent mna) {
|
||||
return getNetworkAgentInfoForNetwork(mna.getNetwork()).clatd;
|
||||
}
|
||||
@@ -1017,10 +1060,6 @@ public class ConnectivityServiceTest {
|
||||
protected void registerNetdEventCallback() {
|
||||
}
|
||||
|
||||
public WrappedNetworkMonitor getLastCreatedWrappedNetworkMonitor() {
|
||||
return mLastCreatedNetworkMonitor;
|
||||
}
|
||||
|
||||
public void mockVpn(int uid) {
|
||||
synchronized (mVpns) {
|
||||
int userId = UserHandle.getUserId(uid);
|
||||
@@ -2439,7 +2478,7 @@ public class ConnectivityServiceTest {
|
||||
|
||||
// Make captive portal disappear then revalidate.
|
||||
// Expect onLost callback because network no longer provides NET_CAPABILITY_CAPTIVE_PORTAL.
|
||||
mWiFiNetworkAgent.getWrappedNetworkMonitor().gen204ProbeResult = 204;
|
||||
mWiFiNetworkAgent.setNetworkValid();
|
||||
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true);
|
||||
captivePortalCallback.expectCallback(CallbackState.LOST, mWiFiNetworkAgent);
|
||||
|
||||
@@ -2448,13 +2487,13 @@ public class ConnectivityServiceTest {
|
||||
|
||||
// Break network connectivity.
|
||||
// Expect NET_CAPABILITY_VALIDATED onLost callback.
|
||||
mWiFiNetworkAgent.getWrappedNetworkMonitor().gen204ProbeResult = 500;
|
||||
mWiFiNetworkAgent.setNetworkInvalid();
|
||||
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), false);
|
||||
validatedCallback.expectCallback(CallbackState.LOST, mWiFiNetworkAgent);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCaptivePortalApp() {
|
||||
public void testCaptivePortalApp() throws RemoteException {
|
||||
final TestNetworkCallback captivePortalCallback = new TestNetworkCallback();
|
||||
final NetworkRequest captivePortalRequest = new NetworkRequest.Builder()
|
||||
.addCapability(NET_CAPABILITY_CAPTIVE_PORTAL).build();
|
||||
@@ -2477,21 +2516,19 @@ public class ConnectivityServiceTest {
|
||||
mServiceContext.expectNoStartActivityIntent(fastTimeoutMs);
|
||||
|
||||
// Turn into a captive portal.
|
||||
mWiFiNetworkAgent.getWrappedNetworkMonitor().gen204ProbeResult = 302;
|
||||
mWiFiNetworkAgent.setNetworkPortal("http://example.com");
|
||||
mCm.reportNetworkConnectivity(wifiNetwork, false);
|
||||
captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
|
||||
validatedCallback.expectCallback(CallbackState.LOST, mWiFiNetworkAgent);
|
||||
|
||||
// Check that startCaptivePortalApp sends the expected intent.
|
||||
// Check that startCaptivePortalApp sends the expected command to NetworkMonitor.
|
||||
mCm.startCaptivePortalApp(wifiNetwork);
|
||||
Intent intent = mServiceContext.expectStartActivityIntent(TIMEOUT_MS);
|
||||
assertEquals(ConnectivityManager.ACTION_CAPTIVE_PORTAL_SIGN_IN, intent.getAction());
|
||||
assertEquals(wifiNetwork, intent.getExtra(ConnectivityManager.EXTRA_NETWORK));
|
||||
verify(mWiFiNetworkAgent.mNetworkMonitor, timeout(TIMEOUT_MS).times(1))
|
||||
.launchCaptivePortalApp();
|
||||
|
||||
// Have the app report that the captive portal is dismissed, and check that we revalidate.
|
||||
mWiFiNetworkAgent.getWrappedNetworkMonitor().gen204ProbeResult = 204;
|
||||
CaptivePortal c = (CaptivePortal) intent.getExtra(ConnectivityManager.EXTRA_CAPTIVE_PORTAL);
|
||||
c.reportCaptivePortalDismissed();
|
||||
// Report that the captive portal is dismissed, and check that callbacks are fired
|
||||
mWiFiNetworkAgent.setNetworkValid();
|
||||
mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid());
|
||||
validatedCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent);
|
||||
captivePortalCallback.expectCallback(CallbackState.LOST, mWiFiNetworkAgent);
|
||||
|
||||
@@ -2524,20 +2561,6 @@ public class ConnectivityServiceTest {
|
||||
waitFor(avoidCv);
|
||||
|
||||
assertNoCallbacks(captivePortalCallback, validatedCallback);
|
||||
|
||||
// Now test ignore mode.
|
||||
setCaptivePortalMode(Settings.Global.CAPTIVE_PORTAL_MODE_IGNORE);
|
||||
|
||||
// Bring up a network with a captive portal.
|
||||
// Since we're ignoring captive portals, the network will validate.
|
||||
mWiFiNetworkAgent = new MockNetworkAgent(TRANSPORT_WIFI);
|
||||
String secondRedirectUrl = "http://example.com/secondPath";
|
||||
mWiFiNetworkAgent.connectWithCaptivePortal(secondRedirectUrl);
|
||||
|
||||
// Expect NET_CAPABILITY_VALIDATED onAvailable callback.
|
||||
validatedCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent);
|
||||
// But there should be no CaptivePortal callback.
|
||||
captivePortalCallback.assertNoCallback();
|
||||
}
|
||||
|
||||
private NetworkRequest.Builder newWifiRequestBuilder() {
|
||||
@@ -3169,7 +3192,7 @@ public class ConnectivityServiceTest {
|
||||
Network wifiNetwork = mWiFiNetworkAgent.getNetwork();
|
||||
|
||||
// Fail validation on wifi.
|
||||
mWiFiNetworkAgent.getWrappedNetworkMonitor().gen204ProbeResult = 599;
|
||||
mWiFiNetworkAgent.setNetworkInvalid();
|
||||
mCm.reportNetworkConnectivity(wifiNetwork, false);
|
||||
defaultCallback.expectCapabilitiesWithout(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
|
||||
validatedWifiCallback.expectCallback(CallbackState.LOST, mWiFiNetworkAgent);
|
||||
@@ -3213,7 +3236,7 @@ public class ConnectivityServiceTest {
|
||||
wifiNetwork = mWiFiNetworkAgent.getNetwork();
|
||||
|
||||
// Fail validation on wifi and expect the dialog to appear.
|
||||
mWiFiNetworkAgent.getWrappedNetworkMonitor().gen204ProbeResult = 599;
|
||||
mWiFiNetworkAgent.setNetworkInvalid();
|
||||
mCm.reportNetworkConnectivity(wifiNetwork, false);
|
||||
defaultCallback.expectCapabilitiesWithout(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
|
||||
validatedWifiCallback.expectCallback(CallbackState.LOST, mWiFiNetworkAgent);
|
||||
@@ -4002,11 +4025,9 @@ public class ConnectivityServiceTest {
|
||||
final String TLS_SERVER6 = "2001:db8:53::53";
|
||||
final InetAddress[] TLS_IPS = new InetAddress[]{ InetAddress.getByName(TLS_SERVER6) };
|
||||
final String[] TLS_SERVERS = new String[]{ TLS_SERVER6 };
|
||||
final Handler h = mCellNetworkAgent.getWrappedNetworkMonitor().connectivityHandler;
|
||||
h.sendMessage(h.obtainMessage(
|
||||
NetworkMonitor.EVENT_PRIVATE_DNS_CONFIG_RESOLVED, 0,
|
||||
mCellNetworkAgent.getNetwork().netId,
|
||||
new DnsManager.PrivateDnsConfig(TLS_SPECIFIER, TLS_IPS)));
|
||||
mCellNetworkAgent.mNmCallbacks.notifyPrivateDnsConfigResolved(
|
||||
new PrivateDnsConfig(TLS_SPECIFIER, TLS_IPS).toParcel());
|
||||
|
||||
waitForIdle();
|
||||
verify(mNetworkManagementService, atLeastOnce()).setDnsConfigurationForNetwork(
|
||||
anyInt(), mStringArrayCaptor.capture(), any(), any(),
|
||||
@@ -4294,6 +4315,12 @@ public class ConnectivityServiceTest {
|
||||
ranges.add(new UidRange(uid, uid));
|
||||
mMockVpn.setNetworkAgent(vpnNetworkAgent);
|
||||
mMockVpn.setUids(ranges);
|
||||
// VPN networks do not satisfy the default request and are automatically validated
|
||||
// by NetworkMonitor
|
||||
assertFalse(NetworkMonitorUtils.isValidationRequired(
|
||||
mCm.getDefaultRequest().networkCapabilities, vpnNetworkAgent.mNetworkCapabilities));
|
||||
vpnNetworkAgent.setNetworkValid();
|
||||
|
||||
vpnNetworkAgent.connect(false);
|
||||
mMockVpn.connect();
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.server.connectivity;
|
||||
|
||||
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF;
|
||||
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
|
||||
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
|
||||
import static android.provider.Settings.Global.PRIVATE_DNS_DEFAULT_MODE;
|
||||
import static android.provider.Settings.Global.PRIVATE_DNS_MODE;
|
||||
@@ -29,13 +28,13 @@ import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.net.IpPrefix;
|
||||
import android.net.LinkAddress;
|
||||
import android.net.LinkProperties;
|
||||
import android.net.Network;
|
||||
import android.net.RouteInfo;
|
||||
import android.net.shared.PrivateDnsConfig;
|
||||
import android.os.INetworkManagementService;
|
||||
import android.provider.Settings;
|
||||
import android.support.test.filters.SmallTest;
|
||||
@@ -43,18 +42,16 @@ import android.support.test.runner.AndroidJUnit4;
|
||||
import android.test.mock.MockContentResolver;
|
||||
|
||||
import com.android.internal.util.test.FakeSettingsProvider;
|
||||
import com.android.server.connectivity.DnsManager.PrivateDnsConfig;
|
||||
import com.android.server.connectivity.MockableSystemProperties;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
/**
|
||||
* Tests for {@link DnsManager}.
|
||||
*
|
||||
@@ -133,7 +130,7 @@ public class DnsManagerTest {
|
||||
PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
Settings.Global.putString(mContentResolver, PRIVATE_DNS_SPECIFIER, "strictmode.com");
|
||||
mDnsManager.updatePrivateDns(new Network(TEST_NETID),
|
||||
new DnsManager.PrivateDnsConfig("strictmode.com", new InetAddress[] {
|
||||
new PrivateDnsConfig("strictmode.com", new InetAddress[] {
|
||||
InetAddress.parseNumericAddress("6.6.6.6"),
|
||||
InetAddress.parseNumericAddress("2001:db8:66:66::1")
|
||||
}));
|
||||
|
||||
@@ -23,10 +23,10 @@ import static org.mockito.Mockito.anyBoolean;
|
||||
import static org.mockito.Mockito.anyInt;
|
||||
import static org.mockito.Mockito.eq;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.reset;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.mockito.Mockito.reset;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
@@ -36,18 +36,18 @@ import android.net.Network;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.NetworkMisc;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
import android.net.NetworkStack;
|
||||
import android.support.test.filters.SmallTest;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
import android.text.format.DateUtils;
|
||||
|
||||
import com.android.internal.R;
|
||||
import com.android.server.ConnectivityService;
|
||||
import com.android.server.connectivity.NetworkNotificationManager;
|
||||
import com.android.server.connectivity.NetworkNotificationManager.NotificationType;
|
||||
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
@@ -70,13 +70,16 @@ public class LingerMonitorTest {
|
||||
@Mock NetworkMisc mMisc;
|
||||
@Mock NetworkNotificationManager mNotifier;
|
||||
@Mock Resources mResources;
|
||||
@Mock NetworkStack mNetworkStack;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
when(mCtx.getResources()).thenReturn(mResources);
|
||||
when(mCtx.getPackageName()).thenReturn("com.android.server.connectivity");
|
||||
when(mConnService.createNetworkMonitor(any(), any(), any(), any())).thenReturn(null);
|
||||
when(mCtx.getSystemServiceName(NetworkStack.class))
|
||||
.thenReturn(Context.NETWORK_STACK_SERVICE);
|
||||
when(mCtx.getSystemService(Context.NETWORK_STACK_SERVICE)).thenReturn(mNetworkStack);
|
||||
|
||||
mMonitor = new TestableLingerMonitor(mCtx, mNotifier, HIGH_DAILY_LIMIT, HIGH_RATE_LIMIT);
|
||||
}
|
||||
@@ -349,7 +352,7 @@ public class LingerMonitorTest {
|
||||
caps.addCapability(0);
|
||||
caps.addTransportType(transport);
|
||||
NetworkAgentInfo nai = new NetworkAgentInfo(null, null, new Network(netId), info, null,
|
||||
caps, 50, mCtx, null, mMisc, null, mConnService);
|
||||
caps, 50, mCtx, null, mMisc, mConnService);
|
||||
nai.everValidated = true;
|
||||
return nai;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user