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