diff options
author | Connor O'Brien <connoro@google.com> | 2017-03-11 00:24:45 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-03-11 00:24:46 +0000 |
commit | a20c517278cfb50f51e707f98061e1f38638ada5 (patch) | |
tree | 148cb0bc48cbef79b7b0a5e9b6faf494e6d53f7a /memtrack | |
parent | 721a8fc0c2440355b8c51b764d53f8fe45f153c5 (diff) | |
parent | 7d39766157d9403a02ed37950cd639bc2c7d2529 (diff) | |
download | android_hardware_interfaces-a20c517278cfb50f51e707f98061e1f38638ada5.tar.gz android_hardware_interfaces-a20c517278cfb50f51e707f98061e1f38638ada5.tar.bz2 android_hardware_interfaces-a20c517278cfb50f51e707f98061e1f38638ada5.zip |
Merge "memtrack: eliminate dependency on surfaceflinger in VTS test"
Diffstat (limited to 'memtrack')
-rw-r--r-- | memtrack/1.0/vts/functional/VtsHalMemtrackV1_0TargetTest.cpp | 57 |
1 files changed, 12 insertions, 45 deletions
diff --git a/memtrack/1.0/vts/functional/VtsHalMemtrackV1_0TargetTest.cpp b/memtrack/1.0/vts/functional/VtsHalMemtrackV1_0TargetTest.cpp index e3fb94110..a8d8aea1e 100644 --- a/memtrack/1.0/vts/functional/VtsHalMemtrackV1_0TargetTest.cpp +++ b/memtrack/1.0/vts/functional/VtsHalMemtrackV1_0TargetTest.cpp @@ -16,6 +16,8 @@ #define LOG_TAG "memtrack_hidl_hal_test" #include <android-base/logging.h> +#include <android-base/unique_fd.h> + #include <android/hardware/memtrack/1.0/IMemtrack.h> #include <VtsHalHidlTargetTestBase.h> @@ -31,6 +33,7 @@ using ::android::hardware::memtrack::V1_0::MemtrackStatus; using ::android::hardware::hidl_vec; using ::android::hardware::Return; using ::android::sp; +using ::android::base::unique_fd; using std::vector; using std::count_if; @@ -66,42 +69,6 @@ bool validStatus(MemtrackStatus s) { return std::find(statusVec.begin(), statusVec.end(), s) != statusVec.end(); } -/* Returns a pid found in /proc for which the string read from - * /proc/[pid]/cmdline matches cmd, or -1 if no such pid exists. - */ -pid_t getPidFromCmd(const char cmd[], uint32_t len) { - const char procs[] = "/proc/"; - DIR *dir = opendir(procs); - if (!dir) { - return -1; - } - - struct dirent *proc; - while ((proc = readdir(dir)) != NULL) { - if (!isdigit(proc->d_name[0])) { - continue; - } - char line[len]; - char fname[PATH_MAX]; - snprintf(fname, PATH_MAX, "/proc/%s/cmdline", proc->d_name); - - FILE *file = fopen(fname, "r"); - if (!file) { - continue; - } - char *str = fgets(line, len, file); - fclose(file); - if (!str || strcmp(str, cmd)) { - continue; - } else { - closedir(dir); - return atoi(proc->d_name); - } - } - closedir(dir); - return -1; -} - auto generate_cb(MemtrackStatus *s, hidl_vec<MemtrackRecord> *v) { return [=](MemtrackStatus status, hidl_vec<MemtrackRecord> vec) { *s = status; @@ -135,15 +102,15 @@ TEST_F(MemtrackHidlTest, BadTypeTest) { ASSERT_TRUE(validStatus(s)); } -/* Call memtrack on the surfaceflinger process and check that the results are - * reasonable for all memory types, including valid flag combinations for - * every MemtrackRecord returned. +/* Call memtrack on this process and check that the results are reasonable + * for all memory types, including valid flag combinations for every + * MemtrackRecord returned. */ -TEST_F(MemtrackHidlTest, SurfaceflingerTest) { - const char cmd[] = "/system/bin/surfaceflinger"; - const uint32_t len = sizeof(cmd); - pid_t pid = getPidFromCmd(cmd, len); - ASSERT_LE(0, pid) << "Surfaceflinger process not found"; +TEST_F(MemtrackHidlTest, GetMemoryTest) { + /* Opening this device causes the kernel to provide memtrack with memory + * info for this process. + */ + unique_fd fd(open("/dev/kgsl-3d0", O_RDWR)); MemtrackStatus s; hidl_vec<MemtrackRecord> v; @@ -152,7 +119,7 @@ TEST_F(MemtrackHidlTest, SurfaceflingerTest) { for (uint32_t i = 0; i < static_cast<uint32_t>(MemtrackType::NUM_TYPES); i++) { Return<void> ret = - memtrack->getMemory(pid, static_cast<MemtrackType>(i), cb); + memtrack->getMemory(getpid(), static_cast<MemtrackType>(i), cb); ASSERT_TRUE(ret.isOk()); switch (s) { |