libmeminfo: Restrict TestReadGpuTotalUsageKb testing to supported versions

TestReadGpuTotalUsageKb API requires kernel features introduces in 5.4
kernel version and should be required only on devices launched with
Android 12. Modify the test to skip on non-supposted devices.

Bug: 179108380
Test: libmeminfo_test
Signed-off-by: Suren Baghdasaryan <[email protected]>
Change-Id: If8463965d113dcf3fe4c584166269d4d3a9cca1d
diff --git a/libmeminfo_test.cpp b/libmeminfo_test.cpp
index ee4a4ac..a041f3f 100644
--- a/libmeminfo_test.cpp
+++ b/libmeminfo_test.cpp
@@ -27,14 +27,19 @@
 #include <meminfo/pageacct.h>
 #include <meminfo/procmeminfo.h>
 #include <meminfo/sysmeminfo.h>
+#include <vintf/VintfObject.h>
 
 #include <android-base/file.h>
 #include <android-base/logging.h>
+#include <android-base/properties.h>
 #include <android-base/stringprintf.h>
 #include <android-base/strings.h>
 
 using namespace std;
 using namespace android::meminfo;
+using android::vintf::KernelVersion;
+using android::vintf::RuntimeInfo;
+using android::vintf::VintfObject;
 
 pid_t pid = -1;
 
@@ -844,6 +849,18 @@
 TEST(SysMemInfo, TestReadGpuTotalUsageKb) {
     uint64_t size;
 
+    if (android::base::GetIntProperty("ro.product.first_api_level", 0) < __ANDROID_API_S__) {
+        GTEST_SKIP();
+    }
+
+    KernelVersion min_kernel_version = KernelVersion(5, 4, 0);
+    KernelVersion kernel_version = VintfObject::GetInstance()
+                                           ->getRuntimeInfo(RuntimeInfo::FetchFlag::CPU_VERSION)
+                                           ->kernelVersion();
+    if (kernel_version < min_kernel_version) {
+        GTEST_SKIP();
+    }
+
     ASSERT_TRUE(ReadGpuTotalUsageKb(&size));
     EXPECT_TRUE(size >= 0);
 }