Skip to content
Snippets Groups Projects
Commit 54e84ab0 authored by Junyu Lai's avatar Junyu Lai
Browse files

Add test for cgroup bpf program status

This is useful to ensure cgroup bpf program is attached,
which would lead to hard-debugging uid stats missing problem.

Test: atest ConnectivityServiceIntegrationTest#testBpfProgramAttachStatus
Bug: 292156770
Change-Id: I16370497484aff29ed41cbb0d160e530731e1a4e
parent 6c83f00b
No related branches found
No related tags found
No related merge requests found
...@@ -45,6 +45,7 @@ android_test { ...@@ -45,6 +45,7 @@ android_test {
// order-dependent setup. // order-dependent setup.
"NetworkStackApiStableLib", "NetworkStackApiStableLib",
"androidx.test.ext.junit", "androidx.test.ext.junit",
"compatibility-device-util-axt",
"frameworks-net-integration-testutils", "frameworks-net-integration-testutils",
"kotlin-reflect", "kotlin-reflect",
"mockito-target-extended-minus-junit4", "mockito-target-extended-minus-junit4",
......
...@@ -40,11 +40,14 @@ import android.os.ConditionVariable ...@@ -40,11 +40,14 @@ import android.os.ConditionVariable
import android.os.IBinder import android.os.IBinder
import android.os.SystemConfigManager import android.os.SystemConfigManager
import android.os.UserHandle import android.os.UserHandle
import android.os.VintfRuntimeInfo
import android.testing.TestableContext import android.testing.TestableContext
import android.util.Log import android.util.Log
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import com.android.compatibility.common.util.SystemUtil
import com.android.connectivity.resources.R import com.android.connectivity.resources.R
import com.android.net.module.util.BpfUtils
import com.android.server.BpfNetMaps import com.android.server.BpfNetMaps
import com.android.server.ConnectivityService import com.android.server.ConnectivityService
import com.android.server.NetworkAgentWrapper import com.android.server.NetworkAgentWrapper
...@@ -53,6 +56,7 @@ import com.android.server.connectivity.ConnectivityResources ...@@ -53,6 +56,7 @@ import com.android.server.connectivity.ConnectivityResources
import com.android.server.connectivity.MockableSystemProperties import com.android.server.connectivity.MockableSystemProperties
import com.android.server.connectivity.MultinetworkPolicyTracker import com.android.server.connectivity.MultinetworkPolicyTracker
import com.android.server.connectivity.ProxyTracker import com.android.server.connectivity.ProxyTracker
import com.android.testutils.DeviceInfoUtils
import com.android.testutils.RecorderCallback.CallbackEntry.LinkPropertiesChanged import com.android.testutils.RecorderCallback.CallbackEntry.LinkPropertiesChanged
import com.android.testutils.TestableNetworkCallback import com.android.testutils.TestableNetworkCallback
import kotlin.test.assertEquals import kotlin.test.assertEquals
...@@ -60,6 +64,7 @@ import kotlin.test.assertNotNull ...@@ -60,6 +64,7 @@ import kotlin.test.assertNotNull
import kotlin.test.assertTrue import kotlin.test.assertTrue
import kotlin.test.fail import kotlin.test.fail
import org.junit.After import org.junit.After
import org.junit.Assume
import org.junit.Before import org.junit.Before
import org.junit.BeforeClass import org.junit.BeforeClass
import org.junit.Test import org.junit.Test
...@@ -302,4 +307,25 @@ class ConnectivityServiceIntegrationTest { ...@@ -302,4 +307,25 @@ class ConnectivityServiceIntegrationTest {
!it.hasCapability(NET_CAPABILITY_VALIDATED) !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")
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment