diff --git a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp index 97a371b42d..f89f7b4b44 100644 --- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp +++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#include + #include #include "wifi_hidl_call_util.h" @@ -87,14 +89,21 @@ bool configureChipToSupportIfaceTypeInternal(const sp& wifi_chip, } } // namespace -sp getWifi() { - sp wifi = ::testing::VtsHalHidlTargetTestBase::getService( - gEnv->getServiceName()); - return wifi; +sp getWifi(const std::string& instance_name) { + if ((!gEnv && instance_name.empty()) || (gEnv && !instance_name.empty())) { + ALOGE("instance_name and gEnv must have one and only one set."); + return nullptr; + } + if (gEnv) { + return ::testing::VtsHalHidlTargetTestBase::getService( + gEnv->getServiceName()); + } else { + return IWifi::getService(instance_name); + } } -sp getWifiChip() { - sp wifi = getWifi(); +sp getWifiChip(const std::string& instance_name) { + sp wifi = getWifi(instance_name); if (!wifi.get()) { return nullptr; } @@ -122,8 +131,8 @@ sp getWifiChip() { return status_and_chip.second; } -sp getWifiApIface() { - sp wifi_chip = getWifiChip(); +sp getWifiApIface(const std::string& instance_name) { + sp wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } @@ -137,8 +146,8 @@ sp getWifiApIface() { return status_and_iface.second; } -sp getWifiNanIface() { - sp wifi_chip = getWifiChip(); +sp getWifiNanIface(const std::string& instance_name) { + sp wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } @@ -152,8 +161,8 @@ sp getWifiNanIface() { return status_and_iface.second; } -sp getWifiP2pIface() { - sp wifi_chip = getWifiChip(); +sp getWifiP2pIface(const std::string& instance_name) { + sp wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } @@ -167,8 +176,8 @@ sp getWifiP2pIface() { return status_and_iface.second; } -sp getWifiStaIface() { - sp wifi_chip = getWifiChip(); +sp getWifiStaIface(const std::string& instance_name) { + sp wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } @@ -182,8 +191,8 @@ sp getWifiStaIface() { return status_and_iface.second; } -sp getWifiRttController() { - sp wifi_chip = getWifiChip(); +sp getWifiRttController(const std::string& instance_name) { + sp wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } @@ -206,8 +215,8 @@ bool configureChipToSupportIfaceType(const sp& wifi_chip, configured_mode_id); } -void stopWifi() { - sp wifi = getWifi(); +void stopWifi(const std::string& instance_name) { + sp wifi = getWifi(instance_name); ASSERT_NE(wifi, nullptr); HIDL_INVOKE(wifi, stop); } diff --git a/wifi/1.0/vts/functional/wifi_hidl_test_utils.h b/wifi/1.0/vts/functional/wifi_hidl_test_utils.h index d430ce0bea..529b142f22 100644 --- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.h +++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.h @@ -31,14 +31,21 @@ // Note: We only have a single instance of each of these objects currently. // These helper functions should be modified to return vectors if we support // multiple instances. -android::sp getWifi(); -android::sp getWifiChip(); -android::sp getWifiApIface(); -android::sp getWifiNanIface(); -android::sp getWifiP2pIface(); -android::sp getWifiStaIface(); +// TODO(b/143892896): Remove the default value as part of the cleanup. +android::sp getWifi( + const std::string& instance_name = ""); +android::sp getWifiChip( + const std::string& instance_name = ""); +android::sp getWifiApIface( + const std::string& instance_name = ""); +android::sp getWifiNanIface( + const std::string& instance_name = ""); +android::sp getWifiP2pIface( + const std::string& instance_name = ""); +android::sp getWifiStaIface( + const std::string& instance_name = ""); android::sp -getWifiRttController(); +getWifiRttController(const std::string& instance_name = ""); // Configure the chip in a mode to support the creation of the provided // iface type. bool configureChipToSupportIfaceType( @@ -46,7 +53,7 @@ bool configureChipToSupportIfaceType( android::hardware::wifi::V1_0::IfaceType type, android::hardware::wifi::V1_0::ChipModeId* configured_mode_id); // Used to trigger IWifi.stop() at the end of every test. -void stopWifi(); +void stopWifi(const std::string& instance_name = ""); class WifiHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { protected: diff --git a/wifi/hostapd/1.0/vts/functional/Android.bp b/wifi/hostapd/1.0/vts/functional/Android.bp index 5645019d0e..b53d002680 100644 --- a/wifi/hostapd/1.0/vts/functional/Android.bp +++ b/wifi/hostapd/1.0/vts/functional/Android.bp @@ -49,5 +49,5 @@ cc_test { "libwifi-system", "libwifi-system-iface", ], - test_suites: ["general-tests"], + test_suites: ["general-tests", "vts-core"], } diff --git a/wifi/hostapd/1.0/vts/functional/VtsHalWifiHostapdV1_0TargetTest.cpp b/wifi/hostapd/1.0/vts/functional/VtsHalWifiHostapdV1_0TargetTest.cpp index 0303b2052e..4b62b15699 100644 --- a/wifi/hostapd/1.0/vts/functional/VtsHalWifiHostapdV1_0TargetTest.cpp +++ b/wifi/hostapd/1.0/vts/functional/VtsHalWifiHostapdV1_0TargetTest.cpp @@ -14,36 +14,8 @@ * limitations under the License. */ -#include -#include +#include -#include "hostapd_hidl_test_utils.h" - -class WifiHostapdHidlEnvironment_1_0 : public WifiHostapdHidlEnvironment { - public: - // get the test environment singleton - static WifiHostapdHidlEnvironment_1_0* Instance() { - static WifiHostapdHidlEnvironment_1_0* instance = - new WifiHostapdHidlEnvironment_1_0; - return instance; - } - - virtual void registerTestServices() override { - registerTestService<::android::hardware::wifi::V1_0::IWifi>(); - registerTestService(); - } - - private: - WifiHostapdHidlEnvironment_1_0() {} -}; - -WifiHostapdHidlEnvironment* gEnv = WifiHostapdHidlEnvironment_1_0::Instance(); - -int main(int argc, char** argv) { - ::testing::AddGlobalTestEnvironment(gEnv); - ::testing::InitGoogleTest(&argc, argv); - gEnv->init(&argc, argv); - int status = RUN_ALL_TESTS(); - LOG(INFO) << "Test result = " << status; - return status; -} +// TODO(b/143892896): Remove this file after wifi_hidl_test_utils.cpp is +// updated. +::testing::VtsHalHidlTargetTestEnvBase* gEnv = nullptr; diff --git a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp index 8ee71fb805..5a978ca39f 100644 --- a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp +++ b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp @@ -17,18 +17,22 @@ #include #include -#include - +#include #include +#include +#include +#include + #include "hostapd_hidl_call_util.h" #include "hostapd_hidl_test_utils.h" using ::android::sp; using ::android::hardware::hidl_vec; -using ::android::hardware::wifi::hostapd::V1_0::IHostapd; using ::android::hardware::wifi::hostapd::V1_0::HostapdStatus; using ::android::hardware::wifi::hostapd::V1_0::HostapdStatusCode; +using ::android::hardware::wifi::hostapd::V1_0::IHostapd; +using ::android::hardware::wifi::V1_0::IWifi; namespace { constexpr unsigned char kNwSsid[] = {'t', 'e', 's', 't', '1', @@ -38,16 +42,20 @@ constexpr int kIfaceChannel = 6; constexpr int kIfaceInvalidChannel = 567; } // namespace -class HostapdHidlTest : public ::testing::VtsHalHidlTargetTestBase { +class HostapdHidlTest + : public ::testing::TestWithParam> { public: virtual void SetUp() override { - stopSupplicantIfNeeded(); - startHostapdAndWaitForHidlService(); - hostapd_ = getHostapd(); + wifi_instance_name_ = std::get<0>(GetParam()); + hostapd_instance_name_ = std::get<1>(GetParam()); + stopSupplicantIfNeeded(wifi_instance_name_); + startHostapdAndWaitForHidlService(wifi_instance_name_, + hostapd_instance_name_); + hostapd_ = IHostapd::getService(hostapd_instance_name_); ASSERT_NE(hostapd_.get(), nullptr); } - virtual void TearDown() override { stopHostapd(); } + virtual void TearDown() override { stopHostapd(wifi_instance_name_); } protected: std::string getPrimaryWlanIfaceName() { @@ -121,6 +129,8 @@ class HostapdHidlTest : public ::testing::VtsHalHidlTargetTestBase { } // IHostapd object used for all tests in this fixture. sp hostapd_; + std::string wifi_instance_name_; + std::string hostapd_instance_name_; }; /* @@ -128,17 +138,19 @@ class HostapdHidlTest : public ::testing::VtsHalHidlTargetTestBase { * Ensures that an instance of the IHostapd proxy object is * successfully created. */ -TEST(HostapdHidlTestNoFixture, Create) { - startHostapdAndWaitForHidlService(); - EXPECT_NE(nullptr, getHostapd().get()); - stopHostapd(); +TEST_P(HostapdHidlTest, Create) { + stopHostapd(wifi_instance_name_); + startHostapdAndWaitForHidlService(wifi_instance_name_, + hostapd_instance_name_); + sp hostapd = IHostapd::getService(hostapd_instance_name_); + EXPECT_NE(nullptr, hostapd.get()); } /** * Adds an access point with PSK network config & ACS enabled. * Access point creation should pass. */ -TEST_F(HostapdHidlTest, AddPskAccessPointWithAcs) { +TEST_P(HostapdHidlTest, AddPskAccessPointWithAcs) { if (!is_1_1(hostapd_)) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint, getIfaceParamsWithAcs(), getPskNwParams()); @@ -151,7 +163,7 @@ TEST_F(HostapdHidlTest, AddPskAccessPointWithAcs) { * Adds an access point with Open network config & ACS enabled. * Access point creation should pass. */ -TEST_F(HostapdHidlTest, AddOpenAccessPointWithAcs) { +TEST_P(HostapdHidlTest, AddOpenAccessPointWithAcs) { if (!is_1_1(hostapd_)) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint, getIfaceParamsWithAcs(), getOpenNwParams()); @@ -164,7 +176,7 @@ TEST_F(HostapdHidlTest, AddOpenAccessPointWithAcs) { * Adds an access point with PSK network config & ACS disabled. * Access point creation should pass. */ -TEST_F(HostapdHidlTest, AddPskAccessPointWithoutAcs) { +TEST_P(HostapdHidlTest, AddPskAccessPointWithoutAcs) { if (!is_1_1(hostapd_)) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint, getIfaceParamsWithoutAcs(), getPskNwParams()); @@ -176,7 +188,7 @@ TEST_F(HostapdHidlTest, AddPskAccessPointWithoutAcs) { * Adds an access point with Open network config & ACS disabled. * Access point creation should pass. */ -TEST_F(HostapdHidlTest, AddOpenAccessPointWithoutAcs) { +TEST_P(HostapdHidlTest, AddOpenAccessPointWithoutAcs) { if (!is_1_1(hostapd_)) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint, getIfaceParamsWithoutAcs(), @@ -189,7 +201,7 @@ TEST_F(HostapdHidlTest, AddOpenAccessPointWithoutAcs) { * Adds & then removes an access point with PSK network config & ACS enabled. * Access point creation & removal should pass. */ -TEST_F(HostapdHidlTest, RemoveAccessPointWithAcs) { +TEST_P(HostapdHidlTest, RemoveAccessPointWithAcs) { if (!is_1_1(hostapd_)) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint, getIfaceParamsWithAcs(), getPskNwParams()); @@ -207,7 +219,7 @@ TEST_F(HostapdHidlTest, RemoveAccessPointWithAcs) { * Adds & then removes an access point with PSK network config & ACS disabled. * Access point creation & removal should pass. */ -TEST_F(HostapdHidlTest, RemoveAccessPointWithoutAcs) { +TEST_P(HostapdHidlTest, RemoveAccessPointWithoutAcs) { if (!is_1_1(hostapd_)) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint, getIfaceParamsWithoutAcs(), getPskNwParams()); @@ -222,7 +234,7 @@ TEST_F(HostapdHidlTest, RemoveAccessPointWithoutAcs) { * Adds an access point with invalid channel. * Access point creation should fail. */ -TEST_F(HostapdHidlTest, AddPskAccessPointWithInvalidChannel) { +TEST_P(HostapdHidlTest, AddPskAccessPointWithInvalidChannel) { if (!is_1_1(hostapd_)) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint, @@ -235,7 +247,7 @@ TEST_F(HostapdHidlTest, AddPskAccessPointWithInvalidChannel) { * Adds an access point with invalid PSK network config. * Access point creation should fail. */ -TEST_F(HostapdHidlTest, AddInvalidPskAccessPointWithoutAcs) { +TEST_P(HostapdHidlTest, AddInvalidPskAccessPointWithoutAcs) { if (!is_1_1(hostapd_)) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint, getIfaceParamsWithoutAcs(), @@ -248,6 +260,13 @@ TEST_F(HostapdHidlTest, AddInvalidPskAccessPointWithoutAcs) { * Terminate * This terminates the service. */ -TEST_F(HostapdHidlTest, Terminate) { - hostapd_->terminate(); -} +TEST_P(HostapdHidlTest, Terminate) { hostapd_->terminate(); } + +INSTANTIATE_TEST_SUITE_P( + PerInstance, HostapdHidlTest, + testing::Combine( + testing::ValuesIn( + android::hardware::getAllHalInstanceNames(IWifi::descriptor)), + testing::ValuesIn( + android::hardware::getAllHalInstanceNames(IHostapd::descriptor))), + android::hardware::PrintInstanceTupleNameToString<>); diff --git a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.cpp b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.cpp index cdbf1ab589..6058fd2d5f 100644 --- a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.cpp +++ b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.cpp @@ -44,13 +44,11 @@ using ::android::hidl::manager::V1_0::IServiceNotification; using ::android::wifi_system::HostapdManager; using ::android::wifi_system::SupplicantManager; -extern WifiHostapdHidlEnvironment* gEnv; - namespace { // Helper function to initialize the driver and firmware to AP mode // using the vendor HAL HIDL interface. -void initilializeDriverAndFirmware() { - sp wifi_chip = getWifiChip(); +void initilializeDriverAndFirmware(const std::string& wifi_instance_name) { + sp wifi_chip = getWifiChip(wifi_instance_name); ChipModeId mode_id; EXPECT_TRUE(configureChipToSupportIfaceType( wifi_chip, ::android::hardware::wifi::V1_0::IfaceType::AP, &mode_id)); @@ -58,7 +56,9 @@ void initilializeDriverAndFirmware() { // Helper function to deinitialize the driver and firmware // using the vendor HAL HIDL interface. -void deInitilializeDriverAndFirmware() { stopWifi(); } +void deInitilializeDriverAndFirmware(const std::string& wifi_instance_name) { + stopWifi(wifi_instance_name); +} } // namespace // Utility class to wait for wpa_hostapd's HIDL service registration. @@ -110,45 +110,42 @@ class ServiceNotificationListener : public IServiceNotification { std::condition_variable condition_; }; -void stopSupplicantIfNeeded() { +void stopSupplicantIfNeeded(const std::string& instance_name) { SupplicantManager supplicant_manager; if (supplicant_manager.IsSupplicantRunning()) { LOG(INFO) << "Supplicant is running, stop supplicant first."; ASSERT_TRUE(supplicant_manager.StopSupplicant()); - deInitilializeDriverAndFirmware(); + deInitilializeDriverAndFirmware(instance_name); ASSERT_FALSE(supplicant_manager.IsSupplicantRunning()); } } -void stopHostapd() { +void stopHostapd(const std::string& instance_name) { HostapdManager hostapd_manager; ASSERT_TRUE(hostapd_manager.StopHostapd()); - deInitilializeDriverAndFirmware(); + deInitilializeDriverAndFirmware(instance_name); } -void startHostapdAndWaitForHidlService() { - initilializeDriverAndFirmware(); +void startHostapdAndWaitForHidlService( + const std::string& wifi_instance_name, + const std::string& hostapd_instance_name) { + initilializeDriverAndFirmware(wifi_instance_name); android::sp notification_listener = new ServiceNotificationListener(); - string service_name = gEnv->getServiceName(); ASSERT_TRUE(notification_listener->registerForHidlServiceNotifications( - service_name)); + hostapd_instance_name)); HostapdManager hostapd_manager; ASSERT_TRUE(hostapd_manager.StartHostapd()); - ASSERT_TRUE(notification_listener->waitForHidlService(500, service_name)); + ASSERT_TRUE( + notification_listener->waitForHidlService(500, hostapd_instance_name)); } bool is_1_1(const sp& hostapd) { sp<::android::hardware::wifi::hostapd::V1_1::IHostapd> hostapd_1_1 = ::android::hardware::wifi::hostapd::V1_1::IHostapd::castFrom(hostapd); return hostapd_1_1.get() != nullptr; -} - -sp getHostapd() { - return ::testing::VtsHalHidlTargetTestBase::getService( - gEnv->getServiceName()); -} +} \ No newline at end of file diff --git a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.h b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.h index 9b3df4206b..5cb4f013b1 100644 --- a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.h +++ b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test_utils.h @@ -20,32 +20,18 @@ #include #include -#include - // Used to stop the android wifi framework before every test. -void stopWifiFramework(); -void startWifiFramework(); -void stopSupplicantIfNeeded(); -void stopHostapd(); +void stopWifiFramework(const std::string& instance_name); +void startWifiFramework(const std::string& instance_name); +void stopSupplicantIfNeeded(const std::string& instance_name); +void stopHostapd(const std::string& instance_name); // Used to configure the chip, driver and start wpa_hostapd before every // test. -void startHostapdAndWaitForHidlService(); +void startHostapdAndWaitForHidlService( + const std::string& wifi_instance_name, + const std::string& hostapd_instance_name); -// Helper functions to obtain references to the various HIDL interface objects. -// Note: We only have a single instance of each of these objects currently. -// These helper functions should be modified to return vectors if we support -// multiple instances. -android::sp getHostapd(); bool is_1_1(const android::sp& hostapd); -class WifiHostapdHidlEnvironment - : public ::testing::VtsHalHidlTargetTestEnvBase { - public: - virtual void HidlSetUp() override { stopHostapd(); } - virtual void HidlTearDown() override { - startHostapdAndWaitForHidlService(); - } -}; - #endif /* HOSTAPD_HIDL_TEST_UTILS_H */ diff --git a/wifi/hostapd/1.1/vts/functional/Android.bp b/wifi/hostapd/1.1/vts/functional/Android.bp index 02ec2e637d..c963fe33a3 100644 --- a/wifi/hostapd/1.1/vts/functional/Android.bp +++ b/wifi/hostapd/1.1/vts/functional/Android.bp @@ -14,25 +14,6 @@ // limitations under the License. // -cc_library_static { - name: "VtsHalWifiHostapdV1_1TargetTestUtil", - defaults: ["VtsHalTargetTestDefaults"], - srcs: ["hostapd_hidl_test_utils_1_1.cpp"], - export_include_dirs: [ - "." - ], - static_libs: [ - "VtsHalWifiV1_0TargetTestUtil", - "VtsHalWifiHostapdV1_0TargetTestUtil", - "android.hardware.wifi.hostapd@1.0", - "android.hardware.wifi.hostapd@1.1", - "android.hardware.wifi@1.0", - "libgmock", - "libwifi-system", - "libwifi-system-iface", - ], -} - cc_test { name: "VtsHalWifiHostapdV1_1TargetTest", defaults: ["VtsHalTargetTestDefaults"], @@ -43,7 +24,6 @@ cc_test { static_libs: [ "VtsHalWifiV1_0TargetTestUtil", "VtsHalWifiHostapdV1_0TargetTestUtil", - "VtsHalWifiHostapdV1_1TargetTestUtil", "android.hardware.wifi.hostapd@1.0", "android.hardware.wifi.hostapd@1.1", "android.hardware.wifi@1.0", @@ -51,6 +31,6 @@ cc_test { "libwifi-system", "libwifi-system-iface", ], - test_suites: ["general-tests"], + test_suites: ["general-tests", "vts-core"], } diff --git a/wifi/hostapd/1.1/vts/functional/VtsHalWifiHostapdV1_1TargetTest.cpp b/wifi/hostapd/1.1/vts/functional/VtsHalWifiHostapdV1_1TargetTest.cpp index 6916db2ca7..7e0f3cdc47 100644 --- a/wifi/hostapd/1.1/vts/functional/VtsHalWifiHostapdV1_1TargetTest.cpp +++ b/wifi/hostapd/1.1/vts/functional/VtsHalWifiHostapdV1_1TargetTest.cpp @@ -14,38 +14,8 @@ * limitations under the License. */ -#include -#include +#include -#include "hostapd_hidl_test_utils.h" -#include "hostapd_hidl_test_utils_1_1.h" - -class WifiHostapdHidlEnvironment_1_1 : public WifiHostapdHidlEnvironment { - public: - // get the test environment singleton - static WifiHostapdHidlEnvironment_1_1* Instance() { - static WifiHostapdHidlEnvironment_1_1* instance = - new WifiHostapdHidlEnvironment_1_1; - return instance; - } - - virtual void registerTestServices() override { - registerTestService<::android::hardware::wifi::V1_0::IWifi>(); - registerTestService(); - registerTestService(); - } - - private: - WifiHostapdHidlEnvironment_1_1() {} -}; - -WifiHostapdHidlEnvironment* gEnv = WifiHostapdHidlEnvironment_1_1::Instance(); - -int main(int argc, char** argv) { - ::testing::AddGlobalTestEnvironment(gEnv); - ::testing::InitGoogleTest(&argc, argv); - gEnv->init(&argc, argv); - int status = RUN_ALL_TESTS(); - LOG(INFO) << "Test result = " << status; - return status; -} +// TODO(b/143892896): Remove this file after wifi_hidl_test_utils.cpp is +// updated. +::testing::VtsHalHidlTargetTestEnvBase* gEnv = nullptr; \ No newline at end of file diff --git a/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test.cpp b/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test.cpp index b053549650..1804d8ca85 100644 --- a/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test.cpp +++ b/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test.cpp @@ -17,13 +17,15 @@ #include #include -#include +#include +#include +#include +#include #include #include "hostapd_hidl_call_util.h" #include "hostapd_hidl_test_utils.h" -#include "hostapd_hidl_test_utils_1_1.h" using ::android::sp; using ::android::hardware::hidl_string; @@ -33,6 +35,7 @@ using ::android::hardware::wifi::hostapd::V1_0::HostapdStatus; using ::android::hardware::wifi::hostapd::V1_0::HostapdStatusCode; using ::android::hardware::wifi::hostapd::V1_1::IHostapd; using ::android::hardware::wifi::hostapd::V1_1::IHostapdCallback; +using ::android::hardware::wifi::V1_0::IWifi; namespace { constexpr unsigned char kNwSsid[] = {'t', 'e', 's', 't', '1', @@ -42,16 +45,20 @@ constexpr int kIfaceChannel = 6; constexpr int kIfaceInvalidChannel = 567; } // namespace -class HostapdHidlTest : public ::testing::VtsHalHidlTargetTestBase { +class HostapdHidlTest + : public ::testing::TestWithParam> { public: virtual void SetUp() override { - stopSupplicantIfNeeded(); - startHostapdAndWaitForHidlService(); - hostapd_ = getHostapd_1_1(); + wifi_instance_name_ = std::get<0>(GetParam()); + hostapd_instance_name_ = std::get<1>(GetParam()); + stopSupplicantIfNeeded(wifi_instance_name_); + startHostapdAndWaitForHidlService(wifi_instance_name_, + hostapd_instance_name_); + hostapd_ = IHostapd::getService(hostapd_instance_name_); ASSERT_NE(hostapd_.get(), nullptr); } - virtual void TearDown() override { stopHostapd(); } + virtual void TearDown() override { stopHostapd(wifi_instance_name_); } protected: std::string getPrimaryWlanIfaceName() { @@ -152,6 +159,8 @@ class HostapdHidlTest : public ::testing::VtsHalHidlTargetTestBase { // IHostapd object used for all tests in this fixture. sp hostapd_; + std::string wifi_instance_name_; + std::string hostapd_instance_name_; }; class IfaceCallback : public IHostapdCallback { @@ -164,7 +173,7 @@ class IfaceCallback : public IHostapdCallback { /* * RegisterCallback */ -TEST_F(HostapdHidlTest, registerCallback) { +TEST_P(HostapdHidlTest, registerCallback) { hostapd_->registerCallback( new IfaceCallback(), [](const HostapdStatus& status) { EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code); @@ -175,7 +184,7 @@ TEST_F(HostapdHidlTest, registerCallback) { * Adds an access point with PSK network config & ACS enabled. * Access point creation should pass. */ -TEST_F(HostapdHidlTest, AddPskAccessPointWithAcs) { +TEST_P(HostapdHidlTest, AddPskAccessPointWithAcs) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_1, getIfaceParamsWithAcs(), getPskNwParams()); // TODO: b/140172237, fix this in R. @@ -186,7 +195,7 @@ TEST_F(HostapdHidlTest, AddPskAccessPointWithAcs) { * Adds an access point with PSK network config, ACS enabled & channel Range. * Access point creation should pass. */ -TEST_F(HostapdHidlTest, AddPskAccessPointWithAcsAndChannelRange) { +TEST_P(HostapdHidlTest, AddPskAccessPointWithAcsAndChannelRange) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_1, getIfaceParamsWithAcsAndChannelRange(), getPskNwParams()); @@ -198,7 +207,7 @@ TEST_F(HostapdHidlTest, AddPskAccessPointWithAcsAndChannelRange) { * Adds an access point with invalid channel range. * Access point creation should fail. */ -TEST_F(HostapdHidlTest, AddPskAccessPointWithAcsAndInvalidChannelRange) { +TEST_P(HostapdHidlTest, AddPskAccessPointWithAcsAndInvalidChannelRange) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_1, getIfaceParamsWithAcsAndInvalidChannelRange(), getPskNwParams()); @@ -210,7 +219,7 @@ TEST_F(HostapdHidlTest, AddPskAccessPointWithAcsAndInvalidChannelRange) { * Adds an access point with Open network config & ACS enabled. * Access point creation should pass. */ -TEST_F(HostapdHidlTest, AddOpenAccessPointWithAcs) { +TEST_P(HostapdHidlTest, AddOpenAccessPointWithAcs) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_1, getIfaceParamsWithAcs(), getOpenNwParams()); // TODO: b/140172237, fix this in R @@ -221,7 +230,7 @@ TEST_F(HostapdHidlTest, AddOpenAccessPointWithAcs) { * Adds an access point with PSK network config & ACS disabled. * Access point creation should pass. */ -TEST_F(HostapdHidlTest, AddPskAccessPointWithoutAcs) { +TEST_P(HostapdHidlTest, AddPskAccessPointWithoutAcs) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_1, getIfaceParamsWithoutAcs(), getPskNwParams()); EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code); @@ -231,7 +240,7 @@ TEST_F(HostapdHidlTest, AddPskAccessPointWithoutAcs) { * Adds an access point with Open network config & ACS disabled. * Access point creation should pass. */ -TEST_F(HostapdHidlTest, AddOpenAccessPointWithoutAcs) { +TEST_P(HostapdHidlTest, AddOpenAccessPointWithoutAcs) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_1, getIfaceParamsWithoutAcs(), getOpenNwParams()); EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code); @@ -241,7 +250,7 @@ TEST_F(HostapdHidlTest, AddOpenAccessPointWithoutAcs) { * Adds & then removes an access point with PSK network config & ACS enabled. * Access point creation & removal should pass. */ -TEST_F(HostapdHidlTest, RemoveAccessPointWithAcs) { +TEST_P(HostapdHidlTest, RemoveAccessPointWithAcs) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_1, getIfaceParamsWithAcs(), getPskNwParams()); // TODO: b/140172237, fix this in R @@ -257,7 +266,7 @@ TEST_F(HostapdHidlTest, RemoveAccessPointWithAcs) { * Adds & then removes an access point with PSK network config & ACS disabled. * Access point creation & removal should pass. */ -TEST_F(HostapdHidlTest, RemoveAccessPointWithoutAcs) { +TEST_P(HostapdHidlTest, RemoveAccessPointWithoutAcs) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_1, getIfaceParamsWithoutAcs(), getPskNwParams()); EXPECT_EQ(HostapdStatusCode::SUCCESS, status.code); @@ -270,7 +279,7 @@ TEST_F(HostapdHidlTest, RemoveAccessPointWithoutAcs) { * Adds an access point with invalid channel. * Access point creation should fail. */ -TEST_F(HostapdHidlTest, AddPskAccessPointWithInvalidChannel) { +TEST_P(HostapdHidlTest, AddPskAccessPointWithInvalidChannel) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_1, getIfaceParamsWithInvalidChannel(), getPskNwParams()); @@ -281,9 +290,18 @@ TEST_F(HostapdHidlTest, AddPskAccessPointWithInvalidChannel) { * Adds an access point with invalid PSK network config. * Access point creation should fail. */ -TEST_F(HostapdHidlTest, AddInvalidPskAccessPointWithoutAcs) { +TEST_P(HostapdHidlTest, AddInvalidPskAccessPointWithoutAcs) { auto status = HIDL_INVOKE(hostapd_, addAccessPoint_1_1, getIfaceParamsWithoutAcs(), getInvalidPskNwParams()); EXPECT_NE(HostapdStatusCode::SUCCESS, status.code); } + +INSTANTIATE_TEST_CASE_P( + PerInstance, HostapdHidlTest, + testing::Combine( + testing::ValuesIn( + android::hardware::getAllHalInstanceNames(IWifi::descriptor)), + testing::ValuesIn(android::hardware::getAllHalInstanceNames( + android::hardware::wifi::hostapd::V1_1::IHostapd::descriptor))), + android::hardware::PrintInstanceTupleNameToString<>); diff --git a/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test_utils_1_1.cpp b/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test_utils_1_1.cpp deleted file mode 100644 index 8bb72a19f1..0000000000 --- a/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test_utils_1_1.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include - -#include "hostapd_hidl_test_utils.h" -#include "hostapd_hidl_test_utils_1_1.h" - -using ::android::sp; -using ::android::hardware::wifi::hostapd::V1_1::IHostapd; - -sp getHostapd_1_1() { return IHostapd::castFrom(getHostapd()); } diff --git a/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test_utils_1_1.h b/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test_utils_1_1.h deleted file mode 100644 index c43ddfa207..0000000000 --- a/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test_utils_1_1.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef HOSTAPD_HIDL_TEST_UTILS_1_1_H -#define HOSTAPD_HIDL_TEST_UTILS_1_1_H - -#include - -#include - -// Helper functions to obtain references to the various HIDL interface objects. -// Note: We only have a single instance of each of these objects currently. -// These helper functions should be modified to return vectors if we support -// multiple instances. -android::sp getHostapd_1_1(); - -#endif /* HOSTAPD_HIDL_TEST_UTILS_1_1_H */