• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 #include "net_trans_common.h"
16 #include "wifi_utils.h"
17 #include "accesstoken_kit.h"
18 
19 using namespace std;
20 
21 static INodeStateCb* g_nodeStateCallback = NULL;
22 static ISessionListener* g_sessionlist4Data = NULL;
23 static ISessionListener* g_sessionlist4Ctrl = NULL;
24 static ISessionListener* g_sessionlist4Perf = NULL;
25 static ISessionListener* g_sessionlist4Pass = NULL;
26 static ISessionListener* g_sessionlist4File = NULL;
27 static ISessionListener* g_sessionlist4Proxy = NULL;
28 static ISessionListener  *g_sessionlist4Stream  = NULL;
29 const int ONE_MINUTE = 60;
30 
31 static uint64_t g_transTimeEnd;
32 
33 static const char* def_passwd = "OH2022@xa";
34 static const char* def_ssid = "OpenHarmony_Private_Net_01";
35 static const char* slave_ssid = "OpenHarmony_Private_Net_02";
36 
37 static const int three_seconds = 3;
38 static const int six_seconds = 6;
39 static const int ten_seconds = 10;
40 
41 static void SetupCallback(void);
42 static void TeardownCallback(void);
43 
SetUpTestCase()44 void SetUpTestCase()
45 {
46     LOG("SetUpTestCase");
47     AddPermission();
48     sleep(1);
49     OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
50     sleep(1);
51     TestSetUp();
52     SetupCallback();
53     int ret = RegNodeDeviceStateCb(DEF_PKG_NAME, g_nodeStateCallback);
54     if (SOFTBUS_OK != ret) {
55         LOG("call reg node state callback fail");
56     }
57 }
58 
TearDownTestCase()59 void TearDownTestCase()
60 {
61     LOG("TearDownTestCase");
62     int ret = UnregNodeDeviceStateCb(g_nodeStateCallback);
63     if (SOFTBUS_OK != ret) {
64         LOG("call unReg node state callback fail");
65     }
66     TeardownCallback();
67     TestTearDown();
68 }
69 
OnFileSessionOpened(int sessionId,int result)70 static int OnFileSessionOpened(int sessionId, int result)
71 {
72     uint64_t tokenId = GetTestTokenId();
73     SetSelfTokenID(tokenId);
74     LOG("[cb][file]open session sid[%d],rst[%d]", sessionId, result);
75     return SOFTBUS_OK;
76 }
77 
OnFileSessionClosed(int sessionId)78 static void OnFileSessionClosed(int sessionId)
79 {
80     LOG("[cb][file]close session sid[%d]", sessionId);
81 }
82 
OnFileBytesReceived(int sessionId,const void * data,unsigned int dataLen)83 static void OnFileBytesReceived(int sessionId, const void* data, unsigned int dataLen)
84 {
85     LOG("[cb][file]ByteRec sid:%d, data len:%d", sessionId, dataLen);
86     if (data == NULL) {
87         LOG("[cb][file]ByteRec invalid data=null sid[%d]", sessionId);
88     }
89 }
90 
OnFileMessageReceived(int sessionId,const void * data,unsigned int dataLen)91 static void OnFileMessageReceived(int sessionId, const void* data, unsigned int dataLen)
92 {
93     LOG("[cb][file]MessageRec sid:%d, data len:%d", sessionId, dataLen);
94     if (data == NULL) {
95         LOG("[cb][file]MessageRec invalid data=null sid[%d]", sessionId);
96     }
97 }
98 
OnStreamSessionOpened(int sessionId,int result)99 static int OnStreamSessionOpened(int sessionId, int result)
100 {
101     uint64_t tokenId = GetTestTokenId();
102     SetSelfTokenID(tokenId);
103     LOG("[cb][stream]open session sid[%d],rst[%d]", sessionId, result);
104     return SOFTBUS_OK;
105 }
106 
OnStreamSessionClosed(int sessionId)107 static void OnStreamSessionClosed(int sessionId)
108 {
109     LOG("[cb][stream]close session sid[%d]", sessionId);
110 }
111 
GetNumberInStreamData(const char * streamData)112 static inline int GetNumberInStreamData(const char *streamData)
113 {
114     if (streamData[0] == '1') {
115         return (streamData[1] - '0');
116     } else if (streamData[0] == '2') {
117         return (streamData[1] - '0') * 10 + (streamData[2] - '0');
118     } else if (streamData[0] == '3') {
119         return (streamData[1] - '0') * 100 + (streamData[2] - '0') * 10 + (streamData[3] - '0');
120     } else if (streamData[0] == '4') {
121         return (streamData[1] - '0') * 1000 + (streamData[2] - '0') * 100 + (streamData[3] - '0' * 10 + (streamData[4] - '0'));
122     }
123     return -1;
124 }
125 
StreamReceived(int sessionId,const StreamData * data,const StreamData * ext,const StreamFrameInfo * frame)126 static void StreamReceived(int sessionId, const StreamData *data, const StreamData *ext, const StreamFrameInfo *frame)
127 {
128     g_transTimeEnd = GetCurrentTimeOfMs();
129     int i = GetNumberInStreamData((const char *)data->buf);
130     if (i < 0) {
131         return;
132     }
133     if (i % 60 == 0)
134     {
135         LOG("### RECV counts = %d ", i );
136     } else
137     {
138         LOG("### RECV counts = %d ", i );
139     }
140     if (data != NULL) {
141         LOG("[cb][stream]Rec sid:%d, data= %.*s.\n", sessionId, data->bufLen, data->buf);
142     }
143 }
144 
145 /* session callback for data */
OnDataSessionOpened(int sessionId,int result)146 static int OnDataSessionOpened(int sessionId, int result)
147 {
148     uint64_t tokenId = GetTestTokenId();
149     SetSelfTokenID(tokenId);
150     LOG("[cb][data]session opened  sid:%d,ret:%d", sessionId, result);
151     return SOFTBUS_OK;
152 }
153 
OnDataSessionClosed(int sessionId)154 static void OnDataSessionClosed(int sessionId)
155 {
156     LOG("[cb][data]session closed  sid:%d", sessionId);
157 }
158 
OnDataBytesReceived(int sessionId,const void * data,unsigned int dataLen)159 static void OnDataBytesReceived(int sessionId, const void* data, unsigned int dataLen)
160 {
161     if (sessionId < 0) {
162         LOG("[cb][data]byte received invalid session id[%d]", sessionId);
163         return;
164     }
165     LOG("[cb][data]byte received   sid:%d, data-len:%d", sessionId, dataLen);
166     int ret = SendBytes(sessionId, data, dataLen);
167     LOG("[cb][data]byte received   send back:%d", ret);
168 }
169 
OnDataMessageReceived(int sessionId,const void * data,unsigned int dataLen)170 static void OnDataMessageReceived(int sessionId, const void* data, unsigned int dataLen)
171 {
172     if (sessionId < 0) {
173         LOG("[cb][data]mesg received   invalid session id[%d]", sessionId);
174         return;
175     }
176     LOG("[cb][data]mesg received   sid:%d, data-len:%d", sessionId, dataLen);
177 }
178 
179 /* session callback for control */
GetCodeByMsg(const string & msg)180 static int GetCodeByMsg(const string& msg)
181 {
182     LOG("[ctrl] recv msg content[%s]", msg.c_str());
183     int ret = -1;
184     if (strncmp(msg.c_str(), CTRL_MSG_CLOSE_WIFI_TEN_SEC, strlen(CTRL_MSG_CLOSE_WIFI_TEN_SEC)) == 0) {
185         ret = CTRL_CODE_CLOSE_WIFI_TEN_SEC;
186     } else if (strncmp(msg.c_str(), CTRL_MSG_CLOSE_WIFI_THREE_SEC, strlen(CTRL_MSG_CLOSE_WIFI_THREE_SEC)) == 0) {
187         ret = CTRL_CODE_CLOSE_WIFI_THREE_SEC;
188     } else if (strncmp(msg.c_str(), CTRL_MSG_CLOSE_WIFI_TEN_MIN, strlen(CTRL_MSG_CLOSE_WIFI_TEN_MIN)) == 0) {
189         ret = CTRL_CODE_CLOSE_WIFI_TEN_MIN;
190     } else if (strncmp(msg.c_str(), CTRL_MSG_CLOSE_WIFI_FIVE_MIN, strlen(CTRL_MSG_CLOSE_WIFI_FIVE_MIN)) == 0) {
191         ret = CTRL_CODE_CLOSE_WIFI_FIVE_MIN;
192     } else if (strncmp(msg.c_str(), CTRL_MSG_CHANGE_WIFI_TEN_SEC, strlen(CTRL_MSG_CHANGE_WIFI_TEN_SEC)) == 0) {
193         ret = CTRL_CODE_CHANGE_WIFI_TEN_SEC;
194     } else if (strncmp(msg.c_str(), CTRL_MSG_CHANGE_WIFI_SIXTY_SEC, strlen(CTRL_MSG_CHANGE_WIFI_SIXTY_SEC)) == 0) {
195         ret = CTRL_CODE_CHANGE_WIFI_SIXTY_SEC;
196     } else if (strncmp(msg.c_str(), CTRL_MSG_CLOSE_BR, strlen(CTRL_MSG_CLOSE_BR)) == 0) {
197         ret = CTRL_CODE_CLOSE_BR;
198     } else if (strncmp(msg.c_str(), CTRL_MSG_CLOSE_OPEN_BR, strlen(CTRL_MSG_CLOSE_OPEN_BR)) == 0) {
199         ret = CTRL_CODE_CLOSE_OPEN_BR;
200     } else if (strncmp(msg.c_str(), CTRL_MSG_OPEN_SESSION, strlen(CTRL_MSG_OPEN_SESSION)) == 0) {
201         ret = CTRL_CODE_OPEN_SESSION;
202     } else if (strncmp(msg.c_str(), CTRL_MSG_OPEN_SESSION_MSG, strlen(CTRL_MSG_OPEN_SESSION_MSG)) == 0) {
203         ret = CTRL_CODE_OPEN_SESSION_MSG;
204     } else if (strncmp(msg.c_str(), CTRL_MSG_OPEN_SESSION_NOT_EXIST, strlen(CTRL_MSG_OPEN_SESSION_NOT_EXIST)) == 0) {
205         ret = CTRL_CODE_OPEN_SESSION_NOT_EXIST;
206     }
207     return ret;
208 }
209 
CtrlOperateTask(void * param)210 void* CtrlOperateTask(void* param)
211 {
212     LOG("[operate] start...");
213     int code = -1;
214     if (param != NULL) {
215         code = *((int*)param);
216     }
217     LOG("[operate] code:%d", code);
218     int ret;
219     int sleepTime;
220     switch (code) {
221         case CTRL_CODE_CLOSE_WIFI_TEN_SEC:
222             WiFiUtils ::DisableThenEnableAndConnect(ten_seconds, def_ssid, def_passwd);
223             break;
224         case CTRL_CODE_CLOSE_WIFI_THREE_SEC:
225             WiFiUtils ::DisableThenEnableAndConnect(three_seconds, def_ssid, def_passwd);
226             break;
227         case CTRL_CODE_CLOSE_WIFI_TEN_MIN:
228             sleepTime = six_seconds * ten_seconds * ten_seconds;
229             WiFiUtils ::DisableWifi();
230             while (sleepTime > 0) {
231                 sleep(ten_seconds);
232                 sleepTime -= ten_seconds;
233                 LOG("[operate][close wifi 10mins] wait:%d", sleepTime);
234             }
235             WiFiUtils ::EnableThenConnect(def_ssid, def_passwd);
236             break;
237         case CTRL_CODE_CLOSE_WIFI_FIVE_MIN:
238             sleepTime = three_seconds * ten_seconds * ten_seconds;
239             WiFiUtils ::DisableWifi();
240             while (sleepTime > 0) {
241                 sleep(ten_seconds);
242                 sleepTime -= ten_seconds;
243                 LOG("[operate][close wifi 5mins] wait:%d", sleepTime);
244             }
245             WiFiUtils ::EnableThenConnect(def_ssid, def_passwd);
246             break;
247         case CTRL_CODE_CHANGE_WIFI_TEN_SEC:
248             sleepTime = ten_seconds;
249             ret = WiFiUtils ::ConnectToNew(slave_ssid, def_passwd);
250             LOG("[operate]connect to salve ret:%d", ret);
251             LOG("[operate]start sleep:%d", sleepTime);
252             sleep(sleepTime);
253             ret = WiFiUtils ::ConnectToNew(def_ssid, def_passwd);
254             LOG("[operate]connect to default ret:%d", ret);
255             break;
256         case CTRL_CODE_CHANGE_WIFI_SIXTY_SEC:
257             sleepTime = six_seconds * ten_seconds;
258             ret = WiFiUtils ::ConnectToNew(slave_ssid, def_passwd);
259             LOG("[operate]connect to salve ret:%d", ret);
260             LOG("[operate]start sleep:%d", sleepTime);
261             sleep(sleepTime);
262             ret = WiFiUtils ::ConnectToNew(def_ssid, def_passwd);
263             LOG("[operate]connect to default ret:%d", ret);
264             break;
265         case CTRL_CODE_CLOSE_BR:
266             // close br
267             LOG("[operate]close br TODO...");
268             break;
269         case CTRL_CODE_CLOSE_OPEN_BR:
270             // close open br
271             LOG("[operate]close-open br TODO...");
272             break;
273         case CTRL_CODE_OPEN_SESSION:
274             // open session and send byte
275             LOG("[operate]open session TODO...");
276             break;
277         case CTRL_CODE_OPEN_SESSION_NOT_EXIST:
278             // open session not exist
279             LOG("[operate]open session not exist TODO...");
280             break;
281         case CTRL_CODE_OPEN_SESSION_MSG:
282             // open session and send msg
283             LOG("[operate]open session not exist TODO...");
284             break;
285         default:
286             LOG("[operate]not support this code");
287             break;
288     }
289     free(param);
290     LOG("[operate] end");
291     return nullptr;
292 }
293 
OnCtrlSessionOpened(int sessionId,int result)294 static int OnCtrlSessionOpened(int sessionId, int result)
295 {
296     uint64_t tokenId = GetTestTokenId();
297     SetSelfTokenID(tokenId);
298     LOG("[cb][ctrl]session opened sid:%d, ret:%d", sessionId, result);
299     return SOFTBUS_OK;
300 }
301 
OnCtrlSessionClosed(int sessionId)302 static void OnCtrlSessionClosed(int sessionId)
303 {
304     LOG("[cb][ctrl]session closed sid:%d", sessionId);
305 }
306 
OnCtrlBytesReceived(int sessionId,const void * data,unsigned int dataLen)307 static void OnCtrlBytesReceived(int sessionId, const void* data, unsigned int dataLen)
308 {
309     if (sessionId < 0) {
310         LOG("[cb][ctrl]byte received invalid session id[%d]", sessionId);
311         return;
312     }
313     LOG("[cb][ctrl]byte received sid:%d, data-len:%d", sessionId, dataLen);
314     int ret = SendBytes(sessionId, data, dataLen);
315     LOG("[cb][ctrl]byte received send back:%d", ret);
316 }
317 
OnCtrlMessageReceived(int sessionId,const void * data,unsigned int dataLen)318 static void OnCtrlMessageReceived(int sessionId, const void* data, unsigned int dataLen)
319 {
320     if (sessionId < 0) {
321         LOG("[cb][ctrl]mesg received invalid session id[%d]", sessionId);
322         return;
323     }
324     LOG("[cb][ctrl]mesg received sid:%d, data-len:%d", sessionId, dataLen);
325     // operate
326     unsigned int maxCtrlLen = 25;
327     if (dataLen < maxCtrlLen) {
328         int* code = (int*)malloc(sizeof(int));
329         *code = GetCodeByMsg((char*)data);
330         LOG("[cb][ctrl]GetCodeByMsg is:%d", *code);
331         if (*code != -1) {
332             pthread_t ctrlThread;
333             int ret = pthread_create(&ctrlThread, nullptr, CtrlOperateTask, code);
334             LOG("[cb][ctrl]create ctrl thread ret:%d", ret);
335         } else {
336             free(code);
337         }
338     }
339 }
340 
341 /* session callback for performance */
OnPerfSessionOpened(int sessionId,int result)342 static int OnPerfSessionOpened(int sessionId, int result)
343 {
344     uint64_t tokenId = GetTestTokenId();
345     SetSelfTokenID(tokenId);
346     LOG("[cb][perf]session opened sid:%d, ret:%d", sessionId, result);
347     return SOFTBUS_OK;
348 }
349 
OnPerfSessionClosed(int sessionId)350 static void OnPerfSessionClosed(int sessionId)
351 {
352     LOG("[cb][perf]session closed sid:%d", sessionId);
353 }
354 
OnPerfBytesReceived(int sessionId,const void * data,unsigned int dataLen)355 static void OnPerfBytesReceived(int sessionId, const void* data, unsigned int dataLen)
356 {
357     if (sessionId < 0) {
358         LOG("[cb][perf]byte received invalid session id[%d]", sessionId);
359         return;
360     }
361     LOG("[cb][perf]byte received sid:%d, data-len:%d", sessionId, dataLen);
362     int ret = SendBytes(sessionId, data, dataLen);
363     LOG("[cb][perf]byte received send back:%d", ret);
364 }
365 
OnPerfMessageReceived(int sessionId,const void * data,unsigned int dataLen)366 static void OnPerfMessageReceived(int sessionId, const void* data, unsigned int dataLen)
367 {
368     if (sessionId < 0) {
369         LOG("[cb][perf]mesg received invalid session id[%d]", sessionId);
370         return;
371     }
372     LOG("[cb][perf]mesg received sid:%d, data-len:%d", sessionId, dataLen);
373 }
374 
OnPassSessionOpened(int sessionId,int result)375 static int OnPassSessionOpened(int sessionId, int result)
376 {
377     uint64_t tokenId = GetTestTokenId();
378     SetSelfTokenID(tokenId);
379     LOG("[cb][pass]session opened sid:%d, ret:%d", sessionId, result);
380     return SOFTBUS_OK;
381 }
382 
OnPassSessionClosed(int sessionId)383 static void OnPassSessionClosed(int sessionId)
384 {
385     LOG("[cb][pass]session closed sid:%d", sessionId);
386 }
387 
OnPassBytesReceived(int sessionId,const void * data,unsigned int dataLen)388 static void OnPassBytesReceived(int sessionId, const void* data, unsigned int dataLen)
389 {
390     if (sessionId < 0) {
391         LOG("[cb][pass]byte received invalid session id[%d]", sessionId);
392         return;
393     }
394     LOG("[cb][pass]byte received sid:%d, data-len:%d", sessionId, dataLen);
395 }
396 
OnPassMessageReceived(int sessionId,const void * data,unsigned int dataLen)397 static void OnPassMessageReceived(int sessionId, const void* data, unsigned int dataLen)
398 {
399     if (sessionId < 0) {
400         LOG("[cb][pass]mesg received invalid session id[%d]", sessionId);
401         return;
402     }
403     LOG("[cb][pass]mesg received sid:%d, data-len:%d", sessionId, dataLen);
404 }
405 
OnProxySessionOpened(int sessionId,int result)406 static int OnProxySessionOpened(int sessionId, int result)
407 {
408     uint64_t tokenId = GetTestTokenId();
409     SetSelfTokenID(tokenId);
410     LOG("[cb][Proxy]session opened sid:%d, ret:%d", sessionId, result);
411     return SOFTBUS_OK;
412 }
413 
OnProxySessionClosed(int sessionId)414 static void OnProxySessionClosed(int sessionId)
415 {
416     LOG("[cb][Proxy]session closed sid:%d", sessionId);
417 }
418 
OnProxyBytesReceived(int sessionId,const void * data,unsigned int dataLen)419 static void OnProxyBytesReceived(int sessionId, const void* data, unsigned int dataLen)
420 {
421     if (sessionId < 0) {
422         LOG("[cb][Proxy]byte received invalid session id[%d]", sessionId);
423         return;
424     }
425     LOG("[cb][Proxy]byte received sid:%d, data-len:%d", sessionId, dataLen);
426     int ret = SendBytes(sessionId, data, dataLen);
427     LOG("[cb][Proxy]byte received send back:%d", ret);
428 }
429 
OnProxyMessageReceived(int sessionId,const void * data,unsigned int dataLen)430 static void OnProxyMessageReceived(int sessionId, const void* data, unsigned int dataLen)
431 {
432     if (sessionId < 0) {
433         LOG("[cb][Proxy]mesg received   invalid session id[%d]", sessionId);
434         return;
435     }
436     LOG("[cb][Proxy]mesg received   sid:%d, data-len:%d", sessionId, dataLen);
437 }
438 
439 /* net state callback */
OnNodeOnline(NodeBasicInfo * info)440 static void OnNodeOnline(NodeBasicInfo* info)
441 {
442     if (info == NULL) {
443         LOG("[cb]Online: info is null");
444     }
445     LOG("[cb]Online id:%s, name:%s ,type id:%u", info->networkId, info->deviceName, info->deviceTypeId);
446 }
447 
OnNodeOffline(NodeBasicInfo * info)448 static void OnNodeOffline(NodeBasicInfo* info)
449 {
450     if (info == NULL) {
451         LOG("[cb]Offline: info is null");
452         return;
453     }
454     LOG("[cb]Offline id:%s, name:%s ,type id:%u", info->networkId, info->deviceName, info->deviceTypeId);
455 }
456 
OnNodeBasicInfoChanged(NodeBasicInfoType type,NodeBasicInfo * info)457 static void OnNodeBasicInfoChanged(NodeBasicInfoType type, NodeBasicInfo* info)
458 {
459     if (info == NULL) {
460         LOG("[cb]InfoChanged: info is null, type[%d]", type);
461         return;
462     }
463     LOG("[cb]InfoChanged id: %s, name: %s", info->networkId, info->deviceName);
464 }
465 
onDefNodeStatusChanged(NodeStatusType type,NodeStatus * status)466 static void onDefNodeStatusChanged(NodeStatusType type, NodeStatus *status)
467 {
468     if (status == NULL) {
469         LOG("[cb]StatusChanged: info is null, type[%d]", type);
470         return;
471     }
472     LOG("[cb]StatusChanged id: %s,status: %d", status->basicInfo.networkId, status->authStatus);
473 }
474 
SetupCallback(void)475 static void SetupCallback(void)
476 {
477     if (g_sessionlist4Data == NULL) {
478         g_sessionlist4Data = (ISessionListener*)calloc(1, sizeof(ISessionListener));
479         g_sessionlist4Data->OnSessionOpened = OnDataSessionOpened;
480         g_sessionlist4Data->OnSessionClosed = OnDataSessionClosed;
481         g_sessionlist4Data->OnMessageReceived = OnDataMessageReceived;
482         g_sessionlist4Data->OnBytesReceived = OnDataBytesReceived;
483     }
484     if (g_sessionlist4Ctrl == NULL) {
485         g_sessionlist4Ctrl = (ISessionListener*)calloc(1, sizeof(ISessionListener));
486         g_sessionlist4Ctrl->OnSessionOpened = OnCtrlSessionOpened;
487         g_sessionlist4Ctrl->OnSessionClosed = OnCtrlSessionClosed;
488         g_sessionlist4Ctrl->OnMessageReceived = OnCtrlMessageReceived;
489         g_sessionlist4Ctrl->OnBytesReceived = OnCtrlBytesReceived;
490     }
491     if (g_sessionlist4Perf == NULL) {
492         g_sessionlist4Perf = (ISessionListener*)calloc(1, sizeof(ISessionListener));
493         g_sessionlist4Perf->OnSessionOpened = OnPerfSessionOpened;
494         g_sessionlist4Perf->OnSessionClosed = OnPerfSessionClosed;
495         g_sessionlist4Perf->OnMessageReceived = OnPerfMessageReceived;
496         g_sessionlist4Perf->OnBytesReceived = OnPerfBytesReceived;
497     }
498     if (g_sessionlist4Pass == NULL) {
499         g_sessionlist4Pass = (ISessionListener*)calloc(1, sizeof(ISessionListener));
500         g_sessionlist4Pass->OnSessionOpened = OnPassSessionOpened;
501         g_sessionlist4Pass->OnSessionClosed = OnPassSessionClosed;
502         g_sessionlist4Pass->OnMessageReceived = OnPassMessageReceived;
503         g_sessionlist4Pass->OnBytesReceived = OnPassBytesReceived;
504     }
505     if (g_sessionlist4Proxy == NULL) {
506         g_sessionlist4Proxy = (ISessionListener*)calloc(1, sizeof(ISessionListener));
507         g_sessionlist4Proxy->OnSessionOpened = OnProxySessionOpened;
508         g_sessionlist4Proxy->OnSessionClosed = OnProxySessionClosed;
509         g_sessionlist4Proxy->OnMessageReceived = OnProxyMessageReceived;
510         g_sessionlist4Proxy->OnBytesReceived = OnProxyBytesReceived;
511     }
512     if (g_sessionlist4File == NULL) {
513         g_sessionlist4File = (ISessionListener*)calloc(1, sizeof(ISessionListener));
514         g_sessionlist4File->OnSessionOpened = OnFileSessionOpened;
515         g_sessionlist4File->OnSessionClosed = OnFileSessionClosed;
516         g_sessionlist4File->OnMessageReceived = OnFileMessageReceived;
517         g_sessionlist4File->OnBytesReceived = OnFileBytesReceived;
518     }
519     if (g_nodeStateCallback == NULL) {
520         g_nodeStateCallback = (INodeStateCb*)calloc(1, sizeof(INodeStateCb));
521         g_nodeStateCallback->events = EVENT_NODE_STATE_MASK;
522         g_nodeStateCallback->onNodeOnline = OnNodeOnline;
523         g_nodeStateCallback->onNodeOffline = OnNodeOffline;
524         g_nodeStateCallback->onNodeBasicInfoChanged = OnNodeBasicInfoChanged;
525         g_nodeStateCallback->onNodeStatusChanged = onDefNodeStatusChanged;
526     }
527     if (g_sessionlist4Stream == NULL) {
528         g_sessionlist4Stream= (ISessionListener*)calloc(1, sizeof(ISessionListener));
529         g_sessionlist4Stream->OnSessionOpened = OnStreamSessionOpened;
530         g_sessionlist4Stream->OnSessionClosed = OnStreamSessionClosed;
531         g_sessionlist4Stream->OnStreamReceived = StreamReceived;
532     }
533 }
534 
TeardownCallback(void)535 static void TeardownCallback(void)
536 {
537     if (g_sessionlist4Data != NULL) {
538         free(g_sessionlist4Data);
539         g_sessionlist4Data = NULL;
540     }
541     if (g_sessionlist4Ctrl != NULL) {
542         free(g_sessionlist4Ctrl);
543         g_sessionlist4Ctrl = NULL;
544     }
545     if (g_sessionlist4Perf != NULL) {
546         free(g_sessionlist4Perf);
547         g_sessionlist4Perf = NULL;
548     }
549     if (g_sessionlist4Pass != NULL) {
550         free(g_sessionlist4Pass);
551         g_sessionlist4Pass = NULL;
552     }
553     if (g_sessionlist4Proxy != NULL) {
554         free(g_sessionlist4Proxy);
555         g_sessionlist4Proxy = NULL;
556     }
557     if (g_sessionlist4File != NULL) {
558         free(g_sessionlist4File);
559         g_sessionlist4File = NULL;
560     }
561     if (g_nodeStateCallback != NULL) {
562         free(g_nodeStateCallback);
563         g_nodeStateCallback = NULL;
564     }
565     if (g_sessionlist4Stream != NULL) {
566         free(g_sessionlist4Stream);
567         g_sessionlist4Stream = NULL;
568     }
569 }
570 
main()571  int main()
572 {
573     SetUpTestCase();
574     int dataRet = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA, g_sessionlist4Data);
575     LOG("CreateSs[data] ret:%d", dataRet);
576     int ctrlRet = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL, g_sessionlist4Ctrl);
577     LOG("CreateSs[ctrl] ret:%d", ctrlRet);
578     int perfRet = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_PERF, g_sessionlist4Perf);
579     LOG("CreateSs[perf] ret:%d", perfRet);
580     int passRet = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_PASS, g_sessionlist4Pass);
581     LOG("CreateSs[pass] ret:%d", passRet);
582     int proxyRet = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY, g_sessionlist4Proxy);
583     LOG("CreateSs[Proxy] ret:%d", proxyRet);
584     int fileRet = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_FILE, g_sessionlist4File);
585     LOG("CreateSs[file] ret:%d", fileRet);
586     int streamRet = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_STREAM, g_sessionlist4Stream);
587     LOG("CreateSs[stream] ret:%d", streamRet);
588     int runtime = 0;
589     if (dataRet == SOFTBUS_OK && ctrlRet == SOFTBUS_OK && perfRet == SOFTBUS_OK
590     && passRet == SOFTBUS_OK && fileRet == SOFTBUS_OK && streamRet == SOFTBUS_OK && proxyRet == SOFTBUS_OK) {
591         LOG("CreateSs ok");
592     }
593     int ret = SetFileSendListener(DEF_PKG_NAME, SESSION_NAME_FILE, GetSendFileListener());
594     if (ret != SOFTBUS_OK) {
595         LOG("##set send listener fail:%d", ret);
596     }
597     ret = SetFileReceiveListener(DEF_PKG_NAME, SESSION_NAME_FILE, GetRecvFileListener(), RECV_FILE_PATH);
598     if (ret != SOFTBUS_OK) {
599         LOG("##set recv listener fail:%d", ret);
600     }
601     while (1) {
602         sleep(1);
603         runtime += 1;
604         if (runtime % ONE_MINUTE == 0) {
605             LOG("### test run:%d s", runtime);
606         }
607     }
608     ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA);
609     LOG("RemoveSs[data] ret:%d", ret);
610     ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL);
611     LOG("RemoveSs[ctrl] ret:%d", ret);
612     ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_PERF);
613     LOG("RemoveSs[perf] ret:%d", ret);
614     ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_PASS);
615     LOG("RemoveSs[pass] ret:%d", ret);
616     ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY);
617     LOG("RemoveSs[Proxy] ret:%d", ret);
618     ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_FILE);
619     LOG("RemoveSs[file] ret:%d", ret);
620     ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_FILE);
621     LOG("RemoveSs[stram] ret:%d", ret);
622     TearDownTestCase();
623 }