From 08ab488c16a6d801ca875542268b6e3a69ae2f8b Mon Sep 17 00:00:00 2001 From: lesl Date: Tue, 8 Sep 2020 00:06:34 +0800 Subject: [PATCH] wifi: Call terminate in VTS teardown When OEM register different hostapd instance without update the StopHostapd. It will cause VTS clean fail because hostapd process name is the new one. Call terminate to request clean HAL state. Bug: 163170239 Bug: 161682236 Bug: 167636313 Test: atest -c VtsHalWifiHostapdV1_1TargetTest Test: atest -c VtsHalWifiHostapdV1_0TargetTest Change-Id: If56e5b5351abd31865150bdf97d27674dbbc4257 --- .../1.0/vts/functional/hostapd_hidl_call_util.h | 14 ++++++++++++++ .../1.0/vts/functional/hostapd_hidl_test.cpp | 5 ++++- .../1.1/vts/functional/hostapd_hidl_test.cpp | 5 ++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_call_util.h b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_call_util.h index 2f71ccba65..53628d20e1 100644 --- a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_call_util.h +++ b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_call_util.h @@ -97,6 +97,14 @@ typename functionArgSaver::StorageT invokeMethod( EXPECT_TRUE(res.isOk()); return result_buffer.saved_values; } + +// Invokes |void method| on |object| without arguments. +template +void invokeVoidMethodWithoutArguments(MethodT method, ObjectT object) { + const auto& res = ((*object).*method)(); + EXPECT_TRUE(res.isOk()); +} + } // namespace detail } // namespace @@ -125,3 +133,9 @@ typename functionArgSaver::StorageT invokeMethod( std::remove_reference::type::method##_cb>( \ &std::remove_reference::type::method, \ strong_pointer, ##__VA_ARGS__)) + +// Invokes |void method| on |strong_pointer| without arguments. +#define HIDL_INVOKE_VOID_WITHOUT_ARGUMENTS(strong_pointer, method) \ + (detail::invokeVoidMethodWithoutArguments( \ + &std::remove_reference::type::method, \ + strong_pointer)) 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..a4a38dedad 100644 --- a/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp +++ b/wifi/hostapd/1.0/vts/functional/hostapd_hidl_test.cpp @@ -47,7 +47,10 @@ class HostapdHidlTest : public ::testing::VtsHalHidlTargetTestBase { ASSERT_NE(hostapd_.get(), nullptr); } - virtual void TearDown() override { stopHostapd(); } + virtual void TearDown() override { + HIDL_INVOKE_VOID_WITHOUT_ARGUMENTS(hostapd_, terminate); + stopHostapd(); + } protected: std::string getPrimaryWlanIfaceName() { 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..3b3b8c1267 100644 --- a/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test.cpp +++ b/wifi/hostapd/1.1/vts/functional/hostapd_hidl_test.cpp @@ -51,7 +51,10 @@ class HostapdHidlTest : public ::testing::VtsHalHidlTargetTestBase { ASSERT_NE(hostapd_.get(), nullptr); } - virtual void TearDown() override { stopHostapd(); } + virtual void TearDown() override { + HIDL_INVOKE_VOID_WITHOUT_ARGUMENTS(hostapd_, terminate); + stopHostapd(); + } protected: std::string getPrimaryWlanIfaceName() {