Migrate NetworkAgentWrapper to the new NA API
Test: FrameworksNetTests NetworkStackTests Bug: 167544279 Change-Id: I5d53a938572682dea827ea681596226b1e271aa6
This commit is contained in:
@@ -29,7 +29,7 @@ import static com.android.server.ConnectivityServiceTestUtils.transportToLegacyT
|
|||||||
import static junit.framework.Assert.assertTrue;
|
import static junit.framework.Assert.assertTrue;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNotEquals;
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
@@ -38,7 +38,6 @@ import android.net.Network;
|
|||||||
import android.net.NetworkAgent;
|
import android.net.NetworkAgent;
|
||||||
import android.net.NetworkAgentConfig;
|
import android.net.NetworkAgentConfig;
|
||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
import android.net.NetworkInfo;
|
|
||||||
import android.net.NetworkProvider;
|
import android.net.NetworkProvider;
|
||||||
import android.net.NetworkSpecifier;
|
import android.net.NetworkSpecifier;
|
||||||
import android.net.SocketKeepalive;
|
import android.net.SocketKeepalive;
|
||||||
@@ -53,9 +52,9 @@ import com.android.testutils.HandlerUtils;
|
|||||||
import com.android.testutils.TestableNetworkCallback;
|
import com.android.testutils.TestableNetworkCallback;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
public class NetworkAgentWrapper implements TestableNetworkCallback.HasNetwork {
|
public class NetworkAgentWrapper implements TestableNetworkCallback.HasNetwork {
|
||||||
private final NetworkInfo mNetworkInfo;
|
|
||||||
private final NetworkCapabilities mNetworkCapabilities;
|
private final NetworkCapabilities mNetworkCapabilities;
|
||||||
private final HandlerThread mHandlerThread;
|
private final HandlerThread mHandlerThread;
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
@@ -63,6 +62,7 @@ public class NetworkAgentWrapper implements TestableNetworkCallback.HasNetwork {
|
|||||||
|
|
||||||
private final ConditionVariable mDisconnected = new ConditionVariable();
|
private final ConditionVariable mDisconnected = new ConditionVariable();
|
||||||
private final ConditionVariable mPreventReconnectReceived = new ConditionVariable();
|
private final ConditionVariable mPreventReconnectReceived = new ConditionVariable();
|
||||||
|
private final AtomicBoolean mConnected = new AtomicBoolean(false);
|
||||||
private int mScore;
|
private int mScore;
|
||||||
private NetworkAgent mNetworkAgent;
|
private NetworkAgent mNetworkAgent;
|
||||||
private int mStartKeepaliveError = SocketKeepalive.ERROR_UNSUPPORTED;
|
private int mStartKeepaliveError = SocketKeepalive.ERROR_UNSUPPORTED;
|
||||||
@@ -76,7 +76,6 @@ public class NetworkAgentWrapper implements TestableNetworkCallback.HasNetwork {
|
|||||||
NetworkCapabilities ncTemplate, Context context) throws Exception {
|
NetworkCapabilities ncTemplate, Context context) throws Exception {
|
||||||
final int type = transportToLegacyType(transport);
|
final int type = transportToLegacyType(transport);
|
||||||
final String typeName = ConnectivityManager.getNetworkTypeName(type);
|
final String typeName = ConnectivityManager.getNetworkTypeName(type);
|
||||||
mNetworkInfo = new NetworkInfo(type, 0, typeName, "Mock");
|
|
||||||
mNetworkCapabilities = (ncTemplate != null) ? ncTemplate : new NetworkCapabilities();
|
mNetworkCapabilities = (ncTemplate != null) ? ncTemplate : new NetworkCapabilities();
|
||||||
mNetworkCapabilities.addCapability(NET_CAPABILITY_NOT_SUSPENDED);
|
mNetworkCapabilities.addCapability(NET_CAPABILITY_NOT_SUSPENDED);
|
||||||
mNetworkCapabilities.addTransportType(transport);
|
mNetworkCapabilities.addTransportType(transport);
|
||||||
@@ -108,22 +107,29 @@ public class NetworkAgentWrapper implements TestableNetworkCallback.HasNetwork {
|
|||||||
mHandlerThread = new HandlerThread(mLogTag);
|
mHandlerThread = new HandlerThread(mLogTag);
|
||||||
mHandlerThread.start();
|
mHandlerThread.start();
|
||||||
|
|
||||||
mNetworkAgent = makeNetworkAgent(linkProperties);
|
mNetworkAgent = makeNetworkAgent(linkProperties, type, typeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected InstrumentedNetworkAgent makeNetworkAgent(LinkProperties linkProperties)
|
protected InstrumentedNetworkAgent makeNetworkAgent(LinkProperties linkProperties,
|
||||||
|
final int type, final String typeName)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
return new InstrumentedNetworkAgent(this, linkProperties);
|
return new InstrumentedNetworkAgent(this, linkProperties, type, typeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class InstrumentedNetworkAgent extends NetworkAgent {
|
public static class InstrumentedNetworkAgent extends NetworkAgent {
|
||||||
private final NetworkAgentWrapper mWrapper;
|
private final NetworkAgentWrapper mWrapper;
|
||||||
|
private static final String PROVIDER_NAME = "InstrumentedNetworkAgentProvider";
|
||||||
|
|
||||||
public InstrumentedNetworkAgent(NetworkAgentWrapper wrapper, LinkProperties lp) {
|
public InstrumentedNetworkAgent(NetworkAgentWrapper wrapper, LinkProperties lp,
|
||||||
super(wrapper.mHandlerThread.getLooper(), wrapper.mContext, wrapper.mLogTag,
|
final int type, final String typeName) {
|
||||||
wrapper.mNetworkInfo, wrapper.mNetworkCapabilities, lp, wrapper.mScore,
|
super(wrapper.mContext, wrapper.mHandlerThread.getLooper(), wrapper.mLogTag,
|
||||||
new NetworkAgentConfig(), NetworkProvider.ID_NONE);
|
wrapper.mNetworkCapabilities, lp, wrapper.mScore,
|
||||||
|
new NetworkAgentConfig.Builder()
|
||||||
|
.setLegacyType(type).setLegacyTypeName(typeName).build(),
|
||||||
|
new NetworkProvider(wrapper.mContext, wrapper.mHandlerThread.getLooper(),
|
||||||
|
PROVIDER_NAME));
|
||||||
mWrapper = wrapper;
|
mWrapper = wrapper;
|
||||||
|
register();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -212,10 +218,12 @@ public class NetworkAgentWrapper implements TestableNetworkCallback.HasNetwork {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void connect() {
|
public void connect() {
|
||||||
assertNotEquals("MockNetworkAgents can only be connected once",
|
if (!mConnected.compareAndSet(false /* expect */, true /* update */)) {
|
||||||
mNetworkInfo.getDetailedState(), NetworkInfo.DetailedState.CONNECTED);
|
// compareAndSet returns false when the value couldn't be updated because it did not
|
||||||
mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, null, null);
|
// match the expected value.
|
||||||
mNetworkAgent.sendNetworkInfo(mNetworkInfo);
|
fail("Test NetworkAgents can only be connected once");
|
||||||
|
}
|
||||||
|
mNetworkAgent.markConnected();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void suspend() {
|
public void suspend() {
|
||||||
@@ -227,8 +235,7 @@ public class NetworkAgentWrapper implements TestableNetworkCallback.HasNetwork {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void disconnect() {
|
public void disconnect() {
|
||||||
mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.DISCONNECTED, null, null);
|
mNetworkAgent.unregister();
|
||||||
mNetworkAgent.sendNetworkInfo(mNetworkInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -646,8 +646,8 @@ public class ConnectivityServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected InstrumentedNetworkAgent makeNetworkAgent(LinkProperties linkProperties)
|
protected InstrumentedNetworkAgent makeNetworkAgent(LinkProperties linkProperties,
|
||||||
throws Exception {
|
final int type, final String typeName) throws Exception {
|
||||||
mNetworkMonitor = mock(INetworkMonitor.class);
|
mNetworkMonitor = mock(INetworkMonitor.class);
|
||||||
|
|
||||||
final Answer validateAnswer = inv -> {
|
final Answer validateAnswer = inv -> {
|
||||||
@@ -666,7 +666,8 @@ public class ConnectivityServiceTest {
|
|||||||
any() /* name */,
|
any() /* name */,
|
||||||
nmCbCaptor.capture());
|
nmCbCaptor.capture());
|
||||||
|
|
||||||
final InstrumentedNetworkAgent na = new InstrumentedNetworkAgent(this, linkProperties) {
|
final InstrumentedNetworkAgent na = new InstrumentedNetworkAgent(this, linkProperties,
|
||||||
|
type, typeName) {
|
||||||
@Override
|
@Override
|
||||||
public void networkStatus(int status, String redirectUrl) {
|
public void networkStatus(int status, String redirectUrl) {
|
||||||
mRedirectUrl = redirectUrl;
|
mRedirectUrl = redirectUrl;
|
||||||
|
|||||||
Reference in New Issue
Block a user