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, &param);
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, &param);
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, &param);
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