From 308f153eeb5b637d35e61c42bdd29bfb6b9e3b66 Mon Sep 17 00:00:00 2001 From: Zhuoyao Zhang Date: Thu, 8 Feb 2018 21:17:39 -0800 Subject: [PATCH] Convert wifi hal test to use VtsHalHidlTargetTestEnvBase Bug: 64203181 Test: make vts vts-tradefed run vts -m VtsHalWifiV1_0Host vts-tradefed run vts -m VtsHalWifiV1_1Target vts-tradefed run vts -m VtsHalWifiSupplicantV1_0Target vts-tradefed run vts -m VtsHalWifiSupplicantV1_1Target Change-Id: I4ea9554829b75b73b600ab668885d57c94251a87 Merged-In: I4ea9554829b75b73b600ab668885d57c94251a87 (cherry picked from commit e768fb9cea24dc184490c2dac6058c5f08d60313) --- wifi/1.0/vts/functional/Android.bp | 3 +- .../functional/VtsHalWifiV1_0TargetTest.cpp | 23 +++++++++--- .../vts/functional/wifi_hidl_test_utils.cpp | 5 ++- .../1.0/vts/functional/wifi_hidl_test_utils.h | 5 +-- .../functional/VtsHalWifiV1_1TargetTest.cpp | 23 +++++++++--- .../VtsHalWifiOffloadV1_0TargetTest.cpp | 35 +++++++++++++------ .../VtsHalWifiSupplicantV1_0TargetTest.cpp | 26 ++++++++++---- .../functional/supplicant_hidl_test_utils.cpp | 14 ++++---- .../functional/supplicant_hidl_test_utils.h | 11 ++++++ 9 files changed, 110 insertions(+), 35 deletions(-) diff --git a/wifi/1.0/vts/functional/Android.bp b/wifi/1.0/vts/functional/Android.bp index ea27f02d04..b2f76a31ae 100644 --- a/wifi/1.0/vts/functional/Android.bp +++ b/wifi/1.0/vts/functional/Android.bp @@ -20,7 +20,8 @@ cc_library_static { srcs: [ "wifi_hidl_call_util_selftest.cpp", "wifi_hidl_test.cpp", - "wifi_hidl_test_utils.cpp"], + "wifi_hidl_test_utils.cpp", + ], export_include_dirs: [ "." ], diff --git a/wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp b/wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp index beac039888..e7b85938cf 100644 --- a/wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp +++ b/wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp @@ -16,16 +16,31 @@ #include -#include - #include "wifi_hidl_test_utils.h" -WifiHidlEnvironment* gEnv; +class WifiVtsHidlEnvironment_1_0 : public WifiHidlEnvironment { + public: + // get the test environment singleton + static WifiVtsHidlEnvironment_1_0* Instance() { + static WifiVtsHidlEnvironment_1_0* instance = + new WifiVtsHidlEnvironment_1_0; + return instance; + } + + virtual void registerTestServices() override { + registerTestService(); + } + + private: + WifiVtsHidlEnvironment_1_0() {} +}; + +WifiHidlEnvironment* gEnv = WifiVtsHidlEnvironment_1_0::Instance(); int main(int argc, char** argv) { - gEnv = new WifiHidlEnvironment(); ::testing::AddGlobalTestEnvironment(gEnv); ::testing::InitGoogleTest(&argc, argv); + gEnv->init(&argc, argv); int status = gEnv->initFromOptions(argc, argv); if (status == 0) { status = RUN_ALL_TESTS(); 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 0851cb2de5..88a421705a 100644 --- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp +++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp @@ -35,6 +35,8 @@ using ::android::sp; using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; +extern WifiHidlEnvironment* gEnv; + namespace { constexpr uint32_t kHalStartRetryMaxCount = 5; constexpr uint32_t kHalStartRetryIntervalInMs = 2; @@ -86,7 +88,8 @@ bool configureChipToSupportIfaceTypeInternal(const sp& wifi_chip, } // namespace sp getWifi() { - sp wifi = ::testing::VtsHalHidlTargetTestBase::getService(); + sp wifi = ::testing::VtsHalHidlTargetTestBase::getService( + gEnv->getServiceName()); return wifi; } 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 c4a19ddf2d..2b1c8ec82e 100644 --- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.h +++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.h @@ -26,6 +26,7 @@ #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 @@ -47,9 +48,9 @@ bool configureChipToSupportIfaceType( // Used to trigger IWifi.stop() at the end of every test. void stopWifi(); -class WifiHidlEnvironment : public ::testing::Environment { +class WifiHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { protected: - virtual void SetUp() override { + virtual void HidlSetUp() override { stopWifi(); sleep(5); } diff --git a/wifi/1.1/vts/functional/VtsHalWifiV1_1TargetTest.cpp b/wifi/1.1/vts/functional/VtsHalWifiV1_1TargetTest.cpp index 9b92b57e24..a0f97f81e8 100644 --- a/wifi/1.1/vts/functional/VtsHalWifiV1_1TargetTest.cpp +++ b/wifi/1.1/vts/functional/VtsHalWifiV1_1TargetTest.cpp @@ -15,17 +15,32 @@ */ #include - -#include +#include #include "wifi_hidl_test_utils.h" -WifiHidlEnvironment* gEnv; +class WifiHidlEnvironment_1_1 : public WifiHidlEnvironment { + public: + // get the test environment singleton + static WifiHidlEnvironment_1_1* Instance() { + static WifiHidlEnvironment_1_1* instance = new WifiHidlEnvironment_1_1; + return instance; + } + + virtual void registerTestServices() override { + registerTestService(); + } + + private: + WifiHidlEnvironment_1_1() {} +}; + +WifiHidlEnvironment* gEnv = WifiHidlEnvironment_1_1::Instance(); int main(int argc, char** argv) { - gEnv = new WifiHidlEnvironment(); ::testing::AddGlobalTestEnvironment(gEnv); ::testing::InitGoogleTest(&argc, argv); + gEnv->init(&argc, argv); int status = gEnv->initFromOptions(argc, argv); if (status == 0) { int status = RUN_ALL_TESTS(); diff --git a/wifi/offload/1.0/vts/functional/VtsHalWifiOffloadV1_0TargetTest.cpp b/wifi/offload/1.0/vts/functional/VtsHalWifiOffloadV1_0TargetTest.cpp index 90c36ddab3..dbe4e7407d 100644 --- a/wifi/offload/1.0/vts/functional/VtsHalWifiOffloadV1_0TargetTest.cpp +++ b/wifi/offload/1.0/vts/functional/VtsHalWifiOffloadV1_0TargetTest.cpp @@ -23,6 +23,7 @@ #include #include +#include #include @@ -68,12 +69,33 @@ class OffloadCallbackArgs { OffloadStatus error_code_; }; +// Test environment for Weaver HIDL HAL. +class WifiOffloadHidlEnvironment + : public ::testing::VtsHalHidlTargetTestEnvBase { + public: + // get the test environment singleton + static WifiOffloadHidlEnvironment* Instance() { + static WifiOffloadHidlEnvironment* instance = + new WifiOffloadHidlEnvironment; + return instance; + } + + virtual void registerTestServices() override { + registerTestService(); + } + + private: + WifiOffloadHidlEnvironment() {} +}; + // The main test class for WifiOffload HIDL HAL. class WifiOffloadHidlTest : public ::testing::VtsHalHidlTargetTestBase { public: virtual void SetUp() override { wifi_offload_ = - ::testing::VtsHalHidlTargetTestBase::getService(); + ::testing::VtsHalHidlTargetTestBase::getService( + WifiOffloadHidlEnvironment::Instance() + ->getServiceName()); ASSERT_NE(wifi_offload_, nullptr); wifi_offload_cb_ = new OffloadCallback(); @@ -209,17 +231,10 @@ TEST_F(WifiOffloadHidlTest, getError) { ASSERT_EQ(true, res.no_timeout); } -// A class for test environment setup -class WifiOffloadHalHidlEnvironment : public ::testing::Environment { - public: - virtual void SetUp() {} - virtual void TearDown() {} -}; - int main(int argc, char** argv) { - ::testing::AddGlobalTestEnvironment(new WifiOffloadHalHidlEnvironment); + ::testing::AddGlobalTestEnvironment(WifiOffloadHidlEnvironment::Instance()); ::testing::InitGoogleTest(&argc, argv); - + WifiOffloadHidlEnvironment::Instance()->init(&argc, argv); int status = RUN_ALL_TESTS(); LOG(INFO) << "Test result = " << status; diff --git a/wifi/supplicant/1.0/vts/functional/VtsHalWifiSupplicantV1_0TargetTest.cpp b/wifi/supplicant/1.0/vts/functional/VtsHalWifiSupplicantV1_0TargetTest.cpp index 33f30496d2..adf2a85ab5 100644 --- a/wifi/supplicant/1.0/vts/functional/VtsHalWifiSupplicantV1_0TargetTest.cpp +++ b/wifi/supplicant/1.0/vts/functional/VtsHalWifiSupplicantV1_0TargetTest.cpp @@ -16,22 +16,34 @@ #include -#include - #include "supplicant_hidl_test_utils.h" +#include "wifi_hidl_test_utils.h" -class SupplicantHidlEnvironment : public ::testing::Environment { +class WifiSupplicantHidlEnvironment_1_0 : public WifiSupplicantHidlEnvironment { public: - virtual void SetUp() override { - stopSupplicant(); + // get the test environment singleton + static WifiSupplicantHidlEnvironment_1_0* Instance() { + static WifiSupplicantHidlEnvironment_1_0* instance = + new WifiSupplicantHidlEnvironment_1_0; + return instance; } - virtual void TearDown() override { + virtual void registerTestServices() override { + registerTestService<::android::hardware::wifi::V1_0::IWifi>(); + registerTestService< + ::android::hardware::wifi::supplicant::V1_0::ISupplicant>(); } + + private: + WifiSupplicantHidlEnvironment_1_0() {} }; +WifiSupplicantHidlEnvironment* gEnv = + WifiSupplicantHidlEnvironment_1_0::Instance(); + int main(int argc, char** argv) { - ::testing::AddGlobalTestEnvironment(new SupplicantHidlEnvironment); + ::testing::AddGlobalTestEnvironment(gEnv); ::testing::InitGoogleTest(&argc, argv); + gEnv->init(&argc, argv); int status = RUN_ALL_TESTS(); LOG(INFO) << "Test result = " << status; return status; diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp index 3b7550867a..6dd64ec994 100644 --- a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp +++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp @@ -14,8 +14,8 @@ * limitations under the License. */ -#include #include +#include #include #include @@ -49,8 +49,9 @@ using ::android::hidl::manager::V1_0::IServiceNotification; using ::android::wifi_system::InterfaceTool; using ::android::wifi_system::SupplicantManager; +extern WifiSupplicantHidlEnvironment* gEnv; + namespace { -const char kSupplicantServiceName[] = "default"; // Helper function to initialize the driver and firmware to STA mode // using the vendor HAL HIDL interface. @@ -153,19 +154,20 @@ void startSupplicantAndWaitForHidlService() { android::sp notification_listener = new ServiceNotificationListener(); + string service_name = gEnv->getServiceName(); ASSERT_TRUE(notification_listener->registerForHidlServiceNotifications( - kSupplicantServiceName)); + service_name)); SupplicantManager supplicant_manager; ASSERT_TRUE(supplicant_manager.StartSupplicant()); ASSERT_TRUE(supplicant_manager.IsSupplicantRunning()); - ASSERT_TRUE( - notification_listener->waitForHidlService(200, kSupplicantServiceName)); + ASSERT_TRUE(notification_listener->waitForHidlService(200, service_name)); } sp getSupplicant() { - return ::testing::VtsHalHidlTargetTestBase::getService(); + return ::testing::VtsHalHidlTargetTestBase::getService( + gEnv->getServiceName()); } sp getSupplicantStaIface() { diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.h b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.h index 38143e40f9..4426ab689a 100644 --- a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.h +++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.h @@ -22,6 +22,8 @@ #include #include +#include + // Used to stop the android wifi framework before every test. void stopWifiFramework(); void startWifiFramework(); @@ -45,4 +47,13 @@ getSupplicantP2pIface(); bool turnOnExcessiveLogging(); +class WifiSupplicantHidlEnvironment + : public ::testing::VtsHalHidlTargetTestEnvBase { + public: + virtual void HidlSetUp() override { stopSupplicant(); } + virtual void HidlTearDown() override { + startSupplicantAndWaitForHidlService(); + } +}; + #endif /* SUPPLICANT_HIDL_TEST_UTILS_H */