From e80aabbc1d4693a5f775eebdcbb211986c77bdcf Mon Sep 17 00:00:00 2001 From: Gabriel Biren Date: Thu, 1 Dec 2022 22:24:16 +0000 Subject: [PATCH] Revert "Remove dependencies on the HIDL Vendor HAL from" This reverts commit fc6bd8c564604a27aacfb4c7aea39bb7c12efd64. Reason for revert: Blocking Wembley team Bug: 261042084 Test: Local test as in 261042084#comment8 Change-Id: I9103fa8bdcdea48648574f034c51ea8f2b9c25cc --- wifi/hostapd/aidl/vts/functional/Android.bp | 16 ++- .../functional/VtsHalHostapdTargetTest.cpp | 41 +++--- .../supplicant/aidl/vts/functional/Android.bp | 39 +++++- .../vts/functional/supplicant_test_utils.h | 130 +++--------------- 4 files changed, 88 insertions(+), 138 deletions(-) diff --git a/wifi/hostapd/aidl/vts/functional/Android.bp b/wifi/hostapd/aidl/vts/functional/Android.bp index a9fdec8380..e61d3975bb 100644 --- a/wifi/hostapd/aidl/vts/functional/Android.bp +++ b/wifi/hostapd/aidl/vts/functional/Android.bp @@ -20,10 +20,20 @@ cc_test { "libvndksupport", ], static_libs: [ - "android.hardware.wifi-V1-ndk", "android.hardware.wifi.hostapd-V1-ndk", - "libwifi-system-iface", - "VtsHalWifiTargetTestUtil", + "VtsHalWifiV1_0TargetTestUtil", + "VtsHalWifiV1_5TargetTestUtil", + "VtsHalWifiHostapdV1_0TargetTestUtil", + "android.hardware.wifi.hostapd@1.0", + "android.hardware.wifi.hostapd@1.1", + "android.hardware.wifi.hostapd@1.2", + "android.hardware.wifi.hostapd@1.3", + "android.hardware.wifi@1.0", + "android.hardware.wifi@1.1", + "android.hardware.wifi@1.2", + "android.hardware.wifi@1.3", + "android.hardware.wifi@1.4", + "android.hardware.wifi@1.5", ], test_suites: [ "general-tests", diff --git a/wifi/hostapd/aidl/vts/functional/VtsHalHostapdTargetTest.cpp b/wifi/hostapd/aidl/vts/functional/VtsHalHostapdTargetTest.cpp index 65ffa7b59e..bd2649fc50 100644 --- a/wifi/hostapd/aidl/vts/functional/VtsHalHostapdTargetTest.cpp +++ b/wifi/hostapd/aidl/vts/functional/VtsHalHostapdTargetTest.cpp @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include +#include +#include #include #include @@ -23,11 +24,12 @@ #include #include #include +#include +#include +#include +#include +#include -#include "wifi_aidl_test_utils.h" - -using aidl::android::hardware::wifi::IWifi; -using aidl::android::hardware::wifi::IWifiApIface; using aidl::android::hardware::wifi::hostapd::BandMask; using aidl::android::hardware::wifi::hostapd::BnHostapdCallback; using aidl::android::hardware::wifi::hostapd::ChannelBandwidth; @@ -42,8 +44,6 @@ using aidl::android::hardware::wifi::hostapd::NetworkParams; using android::ProcessState; namespace { -const std::string kWifiInstanceNameStr = std::string() + IWifi::descriptor + "/default"; -const char* kWifiInstanceName = kWifiInstanceNameStr.c_str(); const unsigned char kNwSsid[] = {'t', 'e', 's', 't', '1', '2', '3', '4', '5'}; const std::string kPassphrase = "test12345"; const std::string kInvalidMinPassphrase = "test"; @@ -75,13 +75,17 @@ class HostapdAidl : public testing::TestWithParam { "/system/bin/cmd wifi get-softap-supported-features", "wifi_softap_wpa3_sae_supported"); isBridgedSupport = testing::checkSubstringInCommandOutput( - "/system/bin/cmd wifi get-softap-supported-features", - "wifi_softap_bridged_ap_supported"); + "/system/bin/cmd wifi get-softap-supported-features", + "wifi_softap_bridged_ap_supported"); + const std::vector instances = android::hardware::getAllHalInstanceNames( + ::android::hardware::wifi::V1_0::IWifi::descriptor); + EXPECT_NE(0, instances.size()); + wifiInstanceName = instances[0]; } virtual void TearDown() override { - if (getWifi(kWifiInstanceName) != nullptr) { - stopWifiService(kWifiInstanceName); + if (getWifi(wifiInstanceName) != nullptr) { + stopWifi(wifiInstanceName); } hostapd->terminate(); // Wait 3 seconds to allow terminate to complete @@ -89,23 +93,24 @@ class HostapdAidl : public testing::TestWithParam { } std::shared_ptr hostapd; + std::string wifiInstanceName; bool isAcsSupport; bool isWpa3SaeSupport; bool isBridgedSupport; std::string setupApIfaceAndGetName(bool isBridged) { - std::shared_ptr wifi_ap_iface; + android::sp<::android::hardware::wifi::V1_0::IWifiApIface> wifi_ap_iface; if (isBridged) { - wifi_ap_iface = getBridgedWifiApIface(kWifiInstanceName); + wifi_ap_iface = getBridgedWifiApIface_1_5(wifiInstanceName); } else { - wifi_ap_iface = getWifiApIface(kWifiInstanceName); + wifi_ap_iface = getWifiApIface_1_5(wifiInstanceName); } EXPECT_NE(nullptr, wifi_ap_iface.get()); - std::string ap_iface_name; - auto status = wifi_ap_iface->getName(&ap_iface_name); - EXPECT_TRUE(status.isOk()); - return ap_iface_name; + const auto& status_and_name = HIDL_INVOKE(wifi_ap_iface, getName); + EXPECT_EQ(android::hardware::wifi::V1_0::WifiStatusCode::SUCCESS, + status_and_name.first.code); + return status_and_name.second; } IfaceParams getIfaceParamsWithoutAcs(std::string iface_name) { diff --git a/wifi/supplicant/aidl/vts/functional/Android.bp b/wifi/supplicant/aidl/vts/functional/Android.bp index 937fdc765c..b959c7504d 100644 --- a/wifi/supplicant/aidl/vts/functional/Android.bp +++ b/wifi/supplicant/aidl/vts/functional/Android.bp @@ -36,11 +36,20 @@ cc_test { "libvndksupport", ], static_libs: [ - "android.hardware.wifi-V1-ndk", + "android.hardware.wifi@1.0", + "android.hardware.wifi@1.1", + "android.hardware.wifi@1.2", + "android.hardware.wifi@1.3", + "android.hardware.wifi@1.4", + "android.hardware.wifi@1.5", + "android.hardware.wifi.supplicant@1.0", + "android.hardware.wifi.supplicant@1.1", "android.hardware.wifi.supplicant-V2-ndk", "libwifi-system", "libwifi-system-iface", - "VtsHalWifiTargetTestUtil", + "VtsHalWifiV1_0TargetTestUtil", + "VtsHalWifiV1_5TargetTestUtil", + "VtsHalWifiSupplicantV1_0TargetTestUtil", ], test_suites: [ "general-tests", @@ -61,11 +70,20 @@ cc_test { "libvndksupport", ], static_libs: [ - "android.hardware.wifi-V1-ndk", + "android.hardware.wifi@1.0", + "android.hardware.wifi@1.1", + "android.hardware.wifi@1.2", + "android.hardware.wifi@1.3", + "android.hardware.wifi@1.4", + "android.hardware.wifi@1.5", + "android.hardware.wifi.supplicant@1.0", + "android.hardware.wifi.supplicant@1.1", "android.hardware.wifi.supplicant-V2-ndk", "libwifi-system", "libwifi-system-iface", - "VtsHalWifiTargetTestUtil", + "VtsHalWifiV1_0TargetTestUtil", + "VtsHalWifiV1_5TargetTestUtil", + "VtsHalWifiSupplicantV1_0TargetTestUtil", ], test_suites: [ "general-tests", @@ -86,11 +104,20 @@ cc_test { "libvndksupport", ], static_libs: [ - "android.hardware.wifi-V1-ndk", + "android.hardware.wifi@1.0", + "android.hardware.wifi@1.1", + "android.hardware.wifi@1.2", + "android.hardware.wifi@1.3", + "android.hardware.wifi@1.4", + "android.hardware.wifi@1.5", + "android.hardware.wifi.supplicant@1.0", + "android.hardware.wifi.supplicant@1.1", "android.hardware.wifi.supplicant-V2-ndk", "libwifi-system", "libwifi-system-iface", - "VtsHalWifiTargetTestUtil", + "VtsHalWifiV1_0TargetTestUtil", + "VtsHalWifiV1_5TargetTestUtil", + "VtsHalWifiSupplicantV1_0TargetTestUtil", ], test_suites: [ "general-tests", diff --git a/wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h b/wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h index 740dc9f7b0..31042a2b7c 100644 --- a/wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h +++ b/wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h @@ -14,18 +14,16 @@ * limitations under the License. */ -#pragma once +#ifndef SUPPLICANT_TEST_UTILS_H +#define SUPPLICANT_TEST_UTILS_H #include -#include #include +#include +#include +#include #include -#include "wifi_aidl_test_utils.h" - -using aidl::android::hardware::wifi::IfaceConcurrencyType; -using aidl::android::hardware::wifi::IWifi; -using aidl::android::hardware::wifi::IWifiChip; using aidl::android::hardware::wifi::supplicant::IfaceInfo; using aidl::android::hardware::wifi::supplicant::ISupplicant; using aidl::android::hardware::wifi::supplicant::ISupplicantP2pIface; @@ -33,90 +31,6 @@ using aidl::android::hardware::wifi::supplicant::ISupplicantStaIface; using aidl::android::hardware::wifi::supplicant::KeyMgmtMask; using android::wifi_system::SupplicantManager; -const std::string kWifiInstanceName = std::string() + IWifi::descriptor + "/default"; - -// Initialize the driver and firmware to STA mode using the vendor HAL. -void initializeDriverAndFirmware(const std::string& wifi_instance_name) { - // Skip if wifi instance is not set. - if (wifi_instance_name == "") { - return; - } - if (getWifi(wifi_instance_name.c_str()) != nullptr) { - std::shared_ptr wifi_chip = getWifiChip(wifi_instance_name.c_str()); - int mode_id; - EXPECT_TRUE(configureChipToSupportConcurrencyType(wifi_chip, IfaceConcurrencyType::STA, - &mode_id)); - } else { - LOG(WARNING) << __func__ << ": Vendor HAL not supported"; - } -} - -// Deinitialize the driver and firmware using the vendor HAL. -void deInitializeDriverAndFirmware(const std::string& wifi_instance_name) { - // Skip if wifi instance is not set. - if (wifi_instance_name == "") { - return; - } - if (getWifi(wifi_instance_name.c_str()) != nullptr) { - stopWifiService(wifi_instance_name.c_str()); - } else { - LOG(WARNING) << __func__ << ": Vendor HAL not supported"; - } -} - -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; -} - -bool waitForSupplicantStart() { - return waitForSupplicantState(true); -} - -bool waitForSupplicantStop() { - return waitForSupplicantState(false); -} - -bool waitForWifiHalStop(const std::string& wifi_instance_name) { - std::shared_ptr wifi = getWifi(wifi_instance_name.c_str()); - int count = 50; /* wait at most 5 seconds for completion */ - while (count-- > 0) { - if (wifi != nullptr) { - bool started = false; - auto status = wifi->isStarted(&started); - if (status.isOk() && !started) { - return true; - } - } - usleep(100000); - wifi = getWifi(wifi_instance_name.c_str()); - } - LOG(ERROR) << "Wifi HAL was not 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; -} - std::string getStaIfaceName() { std::array buffer; property_get("wifi.interface", buffer.data(), "wlan0"); @@ -129,6 +43,14 @@ std::string getP2pIfaceName() { return std::string(buffer.data()); } +std::string getWifiInstanceName() { + const std::vector 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 iface, KeyMgmtMask expected) { KeyMgmtMask caps; @@ -146,33 +68,17 @@ bool isFilsSupported(std::shared_ptr iface) { } void startSupplicant() { - initializeDriverAndFirmware(kWifiInstanceName); + initializeDriverAndFirmware(getWifiInstanceName()); SupplicantManager supplicant_manager; ASSERT_TRUE(supplicant_manager.StartSupplicant()); ASSERT_TRUE(supplicant_manager.IsSupplicantRunning()); } -void stopSupplicantService() { - SupplicantManager supplicant_manager; - ASSERT_TRUE(supplicant_manager.StopSupplicant()); - deInitializeDriverAndFirmware(kWifiInstanceName); - ASSERT_FALSE(supplicant_manager.IsSupplicantRunning()); -} - -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(const std::string& wifi_instance_name) { - std::system("svc wifi disable"); - std::system("cmd wifi set-scan-always-available disabled"); - return waitForSupplicantStop() && waitForWifiHalStop(wifi_instance_name); -} +// Wrapper around the implementation in supplicant_hidl_test_util. +void stopSupplicantService() { stopSupplicant(getWifiInstanceName()); } void initializeService() { - ASSERT_TRUE(stopWifiFramework(kWifiInstanceName)); + ASSERT_TRUE(stopWifiFramework(getWifiInstanceName())); std::system("/system/bin/start"); ASSERT_TRUE(waitForFrameworkReady()); stopSupplicantService(); @@ -200,3 +106,5 @@ std::shared_ptr getSupplicant(const char* supplicant_name) { } return supplicant; } + +#endif // SUPPLICANT_TEST_UTILS_H \ No newline at end of file