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

Commit 6429f067 authored by Iris Chang's avatar Iris Chang
Browse files

VTS: fix RadioHidlTest.getAvailableNetworks issue

Analysis: VtsHalRadioV1_0Target's timeout is too short for
getAvailableNetworks, because this request duration depends on NW
environment or frequency.

Suggested solution: Add a timeout parameter to wait() and default
timeout value is 5 minutes in order to avoid timeout fail due to NW
environment.

Bug: 68834032
Test: getAvailableNetworks can be passed after we apply this patch and
      test result for all other telephony 1.0 and 1.1 test cases are not
      changed.
Change-Id: Iaae71e0abacd28275d86a19264813ff209ddb79c
parent 55e77745
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -142,7 +142,7 @@ TEST_F(RadioHidlTest, getAvailableNetworks) {
    int serial = GetRandomSerialNumber();

    radio->getAvailableNetworks(serial);
    EXPECT_EQ(std::cv_status::no_timeout, wait());
    EXPECT_EQ(std::cv_status::no_timeout, wait(300));
    EXPECT_EQ(serial, radioRsp->rspInfo.serial);
    ASSERT_TRUE(radioRsp->rspInfo.type == RadioResponseType::SOLICITED ||
                radioRsp->rspInfo.type == RadioResponseType::SOLICITED_ACK_EXP);
+2 −2
Original line number Diff line number Diff line
@@ -51,13 +51,13 @@ void RadioHidlTest::notify() {
    cv.notify_one();
}

std::cv_status RadioHidlTest::wait() {
std::cv_status RadioHidlTest::wait(int sec) {
    std::unique_lock<std::mutex> lock(mtx);

    std::cv_status status = std::cv_status::no_timeout;
    auto now = std::chrono::system_clock::now();
    while (count == 0) {
        status = cv.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD));
        status = cv.wait_until(lock, now + std::chrono::seconds(sec));
        if (status == std::cv_status::timeout) {
            return status;
        }
+2 −2
Original line number Diff line number Diff line
@@ -527,7 +527,7 @@ class RadioHidlTest : public ::testing::VtsHalHidlTargetTestBase {
    void notify();

    /* Test code calls this function to wait for response */
    std::cv_status wait();
    std::cv_status wait(int sec = TIMEOUT_PERIOD);

    /* Used for checking General Errors */
    bool CheckGeneralError();
+2 −2
Original line number Diff line number Diff line
@@ -52,13 +52,13 @@ void RadioHidlTest_v1_1::notify() {
    cv.notify_one();
}

std::cv_status RadioHidlTest_v1_1::wait() {
std::cv_status RadioHidlTest_v1_1::wait(int sec) {
    std::unique_lock<std::mutex> lock(mtx);

    std::cv_status status = std::cv_status::no_timeout;
    auto now = std::chrono::system_clock::now();
    while (count == 0) {
        status = cv.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD));
        status = cv.wait_until(lock, now + std::chrono::seconds(sec));
        if (status == std::cv_status::timeout) {
            return status;
        }
+2 −2
Original line number Diff line number Diff line
@@ -550,7 +550,7 @@ class RadioHidlTest_v1_1 : public ::testing::VtsHalHidlTargetTestBase {
    void notify();

    /* Test code calls this function to wait for response */
    std::cv_status wait();
    std::cv_status wait(int sec = TIMEOUT_PERIOD);

    /* Used for checking General Errors */
    bool CheckGeneralError();