From ee8e17f9a76701d4f99386c12ba0e5caf5b7ab0b Mon Sep 17 00:00:00 2001 From: Luca Stefani Date: Tue, 13 Apr 2021 19:48:50 +0200 Subject: [PATCH] radio: Add VTS test for OperatorInfo.operatorNumeric * QCOM likes to not follow the HAL definition by appending extra data with a "+" Test: m Change-Id: I40b3268a7de7a5e60ba0633e387d12a645895109 --- radio/1.6/vts/functional/Android.bp | 1 + .../vts/functional/radio_hidl_hal_misc.cpp | 56 +++++++++++++++++++ .../functional/radio_hidl_hal_utils_v1_6.h | 1 + radio/1.6/vts/functional/radio_response.cpp | 7 ++- 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 radio/1.6/vts/functional/radio_hidl_hal_misc.cpp diff --git a/radio/1.6/vts/functional/Android.bp b/radio/1.6/vts/functional/Android.bp index 65b0dd03ba..2bc6af31f6 100644 --- a/radio/1.6/vts/functional/Android.bp +++ b/radio/1.6/vts/functional/Android.bp @@ -28,6 +28,7 @@ cc_test { defaults: ["VtsHalTargetTestDefaults"], srcs: [ "radio_hidl_hal_api.cpp", + "radio_hidl_hal_misc.cpp", "radio_hidl_hal_test.cpp", "radio_response.cpp", "radio_indication.cpp", diff --git a/radio/1.6/vts/functional/radio_hidl_hal_misc.cpp b/radio/1.6/vts/functional/radio_hidl_hal_misc.cpp new file mode 100644 index 0000000000..422244178c --- /dev/null +++ b/radio/1.6/vts/functional/radio_hidl_hal_misc.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include +#include + +/* + * Test IRadio.getAvailableNetworks() for the response returned. + */ +TEST_P(RadioHidlTest_v1_6, getAvailableNetworks) { + LOG(DEBUG) << "getAvailableNetworks"; + serial = GetRandomSerialNumber(); + + radio_v1_6->getAvailableNetworks(serial); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(serial, radioRsp_v1_6->rspInfo_v1_0.serial); + ASSERT_TRUE(radioRsp_v1_6->rspInfo_v1_0.type == RadioResponseType::SOLICITED || + radioRsp_v1_6->rspInfo_v1_0.type == RadioResponseType::SOLICITED_ACK_EXP); + + if (cardStatus.base.base.base.cardState == CardState::ABSENT) { + ASSERT_TRUE(CheckAnyOfErrors( + radioRsp_v1_6->rspInfo_v1_0.error, + {::android::hardware::radio::V1_0::RadioError::NONE, + ::android::hardware::radio::V1_0::RadioError::CANCELLED, + ::android::hardware::radio::V1_0::RadioError::DEVICE_IN_USE, + ::android::hardware::radio::V1_0::RadioError::MODEM_ERR, + ::android::hardware::radio::V1_0::RadioError::OPERATION_NOT_ALLOWED}, + CHECK_GENERAL_ERROR)); + } else if (radioRsp_v1_6->rspInfo_v1_0.error == + ::android::hardware::radio::V1_0::RadioError::NONE) { + static const std::regex kOperatorNumericRe("^[0-9]{5,6}$"); + for (OperatorInfo info : radioRsp_v1_6->networkInfos) { + if (info.operatorNumeric != nullptr) { + ASSERT_TRUE( + std::regex_match(std::string(info.operatorNumeric), kOperatorNumericRe)); + } + } + } + + LOG(DEBUG) << "getAvailableNetworks finished"; +} diff --git a/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h b/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h index 4fc17e54d0..3dbf4406f9 100644 --- a/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h +++ b/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h @@ -62,6 +62,7 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon public: hidl_vec radioBandModes; + hidl_vec networkInfos; ::android::hardware::radio::V1_0::RadioResponseInfo rspInfo_v1_0; ::android::hardware::radio::V1_6::RadioResponseInfo rspInfo; diff --git a/radio/1.6/vts/functional/radio_response.cpp b/radio/1.6/vts/functional/radio_response.cpp index 2b6d1bb57e..db9cfe75a8 100644 --- a/radio/1.6/vts/functional/radio_response.cpp +++ b/radio/1.6/vts/functional/radio_response.cpp @@ -274,8 +274,11 @@ Return RadioResponse_v1_6::setNetworkSelectionModeManualResponse( } Return RadioResponse_v1_6::getAvailableNetworksResponse( - const ::android::hardware::radio::V1_0::RadioResponseInfo& /*info*/, - const ::android::hardware::hidl_vec& /*networkInfos*/) { + const ::android::hardware::radio::V1_0::RadioResponseInfo& info, + const ::android::hardware::hidl_vec& networkInfos) { + rspInfo_v1_0 = info; + this->networkInfos = networkInfos; + parent_v1_6.notify(info.serial); return Void(); }