Loading wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp +27 −18 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ * limitations under the License. */ #include <android/log.h> #include <VtsHalHidlTargetTestBase.h> #include "wifi_hidl_call_util.h" Loading Loading @@ -87,14 +89,21 @@ bool configureChipToSupportIfaceTypeInternal(const sp<IWifiChip>& wifi_chip, } } // namespace sp<IWifi> getWifi() { sp<IWifi> wifi = ::testing::VtsHalHidlTargetTestBase::getService<IWifi>( sp<IWifi> 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<IWifi>( gEnv->getServiceName<IWifi>()); return wifi; } else { return IWifi::getService(instance_name); } } sp<IWifiChip> getWifiChip() { sp<IWifi> wifi = getWifi(); sp<IWifiChip> getWifiChip(const std::string& instance_name) { sp<IWifi> wifi = getWifi(instance_name); if (!wifi.get()) { return nullptr; } Loading Loading @@ -122,8 +131,8 @@ sp<IWifiChip> getWifiChip() { return status_and_chip.second; } sp<IWifiApIface> getWifiApIface() { sp<IWifiChip> wifi_chip = getWifiChip(); sp<IWifiApIface> getWifiApIface(const std::string& instance_name) { sp<IWifiChip> wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } Loading @@ -137,8 +146,8 @@ sp<IWifiApIface> getWifiApIface() { return status_and_iface.second; } sp<IWifiNanIface> getWifiNanIface() { sp<IWifiChip> wifi_chip = getWifiChip(); sp<IWifiNanIface> getWifiNanIface(const std::string& instance_name) { sp<IWifiChip> wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } Loading @@ -152,8 +161,8 @@ sp<IWifiNanIface> getWifiNanIface() { return status_and_iface.second; } sp<IWifiP2pIface> getWifiP2pIface() { sp<IWifiChip> wifi_chip = getWifiChip(); sp<IWifiP2pIface> getWifiP2pIface(const std::string& instance_name) { sp<IWifiChip> wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } Loading @@ -167,8 +176,8 @@ sp<IWifiP2pIface> getWifiP2pIface() { return status_and_iface.second; } sp<IWifiStaIface> getWifiStaIface() { sp<IWifiChip> wifi_chip = getWifiChip(); sp<IWifiStaIface> getWifiStaIface(const std::string& instance_name) { sp<IWifiChip> wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } Loading @@ -182,8 +191,8 @@ sp<IWifiStaIface> getWifiStaIface() { return status_and_iface.second; } sp<IWifiRttController> getWifiRttController() { sp<IWifiChip> wifi_chip = getWifiChip(); sp<IWifiRttController> getWifiRttController(const std::string& instance_name) { sp<IWifiChip> wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } Loading @@ -206,8 +215,8 @@ bool configureChipToSupportIfaceType(const sp<IWifiChip>& wifi_chip, configured_mode_id); } void stopWifi() { sp<IWifi> wifi = getWifi(); void stopWifi(const std::string& instance_name) { sp<IWifi> wifi = getWifi(instance_name); ASSERT_NE(wifi, nullptr); HIDL_INVOKE(wifi, stop); } wifi/1.0/vts/functional/wifi_hidl_test_utils.h +15 −8 Original line number Diff line number Diff line Loading @@ -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<android::hardware::wifi::V1_0::IWifi> getWifi(); android::sp<android::hardware::wifi::V1_0::IWifiChip> getWifiChip(); android::sp<android::hardware::wifi::V1_0::IWifiApIface> getWifiApIface(); android::sp<android::hardware::wifi::V1_0::IWifiNanIface> getWifiNanIface(); android::sp<android::hardware::wifi::V1_0::IWifiP2pIface> getWifiP2pIface(); android::sp<android::hardware::wifi::V1_0::IWifiStaIface> getWifiStaIface(); // TODO(b/143892896): Remove the default value as part of the cleanup. android::sp<android::hardware::wifi::V1_0::IWifi> getWifi( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiChip> getWifiChip( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiApIface> getWifiApIface( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiNanIface> getWifiNanIface( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiP2pIface> getWifiP2pIface( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiStaIface> getWifiStaIface( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiRttController> getWifiRttController(); getWifiRttController(const std::string& instance_name = ""); // Configure the chip in a mode to support the creation of the provided // iface type. bool configureChipToSupportIfaceType( Loading @@ -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: Loading wifi/hostapd/1.0/vts/functional/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -49,5 +49,5 @@ cc_test { "libwifi-system", "libwifi-system-iface", ], test_suites: ["general-tests"], test_suites: ["general-tests", "vts-core"], } wifi/hostapd/1.0/vts/functional/VtsHalWifiHostapdV1_0TargetTest.cpp +4 −32 Original line number Diff line number Diff line Loading @@ -14,36 +14,8 @@ * limitations under the License. */ #include <android-base/logging.h> #include <android/hardware/wifi/1.0/IWifi.h> #include <VtsHalHidlTargetTestEnvBase.h> #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<android::hardware::wifi::hostapd::V1_0::IHostapd>(); } 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; wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp +42 −23 Original line number Diff line number Diff line Loading @@ -17,18 +17,22 @@ #include <android-base/logging.h> #include <cutils/properties.h> #include <VtsHalHidlTargetTestBase.h> #include <android/hardware/wifi/1.0/IWifi.h> #include <android/hardware/wifi/hostapd/1.0/IHostapd.h> #include <gtest/gtest.h> #include <hidl/GtestPrinter.h> #include <hidl/ServiceManagement.h> #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', Loading @@ -38,16 +42,20 @@ constexpr int kIfaceChannel = 6; constexpr int kIfaceInvalidChannel = 567; } // namespace class HostapdHidlTest : public ::testing::VtsHalHidlTargetTestBase { class HostapdHidlTest : public ::testing::TestWithParam<std::tuple<std::string, std::string>> { 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() { Loading Loading @@ -121,6 +129,8 @@ class HostapdHidlTest : public ::testing::VtsHalHidlTargetTestBase { } // IHostapd object used for all tests in this fixture. sp<IHostapd> hostapd_; std::string wifi_instance_name_; std::string hostapd_instance_name_; }; /* Loading @@ -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<IHostapd> 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()); Loading @@ -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()); Loading @@ -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()); Loading @@ -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(), Loading @@ -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()); Loading @@ -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()); Loading @@ -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, Loading @@ -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(), Loading @@ -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<>); Loading
wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp +27 −18 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ * limitations under the License. */ #include <android/log.h> #include <VtsHalHidlTargetTestBase.h> #include "wifi_hidl_call_util.h" Loading Loading @@ -87,14 +89,21 @@ bool configureChipToSupportIfaceTypeInternal(const sp<IWifiChip>& wifi_chip, } } // namespace sp<IWifi> getWifi() { sp<IWifi> wifi = ::testing::VtsHalHidlTargetTestBase::getService<IWifi>( sp<IWifi> 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<IWifi>( gEnv->getServiceName<IWifi>()); return wifi; } else { return IWifi::getService(instance_name); } } sp<IWifiChip> getWifiChip() { sp<IWifi> wifi = getWifi(); sp<IWifiChip> getWifiChip(const std::string& instance_name) { sp<IWifi> wifi = getWifi(instance_name); if (!wifi.get()) { return nullptr; } Loading Loading @@ -122,8 +131,8 @@ sp<IWifiChip> getWifiChip() { return status_and_chip.second; } sp<IWifiApIface> getWifiApIface() { sp<IWifiChip> wifi_chip = getWifiChip(); sp<IWifiApIface> getWifiApIface(const std::string& instance_name) { sp<IWifiChip> wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } Loading @@ -137,8 +146,8 @@ sp<IWifiApIface> getWifiApIface() { return status_and_iface.second; } sp<IWifiNanIface> getWifiNanIface() { sp<IWifiChip> wifi_chip = getWifiChip(); sp<IWifiNanIface> getWifiNanIface(const std::string& instance_name) { sp<IWifiChip> wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } Loading @@ -152,8 +161,8 @@ sp<IWifiNanIface> getWifiNanIface() { return status_and_iface.second; } sp<IWifiP2pIface> getWifiP2pIface() { sp<IWifiChip> wifi_chip = getWifiChip(); sp<IWifiP2pIface> getWifiP2pIface(const std::string& instance_name) { sp<IWifiChip> wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } Loading @@ -167,8 +176,8 @@ sp<IWifiP2pIface> getWifiP2pIface() { return status_and_iface.second; } sp<IWifiStaIface> getWifiStaIface() { sp<IWifiChip> wifi_chip = getWifiChip(); sp<IWifiStaIface> getWifiStaIface(const std::string& instance_name) { sp<IWifiChip> wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } Loading @@ -182,8 +191,8 @@ sp<IWifiStaIface> getWifiStaIface() { return status_and_iface.second; } sp<IWifiRttController> getWifiRttController() { sp<IWifiChip> wifi_chip = getWifiChip(); sp<IWifiRttController> getWifiRttController(const std::string& instance_name) { sp<IWifiChip> wifi_chip = getWifiChip(instance_name); if (!wifi_chip.get()) { return nullptr; } Loading @@ -206,8 +215,8 @@ bool configureChipToSupportIfaceType(const sp<IWifiChip>& wifi_chip, configured_mode_id); } void stopWifi() { sp<IWifi> wifi = getWifi(); void stopWifi(const std::string& instance_name) { sp<IWifi> wifi = getWifi(instance_name); ASSERT_NE(wifi, nullptr); HIDL_INVOKE(wifi, stop); }
wifi/1.0/vts/functional/wifi_hidl_test_utils.h +15 −8 Original line number Diff line number Diff line Loading @@ -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<android::hardware::wifi::V1_0::IWifi> getWifi(); android::sp<android::hardware::wifi::V1_0::IWifiChip> getWifiChip(); android::sp<android::hardware::wifi::V1_0::IWifiApIface> getWifiApIface(); android::sp<android::hardware::wifi::V1_0::IWifiNanIface> getWifiNanIface(); android::sp<android::hardware::wifi::V1_0::IWifiP2pIface> getWifiP2pIface(); android::sp<android::hardware::wifi::V1_0::IWifiStaIface> getWifiStaIface(); // TODO(b/143892896): Remove the default value as part of the cleanup. android::sp<android::hardware::wifi::V1_0::IWifi> getWifi( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiChip> getWifiChip( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiApIface> getWifiApIface( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiNanIface> getWifiNanIface( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiP2pIface> getWifiP2pIface( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiStaIface> getWifiStaIface( const std::string& instance_name = ""); android::sp<android::hardware::wifi::V1_0::IWifiRttController> getWifiRttController(); getWifiRttController(const std::string& instance_name = ""); // Configure the chip in a mode to support the creation of the provided // iface type. bool configureChipToSupportIfaceType( Loading @@ -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: Loading
wifi/hostapd/1.0/vts/functional/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -49,5 +49,5 @@ cc_test { "libwifi-system", "libwifi-system-iface", ], test_suites: ["general-tests"], test_suites: ["general-tests", "vts-core"], }
wifi/hostapd/1.0/vts/functional/VtsHalWifiHostapdV1_0TargetTest.cpp +4 −32 Original line number Diff line number Diff line Loading @@ -14,36 +14,8 @@ * limitations under the License. */ #include <android-base/logging.h> #include <android/hardware/wifi/1.0/IWifi.h> #include <VtsHalHidlTargetTestEnvBase.h> #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<android::hardware::wifi::hostapd::V1_0::IHostapd>(); } 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;
wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp +42 −23 Original line number Diff line number Diff line Loading @@ -17,18 +17,22 @@ #include <android-base/logging.h> #include <cutils/properties.h> #include <VtsHalHidlTargetTestBase.h> #include <android/hardware/wifi/1.0/IWifi.h> #include <android/hardware/wifi/hostapd/1.0/IHostapd.h> #include <gtest/gtest.h> #include <hidl/GtestPrinter.h> #include <hidl/ServiceManagement.h> #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', Loading @@ -38,16 +42,20 @@ constexpr int kIfaceChannel = 6; constexpr int kIfaceInvalidChannel = 567; } // namespace class HostapdHidlTest : public ::testing::VtsHalHidlTargetTestBase { class HostapdHidlTest : public ::testing::TestWithParam<std::tuple<std::string, std::string>> { 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() { Loading Loading @@ -121,6 +129,8 @@ class HostapdHidlTest : public ::testing::VtsHalHidlTargetTestBase { } // IHostapd object used for all tests in this fixture. sp<IHostapd> hostapd_; std::string wifi_instance_name_; std::string hostapd_instance_name_; }; /* Loading @@ -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<IHostapd> 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()); Loading @@ -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()); Loading @@ -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()); Loading @@ -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(), Loading @@ -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()); Loading @@ -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()); Loading @@ -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, Loading @@ -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(), Loading @@ -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<>);