diff options
author | Sohani Rao | 2017-03-29 17:24:12 -0500 |
---|---|---|
committer | Sohani Rao | 2017-04-14 11:55:02 -0500 |
commit | 26e97959c7b5bf8a2b259b2aa665ae4a807f3030 (patch) | |
tree | 96815d4feeaa089addae283ad0b4708bf65bc548 /tests | |
parent | 0e8c587314e8767df30157fd89afd383301c8d96 (diff) | |
download | system-connectivity-wificond-26e97959c7b5bf8a2b259b2aa665ae4a807f3030.tar.gz system-connectivity-wificond-26e97959c7b5bf8a2b259b2aa665ae4a807f3030.tar.xz system-connectivity-wificond-26e97959c7b5bf8a2b259b2aa665ae4a807f3030.zip |
Wificond: Handle Error callback from Offload HAL
Client code changes to handle error can be reported by the Offload HAL
service and corresponding unit tests.
Bug: 32842314
Test: Unit tests
Change-Id: I17666c9faa2979c894a3b76559e3b36ed92ff2a9
Diffstat (limited to 'tests')
-rw-r--r-- | tests/mock_offload_callback_handlers.cpp | 26 | ||||
-rw-r--r-- | tests/mock_offload_callback_handlers.h | 45 | ||||
-rw-r--r-- | tests/mock_offload_service_utils.h | 3 | ||||
-rw-r--r-- | tests/offload_callback_test.cpp | 49 | ||||
-rw-r--r-- | tests/offload_scan_manager_test.cpp | 50 |
5 files changed, 144 insertions, 29 deletions
diff --git a/tests/mock_offload_callback_handlers.cpp b/tests/mock_offload_callback_handlers.cpp new file mode 100644 index 0000000..125d7fd --- /dev/null +++ b/tests/mock_offload_callback_handlers.cpp | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2017 The Android Open Source Project | ||
3 | * | ||
4 | * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | * you may not use this file except in compliance with the License. | ||
6 | * You may obtain a copy of the License at | ||
7 | * | ||
8 | * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | * | ||
10 | * Unless required by applicable law or agreed to in writing, software | ||
11 | * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | * See the License for the specific language governing permissions and | ||
14 | * limitations under the License. | ||
15 | */ | ||
16 | |||
17 | #include "wificond/tests/mock_offload_callback_handlers.h" | ||
18 | |||
19 | namespace android { | ||
20 | namespace wificond { | ||
21 | |||
22 | MockOffloadCallbackHandlers::MockOffloadCallbackHandlers() { | ||
23 | } | ||
24 | |||
25 | } // namespace wificond | ||
26 | } // namespace android | ||
diff --git a/tests/mock_offload_callback_handlers.h b/tests/mock_offload_callback_handlers.h new file mode 100644 index 0000000..09b2e14 --- /dev/null +++ b/tests/mock_offload_callback_handlers.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2016 The Android Open Source Project | ||
3 | * | ||
4 | * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | * you may not use this file except in compliance with the License. | ||
6 | * You may obtain a copy of the License at | ||
7 | * | ||
8 | * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | * | ||
10 | * Unless required by applicable law or agreed to in writing, software | ||
11 | * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | * See the License for the specific language governing permissions and | ||
14 | * limitations under the License. | ||
15 | */ | ||
16 | |||
17 | #ifndef WIFICOND_TESTS_MOCK_OFFLOAD_CALLBACK_HANDLERS_H_ | ||
18 | #define WIFICOND_TESTS_MOCK_OFFLOAD_CALLBACK_HANDLERS_H_ | ||
19 | |||
20 | #include <gmock/gmock.h> | ||
21 | #include <gtest/gtest.h> | ||
22 | |||
23 | #include "wificond/scanning/offload/offload_callback_handlers.h" | ||
24 | #include <android/hardware/wifi/offload/1.0/IOffload.h> | ||
25 | |||
26 | using android::hardware::wifi::offload::V1_0::ScanResult; | ||
27 | using android::hardware::wifi::offload::V1_0::OffloadStatus; | ||
28 | |||
29 | namespace android { | ||
30 | namespace wificond { | ||
31 | |||
32 | class MockOffloadCallbackHandlers : public OffloadCallbackHandlers { | ||
33 | public: | ||
34 | MockOffloadCallbackHandlers(); | ||
35 | ~MockOffloadCallbackHandlers() override = default; | ||
36 | |||
37 | MOCK_METHOD1(OnScanResultHandler, void(const std::vector<ScanResult>& scanResult)); | ||
38 | MOCK_METHOD1(OnErrorHandler, void(OffloadStatus)); | ||
39 | }; | ||
40 | |||
41 | } // namespace wificond | ||
42 | } // namespace android | ||
43 | |||
44 | #endif // WIFICOND_TESTS_MOCK_OFFLOAD_CALLBACK_HANDLERS_H_ | ||
45 | |||
diff --git a/tests/mock_offload_service_utils.h b/tests/mock_offload_service_utils.h index eb39108..84bfc21 100644 --- a/tests/mock_offload_service_utils.h +++ b/tests/mock_offload_service_utils.h | |||
@@ -22,6 +22,7 @@ | |||
22 | 22 | ||
23 | #include "wificond/scanning/offload/offload_callback.h" | 23 | #include "wificond/scanning/offload/offload_callback.h" |
24 | #include "wificond/scanning/offload/offload_service_utils.h" | 24 | #include "wificond/scanning/offload/offload_service_utils.h" |
25 | #include "wificond/scanning/offload/offload_callback_handlers.h" | ||
25 | #include <android/hardware/wifi/offload/1.0/IOffload.h> | 26 | #include <android/hardware/wifi/offload/1.0/IOffload.h> |
26 | 27 | ||
27 | using android::hardware::wifi::offload::V1_0::IOffload; | 28 | using android::hardware::wifi::offload::V1_0::IOffload; |
@@ -36,7 +37,7 @@ class MockOffloadServiceUtils : public OffloadServiceUtils { | |||
36 | 37 | ||
37 | MOCK_METHOD0(GetOffloadService, sp<IOffload>()); | 38 | MOCK_METHOD0(GetOffloadService, sp<IOffload>()); |
38 | MOCK_METHOD1(GetOffloadCallback, sp<OffloadCallback>( | 39 | MOCK_METHOD1(GetOffloadCallback, sp<OffloadCallback>( |
39 | OnOffloadScanResultsReadyHandler handler)); | 40 | OffloadCallbackHandlers* handlers)); |
40 | }; | 41 | }; |
41 | 42 | ||
42 | } // namespace wificond | 43 | } // namespace wificond |
diff --git a/tests/offload_callback_test.cpp b/tests/offload_callback_test.cpp index e49ff80..f36b5e2 100644 --- a/tests/offload_callback_test.cpp +++ b/tests/offload_callback_test.cpp | |||
@@ -24,25 +24,29 @@ | |||
24 | #include "wificond/scanning/scan_result.h" | 24 | #include "wificond/scanning/scan_result.h" |
25 | #include "wificond/scanning/offload/offload_callback.h" | 25 | #include "wificond/scanning/offload/offload_callback.h" |
26 | #include "wificond/tests/offload_test_utils.h" | 26 | #include "wificond/tests/offload_test_utils.h" |
27 | #include "wificond/tests/mock_offload_callback_handlers.h" | ||
27 | 28 | ||
28 | using android::hardware::wifi::offload::V1_0::ScanResult; | 29 | using android::hardware::wifi::offload::V1_0::ScanResult; |
30 | using android::hardware::wifi::offload::V1_0::OffloadStatus; | ||
29 | using android::hardware::hidl_vec; | 31 | using android::hardware::hidl_vec; |
32 | using testing::NiceMock; | ||
30 | 33 | ||
31 | namespace android { | 34 | namespace android { |
32 | namespace wificond { | 35 | namespace wificond { |
33 | 36 | ||
34 | class OffloadCallbackTest: public ::testing::Test { | 37 | class OffloadCallbackTest: public ::testing::Test { |
35 | protected: | 38 | protected: |
36 | virtual void SetUp() { | 39 | virtual void SetUp() { |
37 | dummy_scan_results_ = OffloadTestUtils::createOffloadScanResults(); | 40 | dummy_scan_results_ = OffloadTestUtils::createOffloadScanResults(); |
38 | } | 41 | } |
39 | 42 | ||
40 | void TearDown() override { | 43 | void TearDown() override { |
41 | dummy_scan_results_.clear(); | 44 | dummy_scan_results_.clear(); |
42 | } | 45 | } |
43 | 46 | ||
44 | std::vector<ScanResult> dummy_scan_results_; | 47 | std::vector<ScanResult> dummy_scan_results_; |
45 | std::unique_ptr<OffloadCallback> dut_; | 48 | std::unique_ptr<OffloadCallback> offload_callback_; |
49 | std::unique_ptr<NiceMock<MockOffloadCallbackHandlers>> handlers_; | ||
46 | }; | 50 | }; |
47 | 51 | ||
48 | /** | 52 | /** |
@@ -51,14 +55,33 @@ class OffloadCallbackTest: public ::testing::Test { | |||
51 | */ | 55 | */ |
52 | TEST_F(OffloadCallbackTest, checkScanResultSize) { | 56 | TEST_F(OffloadCallbackTest, checkScanResultSize) { |
53 | std::vector<ScanResult> scan_result; | 57 | std::vector<ScanResult> scan_result; |
54 | dut_.reset(new OffloadCallback( | 58 | handlers_.reset(new NiceMock<MockOffloadCallbackHandlers>()); |
55 | [&scan_result] (std::vector<ScanResult> scanResult) -> void { | 59 | ON_CALL(*handlers_, OnScanResultHandler(testing::_)) |
56 | scan_result = scanResult; | 60 | .WillByDefault(testing::Invoke( |
57 | })); | 61 | [&scan_result] (std::vector<ScanResult> scanResult) -> void { |
62 | scan_result = scanResult; | ||
63 | })); | ||
64 | offload_callback_.reset(new OffloadCallback(handlers_.get())); | ||
58 | hidl_vec<ScanResult> offloadScanResult(dummy_scan_results_); | 65 | hidl_vec<ScanResult> offloadScanResult(dummy_scan_results_); |
59 | dut_->onScanResult(offloadScanResult); | 66 | offload_callback_->onScanResult(offloadScanResult); |
60 | EXPECT_EQ(dummy_scan_results_.size(), scan_result.size()); | 67 | EXPECT_EQ(dummy_scan_results_.size(), scan_result.size()); |
61 | } | 68 | } |
62 | 69 | ||
70 | /** | ||
71 | * Testing OffloadCallback to invoke the registered error handler | ||
72 | */ | ||
73 | TEST_F(OffloadCallbackTest, checkErrorStatus) { | ||
74 | OffloadStatus status_; | ||
75 | handlers_.reset(new NiceMock<MockOffloadCallbackHandlers>()); | ||
76 | ON_CALL(*handlers_, OnErrorHandler(testing::_)) | ||
77 | .WillByDefault(testing::Invoke( | ||
78 | [&status_] (OffloadStatus status) -> void { | ||
79 | status_ = status; | ||
80 | })); | ||
81 | offload_callback_.reset(new OffloadCallback(handlers_.get())); | ||
82 | offload_callback_->onError(OffloadStatus::OFFLOAD_STATUS_ERROR); | ||
83 | EXPECT_EQ(status_, OffloadStatus::OFFLOAD_STATUS_ERROR); | ||
84 | } | ||
85 | |||
63 | } // namespace wificond | 86 | } // namespace wificond |
64 | } // namespace android | 87 | } // namespace android |
diff --git a/tests/offload_scan_manager_test.cpp b/tests/offload_scan_manager_test.cpp index 9409c12..cfccbc4 100644 --- a/tests/offload_scan_manager_test.cpp +++ b/tests/offload_scan_manager_test.cpp | |||
@@ -29,9 +29,10 @@ | |||
29 | #include "wificond/scanning/scan_result.h" | 29 | #include "wificond/scanning/scan_result.h" |
30 | #include "wificond/scanning/offload/offload_callback.h" | 30 | #include "wificond/scanning/offload/offload_callback.h" |
31 | #include "wificond/scanning/offload/offload_scan_manager.h" | 31 | #include "wificond/scanning/offload/offload_scan_manager.h" |
32 | #include "wificond/scanning/offload/offload_callback_handlers.h" | ||
32 | 33 | ||
33 | using android::hardware::wifi::offload::V1_0::ScanResult; | 34 | using android::hardware::wifi::offload::V1_0::ScanResult; |
34 | using android::wificond::OnOffloadScanResultsReadyHandler; | 35 | using android::hardware::wifi::offload::V1_0::OffloadStatus; |
35 | using com::android::server::wifi::wificond::NativeScanResult; | 36 | using com::android::server::wifi::wificond::NativeScanResult; |
36 | using testing::NiceMock; | 37 | using testing::NiceMock; |
37 | using testing::_; | 38 | using testing::_; |
@@ -39,13 +40,18 @@ using testing::Invoke; | |||
39 | using android::sp; | 40 | using android::sp; |
40 | using std::unique_ptr; | 41 | using std::unique_ptr; |
41 | using std::vector; | 42 | using std::vector; |
43 | using std::bind; | ||
44 | |||
45 | using namespace std::placeholders; | ||
42 | 46 | ||
43 | namespace android { | 47 | namespace android { |
44 | namespace wificond { | 48 | namespace wificond { |
45 | 49 | ||
46 | sp<OffloadCallback> CaptureReturnValue(OnOffloadScanResultsReadyHandler handler, | 50 | sp<OffloadCallback> CaptureReturnValue( |
51 | OffloadCallbackHandlers* handler, | ||
47 | sp<OffloadCallback>* offload_callback) { | 52 | sp<OffloadCallback>* offload_callback) { |
48 | *offload_callback = sp<OffloadCallback>(new OffloadCallback(handler)); | 53 | *offload_callback = sp<OffloadCallback>( |
54 | new OffloadCallback(handler)); | ||
49 | return *offload_callback; | 55 | return *offload_callback; |
50 | } | 56 | } |
51 | 57 | ||
@@ -54,7 +60,7 @@ class OffloadScanManagerTest: public ::testing::Test { | |||
54 | virtual void SetUp() { | 60 | virtual void SetUp() { |
55 | ON_CALL(*mock_offload_service_utils_, GetOffloadCallback(_)) | 61 | ON_CALL(*mock_offload_service_utils_, GetOffloadCallback(_)) |
56 | .WillByDefault(Invoke(bind(CaptureReturnValue, | 62 | .WillByDefault(Invoke(bind(CaptureReturnValue, |
57 | std::placeholders::_1, &offload_callback_))); | 63 | _1, &offload_callback_))); |
58 | } | 64 | } |
59 | 65 | ||
60 | void TearDown() override { | 66 | void TearDown() override { |
@@ -65,15 +71,15 @@ class OffloadScanManagerTest: public ::testing::Test { | |||
65 | sp<OffloadCallback> offload_callback_; | 71 | sp<OffloadCallback> offload_callback_; |
66 | unique_ptr<NiceMock<MockOffloadServiceUtils>> mock_offload_service_utils_{ | 72 | unique_ptr<NiceMock<MockOffloadServiceUtils>> mock_offload_service_utils_{ |
67 | new NiceMock<MockOffloadServiceUtils>()}; | 73 | new NiceMock<MockOffloadServiceUtils>()}; |
68 | unique_ptr<OffloadScanManager> dut_; | 74 | unique_ptr<OffloadScanManager> offload_scan_manager_; |
69 | }; | 75 | }; |
70 | 76 | ||
71 | /** | 77 | /** |
72 | * Testing OffloadScanManager with OffloadServiceUtils null argument | 78 | * Testing OffloadScanManager with OffloadServiceUtils null argument |
73 | */ | 79 | */ |
74 | TEST_F(OffloadScanManagerTest, ServiceUtilsNotAvailableTest) { | 80 | TEST_F(OffloadScanManagerTest, ServiceUtilsNotAvailableTest) { |
75 | dut_.reset(new OffloadScanManager(nullptr, nullptr)); | 81 | offload_scan_manager_.reset(new OffloadScanManager(nullptr, nullptr)); |
76 | EXPECT_EQ(false, dut_->isServiceAvailable()); | 82 | EXPECT_EQ(OffloadScanManager::kError, offload_scan_manager_->getOffloadStatus()); |
77 | } | 83 | } |
78 | 84 | ||
79 | /** | 85 | /** |
@@ -83,9 +89,9 @@ TEST_F(OffloadScanManagerTest, ServiceUtilsNotAvailableTest) { | |||
83 | TEST_F(OffloadScanManagerTest, ServiceNotAvailableTest) { | 89 | TEST_F(OffloadScanManagerTest, ServiceNotAvailableTest) { |
84 | ON_CALL(*mock_offload_service_utils_, GetOffloadService()) | 90 | ON_CALL(*mock_offload_service_utils_, GetOffloadService()) |
85 | .WillByDefault(testing::Return(nullptr)); | 91 | .WillByDefault(testing::Return(nullptr)); |
86 | dut_.reset(new OffloadScanManager(mock_offload_service_utils_.get(), | 92 | offload_scan_manager_.reset(new OffloadScanManager(mock_offload_service_utils_.get(), |
87 | nullptr)); | 93 | [] (std::vector<NativeScanResult> scanResult) -> void {})); |
88 | EXPECT_EQ(false, dut_->isServiceAvailable()); | 94 | EXPECT_EQ(OffloadScanManager::kNoService, offload_scan_manager_->getOffloadStatus()); |
89 | } | 95 | } |
90 | 96 | ||
91 | /** | 97 | /** |
@@ -96,9 +102,9 @@ TEST_F(OffloadScanManagerTest, ServiceAvailableTest) { | |||
96 | EXPECT_CALL(*mock_offload_service_utils_, GetOffloadService()); | 102 | EXPECT_CALL(*mock_offload_service_utils_, GetOffloadService()); |
97 | ON_CALL(*mock_offload_service_utils_, GetOffloadService()) | 103 | ON_CALL(*mock_offload_service_utils_, GetOffloadService()) |
98 | .WillByDefault(testing::Return(mock_offload_)); | 104 | .WillByDefault(testing::Return(mock_offload_)); |
99 | dut_ .reset(new OffloadScanManager(mock_offload_service_utils_.get(), | 105 | offload_scan_manager_ .reset(new OffloadScanManager(mock_offload_service_utils_.get(), |
100 | [] (vector<NativeScanResult> scanResult) -> void {})); | 106 | [] (vector<NativeScanResult> scanResult) -> void {})); |
101 | EXPECT_EQ(true, dut_->isServiceAvailable()); | 107 | EXPECT_EQ(OffloadScanManager::kNoError, offload_scan_manager_->getOffloadStatus()); |
102 | } | 108 | } |
103 | 109 | ||
104 | /** | 110 | /** |
@@ -111,7 +117,7 @@ TEST_F(OffloadScanManagerTest, CallbackInvokedTest) { | |||
111 | EXPECT_CALL(*mock_offload_service_utils_, GetOffloadService()); | 117 | EXPECT_CALL(*mock_offload_service_utils_, GetOffloadService()); |
112 | ON_CALL(*mock_offload_service_utils_, GetOffloadService()) | 118 | ON_CALL(*mock_offload_service_utils_, GetOffloadService()) |
113 | .WillByDefault(testing::Return(mock_offload_)); | 119 | .WillByDefault(testing::Return(mock_offload_)); |
114 | dut_.reset(new OffloadScanManager(mock_offload_service_utils_.get(), | 120 | offload_scan_manager_.reset(new OffloadScanManager(mock_offload_service_utils_.get(), |
115 | [&callback_invoked] (vector<NativeScanResult> scanResult) -> void { | 121 | [&callback_invoked] (vector<NativeScanResult> scanResult) -> void { |
116 | callback_invoked = true; | 122 | callback_invoked = true; |
117 | })); | 123 | })); |
@@ -120,5 +126,19 @@ TEST_F(OffloadScanManagerTest, CallbackInvokedTest) { | |||
120 | EXPECT_EQ(true, callback_invoked); | 126 | EXPECT_EQ(true, callback_invoked); |
121 | } | 127 | } |
122 | 128 | ||
123 | } // wificond | 129 | /** |
124 | } //android | 130 | * Testing OffloadScanManager when service is available and valid handler |
131 | * is registered, ensure that error callback is invoked | ||
132 | */ | ||
133 | TEST_F(OffloadScanManagerTest, ErrorCallbackInvokedTest) { | ||
134 | EXPECT_CALL(*mock_offload_service_utils_, GetOffloadService()); | ||
135 | ON_CALL(*mock_offload_service_utils_, GetOffloadService()) | ||
136 | .WillByDefault(testing::Return(mock_offload_)); | ||
137 | offload_scan_manager_.reset(new OffloadScanManager(mock_offload_service_utils_.get(), | ||
138 | [this] (std::vector<NativeScanResult> scanResult) -> void {})); | ||
139 | offload_callback_->onError(OffloadStatus::OFFLOAD_STATUS_ERROR); | ||
140 | EXPECT_EQ(offload_scan_manager_->getOffloadStatus(), OffloadScanManager::kError); | ||
141 | } | ||
142 | |||
143 | } // namespace wificond | ||
144 | } // namespace android | ||