Merge "Disable Wi-Fi framework during VTS" into main

This commit is contained in:
Gabriel Biren 2023-09-25 22:34:44 +00:00 committed by Gerrit Code Review
commit bddf425784
3 changed files with 42 additions and 4 deletions

View file

@ -48,6 +48,13 @@ class HostapdHidlTest
virtual void SetUp() override { virtual void SetUp() override {
wifi_instance_name_ = std::get<0>(GetParam()); wifi_instance_name_ = std::get<0>(GetParam());
hostapd_instance_name_ = std::get<1>(GetParam()); hostapd_instance_name_ = std::get<1>(GetParam());
// Disable Wi-Fi framework to avoid interference
isWifiEnabled_ = isWifiFrameworkEnabled();
isScanAlwaysEnabled_ = isWifiScanAlwaysAvailable();
toggleWifiFramework(false);
toggleWifiScanAlwaysAvailable(false);
stopSupplicantIfNeeded(wifi_instance_name_); stopSupplicantIfNeeded(wifi_instance_name_);
startHostapdAndWaitForHidlService(wifi_instance_name_, startHostapdAndWaitForHidlService(wifi_instance_name_,
hostapd_instance_name_); hostapd_instance_name_);
@ -58,14 +65,21 @@ class HostapdHidlTest
virtual void TearDown() override { virtual void TearDown() override {
HIDL_INVOKE_VOID_WITHOUT_ARGUMENTS(hostapd_, terminate); HIDL_INVOKE_VOID_WITHOUT_ARGUMENTS(hostapd_, terminate);
stopHostapd(wifi_instance_name_); stopHostapd(wifi_instance_name_);
// Restore Wi-Fi framework state
toggleWifiFramework(isWifiEnabled_);
toggleWifiScanAlwaysAvailable(isScanAlwaysEnabled_);
} }
protected: protected:
std::string getPrimaryWlanIfaceName() { bool isWifiEnabled_ = false;
bool isScanAlwaysEnabled_ = false;
std::string getPrimaryWlanIfaceName() {
std::array<char, PROPERTY_VALUE_MAX> buffer; std::array<char, PROPERTY_VALUE_MAX> buffer;
property_get("wifi.interface", buffer.data(), "wlan0"); property_get("wifi.interface", buffer.data(), "wlan0");
return buffer.data(); return buffer.data();
} }
IHostapd::IfaceParams getIfaceParamsWithAcs() { IHostapd::IfaceParams getIfaceParamsWithAcs() {
IHostapd::IfaceParams iface_params; IHostapd::IfaceParams iface_params;

View file

@ -100,3 +100,24 @@ bool is_1_1(const sp<IHostapd>& hostapd) {
::android::hardware::wifi::hostapd::V1_1::IHostapd::castFrom(hostapd); ::android::hardware::wifi::hostapd::V1_1::IHostapd::castFrom(hostapd);
return hostapd_1_1.get() != nullptr; return hostapd_1_1.get() != nullptr;
} }
void toggleWifiFramework(bool enable) {
std::string cmd = "/system/bin/cmd wifi set-wifi-enabled ";
cmd += enable ? "enabled" : "disabled";
testing::checkSubstringInCommandOutput(cmd.c_str(), "X");
}
void toggleWifiScanAlwaysAvailable(bool enable) {
std::string cmd = "/system/bin/cmd wifi set-scan-always-available ";
cmd += enable ? "enabled" : "disabled";
testing::checkSubstringInCommandOutput(cmd.c_str(), "X");
}
bool isWifiFrameworkEnabled() {
return testing::checkSubstringInCommandOutput("/system/bin/cmd wifi status", "Wifi is enabled");
}
bool isWifiScanAlwaysAvailable() {
return testing::checkSubstringInCommandOutput("/system/bin/cmd wifi status",
"Wifi scanning is always available");
}

View file

@ -17,14 +17,17 @@
#ifndef HOSTAPD_HIDL_TEST_UTILS_H #ifndef HOSTAPD_HIDL_TEST_UTILS_H
#define HOSTAPD_HIDL_TEST_UTILS_H #define HOSTAPD_HIDL_TEST_UTILS_H
#include <VtsCoreUtil.h>
#include <android/hardware/wifi/hostapd/1.0/IHostapd.h> #include <android/hardware/wifi/hostapd/1.0/IHostapd.h>
#include <android/hardware/wifi/hostapd/1.1/IHostapd.h> #include <android/hardware/wifi/hostapd/1.1/IHostapd.h>
// Used to stop the android wifi framework before every test. // Used to stop the android wifi framework before every test.
void stopWifiFramework(const std::string& instance_name);
void startWifiFramework(const std::string& instance_name);
void stopSupplicantIfNeeded(const std::string& instance_name); void stopSupplicantIfNeeded(const std::string& instance_name);
void stopHostapd(const std::string& instance_name); void stopHostapd(const std::string& instance_name);
void toggleWifiFramework(bool enable);
void toggleWifiScanAlwaysAvailable(bool enable);
bool isWifiFrameworkEnabled();
bool isWifiScanAlwaysAvailable();
// Used to configure the chip, driver and start wpa_hostapd before every // Used to configure the chip, driver and start wpa_hostapd before every
// test. // test.
void startHostapdAndWaitForHidlService( void startHostapdAndWaitForHidlService(