| { | 
 |   "presubmit": [ | 
 |     { | 
 |       "name": "ConnectivityCoverageTests", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.NetworkStackModuleTest" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       // In addition to ConnectivityCoverageTests, runs non-connectivity-module tests | 
 |       "name": "FrameworksNetTests", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     // Run in addition to mainline-presubmit as mainline-presubmit is not | 
 |     // supported in every branch. | 
 |     // CtsNetTestCasesLatestSdk uses stable API shims, so does not exercise | 
 |     // some latest APIs. Run CtsNetTestCases to get coverage of newer APIs. | 
 |     { | 
 |       "name": "CtsNetTestCases", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     // Also run CtsNetTestCasesLatestSdk to ensure tests using older shims pass. | 
 |     { | 
 |       "name": "CtsNetTestCasesLatestSdk", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     // CTS tests that target older SDKs. | 
 |     { | 
 |       "name": "CtsNetTestCasesMaxTargetSdk30", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "name": "CtsNetTestCasesMaxTargetSdk31", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "name": "CtsNetTestCasesMaxTargetSdk33", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "name": "bpf_existence_test" | 
 |     }, | 
 |     { | 
 |       "name": "connectivity_native_test" | 
 |     }, | 
 |     { | 
 |       "name": "libclat_test" | 
 |     }, | 
 |     { | 
 |       "name": "netd_updatable_unit_test" | 
 |     }, | 
 |     { | 
 |       "name": "TetheringTests" | 
 |     }, | 
 |     { | 
 |       "name": "TetheringIntegrationTests" | 
 |     }, | 
 |     { | 
 |       "name": "libnetworkstats_test" | 
 |     }, | 
 |     { | 
 |       "name": "FrameworksNetIntegrationTests" | 
 |     }, | 
 |     // Runs both NetHttpTests and CtsNetHttpTestCases | 
 |     { | 
 |       "name": "NetHttpCoverageTests", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           // These sometimes take longer than 1 min which is the presubmit timeout | 
 |           "exclude-annotation": "androidx.test.filters.LargeTest" | 
 |         } | 
 |       ] | 
 |     } | 
 |   ], | 
 |   "postsubmit": [ | 
 |     { | 
 |       "name": "TetheringPrivilegedTests" | 
 |     }, | 
 |     { | 
 |       "name": "netd_updatable_unit_test", | 
 |       "keywords": ["netd-device-kernel-4.9", "netd-device-kernel-4.14"] | 
 |     }, | 
 |     { | 
 |       "name": "dns_helper_unit_test" | 
 |     }, | 
 |     { | 
 |       "name": "FrameworksNetDeflakeTest" | 
 |     }, | 
 |     // Postsubmit on virtual devices to monitor flakiness of @SkipPresubmit methods | 
 |     { | 
 |       "name": "CtsNetTestCases", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "name": "FrameworksNetTests" | 
 |     }, | 
 |     { | 
 |       "name": "NetHttpCoverageTests" | 
 |     } | 
 |   ], | 
 |   "mainline-presubmit": [ | 
 |     { | 
 |       "name": "CtsNetTestCasesLatestSdk[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipMainlinePresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "name": "CtsNetTestCasesMaxTargetSdk30[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipMainlinePresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "name": "CtsNetTestCasesMaxTargetSdk31[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipMainlinePresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "name": "CtsNetTestCasesMaxTargetSdk33[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipMainlinePresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     // Test with APK modules only, in cases where APEX is not supported, or the other modules | 
 |     // were simply not updated | 
 |     { | 
 |       "name": "CtsNetTestCasesLatestSdk[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk]", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipMainlinePresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.ConnectivityModuleTest" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.DnsResolverModuleTest" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     // Test with connectivity/tethering module only, to catch integration issues with older versions | 
 |     // of other modules. "new tethering + old NetworkStack" is not a configuration that should | 
 |     // really exist in the field, but there is no strong guarantee, and it is required by MTS | 
 |     // testing for module qualification, where modules are tested independently. | 
 |     { | 
 |       "name": "CtsNetTestCasesLatestSdk[com.google.android.tethering.apex]", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipMainlinePresubmit" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         }, | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.DnsResolverModuleTest" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "name": "bpf_existence_test[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]" | 
 |     }, | 
 |     { | 
 |       "name": "connectivity_native_test[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]" | 
 |     }, | 
 |     { | 
 |       "name": "netd_updatable_unit_test[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]" | 
 |     }, | 
 |     { | 
 |       "name": "ConnectivityCoverageTests[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "name": "libnetworkstats_test[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]" | 
 |     }, | 
 |     { | 
 |       "name": "NetHttpCoverageTests[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.SkipPresubmit" | 
 |         }, | 
 |         { | 
 |           // These sometimes take longer than 1 min which is the presubmit timeout | 
 |           "exclude-annotation": "androidx.test.filters.LargeTest" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     { | 
 |       "name": "CtsTetheringTestLatestSdk[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.NetworkStackModuleTest" | 
 |         } | 
 |       ] | 
 |     } | 
 |   ], | 
 |   "mainline-postsubmit": [ | 
 |     // Tests on physical devices with SIM cards: postsubmit only for capacity constraints | 
 |     { | 
 |       "name": "CtsNetTestCasesLatestSdk[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]", | 
 |       "keywords": ["sim"] | 
 |     }, | 
 |     { | 
 |       "name": "CtsTetheringTestLatestSdk[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]", | 
 |       "keywords": ["sim"], | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "com.android.testutils.NetworkStackModuleTest" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     // Postsubmit on virtual devices to monitor flakiness of @SkipMainlinePresubmit methods | 
 |     { | 
 |       "name": "CtsNetTestCasesLatestSdk[CaptivePortalLoginGoogle.apk+NetworkStackGoogle.apk+com.google.android.resolv.apex+com.google.android.tethering.apex]", | 
 |       "options": [ | 
 |         { | 
 |           "exclude-annotation": "androidx.test.filters.RequiresDevice" | 
 |         } | 
 |       ] | 
 |     } | 
 |   ], | 
 |   "imports": [ | 
 |     { | 
 |       "path": "frameworks/base/core/java/android/net" | 
 |     }, | 
 |     { | 
 |       "path": "frameworks/opt/net/ethernet" | 
 |     }, | 
 |     { | 
 |       "path": "packages/modules/NetworkStack" | 
 |     }, | 
 |     { | 
 |       "path": "packages/modules/CaptivePortalLogin" | 
 |     }, | 
 |     { | 
 |       "path": "vendor/xts/gts-tests/hostsidetests/networkstack" | 
 |     } | 
 |   ] | 
 | } |