Add VCN CTS to mts-tethering

This patch adds CtsVcnTests to tethering MTS. Consequently,
these tests will be monthly updated and installed with Tethering
module on all Android R/R+ devices. Thus the patch also adds
SDK checks to make sure the mainline updated tests will be skipped
if SDK <= Android V, to avoid compatability issues.

Bug: 376896491
Test: lunch mainline_modules_arm64-mainline-userdebug &&
      m mts && mts-tradefed run mts-tethering;
      Verified on V and B
Flag: EXEMPT; test code change
Change-Id: Ib6d3d698925feef472d472be6def080580aa6ec3
This commit is contained in:
Yan Yan 2025-02-10 14:43:57 -08:00
commit 0bd95f840d
11 changed files with 77 additions and 12 deletions

View file

@ -24,6 +24,9 @@ android_test {
"framework-connectivity-test-defaults",
],
// TODO: b/374174952 Use 36 after Android B finalization
min_sdk_version: "35",
// Include both the 32 and 64 bit versions
compile_multilib: "both",
@ -57,6 +60,8 @@ android_test {
test_suites: [
"cts",
"general-tests",
"mts-tethering",
"mcts-tethering",
],
data: [":ConnectivityTestPreparer"],
host_required: ["net-tests-utils-host-common"],

View file

@ -19,6 +19,9 @@
package="android.net.vcn.cts"
android:targetSandboxVersion="2">
<!-- TODO: b/374174952 Use 36 after Android B finalization -->
<uses-sdk android:minSdkVersion="35" android:targetSdkVersion="35" />
<!--Allow tests to call ConnectivityManager#getActiveNetwork()-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- Allow tests to call ConnectivityManager#requestNetwork() -->

View file

@ -24,6 +24,13 @@
<option name="config-descriptor:metadata" key="parameter" value="run_on_sdk_sandbox" />
<option name="not-shardable" value="true" />
<!-- Run tests in MTS only if the Tethering Mainline module is installed. -->
<object type="module_controller"
class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
<option name="mainline-module-package-name" value="com.google.android.tethering" />
</object>
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
<option name="cleanup-apks" value="true" />
<option name="test-file-name" value="CtsVcnTestCases.apk" />

View file

@ -20,18 +20,23 @@ import static org.junit.Assert.assertThrows;
import android.net.ConnectivityFrameworkInitializerBaklava;
import android.net.vcn.Flags;
import android.os.Build;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRunner;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
// TODO: b/374174952 After B finalization, use Sdk36ModuleController to ensure VCN tests only run on
// Android B/B+
@RunWith(DevSdkIgnoreRunner.class)
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.VANILLA_ICE_CREAM)
@RequiresFlagsEnabled(Flags.FLAG_MAINLINE_VCN_MODULE_API)
@RunWith(AndroidJUnit4.class)
public class ConnectivityFrameworkInitializerBaklavaTest {
@Rule
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();

View file

@ -23,12 +23,21 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import android.net.vcn.VcnCellUnderlyingNetworkTemplate;
import android.os.Build;
import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.HashSet;
import java.util.Set;
// TODO: b/374174952 After B finalization, use Sdk36ModuleController to ensure VCN tests only run on
// Android B/B+
@RunWith(DevSdkIgnoreRunner.class)
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.VANILLA_ICE_CREAM)
public class VcnCellUnderlyingNetworkTemplateTest extends VcnUnderlyingNetworkTemplateTestBase {
private static final Set<String> ALLOWED_PLMN_IDS = Set.of("123456", "12345");
private static final Set<Integer> ALLOWED_CARRIER_IDS = Set.of(100, 101);

View file

@ -25,10 +25,13 @@ import static org.junit.Assert.fail;
import android.content.Context;
import android.net.vcn.VcnConfig;
import android.net.vcn.VcnGatewayConnectionConfig;
import android.os.Build;
import android.util.ArraySet;
import androidx.test.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
@ -36,7 +39,10 @@ import org.junit.runner.RunWith;
import java.util.Collections;
import java.util.Set;
@RunWith(AndroidJUnit4.class)
// TODO: b/374174952 After B finalization, use Sdk36ModuleController to ensure VCN tests only run on
// Android B/B+
@RunWith(DevSdkIgnoreRunner.class)
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.VANILLA_ICE_CREAM)
public class VcnConfigTest extends VcnTestBase {
private static final VcnGatewayConnectionConfig GATEWAY_CONNECTION_CONFIG =
VcnGatewayConnectionConfigTest.buildVcnGatewayConnectionConfig();

View file

@ -31,8 +31,10 @@ import android.net.ipsec.ike.IkeSessionParams;
import android.net.ipsec.ike.IkeTunnelConnectionParams;
import android.net.vcn.VcnGatewayConnectionConfig;
import android.net.vcn.VcnUnderlyingNetworkTemplate;
import android.os.Build;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
@ -43,7 +45,10 @@ import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@RunWith(AndroidJUnit4.class)
// TODO: b/374174952 After B finalization, use Sdk36ModuleController to ensure VCN tests only run on
// Android B/B+
@RunWith(DevSdkIgnoreRunner.class)
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.VANILLA_ICE_CREAM)
public class VcnGatewayConnectionConfigTest extends VcnTestBase {
private static final String VCN_GATEWAY_CONNECTION_NAME = "test-vcn-gateway-connection";
private static final long[] RETRY_INTERNAL_MILLIS =

View file

@ -75,6 +75,7 @@ import android.net.vcn.VcnUnderlyingNetworkTemplate;
import android.net.vcn.VcnWifiUnderlyingNetworkTemplate;
import android.net.vcn.cts.TestNetworkWrapper.VcnTestNetworkCallback;
import android.net.vcn.cts.TestNetworkWrapper.VcnTestNetworkCallback.CapabilitiesChangedEvent;
import android.os.Build;
import android.os.ParcelUuid;
import android.os.PersistableBundle;
import android.os.SystemClock;
@ -84,9 +85,10 @@ import android.telephony.TelephonyManager;
import android.telephony.cts.util.SubscriptionGroupUtils;
import androidx.test.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.compatibility.common.util.CarrierPrivilegeUtils;
import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRunner;
import org.junit.After;
import org.junit.Before;
@ -106,7 +108,10 @@ import java.util.concurrent.Executor;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
@RunWith(AndroidJUnit4.class)
// TODO: b/374174952 After B finalization, use Sdk36ModuleController to ensure VCN tests only run on
// Android B/B+
@RunWith(DevSdkIgnoreRunner.class)
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.VANILLA_ICE_CREAM)
public class VcnManagerTest extends VcnTestBase {
private static final String TAG = VcnManagerTest.class.getSimpleName();

View file

@ -26,17 +26,23 @@ import static org.junit.Assume.assumeTrue;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.vcn.VcnManager;
import android.os.Build;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import androidx.test.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
// TODO: b/374174952 After B finalization, use Sdk36ModuleController to ensure VCN tests only run on
// Android B/B+
@RunWith(DevSdkIgnoreRunner.class)
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.VANILLA_ICE_CREAM)
public class VcnSystemRequirementsTest {
private static final int VENDOR_API_FOR_ANDROID_V = 202404;
private final Context mContext = InstrumentationRegistry.getContext();

View file

@ -22,19 +22,24 @@ import static org.junit.Assert.assertEquals;
import android.net.vcn.Flags;
import android.net.vcn.VcnTransportInfo;
import android.os.Build;
import android.os.Parcel;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRunner;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
// TODO: b/374174952 After B finalization, use Sdk36ModuleController to ensure VCN tests only run on
// Android B/B+
@RunWith(DevSdkIgnoreRunner.class)
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.VANILLA_ICE_CREAM)
@RequiresFlagsEnabled(Flags.FLAG_MAINLINE_VCN_MODULE_API)
@RunWith(AndroidJUnit4.class)
public class VcnTransportInfoTest extends VcnTestBase {
@Rule
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();

View file

@ -22,12 +22,21 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import android.net.vcn.VcnWifiUnderlyingNetworkTemplate;
import android.os.Build;
import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.HashSet;
import java.util.Set;
// TODO: b/374174952 After B finalization, use Sdk36ModuleController to ensure VCN tests only run on
// Android B/B+
@RunWith(DevSdkIgnoreRunner.class)
@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.VANILLA_ICE_CREAM)
public class VcnWifiUnderlyingNetworkTemplateTest extends VcnUnderlyingNetworkTemplateTestBase {
private static final Set<String> SSIDS = Set.of("TestWifi");