diff --git a/tests/integration/Android.bp b/tests/integration/Android.bp index 12919ae60f..f705e34571 100644 --- a/tests/integration/Android.bp +++ b/tests/integration/Android.bp @@ -45,6 +45,7 @@ android_test { // order-dependent setup. "NetworkStackApiStableLib", "androidx.test.ext.junit", + "compatibility-device-util-axt", "frameworks-net-integration-testutils", "kotlin-reflect", "mockito-target-extended-minus-junit4", diff --git a/tests/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt b/tests/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt index e264b55e27..9b082a447c 100644 --- a/tests/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt +++ b/tests/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt @@ -40,11 +40,14 @@ import android.os.ConditionVariable import android.os.IBinder import android.os.SystemConfigManager import android.os.UserHandle +import android.os.VintfRuntimeInfo import android.testing.TestableContext import android.util.Log import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry +import com.android.compatibility.common.util.SystemUtil import com.android.connectivity.resources.R +import com.android.net.module.util.BpfUtils import com.android.server.BpfNetMaps import com.android.server.ConnectivityService import com.android.server.NetworkAgentWrapper @@ -53,6 +56,7 @@ import com.android.server.connectivity.ConnectivityResources import com.android.server.connectivity.MockableSystemProperties import com.android.server.connectivity.MultinetworkPolicyTracker import com.android.server.connectivity.ProxyTracker +import com.android.testutils.DeviceInfoUtils import com.android.testutils.RecorderCallback.CallbackEntry.LinkPropertiesChanged import com.android.testutils.TestableNetworkCallback import kotlin.test.assertEquals @@ -60,6 +64,7 @@ import kotlin.test.assertNotNull import kotlin.test.assertTrue import kotlin.test.fail import org.junit.After +import org.junit.Assume import org.junit.Before import org.junit.BeforeClass import org.junit.Test @@ -302,4 +307,25 @@ class ConnectivityServiceIntegrationTest { !it.hasCapability(NET_CAPABILITY_VALIDATED) } } + + private fun isBpfGetCgroupProgramIdSupportedByKernel(): Boolean { + val kVersionString = VintfRuntimeInfo.getKernelVersion() + return DeviceInfoUtils.compareMajorMinorVersion(kVersionString, "4.19") >= 0 + } + + @Test + fun testBpfProgramAttachStatus() { + Assume.assumeTrue(isBpfGetCgroupProgramIdSupportedByKernel()) + + listOf( + BpfUtils.BPF_CGROUP_INET_INGRESS, + BpfUtils.BPF_CGROUP_INET_EGRESS, + BpfUtils.BPF_CGROUP_INET_SOCK_CREATE + ).forEach { + val ret = SystemUtil.runShellCommand(InstrumentationRegistry.getInstrumentation(), + "cmd connectivity bpf-get-cgroup-program-id $it").trim() + + assertTrue(Integer.parseInt(ret) > 0, "Unexpected output $ret for type $it") + } + } }