Add test to make sure that unwanted local nets disconnect correctly
Also add some toString() methods that were useful in debugging. Test: new test in CSLocalAgentTests Change-Id: Ife95815e39d92bbef84b1c5ea75a151882590d09
This commit is contained in:
@@ -82,6 +82,15 @@ public final class LocalNetworkConfig implements Parcelable {
|
|||||||
dest.writeParcelable(mDownstreamMulticastRoutingConfig, flags);
|
dest.writeParcelable(mDownstreamMulticastRoutingConfig, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "LocalNetworkConfig{"
|
||||||
|
+ "UpstreamSelector=" + mUpstreamSelector
|
||||||
|
+ ", UpstreamMulticastConfig=" + mUpstreamMulticastRoutingConfig
|
||||||
|
+ ", DownstreamMulticastConfig=" + mDownstreamMulticastRoutingConfig
|
||||||
|
+ '}';
|
||||||
|
}
|
||||||
|
|
||||||
public static final @NonNull Creator<LocalNetworkConfig> CREATOR = new Creator<>() {
|
public static final @NonNull Creator<LocalNetworkConfig> CREATOR = new Creator<>() {
|
||||||
public LocalNetworkConfig createFromParcel(Parcel in) {
|
public LocalNetworkConfig createFromParcel(Parcel in) {
|
||||||
final NetworkRequest upstreamSelector = in.readParcelable(null);
|
final NetworkRequest upstreamSelector = in.readParcelable(null);
|
||||||
|
|||||||
@@ -159,6 +159,24 @@ public class MulticastRoutingConfig implements Parcelable {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "MulticastRoutingConfig{"
|
||||||
|
+ "ForwardingMode=" + forwardingModeToString(mForwardingMode)
|
||||||
|
+ ", MinScope=" + mMinScope
|
||||||
|
+ ", ListeningAddresses=" + mListeningAddresses
|
||||||
|
+ '}';
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String forwardingModeToString(final int forwardingMode) {
|
||||||
|
switch (forwardingMode) {
|
||||||
|
case FORWARD_NONE: return "NONE";
|
||||||
|
case FORWARD_SELECTED: return "SELECTED";
|
||||||
|
case FORWARD_WITH_MIN_SCOPE: return "WITH_MIN_SCOPE";
|
||||||
|
default: return "UNKNOWN";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static class Builder {
|
public static class Builder {
|
||||||
@MulticastForwardingMode
|
@MulticastForwardingMode
|
||||||
private final int mForwardingMode;
|
private final int mForwardingMode;
|
||||||
|
|||||||
@@ -9006,6 +9006,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (VDBG) {
|
||||||
|
Log.v(TAG, "Update local network config " + nai.network.netId + " : " + newConfig);
|
||||||
|
}
|
||||||
final LocalNetworkConfig.Builder configBuilder = new LocalNetworkConfig.Builder();
|
final LocalNetworkConfig.Builder configBuilder = new LocalNetworkConfig.Builder();
|
||||||
// TODO : apply the diff for multicast routing.
|
// TODO : apply the diff for multicast routing.
|
||||||
configBuilder.setUpstreamMulticastRoutingConfig(
|
configBuilder.setUpstreamMulticastRoutingConfig(
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING
|
|||||||
import android.net.NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED
|
import android.net.NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED
|
||||||
import android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED
|
import android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED
|
||||||
import android.net.NetworkCapabilities.TRANSPORT_CELLULAR
|
import android.net.NetworkCapabilities.TRANSPORT_CELLULAR
|
||||||
|
import android.net.NetworkCapabilities.TRANSPORT_THREAD
|
||||||
import android.net.NetworkCapabilities.TRANSPORT_WIFI
|
import android.net.NetworkCapabilities.TRANSPORT_WIFI
|
||||||
import android.net.NetworkRequest
|
import android.net.NetworkRequest
|
||||||
import android.net.NetworkScore
|
import android.net.NetworkScore
|
||||||
@@ -472,4 +473,55 @@ class CSLocalAgentTests : CSTest() {
|
|||||||
cb.expect<Lost>(localAgent.network)
|
cb.expect<Lost>(localAgent.network)
|
||||||
cb.assertNoCallback()
|
cb.assertNoCallback()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testLocalNetworkUnwanted_withUpstream() {
|
||||||
|
doTestLocalNetworkUnwanted(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testLocalNetworkUnwanted_withoutUpstream() {
|
||||||
|
doTestLocalNetworkUnwanted(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun doTestLocalNetworkUnwanted(haveUpstream: Boolean) {
|
||||||
|
deps.setBuildSdk(VERSION_V)
|
||||||
|
|
||||||
|
val nr = NetworkRequest.Builder().addCapability(NET_CAPABILITY_LOCAL_NETWORK).build()
|
||||||
|
val requestCb = TestableNetworkCallback()
|
||||||
|
cm.requestNetwork(nr, requestCb)
|
||||||
|
val listenCb = TestableNetworkCallback()
|
||||||
|
cm.registerNetworkCallback(nr, listenCb)
|
||||||
|
|
||||||
|
val upstream = if (haveUpstream) {
|
||||||
|
Agent(score = keepScore(), lp = lp("wifi0"),
|
||||||
|
nc = nc(TRANSPORT_WIFI)).also { it.connect() }
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set up a local agent.
|
||||||
|
val lnc = LocalNetworkConfig.Builder().apply {
|
||||||
|
if (haveUpstream) {
|
||||||
|
setUpstreamSelector(NetworkRequest.Builder()
|
||||||
|
.addTransportType(TRANSPORT_WIFI)
|
||||||
|
.build())
|
||||||
|
}
|
||||||
|
}.build()
|
||||||
|
val localAgent = Agent(nc = nc(TRANSPORT_THREAD, NET_CAPABILITY_LOCAL_NETWORK),
|
||||||
|
lp = lp("local0"),
|
||||||
|
lnc = lnc,
|
||||||
|
score = FromS(NetworkScore.Builder().build())
|
||||||
|
)
|
||||||
|
localAgent.connect()
|
||||||
|
|
||||||
|
requestCb.expectAvailableCallbacks(localAgent.network,
|
||||||
|
validated = false, upstream = upstream?.network)
|
||||||
|
listenCb.expectAvailableCallbacks(localAgent.network,
|
||||||
|
validated = false, upstream = upstream?.network)
|
||||||
|
|
||||||
|
cm.unregisterNetworkCallback(requestCb)
|
||||||
|
|
||||||
|
listenCb.expect<Lost>()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user