Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 990ec56c authored by Connor O'Brien's avatar Connor O'Brien
Browse files

Fix bugs in power HAL VTS test



Ensure CPU governor list is null-terminated; stop treating newline
char as a governor name; stop leaking file descriptors on failure.

Bug: 35753237
Test: Test runs and passes on marlin and bullhead
Change-Id: I8a6409a50e5daac36770dc577d0628fec8148847
Signed-off-by: default avatarConnor O'Brien <connoro@google.com>
parent 33df4dbe
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@

#include <cutils/properties.h>

#include <android-base/unique_fd.h>
#include <android/hardware/power/1.0/IPower.h>

#include <gtest/gtest.h>
@@ -33,6 +34,7 @@ using ::android::hardware::power::V1_0::Status;
using ::android::hardware::hidl_vec;
using ::android::hardware::Return;
using ::android::sp;
using ::android::base::unique_fd;

using std::vector;

@@ -69,8 +71,8 @@ TEST_F(PowerHidlTest, SetInteractive) {
TEST_F(PowerHidlTest, TryDifferentGovernors) {
  Return<void> ret;

  int fd1 = open(CPU_GOVERNOR_PATH, O_RDWR);
  int fd2 = open(AVAILABLE_GOVERNORS_PATH, O_RDONLY);
  unique_fd fd1(open(CPU_GOVERNOR_PATH, O_RDWR));
  unique_fd fd2(open(AVAILABLE_GOVERNORS_PATH, O_RDONLY));
  if (fd1 < 0 || fd2 < 0) {
    // Files don't exist, so skip the rest of the test case
    SUCCEED();
@@ -80,12 +82,13 @@ TEST_F(PowerHidlTest, TryDifferentGovernors) {
  ASSERT_LE(0, read(fd1, old_governor, 80));

  char governors[1024];
  ASSERT_LE(0, read(fd2, governors, 1024));
  close(fd2);
  unsigned len = read(fd2, governors, 1024);
  ASSERT_LE(0, len);
  governors[len] = '\0';

  char *saveptr;
  char *name = strtok_r(governors, " ", &saveptr);
  while (name && strlen(name) > 1) {
  char *name = strtok_r(governors, " \n", &saveptr);
  while (name) {
    ASSERT_LE(0, write(fd1, name, strlen(name)));
    ret = power->setInteractive(true);
    ASSERT_TRUE(ret.isOk());
@@ -99,11 +102,10 @@ TEST_F(PowerHidlTest, TryDifferentGovernors) {
    power->powerHint(PowerHint::LAUNCH, 1);
    power->powerHint(PowerHint::LAUNCH, 0);

    name = strtok_r(NULL, " ", &saveptr);
    name = strtok_r(NULL, " \n", &saveptr);
  }

  ASSERT_LE(0, write(fd1, old_governor, strlen(old_governor)));
  close(fd1);
}

// Sanity check Power::powerHint on good and bad inputs.