1 /*
2 * Copyright (c) 2022 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 <securec.h>
17
18 #include <gtest/gtest.h>
19 #include "softbus_def.h"
20 #include "softbus_errcode.h"
21 #include "softbus_trans_def.h"
22 #include "softbus_app_info.h"
23 #include "softbus_server_frame.h"
24 #include "softbus_adapter_mem.h"
25 #include "client_trans_session_manager.h"
26 #include "client_trans_socket_manager.h"
27 #include "client_trans_session_service.h"
28 #include "client_trans_session_callback.h"
29 #include "client_trans_session_callback.c"
30 #include "softbus_config_type.h"
31 #include "trans_log.h"
32 #include "softbus_feature_config.h"
33 #include "softbus_conn_interface.h"
34 #include "auth_interface.h"
35 #include "bus_center_manager.h"
36 #include "trans_session_service.h"
37
38 #define TRANS_TEST_SESSION_ID 10
39 #define TRANS_TEST_PID 0
40 #define TRANS_TEST_UID 0
41 #define TRANS_TEST_CHANNEL_ID 1000
42 #define TRANS_TEST_FILE_ENCRYPT 10
43 #define TRANS_TEST_ALGORITHM 1
44 #define TRANS_TEST_CRC 1
45 #define TRANS_TEST_EVENT_ID 1
46 #define TRANS_TEST_TV_COUNT 1
47 #define TRANS_TEST_AUTH_DATA "test auth message data"
48
49 #define TRANS_TEST_INVALID_CHANNEL_ID (-1)
50
51 #define MAX_SESSION_SERVER_NUM 32
52
53 using namespace testing::ext;
54
55 namespace OHOS {
56
57 const char *g_pkgName = "dms";
58 const char *g_sessionName = "ohos.distributedschedule.dms.test";
59 const char *g_networkId = "ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF0";
60 const char *g_deviceId = "ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF0";
61 const char *g_groupid = "TEST_GROUP_ID";
62 static SessionAttribute g_sessionAttr = {
63 .dataType = TYPE_BYTES,
64 };
65 class TransClientSessionCallbackTest : public testing::Test {
66 public:
TransClientSessionCallbackTest()67 TransClientSessionCallbackTest()
68 {}
~TransClientSessionCallbackTest()69 ~TransClientSessionCallbackTest()
70 {}
71 static void SetUpTestCase(void);
72 static void TearDownTestCase(void);
73 void SetUp() override
74 {}
75 void TearDown() override
76 {}
77 };
78
SetUpTestCase(void)79 void TransClientSessionCallbackTest::SetUpTestCase(void)
80 {
81 SoftbusConfigInit();
82 ConnServerInit();
83 AuthInit();
84 BusCenterServerInit();
85 TransServerInit();
86 int32_t ret = TransClientInit();
87 ASSERT_EQ(ret, SOFTBUS_OK);
88 }
89
TearDownTestCase(void)90 void TransClientSessionCallbackTest::TearDownTestCase(void)
91 {
92 ConnServerDeinit();
93 AuthDeinit();
94 BusCenterServerDeinit();
95 TransServerDeinit();
96 }
97
OnSessionOpened(int32_t sessionId, int32_t result)98 static int32_t OnSessionOpened(int32_t sessionId, int32_t result)
99 {
100 TRANS_LOGI(TRANS_TEST, "session opened, sessionId=%{public}d", sessionId);
101 return SOFTBUS_OK;
102 }
103
OnSessionClosed(int32_t sessionId)104 static void OnSessionClosed(int32_t sessionId)
105 {
106 TRANS_LOGI(TRANS_TEST, "session closed, sessionId=%{public}d", sessionId);
107 }
108
OnBytesReceived(int32_t sessionId, const void *data, unsigned int len)109 static void OnBytesReceived(int32_t sessionId, const void *data, unsigned int len)
110 {
111 TRANS_LOGI(TRANS_TEST, "session bytes received, sessionId=%{public}d", sessionId);
112 }
113
OnMessageReceived(int32_t sessionId, const void *data, unsigned int len)114 static void OnMessageReceived(int32_t sessionId, const void *data, unsigned int len)
115 {
116 TRANS_LOGI(TRANS_TEST, "session msg received, sessionId=%{public}d", sessionId);
117 }
118
OnStreamReceived(int32_t sessionId, const StreamData *data, const StreamData *ext, const StreamFrameInfo *param)119 static void OnStreamReceived(int32_t sessionId, const StreamData *data,
120 const StreamData *ext, const StreamFrameInfo *param)
121 {
122 TRANS_LOGI(TRANS_TEST, "session stream received, sessionId=%{public}d", sessionId);
123 }
124
OnQosEvent(int32_t sessionId, int32_t eventId, int32_t tvCount, const QosTv *tvList)125 static void OnQosEvent(int32_t sessionId, int32_t eventId, int32_t tvCount, const QosTv *tvList)
126 {
127 TRANS_LOGI(TRANS_TEST, "session Qos event emit, sessionId=%{public}d", sessionId);
128 }
129 static ISessionListener g_sessionlistener = {
130 .OnSessionOpened = OnSessionOpened,
131 .OnSessionClosed = OnSessionClosed,
132 .OnBytesReceived = OnBytesReceived,
133 .OnMessageReceived = OnMessageReceived,
134 .OnStreamReceived = OnStreamReceived,
135 .OnQosEvent = OnQosEvent,
136 };
137
TestGenerateCommParam(SessionParam *sessionParam)138 static void TestGenerateCommParam(SessionParam *sessionParam)
139 {
140 sessionParam->sessionName = g_sessionName;
141 sessionParam->peerSessionName = g_sessionName;
142 sessionParam->peerDeviceId = g_deviceId;
143 sessionParam->groupId = g_groupid;
144 sessionParam->attr = &g_sessionAttr;
145 }
146
TestGenerateChannInfo(ChannelInfo *channel)147 static int32_t TestGenerateChannInfo(ChannelInfo *channel)
148 {
149 char *sessionName = (char*)SoftBusCalloc(SESSION_NAME_SIZE_MAX * sizeof(char));
150 char *deviceId = (char*)SoftBusCalloc(DEVICE_ID_SIZE_MAX * sizeof(char));
151 char *groupId = (char*)SoftBusCalloc(GROUP_ID_SIZE_MAX * sizeof(char));
152
153 if (sessionName == NULL || deviceId == NULL || groupId == NULL ||
154 strcpy_s(sessionName, SESSION_NAME_SIZE_MAX, g_sessionName) != EOK ||
155 strcpy_s(deviceId, SESSION_NAME_SIZE_MAX, g_deviceId) != EOK ||
156 strcpy_s(groupId, SESSION_NAME_SIZE_MAX, g_groupid) != EOK) {
157 SoftBusFree(sessionName);
158 SoftBusFree(deviceId);
159 SoftBusFree(groupId);
160 return SOFTBUS_STRCPY_ERR;
161 }
162
163 channel->peerSessionName = sessionName;
164 channel->peerDeviceId = deviceId;
165 channel->groupId = groupId;
166 channel->channelId = TRANS_TEST_CHANNEL_ID;
167 channel->channelType = CHANNEL_TYPE_BUTT;
168 channel->peerPid = TRANS_TEST_PID;
169 channel->peerUid = TRANS_TEST_UID;
170 channel->isServer = false;
171 channel->businessType = BUSINESS_TYPE_BUTT;
172 channel->routeType = ROUTE_TYPE_ALL;
173 channel->encrypt = TRANS_TEST_FILE_ENCRYPT;
174 channel->algorithm = TRANS_TEST_ALGORITHM;
175 channel->crc = TRANS_TEST_CRC;
176
177 return SOFTBUS_OK;
178 }
179
TestGenerateSession(const SessionParam *param)180 static SessionInfo *TestGenerateSession(const SessionParam *param)
181 {
182 SessionInfo *session = (SessionInfo*)SoftBusCalloc(sizeof(SessionInfo));
183 if (session == NULL) {
184 return NULL;
185 }
186
187 if (strcpy_s(session->info.peerSessionName, SESSION_NAME_SIZE_MAX, param->peerSessionName) != EOK ||
188 strcpy_s(session->info.peerDeviceId, DEVICE_ID_SIZE_MAX, param->peerDeviceId) != EOK ||
189 strcpy_s(session->info.groupId, GROUP_ID_SIZE_MAX, param->groupId) != EOK) {
190 SoftBusFree(session);
191 return NULL;
192 }
193
194 session->sessionId = TRANS_TEST_SESSION_ID;
195 session->channelId = TRANS_TEST_CHANNEL_ID;
196 session->channelType = CHANNEL_TYPE_BUTT;
197 session->isServer = false;
198 session->enableStatus = ENABLE_STATUS_INIT;
199 session->routeType = ROUTE_TYPE_ALL;
200 session->info.flag = TYPE_BYTES;
201 session->isEncrypt = true;
202 session->algorithm = TRANS_TEST_ALGORITHM;
203 session->fileEncrypt = TRANS_TEST_FILE_ENCRYPT;
204 session->crc = TRANS_TEST_CRC;
205
206 return session;
207 }
208
RelesseChannInfo(ChannelInfo *channel)209 static void RelesseChannInfo(ChannelInfo *channel)
210 {
211 if (channel != NULL) {
212 if (channel->peerSessionName != NULL) {
213 SoftBusFree(channel->peerSessionName);
214 }
215 if (channel->peerDeviceId != NULL) {
216 SoftBusFree(channel->peerDeviceId);
217 }
218 if (channel->groupId != NULL) {
219 SoftBusFree(channel->groupId);
220 }
221 SoftBusFree(channel);
222 }
223 channel = NULL;
224 }
225
226 /**
227 * @tc.name: TransClientSessionCallbackTest01
228 * @tc.desc: Transmission sdk session callback accept session as server with different parameters.
229 * @tc.type: FUNC
230 * @tc.require:
231 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest01, TestSize.Level1)232 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest01, TestSize.Level1)
233 {
234 int32_t sessionId = 0;
235 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
236 ASSERT_TRUE(sessionParam != NULL);
237 TestGenerateCommParam(sessionParam);
238 int32_t ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &g_sessionlistener);
239 ASSERT_EQ(ret, SOFTBUS_OK);
240 ChannelInfo *channel = (ChannelInfo*)SoftBusCalloc(sizeof(ChannelInfo));
241 ASSERT_TRUE(channel != NULL);
242 ret = TestGenerateChannInfo(channel);
243 ASSERT_EQ(ret, SOFTBUS_OK);
244 ret = AcceptSessionAsServer(g_sessionName, channel, TYPE_BUTT, &sessionId);
245 EXPECT_EQ(ret, SOFTBUS_OK);
246 const char *sessionName = "com.huawei.devicegroupmanage";
247 ret = AcceptSessionAsServer(sessionName, channel, TYPE_BUTT, &sessionId);
248 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSIONSERVER_NOT_CREATED);
249 SoftBusFree(channel->groupId);
250 channel->groupId = NULL;
251 ret = AcceptSessionAsServer(g_sessionName, channel, TYPE_BUTT, &sessionId);
252 EXPECT_EQ(ret, SOFTBUS_STRCPY_ERR);
253 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
254 EXPECT_EQ(ret, SOFTBUS_OK);
255 RelesseChannInfo(channel);
256 }
257
258 /**
259 * @tc.name: TransClientSessionCallbackTest02
260 * @tc.desc: Transmission sdk session callback get session callback by channe id with different parameters.
261 * @tc.type: FUNC
262 * @tc.require:
263 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest02, TestSize.Level1)264 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest02, TestSize.Level1)
265 {
266 int32_t sessionId = 0;
267 ISessionListener listener = {0};
268 int32_t ret = GetSessionCallbackByChannelId(TRANS_TEST_INVALID_CHANNEL_ID, CHANNEL_TYPE_BUTT,
269 &sessionId, &listener);
270 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
271 ret = GetSessionCallbackByChannelId(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, NULL, &listener);
272 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
273 ret = GetSessionCallbackByChannelId(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, &sessionId, NULL);
274 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
275 ret = GetSessionCallbackByChannelId(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, &sessionId, &listener);
276 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
277 ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &g_sessionlistener);
278 EXPECT_EQ(ret, SOFTBUS_OK);
279 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
280 ASSERT_TRUE(sessionParam != NULL);
281 TestGenerateCommParam(sessionParam);
282 SessionInfo *session = TestGenerateSession(sessionParam);
283 ASSERT_TRUE(session != NULL);
284 ret = ClientAddNewSession(g_sessionName, session);
285 ASSERT_EQ(ret, SOFTBUS_OK);
286 ret = GetSessionCallbackByChannelId(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, &sessionId, &listener);
287 EXPECT_EQ(ret, SOFTBUS_OK);
288 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
289 EXPECT_EQ(ret, SOFTBUS_OK);
290 SoftBusFree(sessionParam);
291 }
292
293 /**
294 * @tc.name: TransClientSessionCallbackTest03
295 * @tc.desc: Transmission sdk session callback on session opened with invalid parameters.
296 * @tc.type: FUNC
297 * @tc.require:
298 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest03, TestSize.Level1)299 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest03, TestSize.Level1)
300 {
301 ISessionListener sessionlistener = {
302 .OnSessionOpened = NULL,
303 .OnSessionClosed = OnSessionClosed,
304 .OnBytesReceived = OnBytesReceived,
305 .OnMessageReceived = OnMessageReceived,
306 };
307 ChannelInfo *channel = (ChannelInfo*)SoftBusCalloc(sizeof(ChannelInfo));
308 ASSERT_TRUE(channel != NULL);
309 int32_t ret = TestGenerateChannInfo(channel);
310 ASSERT_EQ(ret, SOFTBUS_OK);
311 ret = TransOnSessionOpened(NULL, channel, TYPE_BUTT);
312 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
313 ret = TransOnSessionOpened(g_sessionName, NULL, TYPE_BUTT);
314 EXPECT_EQ(ret, SOFTBUS_INVALID_PARAM);
315 ret = TransOnSessionOpened(g_sessionName, channel, TYPE_BUTT);
316 EXPECT_EQ(ret, SOFTBUS_NOT_FIND);
317 ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &sessionlistener);
318 ASSERT_EQ(ret, SOFTBUS_OK);
319 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
320 ASSERT_TRUE(sessionParam != NULL);
321 TestGenerateCommParam(sessionParam);
322 SessionInfo *session = TestGenerateSession(sessionParam);
323 ASSERT_TRUE(session != NULL);
324 ret = ClientAddNewSession(g_sessionName, session);
325 ASSERT_EQ(ret, SOFTBUS_OK);
326 ret = TransOnSessionOpened(g_sessionName, channel, TYPE_BUTT);
327 EXPECT_EQ(ret, SOFTBUS_TRANS_ON_SESSION_OPENED_FAILED);
328 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
329 EXPECT_EQ(ret, SOFTBUS_OK);
330 RelesseChannInfo(channel);
331 SoftBusFree(sessionParam);
332 }
333
334 /**
335 * @tc.name: TransClientSessionCallbackTest04
336 * @tc.desc: Transmission sdk session callback on session opened with different parameters.
337 * @tc.type: FUNC
338 * @tc.require:
339 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest04, TestSize.Level1)340 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest04, TestSize.Level1)
341 {
342 ChannelInfo *channel = (ChannelInfo*)SoftBusCalloc(sizeof(ChannelInfo));
343 ASSERT_TRUE(channel != NULL);
344 int32_t ret = TestGenerateChannInfo(channel);
345 ASSERT_EQ(ret, SOFTBUS_OK);
346 ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &g_sessionlistener);
347 ASSERT_EQ(ret, SOFTBUS_OK);
348 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
349 ASSERT_TRUE(sessionParam != NULL);
350 TestGenerateCommParam(sessionParam);
351 SessionInfo *session = TestGenerateSession(sessionParam);
352 ASSERT_TRUE(session != NULL);
353 ret = ClientAddNewSession(g_sessionName, session);
354 ASSERT_EQ(ret, SOFTBUS_OK);
355 channel->channelType = TYPE_BUTT;
356 ret = TransOnSessionOpened(g_sessionName, channel, TYPE_BYTES);
357 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
358 channel->isServer = true;
359 ret = TransOnSessionOpened(g_sessionName, channel, TYPE_BYTES);
360 EXPECT_EQ(ret, SOFTBUS_OK);
361 ret = TransOnSessionOpenFailed(TRANS_TEST_CHANNEL_ID, TYPE_BYTES, SOFTBUS_NO_INIT);
362 EXPECT_EQ(ret, SOFTBUS_OK);
363 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
364 EXPECT_EQ(ret, SOFTBUS_OK);
365 RelesseChannInfo(channel);
366 SoftBusFree(sessionParam);
367 }
368
369 /**
370 * @tc.name: TransClientSessionCallbackTest05
371 * @tc.desc: Transmission sdk session callback on session closed.
372 * @tc.type: FUNC
373 * @tc.require:
374 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest05, TestSize.Level1)375 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest05, TestSize.Level1)
376 {
377 int32_t ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &g_sessionlistener);
378 ASSERT_EQ(ret, SOFTBUS_OK);
379 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
380 ASSERT_TRUE(sessionParam != NULL);
381 TestGenerateCommParam(sessionParam);
382 SessionInfo *session = TestGenerateSession(sessionParam);
383 ASSERT_TRUE(session != NULL);
384 ret = ClientAddNewSession(g_sessionName, session);
385 ASSERT_EQ(ret, SOFTBUS_OK);
386 ret = TransOnSessionClosed(INVALID_CHANNEL_ID, CHANNEL_TYPE_BUTT, SHUTDOWN_REASON_UNKNOWN);
387 EXPECT_EQ(ret, SOFTBUS_NO_INIT);
388 ret = TransOnSessionClosed(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, SHUTDOWN_REASON_UNKNOWN);
389 EXPECT_EQ(ret, SOFTBUS_OK);
390 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
391 EXPECT_EQ(ret, SOFTBUS_OK);
392 SoftBusFree(sessionParam);
393 }
394
395 /**
396 * @tc.name: TransClientSessionCallbackTest06
397 * @tc.desc: Transmission sdk session callback process receive file data with different parameter.
398 * @tc.type: FUNC
399 * @tc.require:
400 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest06, TestSize.Level1)401 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest06, TestSize.Level1)
402 {
403 int32_t sessionId = 0;
404 SessionEnableStatus isEnabled = ENABLE_STATUS_INIT;
405 int32_t ret = ProcessReceivedFileData(TRANS_TEST_SESSION_ID, TRANS_TEST_CHANNEL_ID, TRANS_TEST_AUTH_DATA,
406 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_FIRST_FRAME);
407 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
408 ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &g_sessionlistener);
409 ASSERT_EQ(ret, SOFTBUS_OK);
410 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
411 ASSERT_TRUE(sessionParam != NULL);
412 TestGenerateCommParam(sessionParam);
413 ret = ClientAddSession(sessionParam, &sessionId, &isEnabled);
414 ASSERT_EQ(ret, SOFTBUS_OK);
415 ret = ProcessReceivedFileData(sessionId, TRANS_TEST_CHANNEL_ID, TRANS_TEST_AUTH_DATA,
416 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_FIRST_FRAME);
417 EXPECT_EQ(ret, SOFTBUS_NO_INIT);
418 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
419 EXPECT_EQ(ret, SOFTBUS_OK);
420 SoftBusFree(sessionParam);
421 }
422
423 /**
424 * @tc.name: TransClientSessionCallbackTest07
425 * @tc.desc: Transmission sdk session callback on data received with different parameter.
426 * @tc.type: FUNC
427 * @tc.require:
428 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest07, TestSize.Level1)429 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest07, TestSize.Level1)
430 {
431 int32_t ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, TRANS_TEST_AUTH_DATA,
432 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_FIRST_FRAME);
433 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
434 ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &g_sessionlistener);
435 ASSERT_EQ(ret, SOFTBUS_OK);
436 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
437 ASSERT_TRUE(sessionParam != NULL);
438 TestGenerateCommParam(sessionParam);
439 SessionInfo *session = TestGenerateSession(sessionParam);
440 ASSERT_TRUE(session != NULL);
441 session->channelType = CHANNEL_TYPE_PROXY;
442 ret = ClientAddNewSession(g_sessionName, session);
443 ASSERT_EQ(ret, SOFTBUS_OK);
444 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_PROXY, TRANS_TEST_AUTH_DATA,
445 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_FIRST_FRAME);
446 EXPECT_EQ(ret, SOFTBUS_NO_INIT);
447
448 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_PROXY, TRANS_TEST_AUTH_DATA,
449 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_ONGOINE_FRAME);
450 EXPECT_EQ(ret, SOFTBUS_NOT_FIND);
451
452 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_PROXY, TRANS_TEST_AUTH_DATA,
453 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_LAST_FRAME);
454 EXPECT_EQ(ret, SOFTBUS_NOT_FIND);
455
456 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_PROXY, TRANS_TEST_AUTH_DATA,
457 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_ONLYONE_FRAME);
458 EXPECT_EQ(ret, SOFTBUS_NOT_FIND);
459
460 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_PROXY, TRANS_TEST_AUTH_DATA,
461 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_BYTES);
462 EXPECT_EQ(ret, SOFTBUS_OK);
463 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_PROXY, TRANS_TEST_AUTH_DATA,
464 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_MESSAGE);
465 EXPECT_EQ(ret, SOFTBUS_OK);
466 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
467 EXPECT_EQ(ret, SOFTBUS_OK);
468 SoftBusFree(sessionParam);
469 }
470
471 /**
472 * @tc.name: TransClientSessionCallbackTest08
473 * @tc.desc: Transmission sdk session callback on stream received with different parameter.
474 * @tc.type: FUNC
475 * @tc.require:
476 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest08, TestSize.Level1)477 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest08, TestSize.Level1)
478 {
479 StreamData data = {0};
480 StreamData ext = {0};
481 StreamFrameInfo param = {0};
482 int32_t ret = TransOnOnStreamRecevied(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, &data, &ext, ¶m);
483 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
484 ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &g_sessionlistener);
485 ASSERT_EQ(ret, SOFTBUS_OK);
486 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
487 ASSERT_TRUE(sessionParam != NULL);
488 TestGenerateCommParam(sessionParam);
489 SessionInfo *session = TestGenerateSession(sessionParam);
490 ASSERT_TRUE(session != NULL);
491 ret = ClientAddNewSession(g_sessionName, session);
492 ASSERT_EQ(ret, SOFTBUS_OK);
493 ret = TransOnOnStreamRecevied(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, &data, &ext, ¶m);
494 EXPECT_EQ(ret, SOFTBUS_OK);
495 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
496 EXPECT_EQ(ret, SOFTBUS_OK);
497 SoftBusFree(sessionParam);
498 }
499
500 /**
501 * @tc.name: TransClientSessionCallbackTest09
502 * @tc.desc: Transmission sdk session callback on stream received no callback.
503 * @tc.type: FUNC
504 * @tc.require:
505 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest09, TestSize.Level1)506 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest09, TestSize.Level1)
507 {
508 StreamData data = {0};
509 StreamData ext = {0};
510 StreamFrameInfo param = {0};
511 ISessionListener sessionlistener = {
512 .OnSessionOpened = OnSessionOpened,
513 .OnSessionClosed = OnSessionClosed,
514 .OnBytesReceived = OnBytesReceived,
515 .OnMessageReceived = OnMessageReceived,
516 .OnStreamReceived = NULL,
517 };
518 int32_t ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &sessionlistener);
519 ASSERT_EQ(ret, SOFTBUS_OK);
520 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
521 ASSERT_TRUE(sessionParam != NULL);
522 TestGenerateCommParam(sessionParam);
523 SessionInfo *session = TestGenerateSession(sessionParam);
524 ASSERT_TRUE(session != NULL);
525 ret = ClientAddNewSession(g_sessionName, session);
526 ASSERT_EQ(ret, SOFTBUS_OK);
527 ret = TransOnOnStreamRecevied(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, &data, &ext, ¶m);
528 EXPECT_EQ(ret, SOFTBUS_NO_INIT);
529 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
530 EXPECT_EQ(ret, SOFTBUS_OK);
531 SoftBusFree(sessionParam);
532 }
533
534 /**
535 * @tc.name: TransClientSessionCallbackTest10
536 * @tc.desc: Transmission sdk session callback on qos with different parameter.
537 * @tc.type: FUNC
538 * @tc.require:
539 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest10, TestSize.Level1)540 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest10, TestSize.Level1)
541 {
542 QosTv *tvList = (QosTv*)SoftBusCalloc(sizeof(QosTv));
543 ASSERT_TRUE(tvList != NULL);
544 int32_t ret = TransOnQosEvent(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, TRANS_TEST_EVENT_ID,
545 TRANS_TEST_TV_COUNT, tvList);
546 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
547 ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &g_sessionlistener);
548 ASSERT_EQ(ret, SOFTBUS_OK);
549 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
550 ASSERT_TRUE(sessionParam != NULL);
551 TestGenerateCommParam(sessionParam);
552 SessionInfo *session = TestGenerateSession(sessionParam);
553 ASSERT_TRUE(session != NULL);
554 ret = ClientAddNewSession(g_sessionName, session);
555 ASSERT_EQ(ret, SOFTBUS_OK);
556 ret = TransOnQosEvent(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, TRANS_TEST_EVENT_ID, TRANS_TEST_TV_COUNT, tvList);
557 EXPECT_EQ(ret, SOFTBUS_OK);
558 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
559 EXPECT_EQ(ret, SOFTBUS_OK);
560 SoftBusFree(sessionParam);
561 SoftBusFree(tvList);
562 }
563
564 /**
565 * @tc.name: TransClientSessionCallbackTest11
566 * @tc.desc: Transmission sdk session callback on qos no callback.
567 * @tc.type: FUNC
568 * @tc.require:
569 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest11, TestSize.Level1)570 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest11, TestSize.Level1)
571 {
572 QosTv *tvList = (QosTv*)SoftBusCalloc(sizeof(QosTv));
573 ASSERT_TRUE(tvList != NULL);
574 ISessionListener sessionlistener = {
575 .OnSessionOpened = OnSessionOpened,
576 .OnSessionClosed = OnSessionClosed,
577 .OnBytesReceived = OnBytesReceived,
578 .OnMessageReceived = OnMessageReceived,
579 .OnStreamReceived = OnStreamReceived,
580 .OnQosEvent = NULL,
581 };
582 int32_t ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &sessionlistener);
583 ASSERT_EQ(ret, SOFTBUS_OK);
584 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
585 ASSERT_TRUE(sessionParam != NULL);
586 TestGenerateCommParam(sessionParam);
587 SessionInfo *session = TestGenerateSession(sessionParam);
588 ASSERT_TRUE(session != NULL);
589 ret = ClientAddNewSession(g_sessionName, session);
590 ASSERT_EQ(ret, SOFTBUS_OK);
591 ret = TransOnQosEvent(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, TRANS_TEST_EVENT_ID, TRANS_TEST_TV_COUNT, tvList);
592 EXPECT_EQ(ret, SOFTBUS_NO_INIT);
593 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
594 EXPECT_EQ(ret, SOFTBUS_OK);
595 SoftBusFree(sessionParam);
596 SoftBusFree(tvList);
597 }
598
599 /**
600 * @tc.name: TransClientSessionCallbackTest12
601 * @tc.desc: Transmission sdk session callback on session open failed with no callback.
602 * @tc.type: FUNC
603 * @tc.require:
604 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest12, TestSize.Level1)605 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest12, TestSize.Level1)
606 {
607 ISessionListener sessionlistener = {
608 .OnSessionOpened = NULL,
609 .OnSessionClosed = OnSessionClosed,
610 .OnBytesReceived = OnBytesReceived,
611 .OnMessageReceived = OnMessageReceived,
612 .OnStreamReceived = OnStreamReceived,
613 .OnQosEvent = OnQosEvent,
614 };
615 int32_t ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &sessionlistener);
616 ASSERT_EQ(ret, SOFTBUS_OK);
617 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
618 ASSERT_TRUE(sessionParam != NULL);
619 TestGenerateCommParam(sessionParam);
620 SessionInfo *session = TestGenerateSession(sessionParam);
621 ASSERT_TRUE(session != NULL);
622 ret = ClientAddNewSession(g_sessionName, session);
623 ASSERT_EQ(ret, SOFTBUS_OK);
624 ret = TransOnSessionOpenFailed(TRANS_TEST_CHANNEL_ID, TYPE_BYTES, SOFTBUS_NO_INIT);
625 EXPECT_EQ(ret, SOFTBUS_OK);
626 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
627 EXPECT_EQ(ret, SOFTBUS_OK);
628 SoftBusFree(sessionParam);
629 }
630
631 /**
632 * @tc.name: TransClientSessionCallbackTest13
633 * @tc.desc: Transmission sdk session callback on data received with different parameter.
634 * @tc.type: FUNC
635 * @tc.require:
636 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest13, TestSize.Level1)637 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest13, TestSize.Level1)
638 {
639 int32_t ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_BUTT, TRANS_TEST_AUTH_DATA,
640 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_FIRST_FRAME);
641 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
642 ret = ClientAddSessionServer(SEC_TYPE_PLAINTEXT, g_pkgName, g_sessionName, &g_sessionlistener);
643 ASSERT_EQ(ret, SOFTBUS_OK);
644 SessionParam *sessionParam = (SessionParam*)SoftBusCalloc(sizeof(SessionParam));
645 ASSERT_TRUE(sessionParam != NULL);
646 TestGenerateCommParam(sessionParam);
647 SessionInfo *session = TestGenerateSession(sessionParam);
648 ASSERT_TRUE(session != NULL);
649 session->channelType = CHANNEL_TYPE_UDP;
650 ret = ClientAddNewSession(g_sessionName, session);
651 ASSERT_EQ(ret, SOFTBUS_OK);
652
653 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_UDP, TRANS_TEST_AUTH_DATA,
654 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_ALLFILE_SENT);
655 EXPECT_EQ(ret, SOFTBUS_OK);
656
657 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_UDP, TRANS_TEST_AUTH_DATA,
658 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_CRC_CHECK_FRAME);
659 EXPECT_EQ(ret, SOFTBUS_OK);
660
661 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_UDP, TRANS_TEST_AUTH_DATA,
662 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_RESULT_FRAME);
663 EXPECT_EQ(ret, SOFTBUS_OK);
664
665 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_UDP, TRANS_TEST_AUTH_DATA,
666 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_ACK_REQUEST_SENT);
667 EXPECT_EQ(ret, SOFTBUS_OK);
668
669 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_UDP, TRANS_TEST_AUTH_DATA,
670 strlen(TRANS_TEST_AUTH_DATA), TRANS_SESSION_FILE_ACK_RESPONSE_SENT);
671 EXPECT_EQ(ret, SOFTBUS_OK);
672
673 ret = TransOnDataReceived(TRANS_TEST_CHANNEL_ID, CHANNEL_TYPE_UDP, TRANS_TEST_AUTH_DATA,
674 strlen(TRANS_TEST_AUTH_DATA), (SessionPktType)(TRANS_SESSION_FILE_ACK_RESPONSE_SENT + 1));
675 EXPECT_EQ(ret, SOFTBUS_TRANS_INVALID_SESSION_TYPE);
676
677 ret = ClientDeleteSessionServer(SEC_TYPE_PLAINTEXT, g_sessionName);
678 EXPECT_EQ(ret, SOFTBUS_OK);
679 SoftBusFree(sessionParam);
680 }
681
682 /**
683 * @tc.name: TransClientSessionCallbackTest14
684 * @tc.desc: HandleAsyncBindSuccess not found session.
685 * @tc.type: FUNC
686 * @tc.require:
687 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest14, TestSize.Level1)688 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest14, TestSize.Level1)
689 {
690 SocketLifecycleData lifecycle;
691 lifecycle.bindErrCode = 0;
692 int32_t ret = HandleAsyncBindSuccess(1, NULL, &lifecycle);
693 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
694 }
695
696 /**
697 * @tc.name: TransClientSessionCallbackTest15
698 * @tc.desc: HandleSyncBindSuccess not found session.
699 * @tc.type: FUNC
700 * @tc.require:
701 */
HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest15, TestSize.Level1)702 HWTEST_F(TransClientSessionCallbackTest, TransClientSessionCallbackTest15, TestSize.Level1)
703 {
704 SocketLifecycleData lifecycle;
705 lifecycle.sessionState = SESSION_STATE_CANCELLING;
706 lifecycle.bindErrCode = SOFTBUS_TRANS_STOP_BIND_BY_TIMEOUT;
707 int32_t ret = HandleSyncBindSuccess(1, &lifecycle);
708 EXPECT_EQ(ret, SOFTBUS_OK);
709
710 lifecycle.sessionState = SESSION_STATE_INIT;
711 ret = HandleSyncBindSuccess(1, &lifecycle);
712 EXPECT_EQ(ret, SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND);
713 }
714 }
715