From 09f373d6c1cf02ab47d78dfd435e21582e1b702f Mon Sep 17 00:00:00 2001 From: Oleh Cherpak Date: Tue, 4 Feb 2020 15:15:35 +0200 Subject: [PATCH 1/5] vts: hostapd: Remove optional service registration Wifi VendorHAL is optional for Soft AP mode to function. Tests should be runnable even on devices without VendorHAL. Test: run vts -m VtsHalWifiHostapdV1_1Target Bug: 148907288 Bug: 158343986 Signed-off-by: Oleh Cherpak Change-Id: Id65d09d39d93e540a24e58fda233fd2faf8c3258 Merged-In: Id65d09d39d93e540a24e58fda233fd2faf8c3258 --- .../vts/functional/wifi_hidl_test_utils.cpp | 6 +++++- wifi/1.0/vts/functional/wifi_hidl_test_utils.h | 2 ++ .../vts/functional/hostapd_hidl_test_utils.cpp | 18 +++++++++++++----- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp index 3ff33a564b..5b11dd3fc4 100644 --- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp +++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp @@ -89,8 +89,12 @@ bool configureChipToSupportIfaceTypeInternal(const sp& wifi_chip, } } // namespace +sp getWifi(const std::string& instance_name) { + return IWifi::getService(instance_name); +} + sp getWifiChip(const std::string& instance_name) { - sp wifi = IWifi::getService(instance_name); + sp wifi = getWifi(instance_name); if (!wifi.get()) { return nullptr; } diff --git a/wifi/1.0/vts/functional/wifi_hidl_test_utils.h b/wifi/1.0/vts/functional/wifi_hidl_test_utils.h index d22ed77cd9..5c7863740d 100644 --- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.h +++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.h @@ -31,6 +31,8 @@ // Note: We only have a single instance of each of these objects currently. // These helper functions should be modified to return vectors if we support // multiple instances. +android::sp getWifi( + const std::string& instance_name); android::sp getWifiChip( const std::string& instance_name); android::sp getWifiApIface( diff --git a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.cpp b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.cpp index d4063fe258..3ddb2b31aa 100644 --- a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.cpp +++ b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.cpp @@ -47,16 +47,24 @@ namespace { // Helper function to initialize the driver and firmware to AP mode // using the vendor HAL HIDL interface. void initilializeDriverAndFirmware(const std::string& wifi_instance_name) { - sp wifi_chip = getWifiChip(wifi_instance_name); - ChipModeId mode_id; - EXPECT_TRUE(configureChipToSupportIfaceType( - wifi_chip, ::android::hardware::wifi::V1_0::IfaceType::AP, &mode_id)); + if (getWifi(wifi_instance_name) != nullptr) { + sp wifi_chip = getWifiChip(wifi_instance_name); + ChipModeId mode_id; + EXPECT_TRUE(configureChipToSupportIfaceType( + wifi_chip, ::android::hardware::wifi::V1_0::IfaceType::AP, &mode_id)); + } else { + LOG(WARNING) << __func__ << ": Vendor HAL not supported"; + } } // Helper function to deinitialize the driver and firmware // using the vendor HAL HIDL interface. void deInitilializeDriverAndFirmware(const std::string& wifi_instance_name) { - stopWifi(wifi_instance_name); + if (getWifi(wifi_instance_name) != nullptr) { + stopWifi(wifi_instance_name); + } else { + LOG(WARNING) << __func__ << ": Vendor HAL not supported"; + } } } // namespace From 31c434b96c94e086aa7b80c14da110309b496cbf Mon Sep 17 00:00:00 2001 From: Oleh Cherpak Date: Tue, 4 Feb 2020 15:36:50 +0200 Subject: [PATCH 2/5] vts: supplicant: Remove optional service registration Wifi VendorHAL is optional for STA mode to function. Tests should be runnable even on devices without VendorHAL. Bug: 148883970 Bug: 158343746 Test: run vts -m VtsHalWifiSupplicantV1_0Host Signed-off-by: Oleh Cherpak Change-Id: Ife6e09e41ccfd6c3ccbdc19394175d17986d310d Merged-In: Ife6e09e41ccfd6c3ccbdc19394175d17986d310d --- .../functional/supplicant_hidl_test_utils.cpp | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp index 38153238b8..addf066c15 100644 --- a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp +++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp @@ -58,11 +58,14 @@ void initilializeDriverAndFirmware(const std::string& wifi_instance_name) { if (wifi_instance_name == "") { return; } - - sp wifi_chip = getWifiChip(wifi_instance_name); - ChipModeId mode_id; - EXPECT_TRUE(configureChipToSupportIfaceType( - wifi_chip, ::android::hardware::wifi::V1_0::IfaceType::STA, &mode_id)); + if (getWifi(wifi_instance_name) != nullptr) { + sp wifi_chip = getWifiChip(wifi_instance_name); + ChipModeId mode_id; + EXPECT_TRUE(configureChipToSupportIfaceType( + wifi_chip, ::android::hardware::wifi::V1_0::IfaceType::STA, &mode_id)); + } else { + LOG(WARNING) << __func__ << ": Vendor HAL not supported"; + } } // Helper function to deinitialize the driver and firmware @@ -72,8 +75,11 @@ void deInitilializeDriverAndFirmware(const std::string& wifi_instance_name) { if (wifi_instance_name == "") { return; } - - stopWifi(wifi_instance_name); + if (getWifi(wifi_instance_name) != nullptr) { + stopWifi(wifi_instance_name); + } else { + LOG(WARNING) << __func__ << ": Vendor HAL not supported"; + } } // Helper function to find any iface of the desired type exposed. From cd4a39301474a9eee2c3e40f570b159541c5d17d Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Mon, 29 Jun 2020 10:22:43 -0700 Subject: [PATCH 3/5] Fix GTestResultParser compatibility Bug: 158643176 Test: adb shell /data/nativetest64/VtsHalBroadcastradioV2_0TargetTest/VtsHalBroadcastradioV2_0TargetTest Change-Id: Id0c936da397f7b06b2f274e036dc789cdcd506da --- .../functional/VtsHalBroadcastradioV2_0TargetTest.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp b/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp index d170a6d469..694d52a094 100644 --- a/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp +++ b/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp @@ -116,7 +116,10 @@ class BroadcastRadioHalTest : public ::testing::TestWithParam { }; static void printSkipped(std::string msg) { - std::cout << "[ SKIPPED ] " << msg << std::endl; + const auto testInfo = testing::UnitTest::GetInstance()->current_test_info(); + std::cout << "[ SKIPPED ] " << testInfo->test_case_name() << "." << testInfo->name() + << std::endl; + std::cout << msg << std::endl; } MATCHER_P(InfoHasId, id, @@ -428,8 +431,9 @@ TEST_P(BroadcastRadioHalTest, FmTune) { ProgramInfo infoCb = {}; EXPECT_TIMEOUT_CALL(*mCallback, onCurrentProgramInfoChanged_, InfoHasId(utils::make_identifier(IdentifierType::AMFM_FREQUENCY, freq))) - .Times(AnyNumber()) - .WillOnce(DoAll(SaveArg<0>(&infoCb), testing::Return(ByMove(Void())))); + .Times(AnyNumber()) + .WillOnce(DoAll(SaveArg<0>(&infoCb), testing::Return(ByMove(Void())))) + .WillRepeatedly(testing::InvokeWithoutArgs([] { return Void(); })); auto result = mSession->tune(sel); // expect a failure if it's not supported From c8143625bae1ba31161d8d5432ee94c344d4c74e Mon Sep 17 00:00:00 2001 From: Yu-Han Yang Date: Wed, 15 Jul 2020 10:19:03 -0700 Subject: [PATCH 4/5] Retrieve the last SvInfo list in TestGnssSvInfoFields Bug: 161313893 Test: atest VtsHalGnssV2_1TargetTest Change-Id: I687e5ff6edd1ef67dbfe046c401fd15b3da0c857 --- gnss/2.1/vts/functional/gnss_hal_test_cases.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gnss/2.1/vts/functional/gnss_hal_test_cases.cpp b/gnss/2.1/vts/functional/gnss_hal_test_cases.cpp index 33feb5e5f0..a3d2956199 100644 --- a/gnss/2.1/vts/functional/gnss_hal_test_cases.cpp +++ b/gnss/2.1/vts/functional/gnss_hal_test_cases.cpp @@ -247,8 +247,10 @@ TEST_P(GnssHalTest, TestGnssSvInfoFields) { ALOGD("Observed %d GnssSvStatus, while awaiting one location (%d received)", sv_info_list_cbq_size, location_called_count); - hidl_vec last_sv_info_list; - ASSERT_TRUE(gnss_cb_->sv_info_list_cbq_.retrieve(last_sv_info_list, 1)); + // Get the last sv_info_list + std::list> sv_info_vec_list; + gnss_cb_->sv_info_list_cbq_.retrieve(sv_info_vec_list, sv_info_list_cbq_size, 1); + hidl_vec last_sv_info_list = sv_info_vec_list.back(); bool nonZeroCn0Found = false; for (auto sv_info : last_sv_info_list) { @@ -673,4 +675,4 @@ TEST_P(GnssHalTest, TestGnssMeasurementCorrections) { iMeasurementCorrections->setCorrections_1_1(Utils::getMockMeasurementCorrections_1_1()); ASSERT_TRUE(result.isOk()); EXPECT_TRUE(result); -} \ No newline at end of file +} From de1d2b6cbeebb9c28d6288e1e358e645e9cee951 Mon Sep 17 00:00:00 2001 From: Amy Zhang Date: Wed, 15 Jul 2020 14:27:32 -0700 Subject: [PATCH 5/5] Fix bugs in the Tuner HAL 1.0 VTS The previous implementation did not check some of the Descrambler API test results to stop the test. And the test itself was also implemented in a wrong way. Test: atest VtsHalTvTunerV1_0TargetTest Bug: 150987138 Change-Id: Ie26db0ec1b231062d0314631eebec319382da1bc (cherry picked from commit 6d774c89a1112c36ad14c9c0b95ee8816cb176f2) --- .../1.0/vts/functional/DescramblerTests.cpp | 16 ++++++++-------- .../functional/VtsHalTvTunerV1_0TargetTest.cpp | 18 +++++++++--------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/tv/tuner/1.0/vts/functional/DescramblerTests.cpp b/tv/tuner/1.0/vts/functional/DescramblerTests.cpp index d7440bc135..2e27475e71 100644 --- a/tv/tuner/1.0/vts/functional/DescramblerTests.cpp +++ b/tv/tuner/1.0/vts/functional/DescramblerTests.cpp @@ -102,13 +102,13 @@ AssertionResult DescramblerTests::openDescrambler(uint32_t demuxId) { AssertionResult DescramblerTests::setKeyToken(TunerKeyToken token) { Result status; - if (mDescrambler) { + if (!mDescrambler) { ALOGW("[vts] Descrambler is not opened yet."); return failure(); } status = mDescrambler->setKeyToken(token); - if (status == Result::SUCCESS) { + if (status != Result::SUCCESS) { ALOGW("[vts] setKeyToken failed."); return failure(); } @@ -118,13 +118,13 @@ AssertionResult DescramblerTests::setKeyToken(TunerKeyToken token) { AssertionResult DescramblerTests::addPid(DemuxPid pid, sp optionalSourceFilter) { Result status; - if (mDescrambler) { + if (!mDescrambler) { ALOGW("[vts] Descrambler is not opened yet."); return failure(); } status = mDescrambler->addPid(pid, optionalSourceFilter); - if (status == Result::SUCCESS) { + if (status != Result::SUCCESS) { ALOGW("[vts] addPid failed."); return failure(); } @@ -134,13 +134,13 @@ AssertionResult DescramblerTests::addPid(DemuxPid pid, sp optionalSourc AssertionResult DescramblerTests::removePid(DemuxPid pid, sp optionalSourceFilter) { Result status; - if (mDescrambler) { + if (!mDescrambler) { ALOGW("[vts] Descrambler is not opened yet."); return failure(); } status = mDescrambler->removePid(pid, optionalSourceFilter); - if (status == Result::SUCCESS) { + if (status != Result::SUCCESS) { ALOGW("[vts] removePid failed."); return failure(); } @@ -150,14 +150,14 @@ AssertionResult DescramblerTests::removePid(DemuxPid pid, sp optionalSo AssertionResult DescramblerTests::closeDescrambler() { Result status; - if (mDescrambler) { + if (!mDescrambler) { ALOGW("[vts] Descrambler is not opened yet."); return failure(); } status = mDescrambler->close(); mDescrambler = nullptr; - if (status == Result::SUCCESS) { + if (status != Result::SUCCESS) { ALOGW("[vts] close Descrambler failed."); return failure(); } diff --git a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp index 6819659915..2be68b8fc0 100644 --- a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp +++ b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp @@ -292,18 +292,18 @@ void TunerDescramblerHidlTest::scrambledBroadcastTest(set m ASSERT_TRUE(mFilterTests.configFilter((*config).settings, filterId)); filterIds.insert(filterId); } - mDescramblerTests.openDescrambler(demuxId); + ASSERT_TRUE(mDescramblerTests.openDescrambler(demuxId)); TunerKeyToken token; ASSERT_TRUE(mDescramblerTests.getKeyToken(descConfig.casSystemId, descConfig.provisionStr, descConfig.hidlPvtData, token)); - mDescramblerTests.setKeyToken(token); + ASSERT_TRUE(mDescramblerTests.setKeyToken(token)); vector pids; DemuxPid pid; for (config = mediaFilterConfs.begin(); config != mediaFilterConfs.end(); config++) { ASSERT_TRUE(mDescramblerTests.getDemuxPidFromFilterSettings((*config).type, (*config).settings, pid)); pids.push_back(pid); - mDescramblerTests.addPid(pid, nullptr); + ASSERT_TRUE(mDescramblerTests.addPid(pid, nullptr)); } for (id = filterIds.begin(); id != filterIds.end(); id++) { ASSERT_TRUE(mFilterTests.startFilter(*id)); @@ -316,9 +316,9 @@ void TunerDescramblerHidlTest::scrambledBroadcastTest(set m ASSERT_TRUE(mFilterTests.stopFilter(*id)); } for (auto pid : pids) { - mDescramblerTests.removePid(pid, nullptr); + ASSERT_TRUE(mDescramblerTests.removePid(pid, nullptr)); } - mDescramblerTests.closeDescrambler(); + ASSERT_TRUE(mDescramblerTests.closeDescrambler()); for (id = filterIds.begin(); id != filterIds.end(); id++) { ASSERT_TRUE(mFilterTests.closeFilter(*id)); } @@ -410,9 +410,9 @@ TEST_P(TunerDemuxHidlTest, getAvSyncTime) { filterArray[TS_PCR0].bufferSize)); ASSERT_TRUE(mFilterTests.getNewlyOpenedFilterId(pcrFilterId)); ASSERT_TRUE(mFilterTests.configFilter(filterArray[TS_PCR0].settings, pcrFilterId)); - mDemuxTests.getAvSyncId(mediaFilter, avSyncHwId); + ASSERT_TRUE(mDemuxTests.getAvSyncId(mediaFilter, avSyncHwId)); ASSERT_TRUE(pcrFilterId == avSyncHwId); - mDemuxTests.getAvSyncTime(pcrFilterId); + ASSERT_TRUE(mDemuxTests.getAvSyncTime(pcrFilterId)); ASSERT_TRUE(mFilterTests.closeFilter(pcrFilterId)); ASSERT_TRUE(mFilterTests.closeFilter(mediaFilterId)); ASSERT_TRUE(mDemuxTests.closeDemux()); @@ -519,8 +519,8 @@ TEST_P(TunerDescramblerHidlTest, CreateDescrambler) { ASSERT_TRUE(mFrontendTests.setFrontendCallback()); ASSERT_TRUE(mDemuxTests.openDemux(demux, demuxId)); ASSERT_TRUE(mDemuxTests.setDemuxFrontendDataSource(feId)); - mDescramblerTests.openDescrambler(demuxId); - mDescramblerTests.closeDescrambler(); + ASSERT_TRUE(mDescramblerTests.openDescrambler(demuxId)); + ASSERT_TRUE(mDescramblerTests.closeDescrambler()); ASSERT_TRUE(mDemuxTests.closeDemux()); ASSERT_TRUE(mFrontendTests.closeFrontend()); }