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 086166a5de..6760663d77 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 */ @@ -113,10 +129,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 72286231b4..2198d7cbf8 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 @@ -77,12 +77,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_ =