diff --git a/Vcn/tests/cts/Android.bp b/Vcn/tests/cts/Android.bp
index 1756c5997a..2e2d10dcb2 100644
--- a/Vcn/tests/cts/Android.bp
+++ b/Vcn/tests/cts/Android.bp
@@ -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"],
diff --git a/Vcn/tests/cts/AndroidManifest.xml b/Vcn/tests/cts/AndroidManifest.xml
index b37e174e8a..ffcbcaa2d2 100644
--- a/Vcn/tests/cts/AndroidManifest.xml
+++ b/Vcn/tests/cts/AndroidManifest.xml
@@ -19,6 +19,9 @@
package="android.net.vcn.cts"
android:targetSandboxVersion="2">
+
+
+
diff --git a/Vcn/tests/cts/AndroidTest.xml b/Vcn/tests/cts/AndroidTest.xml
index 0d3f529c0b..0375b9ca04 100644
--- a/Vcn/tests/cts/AndroidTest.xml
+++ b/Vcn/tests/cts/AndroidTest.xml
@@ -24,6 +24,13 @@
+
+
+
+
diff --git a/Vcn/tests/cts/src/android/net/vcn/cts/ConnectivityFrameworkInitializerBaklavaTest.java b/Vcn/tests/cts/src/android/net/vcn/cts/ConnectivityFrameworkInitializerBaklavaTest.java
index 0bc38b51fc..c28bd19548 100644
--- a/Vcn/tests/cts/src/android/net/vcn/cts/ConnectivityFrameworkInitializerBaklavaTest.java
+++ b/Vcn/tests/cts/src/android/net/vcn/cts/ConnectivityFrameworkInitializerBaklavaTest.java
@@ -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();
diff --git a/Vcn/tests/cts/src/android/net/vcn/cts/VcnCellUnderlyingNetworkTemplateTest.java b/Vcn/tests/cts/src/android/net/vcn/cts/VcnCellUnderlyingNetworkTemplateTest.java
index b640961962..790192791e 100644
--- a/Vcn/tests/cts/src/android/net/vcn/cts/VcnCellUnderlyingNetworkTemplateTest.java
+++ b/Vcn/tests/cts/src/android/net/vcn/cts/VcnCellUnderlyingNetworkTemplateTest.java
@@ -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 ALLOWED_PLMN_IDS = Set.of("123456", "12345");
private static final Set ALLOWED_CARRIER_IDS = Set.of(100, 101);
diff --git a/Vcn/tests/cts/src/android/net/vcn/cts/VcnConfigTest.java b/Vcn/tests/cts/src/android/net/vcn/cts/VcnConfigTest.java
index 55c20b36f1..bfaead2385 100644
--- a/Vcn/tests/cts/src/android/net/vcn/cts/VcnConfigTest.java
+++ b/Vcn/tests/cts/src/android/net/vcn/cts/VcnConfigTest.java
@@ -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();
diff --git a/Vcn/tests/cts/src/android/net/vcn/cts/VcnGatewayConnectionConfigTest.java b/Vcn/tests/cts/src/android/net/vcn/cts/VcnGatewayConnectionConfigTest.java
index 618c3de743..c5dacb974a 100644
--- a/Vcn/tests/cts/src/android/net/vcn/cts/VcnGatewayConnectionConfigTest.java
+++ b/Vcn/tests/cts/src/android/net/vcn/cts/VcnGatewayConnectionConfigTest.java
@@ -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 =
diff --git a/Vcn/tests/cts/src/android/net/vcn/cts/VcnManagerTest.java b/Vcn/tests/cts/src/android/net/vcn/cts/VcnManagerTest.java
index d0755fa2a8..d78b5b3fc9 100644
--- a/Vcn/tests/cts/src/android/net/vcn/cts/VcnManagerTest.java
+++ b/Vcn/tests/cts/src/android/net/vcn/cts/VcnManagerTest.java
@@ -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();
diff --git a/Vcn/tests/cts/src/android/net/vcn/cts/VcnSystemRequirementsTest.java b/Vcn/tests/cts/src/android/net/vcn/cts/VcnSystemRequirementsTest.java
index b095d7f674..4da2ddf4a6 100644
--- a/Vcn/tests/cts/src/android/net/vcn/cts/VcnSystemRequirementsTest.java
+++ b/Vcn/tests/cts/src/android/net/vcn/cts/VcnSystemRequirementsTest.java
@@ -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();
diff --git a/Vcn/tests/cts/src/android/net/vcn/cts/VcnTransportInfoTest.java b/Vcn/tests/cts/src/android/net/vcn/cts/VcnTransportInfoTest.java
index 3e6b350a33..2fad4a547b 100644
--- a/Vcn/tests/cts/src/android/net/vcn/cts/VcnTransportInfoTest.java
+++ b/Vcn/tests/cts/src/android/net/vcn/cts/VcnTransportInfoTest.java
@@ -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();
diff --git a/Vcn/tests/cts/src/android/net/vcn/cts/VcnWifiUnderlyingNetworkTemplateTest.java b/Vcn/tests/cts/src/android/net/vcn/cts/VcnWifiUnderlyingNetworkTemplateTest.java
index d14dcf4896..3ec6679113 100644
--- a/Vcn/tests/cts/src/android/net/vcn/cts/VcnWifiUnderlyingNetworkTemplateTest.java
+++ b/Vcn/tests/cts/src/android/net/vcn/cts/VcnWifiUnderlyingNetworkTemplateTest.java
@@ -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 SSIDS = Set.of("TestWifi");