Update Memtrack HAL VTS Requirements
Only devices with 5.10 or later kernel are required to
implement getGpuDeviceInfo().
At least one non-empty device name must be returned by
getGpuDeviceInfo().
Test: atest VtsHalMemtrackTargetTest
Bug: 176477627
Change-Id: I8c7121f4bed0e674407a22f0a772e95475243568
diff --git a/memtrack/aidl/default/Memtrack.cpp b/memtrack/aidl/default/Memtrack.cpp
index 7361719..000b25c 100644
--- a/memtrack/aidl/default/Memtrack.cpp
+++ b/memtrack/aidl/default/Memtrack.cpp
@@ -35,6 +35,8 @@
ndk::ScopedAStatus Memtrack::getGpuDeviceInfo(std::vector<DeviceInfo>* _aidl_return) {
_aidl_return->clear();
+ DeviceInfo dev_info = {.id = 0, .name = "virtio_gpu"};
+ _aidl_return->emplace_back(dev_info);
return ndk::ScopedAStatus::ok();
}
diff --git a/memtrack/aidl/vts/Android.bp b/memtrack/aidl/vts/Android.bp
index ea36677..c9743f4 100644
--- a/memtrack/aidl/vts/Android.bp
+++ b/memtrack/aidl/vts/Android.bp
@@ -7,6 +7,7 @@
srcs: ["VtsHalMemtrackTargetTest.cpp"],
shared_libs: [
"libbinder_ndk",
+ "libvintf",
],
static_libs: [
"android.hardware.memtrack-unstable-ndk_platform",
diff --git a/memtrack/aidl/vts/VtsHalMemtrackTargetTest.cpp b/memtrack/aidl/vts/VtsHalMemtrackTargetTest.cpp
index 4d33101..2393c56 100644
--- a/memtrack/aidl/vts/VtsHalMemtrackTargetTest.cpp
+++ b/memtrack/aidl/vts/VtsHalMemtrackTargetTest.cpp
@@ -21,11 +21,15 @@
#include <aidl/android/hardware/memtrack/MemtrackType.h>
#include <android/binder_manager.h>
#include <android/binder_process.h>
+#include <vintf/VintfObject.h>
using aidl::android::hardware::memtrack::DeviceInfo;
using aidl::android::hardware::memtrack::IMemtrack;
using aidl::android::hardware::memtrack::MemtrackRecord;
using aidl::android::hardware::memtrack::MemtrackType;
+using android::vintf::KernelVersion;
+using android::vintf::RuntimeInfo;
+using android::vintf::VintfObject;
class MemtrackAidlTest : public testing::TestWithParam<std::string> {
public:
@@ -75,7 +79,23 @@
auto status = memtrack_->getGpuDeviceInfo(&device_info);
+ // Devices with < 5.10 kernels aren't required to provide an implementation of
+ // getGpuDeviceInfo(), and can return EX_UNSUPPORTED_OPERATION
+ if (status.getExceptionCode() == EX_UNSUPPORTED_OPERATION) {
+ KernelVersion min_kernel_version = KernelVersion(5, 10, 0);
+ KernelVersion kernel_version = VintfObject::GetInstance()
+ ->getRuntimeInfo(RuntimeInfo::FetchFlag::CPU_VERSION)
+ ->kernelVersion();
+ EXPECT_LT(kernel_version, min_kernel_version)
+ << "Devices with 5.10 or later kernels must implement getGpuDeviceInfo()";
+ return;
+ }
+
EXPECT_TRUE(status.isOk());
+ EXPECT_FALSE(device_info.empty());
+ for (auto device : device_info) {
+ EXPECT_FALSE(device.name.empty());
+ }
}
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(MemtrackAidlTest);