diff options
| author | Nate Jiang <qiangjiang@google.com> | 2019-05-28 20:05:25 -0700 |
|---|---|---|
| committer | Nate Jiang <qiangjiang@google.com> | 2019-05-29 10:41:55 -0700 |
| commit | 18408a93d9da2f757618e6ecafa2798a65ee5816 (patch) | |
| tree | 5d292f8663034b4b51dd66f76776183256459f8d /wifi | |
| parent | 87592de6f2c3fccbcaf3705e909b78bd435f2aa7 (diff) | |
| download | android_hardware_interfaces-18408a93d9da2f757618e6ecafa2798a65ee5816.tar.gz android_hardware_interfaces-18408a93d9da2f757618e6ecafa2798a65ee5816.tar.bz2 android_hardware_interfaces-18408a93d9da2f757618e6ecafa2798a65ee5816.zip | |
[VTS][AWARE]Setting callbacktype type to invalid value before invoking HIDL call
Avoid race condition between event callback and wait context. Make
callbacktype to invalid before call function to change it.
Test: atest VtsHalWifiNanV1_0TargetTest VtsHalWifiNanV1_2TargetTest
Bug: 133484330
Change-Id: I9211c3e172727f56d0cceaf91b98f8d5b3c7fc7e
Diffstat (limited to 'wifi')
| -rw-r--r-- | wifi/1.0/vts/functional/wifi_nan_iface_hidl_test.cpp | 3 | ||||
| -rw-r--r-- | wifi/1.2/vts/functional/wifi_nan_iface_hidl_test.cpp | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/wifi/1.0/vts/functional/wifi_nan_iface_hidl_test.cpp b/wifi/1.0/vts/functional/wifi_nan_iface_hidl_test.cpp index 85bcccd23..64b4fb6d1 100644 --- a/wifi/1.0/vts/functional/wifi_nan_iface_hidl_test.cpp +++ b/wifi/1.0/vts/functional/wifi_nan_iface_hidl_test.cpp @@ -91,12 +91,12 @@ class WifiNanIfaceHidlTest : public ::testing::VtsHalHidlTargetTestBase { }; /* Test code calls this function to wait for data/event callback */ + /* Must set callbackType = INVALID before call this function */ inline std::cv_status wait(CallbackType waitForCallbackType) { std::unique_lock<std::mutex> lock(mtx_); EXPECT_NE(INVALID, waitForCallbackType); // can't ASSERT in a non-void-returning method - callbackType = INVALID; std::cv_status status = std::cv_status::no_timeout; auto now = std::chrono::system_clock::now(); while (count_ == 0) { @@ -469,6 +469,7 @@ TEST(WifiNanIfaceHidlTestNoFixture, FailOnIfaceInvalid) { */ TEST_F(WifiNanIfaceHidlTest, getCapabilitiesRequest) { uint16_t inputCmdId = 10; + callbackType = INVALID; ASSERT_EQ(WifiStatusCode::SUCCESS, HIDL_INVOKE(iwifiNanIface, getCapabilitiesRequest, inputCmdId).code); // wait for a callback diff --git a/wifi/1.2/vts/functional/wifi_nan_iface_hidl_test.cpp b/wifi/1.2/vts/functional/wifi_nan_iface_hidl_test.cpp index cc36faeaf..4dbc82bd9 100644 --- a/wifi/1.2/vts/functional/wifi_nan_iface_hidl_test.cpp +++ b/wifi/1.2/vts/functional/wifi_nan_iface_hidl_test.cpp @@ -100,13 +100,13 @@ class WifiNanIfaceHidlTest : public ::testing::VtsHalHidlTargetTestBase { }; /* Test code calls this function to wait for data/event callback */ + /* Must set callbackType = INVALID before call this function */ inline std::cv_status wait(CallbackType waitForCallbackType) { std::unique_lock<std::mutex> lock(mtx_); EXPECT_NE(INVALID, waitForCallbackType); // can't ASSERT in a // non-void-returning method - callbackType = INVALID; std::cv_status status = std::cv_status::no_timeout; auto now = std::chrono::system_clock::now(); while (count_ == 0) { @@ -475,6 +475,7 @@ TEST(WifiNanIfaceHidlTestNoFixture, Create) { */ TEST_F(WifiNanIfaceHidlTest, enableRequest_1_2InvalidArgs) { uint16_t inputCmdId = 10; + callbackType = INVALID; NanEnableRequest nanEnableRequest = {}; NanConfigRequestSupplemental nanConfigRequestSupp = {}; ASSERT_EQ(WifiStatusCode::SUCCESS, @@ -509,6 +510,7 @@ TEST_F(WifiNanIfaceHidlTest, enableRequest_1_2ShimInvalidArgs) { */ TEST_F(WifiNanIfaceHidlTest, configRequest_1_2InvalidArgs) { uint16_t inputCmdId = 10; + callbackType = INVALID; NanConfigRequest nanConfigRequest = {}; NanConfigRequestSupplemental nanConfigRequestSupp = {}; ASSERT_EQ(WifiStatusCode::SUCCESS, |
