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

Commit 6f67c56a authored by Badhri Jagan Sridharan's avatar Badhri Jagan Sridharan Committed by Ricky Niu
Browse files

Add Vts test for limitPowerTransfer interface

Bug: 199357330
Change-Id: I018e3ebf1b8a6d7e5b1ad2592695ab2541439a59
parent 623f1338
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
@@ -129,6 +129,16 @@ class UsbAidlTest : public testing::TestWithParam<std::string> {
      parent_.notify();
      return ScopedAStatus::ok();
    }

    // Callback method for the status of limitPowerTransfer operation
    ScopedAStatus notifyLimitPowerTransferStatus(const string& /*portName*/, bool /*limit*/,
                                                 Status /*retval*/, int64_t transactionId) override {
      parent_.last_transactionId = transactionId;
      parent_.usb_last_cookie = cookie;
      parent_.limit_power_transfer_done = true;
      parent_.notify();
      return ScopedAStatus::ok();
    }
  };

  virtual void SetUp() override {
@@ -196,6 +206,9 @@ class UsbAidlTest : public testing::TestWithParam<std::string> {
  // Flag to indicate the invocation of notifyEnableUsbDataStatus callback.
  bool enable_usb_data_done;

  // Flag to indicate the invocation of notifyLimitPowerTransferStatus callback.
  bool limit_power_transfer_done;

  // Stores the cookie of the last invoked usb callback object.
  int usb_last_cookie;

@@ -410,6 +423,42 @@ TEST_P(UsbAidlTest, enableUsbData) {
  ALOGI("UsbAidlTest enableUsbData end");
}

/*
 * Test enabling Usb data of the port.
 * Test case queries the usb ports present in device.
 * If there is at least one usb port, relaxing limit power transfer
 * is attempted for the port.
 * The callback parameters are checked to see if transaction id
 * matches.
 */
TEST_P(UsbAidlTest, limitPowerTransfer) {
  ALOGI("UsbAidlTest limitPowerTransfer start");
  int64_t transactionId = rand() % 10000;
  const auto& ret = usb->queryPortStatus(transactionId);
  ASSERT_TRUE(ret.isOk());
  EXPECT_EQ(std::cv_status::no_timeout, wait());
  EXPECT_EQ(2, usb_last_cookie);
  EXPECT_EQ(transactionId, last_transactionId);

  if (!usb_last_port_status.portName.empty()) {
    ALOGI("portname:%s", usb_last_port_status.portName.c_str());
    limit_power_transfer_done = false;
    transactionId = rand() % 10000;
    const auto& ret = usb->limitPowerTransfer(usb_last_port_status.portName, false, transactionId);
    ASSERT_TRUE(ret.isOk());

    std::cv_status waitStatus = wait();
    while (waitStatus == std::cv_status::no_timeout &&
           limit_power_transfer_done == false)
      waitStatus = wait();

    EXPECT_EQ(std::cv_status::no_timeout, waitStatus);
    EXPECT_EQ(2, usb_last_cookie);
    EXPECT_EQ(transactionId, last_transactionId);
  }
  ALOGI("UsbAidlTest limitPowerTransfer end");
}

GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(UsbAidlTest);
INSTANTIATE_TEST_SUITE_P(
        PerInstance, UsbAidlTest,