1 /*
2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "thermal_mock_stub_test.h"
17
18 #include <vector>
19
20 #ifdef THERMAL_GTEST
21 #define private public
22 #define protected public
23 #endif
24
25 #include "thermal_action_callback_stub.h"
26 #include "thermal_level_callback_stub.h"
27 #include "thermal_log.h"
28 #include "thermal_mgr_errors.h"
29 #include "thermal_service.h"
30 #include "thermal_srv_ipc_interface_code.h"
31 #include "thermal_srv_proxy.h"
32 #include "thermal_srv_stub.h"
33 #include "thermal_temp_callback_stub.h"
34
35 using namespace testing::ext;
36 using namespace OHOS::PowerMgr;
37 using namespace OHOS;
38 using namespace std;
39
40 namespace {
41 MessageParcel g_data;
42 MessageParcel g_reply;
43 MessageOption g_option;
44 sptr<ThermalService> g_service = nullptr;
45 } // namespace
46
SetUpTestCase()47 void ThermalMockStubTest::SetUpTestCase()
48 {
49 g_service = ThermalService::GetInstance();
50 g_service->InitSystemTestModules();
51 g_service->OnStart();
52 }
53
54 namespace {
55 /**
56 * @tc.name: ThermalMockStubTest001
57 * @tc.desc: proxy test
58 * @tc.type: FUNC
59 * @tc.require: issueI5YZQ2
60 */
61 HWTEST_F(ThermalMockStubTest, ThermalMockStubTest001, TestSize.Level0)
62 {
63 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest001 start.");
64 uint32_t code = 0;
65 MessageParcel data;
66 MessageParcel reply;
67 MessageOption option;
68 sptr<ThermalActionCallbackStub> actionStub = new ThermalActionCallbackStub();
69 ASSERT_FALSE(actionStub == nullptr);
70 EXPECT_EQ(E_GET_THERMAL_SERVICE_FAILED, actionStub->OnRemoteRequest(code, data, reply, option));
71 sptr<ThermalLevelCallbackStub> levelStub = new ThermalLevelCallbackStub();
72 ASSERT_FALSE(levelStub == nullptr);
73 EXPECT_EQ(E_GET_THERMAL_SERVICE_FAILED, levelStub->OnRemoteRequest(code, data, reply, option));
74 sptr<ThermalTempCallbackStub> tempStub = new ThermalTempCallbackStub();
75 ASSERT_FALSE(tempStub == nullptr);
76 EXPECT_EQ(E_GET_THERMAL_SERVICE_FAILED, tempStub->OnRemoteRequest(code, data, reply, option));
77 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest001 end.");
78 }
79
80 /**
81 * @tc.name: ThermalMockStubTest002
82 * @tc.desc: OnRemoteRequest all
83 * @tc.type: FUNC
84 * @tc.require: issueI6KRS8
85 */
86 HWTEST_F(ThermalMockStubTest, ThermalMockStubTest002, TestSize.Level0)
87 {
88 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest002 start.");
89 uint32_t begin = static_cast<uint32_t>(PowerMgr::ThermalMgrInterfaceCode::REG_THERMAL_TEMP_CALLBACK);
90 uint32_t end = static_cast<uint32_t>(PowerMgr::ThermalMgrInterfaceCode::SHELL_DUMP);
91 for (uint32_t code = begin; code <= end; ++code) {
92 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
93 auto ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
94 EXPECT_TRUE(ret == E_READ_PARCEL_ERROR_THERMAL || ret == E_GET_SYSTEM_ABILITY_MANAGER_FAILED_THERMAL ||
95 ret == 0);
96 }
97 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest002 end.");
98 }
99
100 /**
101 * @tc.name: ThermalMockStubTest003
102 * @tc.desc: OnRemoteRequest ReadInterfaceToken
103 * @tc.type: FUNC
104 */
105 HWTEST_F(ThermalMockStubTest, ThermalMockStubTest003, TestSize.Level0)
106 {
107 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest003 start.");
108 uint32_t code = 0;
109 int32_t ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
110 EXPECT_EQ(ret, E_GET_THERMAL_SERVICE_FAILED) << "code: " << code << " ret:" << ret;
111 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest003 end.");
112 }
113
114 /**
115 * @tc.name: ThermalMockStubTest004
116 * @tc.desc: OnRemoteRequest Invalid code
117 * @tc.type: FUNC
118 */
119 HWTEST_F(ThermalMockStubTest, ThermalMockStubTest004, TestSize.Level0)
120 {
121 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest004 start.");
122 uint32_t code = 9999;
123 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
124 int32_t ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
125 EXPECT_EQ(ret, IPC_STUB_UNKNOW_TRANS_ERR) << "code: " << code << " ret:" << ret;
126 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest004 end.");
127 }
128
129 /**
130 * @tc.name: ThermalMockStubTest005
131 * @tc.desc: SubscribeThermalTempCallbackStub
132 * @tc.type: FUNC
133 */
134 HWTEST_F(ThermalMockStubTest, ThermalMockStubTest005, TestSize.Level0)
135 {
136 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest005 start.");
137
138 sptr<ThermalTempCallbackStub> tempStub = new ThermalTempCallbackStub();
139 std::vector<std::string> typeList;
140 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
141 THERMAL_WRITE_PARCEL_NO_RET(g_data, RemoteObject, tempStub->AsObject());
142 THERMAL_WRITE_PARCEL_NO_RET(g_data, StringVector, typeList);
143 uint32_t code = static_cast<uint32_t>(PowerMgr::ThermalMgrInterfaceCode::REG_THERMAL_TEMP_CALLBACK);
144 int32_t ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
145 EXPECT_EQ(ret, ERR_OK) << " ret:" << ret;
146
147 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
148 THERMAL_WRITE_PARCEL_NO_RET(g_data, RemoteObject, tempStub->AsObject());
149 code = static_cast<uint32_t>(PowerMgr::ThermalMgrInterfaceCode::UNREG_THERMAL_TEMP_CALLBACK);
150 ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
151 EXPECT_EQ(ret, ERR_OK) << " ret:" << ret;
152 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest005 end.");
153 }
154
155 /**
156 * @tc.name: ThermalMockStubTest006
157 * @tc.desc: SubscribeThermalLevelCallbackStub
158 * @tc.type: FUNC
159 */
160 HWTEST_F(ThermalMockStubTest, ThermalMockStubTest006, TestSize.Level0)
161 {
162 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest006 start.");
163
164 MessageParcel data;
165 sptr<ThermalLevelCallbackStub> levelStub = new ThermalLevelCallbackStub();
166 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
167 THERMAL_WRITE_PARCEL_NO_RET(g_data, RemoteObject, levelStub->AsObject());
168 uint32_t code = static_cast<uint32_t>(PowerMgr::ThermalMgrInterfaceCode::REG_THERMAL_LEVEL_CALLBACK);
169 int32_t ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
170 EXPECT_EQ(ret, ERR_OK) << " ret:" << ret;
171
172 code = static_cast<uint32_t>(PowerMgr::ThermalMgrInterfaceCode::UNREG_THERMAL_LEVEL_CALLBACK);
173 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
174 THERMAL_WRITE_PARCEL_NO_RET(g_data, RemoteObject, levelStub->AsObject());
175 ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
176 EXPECT_EQ(ret, ERR_OK) << " ret:" << ret;
177
178 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest006 end.");
179 }
180
181 /**
182 * @tc.name: ThermalMockStubTest007
183 * @tc.desc: SubscribeThermalActionCallbackStub
184 * @tc.type: FUNC
185 */
186 HWTEST_F(ThermalMockStubTest, ThermalMockStubTest007, TestSize.Level0)
187 {
188 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest007 start.");
189
190 sptr<ThermalActionCallbackStub> actionStub = new ThermalActionCallbackStub();
191 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
192 std::vector<std::string> actionList;
193 THERMAL_WRITE_PARCEL_NO_RET(g_data, RemoteObject, actionStub->AsObject());
194 THERMAL_WRITE_PARCEL_NO_RET(g_data, StringVector, actionList);
195 THERMAL_WRITE_PARCEL_NO_RET(g_data, String, "ThermalMockStubTest007");
196 uint32_t code = static_cast<uint32_t>(PowerMgr::ThermalMgrInterfaceCode::REG_THERMAL_ACTION_CALLBACK);
197 int32_t ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
198 EXPECT_EQ(ret, ERR_OK) << " ret:" << ret;
199
200 code = static_cast<uint32_t>(PowerMgr::ThermalMgrInterfaceCode::UNREG_THERMAL_ACTION_CALLBACK);
201 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
202 THERMAL_WRITE_PARCEL_NO_RET(g_data, RemoteObject, actionStub->AsObject());
203 ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
204 EXPECT_EQ(ret, ERR_OK) << " ret:" << ret;
205
206 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest007 end.");
207 }
208
209 /**
210 * @tc.name: ThermalMockStubTest008
211 * @tc.desc: GetThermalSrvSensorInfo
212 * @tc.type: FUNC
213 */
214 HWTEST_F(ThermalMockStubTest, ThermalMockStubTest008, TestSize.Level0)
215 {
216 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest008 start.");
217
218 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
219 THERMAL_WRITE_PARCEL_NO_RET(g_data, Uint32, static_cast<uint32_t>(SensorType::BATTERY));
220 uint32_t code = static_cast<uint32_t>(PowerMgr::ThermalMgrInterfaceCode::GET_SENSOR_INFO);
221 int32_t ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
222 EXPECT_EQ(ret, ERR_OK) << " ret:" << ret;
223
224 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest008 end.");
225 }
226
227 /**
228 * @tc.name: ThermalMockStubTest009
229 * @tc.desc: SetSceneStub
230 * @tc.type: FUNC
231 */
232 HWTEST_F(ThermalMockStubTest, ThermalMockStubTest009, TestSize.Level0)
233 {
234 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest009 start.");
235
236 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
237 THERMAL_WRITE_PARCEL_NO_RET(g_data, String, "test");
238 uint32_t code = static_cast<uint32_t>(PowerMgr::ThermalMgrInterfaceCode::SET_SCENE);
239 int32_t ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
240 EXPECT_EQ(ret, ERR_OK) << " ret:" << ret;
241
242 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest009 end.");
243 }
244
245 /**
246 * @tc.name: ThermalMockStubTest010
247 * @tc.desc: ShellDumpStub
248 * @tc.type: FUNC
249 */
250 HWTEST_F(ThermalMockStubTest, ThermalMockStubTest010, TestSize.Level0)
251 {
252 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest010 start.");
253
254 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
255 const int32_t PARAM_MAX_NUM = 100;
256 g_data.WriteUint32(PARAM_MAX_NUM);
257 uint32_t code = static_cast<uint32_t>(PowerMgr::ThermalMgrInterfaceCode::SHELL_DUMP);
258 int32_t ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
259 EXPECT_EQ(ret, E_EXCEED_PARAM_LIMIT) << " ret:" << ret;
260
261 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
262 g_data.WriteUint32(1);
263 g_data.WriteString("");
264 ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
265 EXPECT_EQ(ret, E_READ_PARCEL_ERROR_THERMAL) << " ret:" << ret;
266
267 g_data.WriteInterfaceToken(ThermalSrvProxy::GetDescriptor());
268 g_data.WriteUint32(1);
269 g_data.WriteString("123");
270 ret = g_service->OnRemoteRequest(code, g_data, g_reply, g_option);
271 EXPECT_EQ(ret, ERR_OK) << " ret:" << ret;
272
273 THERMAL_HILOGD(LABEL_TEST, "ThermalMockStubTest010 end.");
274 }
275 } // namespace
276