Merge "vts(wifi): Stop wifi fully instead of stopping framework" into android11-tests-dev

This commit is contained in:
Treehugger Robot 2020-11-06 18:11:10 +00:00 committed by Gerrit Code Review
commit 61b1ceee5e
3 changed files with 49 additions and 12 deletions

View file

@ -38,12 +38,15 @@ class SupplicantHidlTest
: public ::testing::TestWithParam<std::tuple<std::string, std::string>> {
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());
std::system("/system/bin/start");
ASSERT_TRUE(waitForFrameworkReady());
isP2pOn_ =
testing::deviceSupportsFeature("android.hardware.wifi.direct");
// Stop Framework
std::system("/system/bin/stop");
stopSupplicant(wifi_instance_name_);
startSupplicantAndWaitForHidlService(wifi_instance_name_,
supplicant_instance_name_);
@ -53,8 +56,8 @@ class SupplicantHidlTest
virtual void TearDown() override {
stopSupplicant(wifi_instance_name_);
// Start Framework
std::system("/system/bin/start");
// Start Wi-Fi
startWifiFramework();
}
protected:
@ -219,4 +222,4 @@ INSTANTIATE_TEST_CASE_P(
android::hardware::getAllHalInstanceNames(IWifi::descriptor)),
testing::ValuesIn(android::hardware::getAllHalInstanceNames(
ISupplicant::descriptor))),
android::hardware::PrintInstanceTupleNameToString<>);
android::hardware::PrintInstanceTupleNameToString<>);

View file

@ -48,6 +48,26 @@ using ::android::wifi_system::InterfaceTool;
using ::android::wifi_system::SupplicantManager;
namespace {
bool waitForSupplicantState(bool is_running) {
SupplicantManager supplicant_manager;
int count = 50; /* wait at most 5 seconds for completion */
while (count-- > 0) {
if (supplicant_manager.IsSupplicantRunning() == is_running) {
return true;
}
usleep(100000);
}
LOG(ERROR) << "Supplicant not " << is_running ? "running" : "stopped";
return false;
}
// Helper function to wait for supplicant to be started by framework on wifi
// enable.
bool waitForSupplicantStart() { return waitForSupplicantState(true); }
// Helper function to wait for supplicant to be stopped by framework on wifi
// disable.
bool waitForSupplicantStop() { return waitForSupplicantState(false); }
// Helper function to initialize the driver and firmware to STA mode
// using the vendor HAL HIDL interface.
@ -118,6 +138,18 @@ std::string getP2pIfaceName() {
}
} // namespace
bool startWifiFramework() {
std::system("svc wifi enable");
std::system("cmd wifi set-scan-always-available enabled");
return waitForSupplicantStart(); // wait for wifi to start.
}
bool stopWifiFramework() {
std::system("svc wifi disable");
std::system("cmd wifi set-scan-always-available disabled");
return waitForSupplicantStop(); // wait for wifi to shutdown.
}
void stopSupplicant() { stopSupplicant(""); }
void stopSupplicant(const std::string& wifi_instance_name) {

View file

@ -29,9 +29,11 @@
#include "wifi_hidl_test_utils.h"
// Used to start the android wifi framework after every test.
bool startWifiFramework();
// Used to stop the android wifi framework before every test.
void stopWifiFramework(const std::string& wifi_instance_name);
void startWifiFramework(const std::string& wifi_instance_name);
bool stopWifiFramework();
void stopSupplicant(const std::string& wifi_instance_name);
// Used to configure the chip, driver and start wpa_supplicant before every
@ -70,16 +72,16 @@ class SupplicantHidlTestBase
: public ::testing::TestWithParam<std::tuple<std::string, std::string>> {
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());
supplicant_instance_name_ = std::get<1>(GetParam());
std::system("/system/bin/start");
ASSERT_TRUE(waitForFrameworkReady());
isP2pOn_ =
testing::deviceSupportsFeature("android.hardware.wifi.direct");
// Stop Framework
std::system("/system/bin/stop");
stopSupplicant(wifi_v1_0_instance_name_);
startSupplicantAndWaitForHidlService(wifi_v1_0_instance_name_,
supplicant_instance_name_);
@ -88,8 +90,8 @@ class SupplicantHidlTestBase
virtual void TearDown() override {
stopSupplicant(wifi_v1_0_instance_name_);
// Start Framework
std::system("/system/bin/start");
// Start Wi-Fi
startWifiFramework();
}
protected: