From cabe101cd2dc945b6b4ef4295f4fa650077d0c62 Mon Sep 17 00:00:00 2001 From: sqian Date: Wed, 6 Jun 2018 20:55:15 -0700 Subject: [PATCH] Handle radio API in low version VTS for high version service There are some request/response pair that could be replaced in higher-version hal. Radio service need to handle these request/response pair specific to version number. For example, e.g. getVoiceRegistrationStateResponse_1_2 replaces getVoiceRegistrationStateResponse for getVoiceRegistrationState in 1.2 radio service. We need to add util and update version number of IRadio service to check the version for testing the correct behavior. Bug: 109839239 Test: run vts Change-Id: I291690e77ea0e6e37fe75219e550f79fa44fb840 --- radio/1.0/vts/functional/Android.bp | 6 +++++ .../vts/functional/radio_hidl_hal_misc.cpp | 18 +++++++++------ .../vts/functional/radio_hidl_hal_test.cpp | 4 ++++ .../functional/radio_hidl_hal_utils_v1_0.h | 4 ++++ radio/1.0/vts/functional/vts_test_util.cpp | 18 +++++++++++++++ radio/1.0/vts/functional/vts_test_util.h | 23 +++++++++++++++++++ radio/1.1/vts/functional/Android.bp | 1 + .../vts/functional/radio_hidl_hal_test.cpp | 4 ++++ .../functional/radio_hidl_hal_utils_v1_1.h | 3 +++ .../vts/functional/radio_hidl_hal_test.cpp | 4 ++++ .../functional/radio_hidl_hal_utils_v1_2.h | 3 +++ radio/config/1.0/vts/functional/Android.bp | 3 +++ 12 files changed, 84 insertions(+), 7 deletions(-) diff --git a/radio/1.0/vts/functional/Android.bp b/radio/1.0/vts/functional/Android.bp index afbb1c4b18..b959670017 100644 --- a/radio/1.0/vts/functional/Android.bp +++ b/radio/1.0/vts/functional/Android.bp @@ -31,6 +31,8 @@ cc_test { "VtsHalRadioV1_0TargetTest.cpp", "vts_test_util.cpp"], static_libs: [ + "android.hardware.radio@1.2", + "android.hardware.radio@1.1", "android.hardware.radio@1.0", ], } @@ -44,6 +46,8 @@ cc_test { "VtsHalSapV1_0TargetTest.cpp", "vts_test_util.cpp"], static_libs: [ + "android.hardware.radio@1.2", + "android.hardware.radio@1.1", "android.hardware.radio@1.0", ], } @@ -55,6 +59,8 @@ cc_library_static { "vts_test_util.cpp" ], shared_libs: [ + "android.hardware.radio@1.2", + "android.hardware.radio@1.1", "android.hardware.radio@1.0", ], } diff --git a/radio/1.0/vts/functional/radio_hidl_hal_misc.cpp b/radio/1.0/vts/functional/radio_hidl_hal_misc.cpp index bc03cf192d..5a5813d014 100644 --- a/radio/1.0/vts/functional/radio_hidl_hal_misc.cpp +++ b/radio/1.0/vts/functional/radio_hidl_hal_misc.cpp @@ -36,15 +36,19 @@ TEST_F(RadioHidlTest, getSignalStrength) { * Test IRadio.getVoiceRegistrationState() for the response returned. */ TEST_F(RadioHidlTest, getVoiceRegistrationState) { - serial = GetRandomSerialNumber(); + // The IRadio/IRadioResponse pair of this function is upgraded in 1.2. + // For radio version < 1.2, skip to test this function. + if (versionIRadio < v1_2) { + serial = GetRandomSerialNumber(); - radio->getVoiceRegistrationState(serial); - EXPECT_EQ(std::cv_status::no_timeout, wait()); - EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); - EXPECT_EQ(serial, radioRsp->rspInfo.serial); + radio->getVoiceRegistrationState(serial); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); + EXPECT_EQ(serial, radioRsp->rspInfo.serial); - if (cardStatus.cardState == CardState::ABSENT) { - EXPECT_EQ(RadioError::NONE, radioRsp->rspInfo.error); + if (cardStatus.cardState == CardState::ABSENT) { + EXPECT_EQ(RadioError::NONE, radioRsp->rspInfo.error); + } } } diff --git a/radio/1.0/vts/functional/radio_hidl_hal_test.cpp b/radio/1.0/vts/functional/radio_hidl_hal_test.cpp index 96719d6d8d..fec66ca801 100644 --- a/radio/1.0/vts/functional/radio_hidl_hal_test.cpp +++ b/radio/1.0/vts/functional/radio_hidl_hal_test.cpp @@ -25,6 +25,10 @@ void RadioHidlTest::SetUp() { RadioHidlEnvironment::Instance()->getServiceName( hidl_string(RADIO_SERVICE_NAME))); } + + versionIRadio = getIRadioVersion(radio); + ASSERT_FALSE(unknown == versionIRadio); + ASSERT_NE(nullptr, radio.get()); radioRsp = new (std::nothrow) RadioResponse(*this); diff --git a/radio/1.0/vts/functional/radio_hidl_hal_utils_v1_0.h b/radio/1.0/vts/functional/radio_hidl_hal_utils_v1_0.h index f5ce072e47..edbeb7a39f 100644 --- a/radio/1.0/vts/functional/radio_hidl_hal_utils_v1_0.h +++ b/radio/1.0/vts/functional/radio_hidl_hal_utils_v1_0.h @@ -33,6 +33,7 @@ using namespace ::android::hardware::radio::V1_0; using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; +using ::android::hardware::hidl_version; using ::android::hardware::Return; using ::android::hardware::Void; using ::android::sp; @@ -536,6 +537,9 @@ class RadioHidlTest : public ::testing::VtsHalHidlTargetTestBase { /* Serial number for radio request */ int serial; + /* Version of radio service */ + hidl_version versionIRadio{0, 0}; + /* Update Sim Card Status */ void updateSimCardStatus(); diff --git a/radio/1.0/vts/functional/vts_test_util.cpp b/radio/1.0/vts/functional/vts_test_util.cpp index 7d15f35b2f..20ec99e248 100644 --- a/radio/1.0/vts/functional/vts_test_util.cpp +++ b/radio/1.0/vts/functional/vts_test_util.cpp @@ -54,3 +54,21 @@ int GetRandomSerialNumber() { } return testing::AssertionFailure() << "SapError:" + toString(err) + " is returned"; } + +hidl_version getIRadioVersion(sp<::android::hardware::radio::V1_0::IRadio> radio) { + if (::android::hardware::radio::V1_2::IRadio::castFrom(radio).withDefault(nullptr) != nullptr) { + ALOGI("Radio service version: 1.2"); + return v1_2; + } else if (::android::hardware::radio::V1_1::IRadio::castFrom(radio).withDefault(nullptr) != + nullptr) { + ALOGI("Radio service version: 1.1"); + return v1_1; + } else if (::android::hardware::radio::V1_0::IRadio::castFrom(radio).withDefault(nullptr) != + nullptr) { + ALOGI("Radio service version: 1.0"); + return v1_0; + } else { + ALOGI("Radio service version: unknown"); + return unknown; + } +} \ No newline at end of file diff --git a/radio/1.0/vts/functional/vts_test_util.h b/radio/1.0/vts/functional/vts_test_util.h index 826f0deae8..36ca18fcad 100644 --- a/radio/1.0/vts/functional/vts_test_util.h +++ b/radio/1.0/vts/functional/vts_test_util.h @@ -14,12 +14,20 @@ * limitations under the License. */ +#ifndef VTS_TEST_UTIL_H +#define VTS_TEST_UTIL_H 1 + #include #include +#include #include +#include +#include +using ::android::sp; +using ::android::hardware::hidl_version; using ::android::hardware::radio::V1_0::RadioError; using ::android::hardware::radio::V1_0::SapResultCode; using namespace std; @@ -32,6 +40,14 @@ enum CheckFlag { CHECK_SAP_ERROR = 4, }; +/* + * Radio hidl version parameters. + */ +const hidl_version v1_0(1, 0); +const hidl_version v1_1(1, 1); +const hidl_version v1_2(1, 2); +const hidl_version unknown(0, 0); + /* * Generate random serial number for radio test */ @@ -48,3 +64,10 @@ int GetRandomSerialNumber(); * vendor/devices implementations. */ ::testing::AssertionResult CheckAnyOfErrors(SapResultCode err, std::vector errors); + +/* + * Get the radio service version. + */ +hidl_version getIRadioVersion(sp<::android::hardware::radio::V1_0::IRadio> radio); + +#endif /*VTS_TEST_UTIL_H*/ \ No newline at end of file diff --git a/radio/1.1/vts/functional/Android.bp b/radio/1.1/vts/functional/Android.bp index e7195ee7da..9d35796589 100644 --- a/radio/1.1/vts/functional/Android.bp +++ b/radio/1.1/vts/functional/Android.bp @@ -24,6 +24,7 @@ cc_test { "VtsHalRadioV1_1TargetTest.cpp"], static_libs: [ "RadioVtsTestUtilBase", + "android.hardware.radio@1.2", "android.hardware.radio@1.1", "android.hardware.radio@1.0", ], diff --git a/radio/1.1/vts/functional/radio_hidl_hal_test.cpp b/radio/1.1/vts/functional/radio_hidl_hal_test.cpp index 2f657b4e34..cc6b0e55c7 100644 --- a/radio/1.1/vts/functional/radio_hidl_hal_test.cpp +++ b/radio/1.1/vts/functional/radio_hidl_hal_test.cpp @@ -30,6 +30,10 @@ void RadioHidlTest_v1_1::SetUp() { ->getServiceName<::android::hardware::radio::V1_1::IRadio>( hidl_string(RADIO_SERVICE_NAME))); } + + versionIRadio = getIRadioVersion(radio_v1_1); + ASSERT_FALSE(unknown == versionIRadio); + ASSERT_NE(nullptr, radio_v1_1.get()); radioRsp_v1_1 = new (std::nothrow) RadioResponse_v1_1(*this); diff --git a/radio/1.1/vts/functional/radio_hidl_hal_utils_v1_1.h b/radio/1.1/vts/functional/radio_hidl_hal_utils_v1_1.h index 925f4fc821..6125442a05 100644 --- a/radio/1.1/vts/functional/radio_hidl_hal_utils_v1_1.h +++ b/radio/1.1/vts/functional/radio_hidl_hal_utils_v1_1.h @@ -561,6 +561,9 @@ class RadioHidlTest_v1_1 : public ::testing::VtsHalHidlTargetTestBase { /* Serial number for radio request */ int serial; + /* Version of radio service */ + hidl_version versionIRadio{0, 0}; + /* Update Sim Card Status */ void updateSimCardStatus(); diff --git a/radio/1.2/vts/functional/radio_hidl_hal_test.cpp b/radio/1.2/vts/functional/radio_hidl_hal_test.cpp index b34f138bbd..7a34d11dbf 100644 --- a/radio/1.2/vts/functional/radio_hidl_hal_test.cpp +++ b/radio/1.2/vts/functional/radio_hidl_hal_test.cpp @@ -30,6 +30,10 @@ void RadioHidlTest_v1_2::SetUp() { ->getServiceName<::android::hardware::radio::V1_2::IRadio>( hidl_string(RADIO_SERVICE_NAME))); } + + versionIRadio = getIRadioVersion(radio_v1_2); + ASSERT_FALSE(unknown == versionIRadio); + ASSERT_NE(nullptr, radio_v1_2.get()); radioRsp_v1_2 = new (std::nothrow) RadioResponse_v1_2(*this); diff --git a/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h b/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h index 47122023a8..06be67c9bb 100644 --- a/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h +++ b/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h @@ -616,6 +616,9 @@ class RadioHidlTest_v1_2 : public ::testing::VtsHalHidlTargetTestBase { /* Serial number for radio request */ int serial; + /* Version of radio service */ + hidl_version versionIRadio{0, 0}; + /* Update Sim Card Status */ void updateSimCardStatus(); diff --git a/radio/config/1.0/vts/functional/Android.bp b/radio/config/1.0/vts/functional/Android.bp index aa8266ea3a..a1243a659a 100644 --- a/radio/config/1.0/vts/functional/Android.bp +++ b/radio/config/1.0/vts/functional/Android.bp @@ -27,6 +27,9 @@ cc_test { static_libs: [ "RadioVtsTestUtilBase", "android.hardware.radio.config@1.0", + "android.hardware.radio@1.2", + "android.hardware.radio@1.1", + "android.hardware.radio@1.0", ], header_libs: ["radio.util.header@1.0"], }