summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSohani Rao2017-03-29 17:24:12 -0500
committerSohani Rao2017-04-14 11:55:02 -0500
commit26e97959c7b5bf8a2b259b2aa665ae4a807f3030 (patch)
tree96815d4feeaa089addae283ad0b4708bf65bc548 /tests
parent0e8c587314e8767df30157fd89afd383301c8d96 (diff)
downloadsystem-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.cpp26
-rw-r--r--tests/mock_offload_callback_handlers.h45
-rw-r--r--tests/mock_offload_service_utils.h3
-rw-r--r--tests/offload_callback_test.cpp49
-rw-r--r--tests/offload_scan_manager_test.cpp50
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
19namespace android {
20namespace wificond {
21
22MockOffloadCallbackHandlers::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
26using android::hardware::wifi::offload::V1_0::ScanResult;
27using android::hardware::wifi::offload::V1_0::OffloadStatus;
28
29namespace android {
30namespace wificond {
31
32class 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
27using android::hardware::wifi::offload::V1_0::IOffload; 28using 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
28using android::hardware::wifi::offload::V1_0::ScanResult; 29using android::hardware::wifi::offload::V1_0::ScanResult;
30using android::hardware::wifi::offload::V1_0::OffloadStatus;
29using android::hardware::hidl_vec; 31using android::hardware::hidl_vec;
32using testing::NiceMock;
30 33
31namespace android { 34namespace android {
32namespace wificond { 35namespace wificond {
33 36
34class OffloadCallbackTest: public ::testing::Test { 37class 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 */
52TEST_F(OffloadCallbackTest, checkScanResultSize) { 56TEST_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 */
73TEST_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
33using android::hardware::wifi::offload::V1_0::ScanResult; 34using android::hardware::wifi::offload::V1_0::ScanResult;
34using android::wificond::OnOffloadScanResultsReadyHandler; 35using android::hardware::wifi::offload::V1_0::OffloadStatus;
35using com::android::server::wifi::wificond::NativeScanResult; 36using com::android::server::wifi::wificond::NativeScanResult;
36using testing::NiceMock; 37using testing::NiceMock;
37using testing::_; 38using testing::_;
@@ -39,13 +40,18 @@ using testing::Invoke;
39using android::sp; 40using android::sp;
40using std::unique_ptr; 41using std::unique_ptr;
41using std::vector; 42using std::vector;
43using std::bind;
44
45using namespace std::placeholders;
42 46
43namespace android { 47namespace android {
44namespace wificond { 48namespace wificond {
45 49
46sp<OffloadCallback> CaptureReturnValue(OnOffloadScanResultsReadyHandler handler, 50sp<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 */
74TEST_F(OffloadScanManagerTest, ServiceUtilsNotAvailableTest) { 80TEST_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) {
83TEST_F(OffloadScanManagerTest, ServiceNotAvailableTest) { 89TEST_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 */
133TEST_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