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

Commit 0be84989 authored by Michele Berionne's avatar Michele Berionne Committed by Gerrit Code Review
Browse files

Merge "VTS test cases for IRadio 1.4 API for carrier restrictions"

parents 60bc204c a31d0008
Loading
Loading
Loading
Loading
+113 −0
Original line number Diff line number Diff line
@@ -563,3 +563,116 @@ TEST_F(RadioHidlTest_v1_4, setupDataCall_1_4) {
                                      RadioError::OP_NOT_ALLOWED_BEFORE_REG_TO_NW}));
    }
}

/*
 * Test IRadio.getAllowedCarriers_1_4() for the response returned.
 */
TEST_F(RadioHidlTest_v1_4, getAllowedCarriers_1_4) {
    serial = GetRandomSerialNumber();

    radio_v1_4->getAllowedCarriers_1_4(serial);
    EXPECT_EQ(std::cv_status::no_timeout, wait());
    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);

    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
                                 {RadioError::NONE, RadioError::REQUEST_NOT_SUPPORTED}));
}

/**
 * Test IRadio.setAllowedCarriers_1_4() for the response returned.
 */
TEST_F(RadioHidlTest_v1_4, setAllowedCarriers_1_4) {
    serial = GetRandomSerialNumber();
    CarrierRestrictionsWithPriority carrierRestrictions;
    memset(&carrierRestrictions, 0, sizeof(carrierRestrictions));
    carrierRestrictions.allowedCarriers.resize(1);
    carrierRestrictions.excludedCarriers.resize(0);
    carrierRestrictions.allowedCarriers[0].mcc = hidl_string("123");
    carrierRestrictions.allowedCarriers[0].mnc = hidl_string("456");
    carrierRestrictions.allowedCarriers[0].matchType = CarrierMatchType::ALL;
    carrierRestrictions.allowedCarriers[0].matchData = hidl_string();
    carrierRestrictions.allowedCarriersPrioritized = true;
    SimLockMultiSimPolicy multisimPolicy = SimLockMultiSimPolicy::NO_MULTISIM_POLICY;

    radio_v1_4->setAllowedCarriers_1_4(serial, carrierRestrictions, multisimPolicy);
    EXPECT_EQ(std::cv_status::no_timeout, wait());
    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
    EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);

    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error,
                                 {RadioError::NONE, RadioError::REQUEST_NOT_SUPPORTED}));

    if (radioRsp_v1_4->rspInfo.error == RadioError::NONE) {
        /* Verify the update of the SIM status. This might need some time */
        if (cardStatus.base.base.cardState != CardState::ABSENT) {
            updateSimCardStatus();
            auto startTime = std::chrono::system_clock::now();
            while (cardStatus.base.base.cardState != CardState::RESTRICTED &&
                   std::chrono::duration_cast<chrono::seconds>(std::chrono::system_clock::now() -
                                                               startTime)
                                   .count() < 10) {
                /* Set 2 seconds as interval to check card status */
                sleep(2);
                updateSimCardStatus();
            }
            EXPECT_EQ(CardState::RESTRICTED, cardStatus.base.base.cardState);
        }

        /* Verify that configuration was set correctly, retrieving it from the modem */
        serial = GetRandomSerialNumber();

        radio_v1_4->getAllowedCarriers_1_4(serial);
        EXPECT_EQ(std::cv_status::no_timeout, wait());
        EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
        EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);
        EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error);

        EXPECT_EQ(1, radioRsp_v1_4->carrierRestrictionsResp.allowedCarriers.size());
        EXPECT_EQ(0, radioRsp_v1_4->carrierRestrictionsResp.excludedCarriers.size());
        ASSERT_TRUE(hidl_string("123") ==
                    radioRsp_v1_4->carrierRestrictionsResp.allowedCarriers[0].mcc);
        ASSERT_TRUE(hidl_string("456") ==
                    radioRsp_v1_4->carrierRestrictionsResp.allowedCarriers[0].mnc);
        EXPECT_EQ(CarrierMatchType::ALL,
                  radioRsp_v1_4->carrierRestrictionsResp.allowedCarriers[0].matchType);
        ASSERT_TRUE(radioRsp_v1_4->carrierRestrictionsResp.allowedCarriersPrioritized);
        EXPECT_EQ(SimLockMultiSimPolicy::NO_MULTISIM_POLICY, radioRsp_v1_4->multiSimPolicyResp);

        sleep(10);

        /**
         * Another test case of the API to cover to allow carrier.
         * If the API is supported, this is also used to reset to no carrier restriction
         * status for cardStatus.
         */
        memset(&carrierRestrictions, 0, sizeof(carrierRestrictions));
        carrierRestrictions.allowedCarriers.resize(0);
        carrierRestrictions.excludedCarriers.resize(0);
        carrierRestrictions.allowedCarriersPrioritized = false;

        serial = GetRandomSerialNumber();
        radio_v1_4->setAllowedCarriers_1_4(serial, carrierRestrictions, multisimPolicy);
        EXPECT_EQ(std::cv_status::no_timeout, wait());
        EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type);
        EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial);

        EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error);

        if (cardStatus.base.base.cardState != CardState::ABSENT) {
            /* Resetting back to no carrier restriction needs some time */
            updateSimCardStatus();
            auto startTime = std::chrono::system_clock::now();
            while (cardStatus.base.base.cardState == CardState::RESTRICTED &&
                   std::chrono::duration_cast<chrono::seconds>(std::chrono::system_clock::now() -
                                                               startTime)
                                   .count() < 10) {
                /* Set 2 seconds as interval to check card status */
                sleep(2);
                updateSimCardStatus();
            }
            EXPECT_NE(CardState::RESTRICTED, cardStatus.base.base.cardState);
            sleep(10);
        }
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -67,6 +67,10 @@ class RadioResponse_v1_4 : public ::android::hardware::radio::V1_4::IRadioRespon
    // Data
    ::android::hardware::radio::V1_4::DataRegStateResult dataRegResp;

    // SimLock status
    ::android::hardware::radio::V1_4::CarrierRestrictionsWithPriority carrierRestrictionsResp;
    ::android::hardware::radio::V1_4::SimLockMultiSimPolicy multiSimPolicyResp;

    RadioResponse_v1_4(RadioHidlTest_v1_4& parent_v1_4);
    virtual ~RadioResponse_v1_4() = default;

+9 −3
Original line number Diff line number Diff line
@@ -862,12 +862,18 @@ Return<void> RadioResponse_v1_4::setupDataCallResponse_1_4(
    return Void();
}

Return<void> RadioResponse_v1_4::setAllowedCarriersResponse_1_4(const RadioResponseInfo& /*info*/) {
Return<void> RadioResponse_v1_4::setAllowedCarriersResponse_1_4(const RadioResponseInfo& info) {
    rspInfo = info;
    parent_v1_4.notify(info.serial);
    return Void();
}

Return<void> RadioResponse_v1_4::getAllowedCarriersResponse_1_4(
        const RadioResponseInfo& /*info*/, const CarrierRestrictionsWithPriority& /*carriers*/,
        SimLockMultiSimPolicy /*multiSimPolicy*/) {
        const RadioResponseInfo& info, const CarrierRestrictionsWithPriority& carriers,
        SimLockMultiSimPolicy multiSimPolicy) {
    rspInfo = info;
    carrierRestrictionsResp = carriers;
    multiSimPolicyResp = multiSimPolicy;
    parent_v1_4.notify(info.serial);
    return Void();
}