From 11fdc9721129c8d57c1edbb95dc34e51c6844e7d Mon Sep 17 00:00:00 2001 From: Kalesh Singh Date: Fri, 22 Jan 2021 16:59:15 -0500 Subject: [PATCH] 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 --- memtrack/aidl/default/Memtrack.cpp | 2 ++ memtrack/aidl/vts/Android.bp | 1 + .../aidl/vts/VtsHalMemtrackTargetTest.cpp | 20 +++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/memtrack/aidl/default/Memtrack.cpp b/memtrack/aidl/default/Memtrack.cpp index 7361719002..000b25c030 100644 --- a/memtrack/aidl/default/Memtrack.cpp +++ b/memtrack/aidl/default/Memtrack.cpp @@ -35,6 +35,8 @@ ndk::ScopedAStatus Memtrack::getMemory(int pid, MemtrackType type, ndk::ScopedAStatus Memtrack::getGpuDeviceInfo(std::vector* _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 ea36677237..c9743f43f6 100644 --- a/memtrack/aidl/vts/Android.bp +++ b/memtrack/aidl/vts/Android.bp @@ -7,6 +7,7 @@ cc_test { 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 4d331014ba..2393c568c3 100644 --- a/memtrack/aidl/vts/VtsHalMemtrackTargetTest.cpp +++ b/memtrack/aidl/vts/VtsHalMemtrackTargetTest.cpp @@ -21,11 +21,15 @@ #include #include #include +#include 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 { public: @@ -75,7 +79,23 @@ TEST_P(MemtrackAidlTest, GetGpuDeviceInfo) { 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);