From 70082bb98384fadc8da979e60630bab9d2cf7250 Mon Sep 17 00:00:00 2001 From: Yu-Han Yang Date: Thu, 15 Jul 2021 14:07:37 -0700 Subject: [PATCH] Ensure non-empty SvInfo is received Bug: 193806881 Test: atest VtsHalGnssV2_1TargetTest Change-Id: I79f0c7041af51403ec5a2d17a430cac6d7a88b80 --- .../vts/functional/gnss_hal_test_cases.cpp | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 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 fcab8c4a04..8fa5f7e668 100644 --- a/gnss/2.1/vts/functional/gnss_hal_test_cases.cpp +++ b/gnss/2.1/vts/functional/gnss_hal_test_cases.cpp @@ -249,35 +249,40 @@ TEST_P(GnssHalTest, TestGnssAntennaInfo) { /* * TestGnssSvInfoFields: - * Gets 1 location and a GnssSvInfo, and verifies - * 1. basebandCN0DbHz is valid. + * Gets 1 location and a (non-empty) GnssSvInfo, and verifies basebandCN0DbHz is valid. */ TEST_P(GnssHalTest, TestGnssSvInfoFields) { gnss_cb_->location_cbq_.reset(); + gnss_cb_->sv_info_list_cbq_.reset(); StartAndCheckFirstLocation(/* min_interval_msec= */ 1000, /* low_power_mode= */ false); int location_called_count = gnss_cb_->location_cbq_.calledCount(); - - // Tolerate 1 less sv status to handle edge cases in reporting. - int sv_info_list_cbq_size = gnss_cb_->sv_info_list_cbq_.size(); - EXPECT_GE(sv_info_list_cbq_size, 0); ALOGD("Observed %d GnssSvStatus, while awaiting one location (%d received)", - sv_info_list_cbq_size, location_called_count); + gnss_cb_->sv_info_list_cbq_.size(), location_called_count); - // 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(); + // Wait for up to kNumSvInfoLists events for kTimeoutSeconds for each event. + int kTimeoutSeconds = 2; + int kNumSvInfoLists = 4; + std::list> sv_info_lists; + hidl_vec last_sv_info_list; + do { + EXPECT_GT(gnss_cb_->sv_info_list_cbq_.retrieve(sv_info_lists, kNumSvInfoLists, + kTimeoutSeconds), + 0); + last_sv_info_list = sv_info_lists.back(); + } while (last_sv_info_list.size() == 0); + + ALOGD("last_sv_info size = %d", (int)last_sv_info_list.size()); bool nonZeroCn0Found = false; for (auto sv_info : last_sv_info_list) { - ASSERT_TRUE(sv_info.basebandCN0DbHz >= 0.0 && sv_info.basebandCN0DbHz <= 65.0); + EXPECT_TRUE(sv_info.basebandCN0DbHz >= 0.0 && sv_info.basebandCN0DbHz <= 65.0); if (sv_info.basebandCN0DbHz > 0.0) { nonZeroCn0Found = true; } } // Assert at least one value is non-zero. Zero is ok in status as it's possibly // reporting a searched but not found satellite. - ASSERT_TRUE(nonZeroCn0Found); + EXPECT_TRUE(nonZeroCn0Found); StopAndClearLocations(); }