From 9ea484ffc055d8aaabcb1bf393099fbdc65e4046 Mon Sep 17 00:00:00 2001 From: Gabriel Biren Date: Tue, 14 Jun 2022 18:58:46 +0000 Subject: [PATCH] In supplicant VTS test setup, make sure that the wifi hal is stopped before starting wifi. Bug: 234853504 Test: atest VtsHalWifiSupplicantV1_0TargetTest # HIDL service Change-Id: I413c3803a6607a72cc3aa8a5fa208551be1b1032 (cherry picked from commit bfe60cda4d9400f4f370b46e26cac97db3207917) --- .../vts/functional/supplicant_hidl_test.cpp | 7 +++-- .../functional/supplicant_hidl_test_utils.cpp | 30 ++++++++++++++----- .../functional/supplicant_hidl_test_utils.h | 13 ++++---- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test.cpp index eabbf1b141..da3ff3a29b 100644 --- a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test.cpp +++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test.cpp @@ -38,11 +38,12 @@ class SupplicantHidlTest : public ::testing::TestWithParam> { public: virtual void SetUp() override { - // Stop Wi-Fi - ASSERT_TRUE(stopWifiFramework()); // stop & wait for wifi to shutdown. - wifi_instance_name_ = std::get<0>(GetParam()); supplicant_instance_name_ = std::get<1>(GetParam()); + + // Stop & wait for wifi to shutdown. + ASSERT_TRUE(stopWifiFramework(wifi_instance_name_)); + std::system("/system/bin/start"); ASSERT_TRUE(waitForFrameworkReady()); isP2pOn_ = 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 114fe4f32c..cb532e5b29 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 @@ -28,26 +28,42 @@ using ::android::sp; using ::android::hardware::configureRpcThreadpool; -using ::android::hardware::joinRpcThreadpool; using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; +using ::android::hardware::joinRpcThreadpool; using ::android::hardware::Return; using ::android::hardware::Void; -using ::android::hardware::wifi::V1_0::ChipModeId; -using ::android::hardware::wifi::V1_0::IWifiChip; +using ::android::hardware::wifi::supplicant::V1_0::IfaceType; using ::android::hardware::wifi::supplicant::V1_0::ISupplicant; using ::android::hardware::wifi::supplicant::V1_0::ISupplicantIface; using ::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork; +using ::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface; using ::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface; using ::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork; -using ::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface; -using ::android::hardware::wifi::supplicant::V1_0::IfaceType; using ::android::hardware::wifi::supplicant::V1_0::SupplicantStatus; using ::android::hardware::wifi::supplicant::V1_0::SupplicantStatusCode; +using ::android::hardware::wifi::V1_0::ChipModeId; +using ::android::hardware::wifi::V1_0::IWifi; +using ::android::hardware::wifi::V1_0::IWifiChip; using ::android::wifi_system::InterfaceTool; using ::android::wifi_system::SupplicantManager; namespace { + +bool waitForWifiHalStop(const std::string& wifi_instance_name) { + sp wifi = getWifi(wifi_instance_name); + int count = 50; /* wait at most 5 seconds for completion */ + while (count-- > 0) { + if (wifi != nullptr && !wifi->isStarted()) { + return true; + } + usleep(100000); + wifi = getWifi(wifi_instance_name); + } + LOG(ERROR) << "Wifi HAL was not stopped"; + return false; +} + bool waitForSupplicantState(bool is_running) { SupplicantManager supplicant_manager; int count = 50; /* wait at most 5 seconds for completion */ @@ -144,10 +160,10 @@ bool startWifiFramework() { return waitForSupplicantStart(); // wait for wifi to start. } -bool stopWifiFramework() { +bool stopWifiFramework(const std::string& wifi_instance_name) { std::system("svc wifi disable"); std::system("cmd wifi set-scan-always-available disabled"); - return waitForSupplicantStop(); // wait for wifi to shutdown. + return waitForSupplicantStop() && waitForWifiHalStop(wifi_instance_name); } void stopSupplicant() { stopSupplicant(""); } diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.h b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.h index 22cea8c14c..e906f2a25c 100644 --- a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.h +++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.h @@ -33,7 +33,7 @@ bool startWifiFramework(); // Used to stop the android wifi framework before every test. -bool stopWifiFramework(); +bool stopWifiFramework(const std::string& wifi_instance_name); void stopSupplicant(const std::string& wifi_instance_name); // Used to configure the chip, driver and start wpa_supplicant before every @@ -72,12 +72,13 @@ class SupplicantHidlTestBase : public ::testing::TestWithParam> { public: virtual void SetUp() override { - // Stop Wi-Fi - ASSERT_TRUE(stopWifiFramework()); // stop & wait for wifi to shutdown. - - // should always be v1.0 wifi - wifi_v1_0_instance_name_ = std::get<0>(GetParam()); + wifi_v1_0_instance_name_ = + std::get<0>(GetParam()); // should always be v1.0 wifi supplicant_instance_name_ = std::get<1>(GetParam()); + + // Stop & wait for wifi to shutdown. + ASSERT_TRUE(stopWifiFramework(wifi_v1_0_instance_name_)); + std::system("/system/bin/start"); ASSERT_TRUE(waitForFrameworkReady()); isP2pOn_ =