diff options
author | Gabriel Biren <gbiren@google.com> | 2022-01-31 22:26:08 +0000 |
---|---|---|
committer | Gabriel Biren <gbiren@google.com> | 2022-02-02 22:18:20 +0000 |
commit | 4e6c9a2b800b84f5a662a3a449f7fb664ad3de6d (patch) | |
tree | 39cdd74ee1ba6ff86773413ed57ba78c68f0dbba /wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h | |
parent | 71af5c2da91ac3e0d5d090facc3cd5144d595995 (diff) |
Improve initialization sequence for supplicant
AIDL VTS tests.
Bug: 215298798
Bug: 215467859
Test: atest VtsHalWifiSupplicantStaIfaceTargetTest \
VtsHalWifiSupplicantStaNetworkTargetTest \
VtsHalWifiSupplicantP2pIfaceTargetTest
(Tested on both a Coral and Oriole device)
Change-Id: I435e16a447af16d9cd619c5bc8883ed24151080a
Diffstat (limited to 'wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h')
-rw-r--r-- | wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h | 86 |
1 files changed, 42 insertions, 44 deletions
diff --git a/wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h b/wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h index b7e1a800b7..17e0394892 100644 --- a/wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h +++ b/wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h @@ -19,8 +19,14 @@ #include <VtsCoreUtil.h> #include <android-base/logging.h> +#include <android/hardware/wifi/1.0/IWifi.h> +#include <hidl/ServiceManagement.h> +#include <supplicant_hidl_test_utils.h> #include <wifi_system/supplicant_manager.h> +using aidl::android::hardware::wifi::supplicant::IfaceInfo; +using aidl::android::hardware::wifi::supplicant::ISupplicant; +using aidl::android::hardware::wifi::supplicant::ISupplicantP2pIface; using aidl::android::hardware::wifi::supplicant::ISupplicantStaIface; using aidl::android::hardware::wifi::supplicant::KeyMgmtMask; using android::wifi_system::SupplicantManager; @@ -37,6 +43,14 @@ std::string getP2pIfaceName() { return std::string(buffer.data()); } +std::string getWifiInstanceName() { + const std::vector<std::string> instances = + android::hardware::getAllHalInstanceNames( + ::android::hardware::wifi::V1_0::IWifi::descriptor); + EXPECT_NE(0, instances.size()); + return instances.size() != 0 ? instances[0] : ""; +} + bool keyMgmtSupported(std::shared_ptr<ISupplicantStaIface> iface, KeyMgmtMask expected) { KeyMgmtMask caps; @@ -53,60 +67,44 @@ bool isFilsSupported(std::shared_ptr<ISupplicantStaIface> iface) { return keyMgmtSupported(iface, filsMask); } -bool waitForSupplicantState(bool is_running) { +void startSupplicant() { + initializeDriverAndFirmware(getWifiInstanceName()); 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; -} - -bool waitForFrameworkReady() { - int waitCount = 15; - do { - // Check whether package service is ready or not. - if (!testing::checkSubstringInCommandOutput( - "/system/bin/service check package", ": not found")) { - return true; - } - LOG(INFO) << "Framework is not ready"; - sleep(1); - } while (waitCount-- > 0); - return false; + ASSERT_TRUE(supplicant_manager.StartSupplicant()); + ASSERT_TRUE(supplicant_manager.IsSupplicantRunning()); } -bool waitForSupplicantStart() { return waitForSupplicantState(true); } - -bool waitForSupplicantStop() { return waitForSupplicantState(false); } +// Wrapper around the implementation in supplicant_hidl_test_util. +void stopSupplicantService() { stopSupplicant(getWifiInstanceName()); } -void stopSupplicant() { - SupplicantManager supplicant_manager; - ASSERT_TRUE(supplicant_manager.StopSupplicant()); - ASSERT_FALSE(supplicant_manager.IsSupplicantRunning()); +void initializeService() { + ASSERT_TRUE(stopWifiFramework()); + std::system("/system/bin/start"); + ASSERT_TRUE(waitForFrameworkReady()); + stopSupplicantService(); + startSupplicant(); } -bool startWifiFramework() { - std::system("svc wifi enable"); - std::system("cmd wifi set-scan-always-available enabled"); - return waitForSupplicantStart(); +void addStaIface(const std::shared_ptr<ISupplicant> supplicant) { + ASSERT_TRUE(supplicant.get()); + std::shared_ptr<ISupplicantStaIface> iface; + ASSERT_TRUE(supplicant->addStaInterface(getStaIfaceName(), &iface).isOk()); } -bool stopWifiFramework() { - std::system("svc wifi disable"); - std::system("cmd wifi set-scan-always-available disabled"); - return waitForSupplicantStop(); +void addP2pIface(const std::shared_ptr<ISupplicant> supplicant) { + ASSERT_TRUE(supplicant.get()); + std::shared_ptr<ISupplicantP2pIface> iface; + ASSERT_TRUE(supplicant->addP2pInterface(getP2pIfaceName(), &iface).isOk()); } -void initializeService() { - ASSERT_TRUE(stopWifiFramework()); - std::system("/system/bin/start"); - ASSERT_TRUE(waitForFrameworkReady()); - stopSupplicant(); +std::shared_ptr<ISupplicant> getSupplicant(const char* supplicant_name) { + std::shared_ptr<ISupplicant> supplicant = ISupplicant::fromBinder( + ndk::SpAIBinder(AServiceManager_waitForService(supplicant_name))); + addStaIface(supplicant); + if (testing::deviceSupportsFeature("android.hardware.wifi.direct")) { + addP2pIface(supplicant); + } + return supplicant; } #endif // SUPPLICANT_TEST_UTILS_H
\ No newline at end of file |