Merge changes I32095316,I709082c0 into main
* changes: Add integration test for Wifi P2p Group Owner Network Agent Support Wifi P2P Group Owner local network agent
This commit is contained in:
commit
6f3cf21daa
2 changed files with 209 additions and 12 deletions
|
|
@ -219,6 +219,7 @@ public class EthernetTetheringTest extends EthernetTetheringTestBase {
|
|||
|
||||
// Shamelessly copied from TetheringConfiguration.
|
||||
private static final String TETHERING_LOCAL_NETWORK_AGENT = "tethering_local_network_agent";
|
||||
private static final String WIFIP2PGO_LOCAL_NETWORK_AGENT = "wifip2pgo_local_network_agent";
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
|
|
@ -1245,15 +1246,29 @@ public class EthernetTetheringTest extends EthernetTetheringTestBase {
|
|||
}
|
||||
}
|
||||
|
||||
private void assumeMatchNonThreadLocalNetworksEnabled() {
|
||||
assumeTrue(runAsShell(READ_COMPAT_CHANGE_CONFIG, LOG_COMPAT_CHANGE,
|
||||
() -> CompatChanges.isChangeEnabled(ENABLE_MATCH_NON_THREAD_LOCAL_NETWORKS)));
|
||||
}
|
||||
|
||||
@IgnoreUpTo(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
|
||||
@Test
|
||||
public void testLocalAgent_networkCallbacks() throws Exception {
|
||||
final boolean isMatchNonThreadLocalNetworksEnabled = runAsShell(
|
||||
READ_COMPAT_CHANGE_CONFIG, LOG_COMPAT_CHANGE,
|
||||
() -> CompatChanges.isChangeEnabled(ENABLE_MATCH_NON_THREAD_LOCAL_NETWORKS));
|
||||
assumeTrue(isMatchNonThreadLocalNetworksEnabled);
|
||||
|
||||
public void testTetheringLocalAgent_networkCallbacks() throws Exception {
|
||||
assumeMatchNonThreadLocalNetworksEnabled();
|
||||
mDeviceConfigRule.setConfig(NAMESPACE_TETHERING, TETHERING_LOCAL_NETWORK_AGENT, "1");
|
||||
doTestLocalAgent_networkCallbacks(CONNECTIVITY_SCOPE_GLOBAL);
|
||||
}
|
||||
|
||||
@IgnoreUpTo(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
|
||||
@Test
|
||||
public void testWifiP2pGroupOwnerLocalAgent_networkCallbacks() throws Exception {
|
||||
assumeMatchNonThreadLocalNetworksEnabled();
|
||||
mDeviceConfigRule.setConfig(NAMESPACE_TETHERING, TETHERING_LOCAL_NETWORK_AGENT, "1");
|
||||
mDeviceConfigRule.setConfig(NAMESPACE_TETHERING, WIFIP2PGO_LOCAL_NETWORK_AGENT, "1");
|
||||
doTestLocalAgent_networkCallbacks(CONNECTIVITY_SCOPE_LOCAL);
|
||||
}
|
||||
|
||||
private void doTestLocalAgent_networkCallbacks(int scope) throws Exception {
|
||||
assumeFalse(isInterfaceForTetheringAvailable());
|
||||
setIncludeTestInterfaces(true);
|
||||
|
||||
|
|
@ -1273,9 +1288,13 @@ public class EthernetTetheringTest extends EthernetTetheringTestBase {
|
|||
downstreamIface.getInterfaceName(), iface);
|
||||
|
||||
final TetheringRequest request = new TetheringRequest.Builder(TETHERING_ETHERNET)
|
||||
.setConnectivityScope(CONNECTIVITY_SCOPE_GLOBAL).build();
|
||||
.setConnectivityScope(scope).build();
|
||||
tetheringEventCallback = enableTethering(iface, request, null /* any upstream */);
|
||||
tetheringEventCallback.awaitInterfaceTethered();
|
||||
if (scope == CONNECTIVITY_SCOPE_GLOBAL) {
|
||||
tetheringEventCallback.awaitInterfaceTethered();
|
||||
} else {
|
||||
tetheringEventCallback.awaitInterfaceLocalOnly();
|
||||
}
|
||||
|
||||
// Verify NetworkCallback works accordingly.
|
||||
final Network network = networkCallback.expect(CallbackEntry.AVAILABLE).getNetwork();
|
||||
|
|
@ -1284,6 +1303,15 @@ public class EthernetTetheringTest extends EthernetTetheringTestBase {
|
|||
assertEquals(network, capEvent.getNetwork());
|
||||
assertTrue(capEvent.getCaps().hasTransport(TRANSPORT_ETHERNET));
|
||||
assertTrue(capEvent.getCaps().hasCapability(NET_CAPABILITY_LOCAL_NETWORK));
|
||||
|
||||
// Verify details in the LinkPropertiesChanged event.
|
||||
final CallbackEntry.LinkPropertiesChanged lpEvent =
|
||||
networkCallback.eventuallyExpect(CallbackEntry.LINK_PROPERTIES_CHANGED);
|
||||
assertEquals(network, lpEvent.getNetwork());
|
||||
assertEquals(iface, lpEvent.getLp().getInterfaceName());
|
||||
assertTrue(lpEvent.getLp().hasIPv4Address());
|
||||
// At least one Ipv4 route for the subnet is needed.
|
||||
assertTrue(lpEvent.getLp().getRoutes().size() >= 1);
|
||||
} finally {
|
||||
stopEthernetTethering(tetheringEventCallback);
|
||||
maybeCloseTestInterface(downstreamIface);
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ import static com.android.modules.utils.build.SdkLevel.isAtLeastT;
|
|||
import static com.android.modules.utils.build.SdkLevel.isAtLeastV;
|
||||
import static com.android.net.module.util.Inet4AddressUtils.intToInet4AddressHTH;
|
||||
import static com.android.networkstack.tethering.TetheringConfiguration.TETHERING_LOCAL_NETWORK_AGENT;
|
||||
import static com.android.networkstack.tethering.TetheringConfiguration.WIFIP2PGO_LOCAL_NETWORK_AGENT;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
|
|
@ -1123,20 +1124,33 @@ public class IpServerTest {
|
|||
|
||||
@IgnoreUpTo(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
|
||||
@SetFeatureFlagsRule.FeatureFlag(name = TETHERING_LOCAL_NETWORK_AGENT, enabled = false)
|
||||
@SetFeatureFlagsRule.FeatureFlag(name = WIFIP2PGO_LOCAL_NETWORK_AGENT)
|
||||
@Test
|
||||
public void testTetheringNetworkAgent_tetheringAgentDisabled() throws Exception {
|
||||
doTestTetheringNetworkAgent(CONNECTIVITY_SCOPE_GLOBAL, false);
|
||||
// Even if the flag is enabled, no wifip2p network agent if the tethering network
|
||||
// agent feature is not supported.
|
||||
doTestTetheringNetworkAgent(CONNECTIVITY_SCOPE_LOCAL, false);
|
||||
}
|
||||
|
||||
// Verify Tethering Network Agent feature doesn't affect Wi-fi P2P Group Owner although
|
||||
// the code is mostly shared.
|
||||
@IgnoreUpTo(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
|
||||
@SetFeatureFlagsRule.FeatureFlag(name = TETHERING_LOCAL_NETWORK_AGENT)
|
||||
@SetFeatureFlagsRule.FeatureFlag(name = WIFIP2PGO_LOCAL_NETWORK_AGENT, enabled = false)
|
||||
@Test
|
||||
public void testTetheringNetworkAgent_p2pGroupOwnerAgentDisabled() throws Exception {
|
||||
doTestTetheringNetworkAgent(CONNECTIVITY_SCOPE_LOCAL, false);
|
||||
}
|
||||
|
||||
@IgnoreUpTo(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
|
||||
@SetFeatureFlagsRule.FeatureFlag(name = TETHERING_LOCAL_NETWORK_AGENT)
|
||||
@SetFeatureFlagsRule.FeatureFlag(name = WIFIP2PGO_LOCAL_NETWORK_AGENT)
|
||||
@Test
|
||||
public void testTetheringNetworkAgent_p2pGroupOwnerAgentEnabled() throws Exception {
|
||||
doTestTetheringNetworkAgent(CONNECTIVITY_SCOPE_LOCAL, true);
|
||||
}
|
||||
|
||||
private void doTestTetheringNetworkAgent(int scope, boolean expectAgentEnabled)
|
||||
throws Exception {
|
||||
initStateMachine(TETHERING_USB);
|
||||
|
|
|
|||
Loading…
Reference in a new issue