• 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 
16 #include "net_trans_common.h"
17 
18 static int32_t g_currentSessionId4Data = -1;
19 static int32_t g_currentSessionId4Ctl = -1;
20 
21 static int32_t g_waitFlag = WAIT_DEF_VALUE;
22 static int32_t g_waitFlag4Data = WAIT_DEF_VALUE;
23 static int32_t g_waitFlag4Ctl = WAIT_DEF_VALUE;
24 static int32_t g_passiveOpenRetFlag = SOFTBUS_OK;
25 static int32_t g_nodeOnlineCount = 0;
26 static int32_t g_nodeOfflineCount = 0;
27 
28 static int32_t g_msgCount4Data = 0;
29 static int32_t g_byteCount4Data = 0;
30 static int32_t g_sessionCloseCount4Data = 0;
31 static int32_t g_sessionCloseCount4Ctrl = 0;
32 static int32_t g_sessionOpenCount4Data = 0;
33 static int32_t g_sessionOpenCount4Ctrl = 0;
34 
35 static SessionAttribute* g_sessionAttr4Data = NULL;
36 static SessionAttribute* g_sessionAttr4Ctl = NULL;
37 static SessionAttribute* g_sessionAttr4Pass = NULL;
38 static SessionAttribute* g_sessionAttr4Perf = NULL;
39 static SessionAttribute* g_sessionAttr4Proxy = NULL;
40 static ISessionListener* g_sessionlistener4Data = NULL;
41 static ISessionListener* g_sessionlistener4Ctl = NULL;
42 static ISessionListener* g_sessionlistener4Pass = NULL;
43 static ISessionListener* g_sessionlistener4Perf = NULL;
44 static ISessionListener* g_sessionlistener4Proxy = NULL;
45 
46 static IFileSendListener* g_fileSendListener = NULL;
47 static IFileReceiveListener* g_fileRecvListener = NULL;
48 
49 static char g_networkId[NETWORK_ID_BUF_LEN] = { 0 };
50 static char g_networkIdArray[MULTI_REMOTE_DEV_COUNT][NETWORK_ID_BUF_LEN];
51 static INodeStateCb g_defNodeStateCallback;
52 static ConnectionAddr g_ethAddr = {
53     .type = CONNECTION_ADDR_WLAN,
54 };
55 
56 static int* g_sId4Task2;
57 static int* g_sId4Task3;
58 static char g_fillContentChar = 'd';
59 static unsigned int g_expectDataSize = 0;
60 static char* g_expectDataContent = NULL;
61 static pthread_barrier_t* g_barrier = NULL;
62 
63 static int32_t g_threadResult4Data = SOFTBUS_ERR;
64 static int32_t g_threadResult4Ctl = SOFTBUS_ERR;
65 static int32_t g_recvMsgStat4Control[MAX_SESSION_NUM] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
66 static int32_t g_recvByteStat4Control[MAX_SESSION_NUM] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
67 
68 static uint64_t g_joinNetTimeStart;
69 static uint64_t g_joinNetTimeEnd;
70 static uint64_t g_leaveNetTimeStart;
71 static uint64_t g_leaveNetTimeEnd;
72 static uint64_t g_discoverTimeStart;
73 static uint64_t g_discoverTimeEnd;
74 static uint64_t g_openSessionTimeStart;
75 static uint64_t g_openSessionTimeEnd;
76 static uint64_t g_transTimeStart;
77 static uint64_t g_transTimeEnd;
78 
79 /* discovery */
80 static int g_subscribeId = 0;
81 static IDiscoveryCallback g_defDiscCallback;
82 static SubscribeInfo g_subInfo = {
83     .medium = COAP,
84     .mode = DISCOVER_MODE_ACTIVE,
85     .freq = MID,
86     .capability = "ddmpCapability",
87     .capabilityData = (unsigned char*)"cap data",
88     .dataLen = sizeof("cap data"),
89     .isSameAccount = true,
90     .isWakeRemote = false,
91 };
92 
Wait(int timeout)93 int Wait(int timeout)
94 {
95     LOG("start wait,timeout:%d", timeout);
96     int count = 0;
97     int t = timeout;
98     while (t > 0) {
99         sleep(1);
100         if (g_waitFlag != WAIT_DEF_VALUE) {
101             LOG("Wait success[flag:%d] [time:%d]", g_waitFlag, count);
102             break;
103         }
104         t--;
105         count++;
106     }
107     if (g_waitFlag != WAIT_SUCCESS_VALUE) {
108         LOG("Wait fail[exp:%d, real:%d][used time:%d]", WAIT_SUCCESS_VALUE, g_waitFlag, count);
109         return SOFTBUS_ERR;
110     }
111     return SOFTBUS_OK;
112 }
113 
WaitNodeCount(int timeout,WaitNodeStateType state,int expectCount)114 int WaitNodeCount(int timeout, WaitNodeStateType state, int expectCount)
115 {
116     LOG("Wait4Node,timeout:%d, type:%d, exp count:%d", timeout, state, expectCount);
117     int hitFlag = -1;
118     int t = timeout;
119     while (t > 0) {
120         sleep(1);
121         switch (state) {
122             case STATE_ONLINE:
123                 if (g_nodeOnlineCount == expectCount) {
124                     LOG("Wait4Node[online] succ,timeout:%d", t);
125                     hitFlag = 1;
126                 }
127                 break;
128             case STATE_OFFLINE:
129                 if (g_nodeOfflineCount == expectCount) {
130                     LOG("Wait4Node[offline] succ,timeout:%d", t);
131                     hitFlag = 1;
132                 }
133                 break;
134             default:
135                 LOG("Wait4Node state error");
136                 hitFlag = 1;
137                 break;
138         }
139         if (hitFlag != -1) {
140             break;
141         }
142         t--;
143     }
144     switch (state) {
145         case STATE_ONLINE:
146             if (g_nodeOnlineCount != expectCount) {
147                 LOG("Wait4Node[online] fail[exp:%d, real:%d]", expectCount, g_nodeOnlineCount);
148                 return SOFTBUS_ERR;
149             }
150             break;
151         case STATE_OFFLINE:
152             if (g_nodeOfflineCount != expectCount) {
153                 LOG("Wait4Node[offline] fail[exp:%d, real:%d]", expectCount, g_nodeOfflineCount);
154                 return SOFTBUS_ERR;
155             }
156             break;
157         default:
158             return SOFTBUS_ERR;
159     }
160     return SOFTBUS_OK;
161 }
162 
Wait4Session(int timeout,WaitSessionType type)163 int Wait4Session(int timeout, WaitSessionType type)
164 {
165     int hitFlag = -1;
166     int t = timeout;
167     while (t > 0) {
168         sleep(1);
169         switch (type) {
170             case SESSION_4CTL:
171                 if (g_waitFlag4Ctl != WAIT_DEF_VALUE) {
172                     LOG("Wait4Session[ctrl] succ, flag:%d", g_waitFlag4Ctl);
173                     hitFlag = 1;
174                 }
175                 break;
176             case SESSION_4DATA:
177                 if (g_waitFlag4Data != WAIT_DEF_VALUE) {
178                     LOG("Wait4Session[data] succ,flag:%d", g_waitFlag4Data);
179                     hitFlag = 1;
180                 }
181                 break;
182             default:
183                 LOG("Wait4Session type error");
184                 hitFlag = 1;
185                 break;
186         }
187         if (hitFlag != -1) {
188             break;
189         }
190         t--;
191     }
192     switch (type) {
193         case SESSION_4CTL:
194             if (g_waitFlag4Ctl != WAIT_SUCCESS_VALUE) {
195                 LOG("Wait4Session[ctrl] fail[exp:%d, real:%d]", WAIT_SUCCESS_VALUE, g_waitFlag4Ctl);
196                 return SOFTBUS_ERR;
197             }
198             break;
199         case SESSION_4DATA:
200             if (g_waitFlag4Data != WAIT_SUCCESS_VALUE) {
201                 LOG("Wait4Session[data] fail[exp:%d, real:%d]", WAIT_SUCCESS_VALUE, g_waitFlag4Data);
202                 return SOFTBUS_ERR;
203             }
204             break;
205         default:
206             return SOFTBUS_ERR;
207     }
208     return SOFTBUS_OK;
209 }
210 
GetCurrentTimeOfMs(void)211 uint64_t GetCurrentTimeOfMs(void)
212 {
213     int unit = 1000;
214     struct timeval tv;
215     gettimeofday(&tv, NULL);
216     return (tv.tv_sec * unit + tv.tv_usec / unit);
217 }
218 
GetSoftbusPid(void)219 char* GetSoftbusPid(void)
220 {
221     FILE* file = NULL;
222     int buffSize = 20;
223     char* buffer = (char*)malloc(buffSize);
224     if (buffer == NULL) {
225         LOG("malloc fail");
226         return NULL;
227     }
228 
229     file = popen(CMD_PIDOF_SOFTBUS, "r");
230     if (file == NULL) {
231         LOG("call popen fail");
232         free(buffer);
233         return NULL;
234     }
235     (void)fgets(buffer, buffSize, file);
236     LOG("##################Softbus PID:%s", buffer);
237     pclose(file);
238 
239     return buffer;
240 }
241 
IncrementSubId(void)242 static int IncrementSubId(void)
243 {
244     g_subscribeId++;
245     return g_subscribeId;
246 }
247 
OnReceiveFileStarted(int sessionId,const char * files,int fileCnt)248 static int OnReceiveFileStarted(int sessionId, const char* files, int fileCnt)
249 {
250     LOG("[recv file]start,sid:%d, fileCnt:%d", sessionId, fileCnt);
251     return 0;
252 }
253 
OnReceiveFileProcess(int sessionId,const char * firstFile,uint64_t bytesUpload,uint64_t bytesTotal)254 static int OnReceiveFileProcess(int sessionId, const char* firstFile, uint64_t bytesUpload, uint64_t bytesTotal)
255 {
256     return 0;
257 }
258 
OnReceiveFileFinished(int sessionId,const char * files,int fileCnt)259 static void OnReceiveFileFinished(int sessionId, const char* files, int fileCnt)
260 {
261     LOG("[recv file]finish,sid:%d, fileCnt:%d", sessionId, fileCnt);
262 }
263 
OnRecvFileTransError(int sessionId)264 static void OnRecvFileTransError(int sessionId)
265 {
266     LOG("[recv file]trans error,sid:%d", sessionId);
267 }
268 
OnSendFileProcess(int sessionId,uint64_t bytesUpload,uint64_t bytesTotal)269 static int OnSendFileProcess(int sessionId, uint64_t bytesUpload, uint64_t bytesTotal)
270 {
271     return 0;
272 }
273 
OnSendFileFinished(int sessionId,const char * firstFile)274 static int OnSendFileFinished(int sessionId, const char* firstFile)
275 {
276     g_waitFlag = WAIT_SUCCESS_VALUE;
277     LOG("[send file]finish,sid:%d, firstFile:%s\n", sessionId, firstFile);
278     return 0;
279 }
280 
OnSendFileTransError(int sessionId)281 static void OnSendFileTransError(int sessionId)
282 {
283     g_waitFlag = WAIT_FAIL_VALUE;
284     LOG("[send file]trans error,sid = %d\n", sessionId);
285 }
286 
OnDefDeviceFound(const DeviceInfo * device)287 static void OnDefDeviceFound(const DeviceInfo* device)
288 {
289     g_discoverTimeEnd = GetCurrentTimeOfMs();
290 
291     if (device == NULL) {
292         LOG("[cb]device found,but is null");
293         g_waitFlag = WAIT_FAIL_VALUE;
294         return;
295     }
296 
297     uint16_t port = device->addr[0].info.ip.port;
298     char ipTmp[IP_STR_MAX_LEN];
299     if (strncpy_s(ipTmp, IP_STR_MAX_LEN, device->addr[0].info.ip.ip, strlen(device->addr[0].info.ip.ip)) != 0) {
300         LOG("[cb]device found, strncpy_s ipTmp fail");
301         return;
302     }
303     LOG("[cb]device found, type:%d", device->addr[0].type);
304     LOG("[cb]device found, addr:%s, prot:%d", ipTmp, port);
305 
306     g_ethAddr.info.ip.port = port;
307     if (strncpy_s(g_ethAddr.info.ip.ip, IP_STR_MAX_LEN, ipTmp, strlen(ipTmp)) != 0) {
308         LOG("[cb]device found, strncpy_s ip fail");
309         g_waitFlag = WAIT_FAIL_VALUE;
310         return;
311     }
312 
313     g_waitFlag = WAIT_SUCCESS_VALUE;
314 }
315 
OnDefDiscoverFail(int subscribeId,DiscoveryFailReason failReason)316 static void OnDefDiscoverFail(int subscribeId, DiscoveryFailReason failReason)
317 {
318     LOG("[cb]discover fail, sub id:%d, reason:%d", subscribeId, failReason);
319 }
320 
OnDefDiscoverSuccess(int subscribeId)321 static void OnDefDiscoverSuccess(int subscribeId)
322 {
323     LOG("[cb]discover success, sub id:%d", subscribeId);
324 }
325 
OnDefNodeOnline(NodeBasicInfo * info)326 static void OnDefNodeOnline(NodeBasicInfo* info)
327 {
328     if (info == NULL) {
329         LOG("[cb]Online: info is null");
330         return;
331     }
332     (void)strncpy_s(g_networkId, NETWORK_ID_BUF_LEN, info->networkId, NETWORK_ID_BUF_LEN);
333     LOG("[cb]Online id:%s, name:%s, type id:%u", info->networkId, info->deviceName, info->deviceTypeId);
334     g_nodeOnlineCount++;
335 }
336 
OnDefNodeOffline(NodeBasicInfo * info)337 static void OnDefNodeOffline(NodeBasicInfo* info)
338 {
339     if (info == NULL) {
340         LOG("[cb]Offline: info is null");
341         return;
342     }
343     LOG("[cb]Offline id:%s, name:%s, type id:%u", info->networkId, info->deviceName, info->deviceTypeId);
344     g_nodeOfflineCount++;
345 }
346 
OnDefNodeBasicInfoChanged(NodeBasicInfoType type,NodeBasicInfo * info)347 static void OnDefNodeBasicInfoChanged(NodeBasicInfoType type, NodeBasicInfo* info)
348 {
349     if (info == NULL) {
350         LOG("[cb]InfoChanged: info is null, type[%d]", type);
351         return;
352     }
353     LOG("[cb]InfoChanged id: %s,name: %s", info->networkId, info->deviceName);
354 }
355 
OnJoinNetCallBack(ConnectionAddr * addr,const char * networkId,int32_t retCode)356 static void OnJoinNetCallBack(ConnectionAddr* addr, const char* networkId, int32_t retCode)
357 {
358     g_joinNetTimeEnd = GetCurrentTimeOfMs();
359 
360     if (networkId == NULL || retCode != SOFTBUS_OK) {
361         LOG("[cb]JoinNet netid/ret error, ret:%d", retCode);
362         g_waitFlag = WAIT_FAIL_VALUE;
363         return;
364     }
365 
366     LOG("[cb]JoinNet, ret:%d, id:%s", retCode, networkId);
367     switch (addr->type) {
368         case CONNECTION_ADDR_WLAN:
369             LOG("[cb]JoinNet type is [WLAN]");
370             break;
371         case CONNECTION_ADDR_BR:
372             LOG("[cb]JoinNet type is [BR]");
373             break;
374         case CONNECTION_ADDR_ETH:
375             LOG("[cb]JoinNet type is [ETH]");
376             break;
377         default:
378             LOG("[cb]JoinNet type error");
379             g_waitFlag = WAIT_FAIL_VALUE;
380             return;
381     }
382 
383     int ret = strncpy_s(g_networkId, NETWORK_ID_BUF_LEN, networkId, NETWORK_ID_BUF_LEN);
384     if (ret != SOFTBUS_OK) {
385         LOG("[cb]strncpy_s fail");
386         return;
387     }
388 
389     g_waitFlag = WAIT_SUCCESS_VALUE;
390 }
391 
OnLeaveNetCallBack(const char * networkId,int32_t ret)392 static void OnLeaveNetCallBack(const char* networkId, int32_t ret)
393 {
394     g_leaveNetTimeEnd = GetCurrentTimeOfMs();
395 
396     LOG("[cb]LeaveLNN ret[%d]", ret);
397     if (ret == SOFTBUS_OK) {
398         g_waitFlag = WAIT_SUCCESS_VALUE;
399     } else {
400         g_waitFlag = WAIT_FAIL_VALUE;
401     }
402 }
403 
DataSessionOpened(int sessionId,int result)404 static int DataSessionOpened(int sessionId, int result)
405 {
406     // wait 1s, ensure set current session id
407     sleep(1);
408     g_sessionOpenCount4Data++;
409     if (result == SOFTBUS_OK) {
410         if (sessionId == g_currentSessionId4Data) {
411             LOG("[cb][data]open session check success sid[%d]", sessionId);
412             g_waitFlag4Data = WAIT_SUCCESS_VALUE;
413         } else {
414             LOG("[cb][data]open session callback sid[%d] not match open "
415                 "sid[%d]",
416                 sessionId, g_currentSessionId4Data);
417             g_waitFlag4Data = WAIT_FAIL_VALUE;
418         }
419     } else {
420         g_waitFlag4Data = WAIT_FAIL_VALUE;
421     }
422     return SOFTBUS_OK;
423 }
424 
DataSessionClosed(int sessionId)425 static void DataSessionClosed(int sessionId)
426 {
427     g_sessionCloseCount4Data++;
428     if (sessionId == g_currentSessionId4Data) {
429         LOG("[cb][data]closed session,check sid[%d] success", sessionId);
430         g_currentSessionId4Data = -1;
431         g_waitFlag4Data = WAIT_SUCCESS_VALUE;
432     } else {
433         LOG("[cb][data]closed session, callback sid[%d] not match open sid[%d]", sessionId, g_currentSessionId4Data);
434         g_waitFlag4Data = WAIT_FAIL_VALUE;
435     }
436 }
437 
CheckReceiveData(int sessionId,const void * data,unsigned int dataLen)438 static void CheckReceiveData(int sessionId, const void* data, unsigned int dataLen)
439 {
440     // check session id
441     if (sessionId == g_currentSessionId4Data && dataLen == g_expectDataSize) {
442         LOG("[check]sid/size ok[sid:%d,size:%u]", sessionId, dataLen);
443     } else {
444         LOG("[check]sid/size fail[sid exp:%d,real:%d][size exp:%u,real:%u]", g_currentSessionId4Data, sessionId,
445             g_expectDataSize, dataLen);
446         g_waitFlag = WAIT_FAIL_VALUE;
447         return;
448     }
449 
450     // check data content
451     int cmpRst = strncmp(g_expectDataContent, (char*)data, dataLen);
452     if (cmpRst == 0) {
453         LOG("[check] cmp content ok");
454         g_waitFlag = WAIT_SUCCESS_VALUE;
455     } else {
456         LOG("[check] cmp content fail[exp:%s,real:%s]", g_expectDataContent, (char*)data);
457         g_waitFlag = WAIT_FAIL_VALUE;
458     }
459 }
460 
DataBytesReceived(int sessionId,const void * data,unsigned int dataLen)461 static void DataBytesReceived(int sessionId, const void* data, unsigned int dataLen)
462 {
463     LOG("[cb][data]ByteRec start");
464     CheckReceiveData(sessionId, data, dataLen);
465     g_byteCount4Data++;
466     LOG("[cb][data]ByteRec end");
467 }
468 
DataMessageReceived(int sessionId,const void * data,unsigned int dataLen)469 static void DataMessageReceived(int sessionId, const void* data, unsigned int dataLen)
470 {
471     LOG("[cb][data]MessageRec start");
472     CheckReceiveData(sessionId, data, dataLen);
473     g_msgCount4Data++;
474     LOG("[cb][data]MessageRec end");
475 }
476 
ControlSessionOpened(int sessionId,int result)477 static int ControlSessionOpened(int sessionId, int result)
478 {
479     // wait 1s, ensure set current session id
480     sleep(1);
481     g_sessionOpenCount4Ctrl++;
482     if (result == SOFTBUS_OK) {
483         if (sessionId == g_currentSessionId4Ctl) {
484             LOG("[cb][ctrl]open session check success sid[%d]", sessionId);
485             g_waitFlag4Ctl = WAIT_SUCCESS_VALUE;
486         } else {
487             LOG("[cb][ctrl]open session callback sid[%d] not match open "
488                 "sid[%d]",
489                 sessionId, g_currentSessionId4Ctl);
490             g_waitFlag4Ctl = WAIT_FAIL_VALUE;
491         }
492     } else {
493         g_waitFlag4Ctl = WAIT_FAIL_VALUE;
494     }
495     return SOFTBUS_OK;
496 }
497 
ControlSessionClosed(int sessionId)498 static void ControlSessionClosed(int sessionId)
499 {
500     g_sessionCloseCount4Ctrl++;
501     if (sessionId == g_currentSessionId4Ctl) {
502         LOG("[cb][ctrl]closed session check sid[%d] success", sessionId);
503         g_currentSessionId4Ctl = -1;
504         g_waitFlag4Ctl = WAIT_SUCCESS_VALUE;
505     } else {
506         LOG("[cb][ctrl]closed session callback sid[%d] not match open sid[%d]", sessionId, g_currentSessionId4Ctl);
507         g_waitFlag4Ctl = WAIT_FAIL_VALUE;
508     }
509 }
510 
ControlBytesReceived(int sessionId,const void * data,unsigned int dataLen)511 static void ControlBytesReceived(int sessionId, const void* data, unsigned int dataLen)
512 {
513     LOG("[cb][ctrl]ByteRec sid:%d, data len:%u", sessionId, dataLen);
514     if (sessionId < 0 || sessionId > MAX_SESSION_NUM) {
515         LOG("[cb][ctrl]ByteRec invalid session sid[%d]", sessionId);
516         return;
517     }
518     if (data == NULL) {
519         LOG("[cb][ctrl]ByteRec invalid data=null sid[%d]", sessionId);
520         return;
521     }
522     g_recvByteStat4Control[sessionId]++;
523 }
524 
ControlMessageReceived(int sessionId,const void * data,unsigned int dataLen)525 static void ControlMessageReceived(int sessionId, const void* data, unsigned int dataLen)
526 {
527     LOG("[cb][ctrl]MessageRec sid:%d, data len:%u", sessionId, dataLen);
528     if (sessionId < 0 || sessionId > MAX_SESSION_NUM) {
529         LOG("[cb][ctrl]MessageRec invalid session sid[%d]", sessionId);
530         return;
531     }
532     if (data == NULL) {
533         LOG("[cb][ctrl]MessageRec invalid data=null sid[%d]", sessionId);
534         return;
535     }
536     g_recvMsgStat4Control[sessionId]++;
537 }
538 
PassiveSessionOpened(int sessionId,int result)539 static int PassiveSessionOpened(int sessionId, int result)
540 {
541     LOG("[cb][pass]open session passive sid[%d],rst[%d]", sessionId, result);
542     if (result == SOFTBUS_OK) {
543         g_waitFlag = WAIT_SUCCESS_VALUE;
544     } else {
545         g_waitFlag = WAIT_FAIL_VALUE;
546     }
547     if (g_passiveOpenRetFlag == SOFTBUS_ERR) {
548         LOG("[cb][pass]return fail");
549         g_passiveOpenRetFlag = SOFTBUS_OK;
550         return SOFTBUS_ERR;
551     } else {
552         return SOFTBUS_OK;
553     }
554 }
555 
PassiveSessionClosed(int sessionId)556 static void PassiveSessionClosed(int sessionId)
557 {
558     LOG("[cb][pass]close session passive sid[%d]", sessionId);
559     g_waitFlag = WAIT_SUCCESS_VALUE;
560 }
561 
PassiveBytesReceived(int sessionId,const void * data,unsigned int dataLen)562 static void PassiveBytesReceived(int sessionId, const void* data, unsigned int dataLen)
563 {
564     LOG("[cb][pass]ByteRec sid:%d, data len:%u", sessionId, dataLen);
565     if (data == NULL) {
566         LOG("[cb][pass]ByteRec invalid data=null sid[%d]", sessionId);
567         g_waitFlag = WAIT_FAIL_VALUE;
568         return;
569     }
570     int ret = SendBytes(sessionId, data, dataLen);
571     LOG("[cb][pass]ByteRec send back ret[%d]", ret);
572     if (ret == SOFTBUS_OK) {
573         g_waitFlag = WAIT_SUCCESS_VALUE;
574     } else {
575         g_waitFlag = WAIT_FAIL_VALUE;
576     }
577 }
578 
PassiveMessageReceived(int sessionId,const void * data,unsigned int dataLen)579 static void PassiveMessageReceived(int sessionId, const void* data, unsigned int dataLen)
580 {
581     LOG("[cb][pass]MessageRec sid:%d, data len:%u", sessionId, dataLen);
582     if (data == NULL) {
583         LOG("[cb][pass]MessageRec invalid data=null sid[%d]", sessionId);
584         g_waitFlag = WAIT_FAIL_VALUE;
585         return;
586     }
587     int ret = SendMessage(sessionId, data, dataLen);
588     LOG("[cb][pass]MessageRec send back ret[%d]", ret);
589     if (ret == SOFTBUS_OK) {
590         g_waitFlag = WAIT_SUCCESS_VALUE;
591     } else {
592         g_waitFlag = WAIT_FAIL_VALUE;
593     }
594 }
595 
PerfSessionOpened(int sessionId,int result)596 static int PerfSessionOpened(int sessionId, int result)
597 {
598     g_openSessionTimeEnd = GetCurrentTimeOfMs();
599 
600     if (result == SOFTBUS_OK) {
601         g_waitFlag = WAIT_SUCCESS_VALUE;
602     } else {
603         LOG("[cb][perf]open session result fail, ret:%d", result);
604         g_waitFlag = WAIT_FAIL_VALUE;
605     }
606     return SOFTBUS_OK;
607 }
608 
PerfSessionClosed(int sessionId)609 static void PerfSessionClosed(int sessionId)
610 {
611     LOG("[cb][perf]closed session,sid[%d]", sessionId);
612 }
613 
PerfBytesReceived(int sessionId,const void * data,unsigned int dataLen)614 static void PerfBytesReceived(int sessionId, const void* data, unsigned int dataLen)
615 {
616     g_transTimeEnd = GetCurrentTimeOfMs();
617 
618     LOG("[cb][perf]Byte recv");
619     g_waitFlag = WAIT_SUCCESS_VALUE;
620 }
621 
PerfMessageReceived(int sessionId,const void * data,unsigned int dataLen)622 static void PerfMessageReceived(int sessionId, const void* data, unsigned int dataLen)
623 {
624     LOG("[cb][perf]Message recv");
625 }
626 
ProxySessionOpened(int sessionId,int result)627 static int ProxySessionOpened(int sessionId, int result)
628 {
629     LOG("[cb][proxy]open session proxy sid[%d],rst[%d]", sessionId, result);
630     if (result == SOFTBUS_OK) {
631         g_waitFlag = WAIT_SUCCESS_VALUE;
632     } else {
633         g_waitFlag = WAIT_FAIL_VALUE;
634     }
635     return SOFTBUS_OK;
636 }
637 
ProxySessionClosed(int sessionId)638 static void ProxySessionClosed(int sessionId)
639 {
640     LOG("[cb][proxy]close session proxy sid[%d]", sessionId);
641     g_waitFlag = WAIT_SUCCESS_VALUE;
642 }
643 
ProxyBytesReceived(int sessionId,const void * data,unsigned int dataLen)644 static void ProxyBytesReceived(int sessionId, const void* data, unsigned int dataLen)
645 {
646     LOG("[cb][proxy]ByteRec sid:%d, data len:%u", sessionId, dataLen);
647     if (data == NULL) {
648         LOG("[cb][proxy]ByteRec invalid data=null sid:[%d]", sessionId);
649         g_waitFlag = WAIT_FAIL_VALUE;
650     } else {
651         g_waitFlag = WAIT_SUCCESS_VALUE;
652     }
653 }
654 
ProxyMessageReceived(int sessionId,const void * data,unsigned int dataLen)655 static void ProxyMessageReceived(int sessionId, const void* data, unsigned int dataLen)
656 {
657     LOG("[cb][proxy]MessageRec sid:%d, data len:%u", sessionId, dataLen);
658     if (data == NULL) {
659         LOG("[cb][proxy]MessageRec invalid data=null sid[%d]", sessionId);
660         g_waitFlag = WAIT_FAIL_VALUE;
661     } else {
662         g_waitFlag = WAIT_SUCCESS_VALUE;
663     }
664 }
665 
ResetWaitFlag(void)666 void ResetWaitFlag(void)
667 {
668     g_waitFlag = WAIT_DEF_VALUE;
669 }
670 
ResetWaitFlag4Data(void)671 void ResetWaitFlag4Data(void)
672 {
673     g_waitFlag4Data = WAIT_DEF_VALUE;
674 }
675 
ResetWaitFlag4Ctl(void)676 void ResetWaitFlag4Ctl(void)
677 {
678     g_waitFlag4Ctl = WAIT_DEF_VALUE;
679 }
680 
ResetWaitCount4Offline(void)681 void ResetWaitCount4Offline(void)
682 {
683     g_nodeOfflineCount = 0;
684 }
685 
ResetWaitCount4Online(void)686 void ResetWaitCount4Online(void)
687 {
688     g_nodeOnlineCount = 0;
689 }
690 
StartDiscoveryDevice(void)691 int StartDiscoveryDevice(void)
692 {
693     int ret;
694     int timeout = 10;
695     ResetWaitFlag();
696     g_subInfo.subscribeId = IncrementSubId();
697     LOG("subscribeId:%d", g_subInfo.subscribeId);
698     g_discoverTimeStart = GetCurrentTimeOfMs();
699     ret = StartDiscovery(DEF_PKG_NAME, &g_subInfo, &g_defDiscCallback);
700     if (ret != SOFTBUS_OK) {
701         LOG("call StartDiscovery fail, ret:%d", ret);
702         return ret;
703     }
704     ret = Wait(timeout);
705     if (ret != SOFTBUS_OK) {
706         LOG("discover device fail");
707     }
708     return ret;
709 }
710 
JoinNetwork(void)711 int JoinNetwork(void)
712 {
713     int ret;
714     int timeout = 15;
715     ResetWaitFlag();
716     g_joinNetTimeStart = GetCurrentTimeOfMs();
717     ret = JoinLNN(DEF_PKG_NAME, &g_ethAddr, OnJoinNetCallBack);
718     if (ret != SOFTBUS_OK) {
719         LOG("call JoinLNN fail, ret:%d", ret);
720         return ret;
721     }
722     ret = Wait(timeout);
723     if (ret != SOFTBUS_OK) {
724         LOG("JoinNetwork fail");
725     }
726     return ret;
727 }
728 
JoinNetworkByAddr(ConnectionAddr * addr)729 int JoinNetworkByAddr(ConnectionAddr* addr)
730 {
731     int ret;
732     int timeout = 15;
733     ResetWaitFlag();
734     LOG("JoinNetwork[input addr]ip:%s, port:%d", addr->info.ip.ip, addr->info.ip.port);
735     g_joinNetTimeStart = GetCurrentTimeOfMs();
736     ret = JoinLNN(DEF_PKG_NAME, addr, OnJoinNetCallBack);
737     if (ret != SOFTBUS_OK) {
738         LOG("call JoinLNN fail[input addr], ret:%d", ret);
739         return ret;
740     }
741     ret = Wait(timeout);
742     if (ret != SOFTBUS_OK) {
743         LOG("JoinNetwork[input addr] fail");
744     } else {
745         LOG("JoinNetwork[input addr] success");
746     }
747     return ret;
748 }
749 
DiscoverAndJoinNetwork(void)750 int DiscoverAndJoinNetwork(void)
751 {
752     int ret = StartDiscoveryDevice();
753     int retStop = StopDiscovery(DEF_PKG_NAME, g_subscribeId);
754     if (retStop != SOFTBUS_OK) {
755         LOG("call StopDiscovery fail, ret:%d", ret);
756     }
757     if (ret != SOFTBUS_OK) {
758         return ret;
759     }
760     sleep(1);
761 
762     return JoinNetwork();
763 }
764 
LeaveNetWork(void)765 int LeaveNetWork(void)
766 {
767     int ret;
768     int timeout = 10;
769 
770     ret = CheckRemoteDeviceIsNull(BOOL_TRUE);
771     if (ret != SOFTBUS_OK) {
772         return ret;
773     }
774 
775     ResetWaitFlag();
776     g_leaveNetTimeStart = GetCurrentTimeOfMs();
777     ret = LeaveLNN(DEF_PKG_NAME, g_networkId, OnLeaveNetCallBack);
778     if (ret != SOFTBUS_OK) {
779         LOG("call LeaveLNN fail, ret:%d", ret);
780         return ret;
781     }
782     ret = Wait(timeout);
783     if (ret != SOFTBUS_OK) {
784         LOG("LeaveNetwork fail");
785     }
786 
787     return ret;
788 }
789 
RegisterDeviceStateDefCallback(void)790 int RegisterDeviceStateDefCallback(void)
791 {
792     return RegNodeDeviceStateCb(DEF_PKG_NAME, &g_defNodeStateCallback);
793 }
794 
UnRegisterDeviceStateDefCallback(void)795 int UnRegisterDeviceStateDefCallback(void)
796 {
797     return UnregNodeDeviceStateCb(&g_defNodeStateCallback);
798 }
799 
CreateSsAndOpenSession4Data(void)800 int CreateSsAndOpenSession4Data(void)
801 {
802     int ret;
803     int timeout = 10;
804     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA, g_sessionlistener4Data);
805     if (ret != SOFTBUS_OK) {
806         LOG("call CreateSessionServer[data] fail, ret:%d", ret);
807         return ret;
808     }
809 
810     ResetWaitFlag4Data();
811     int sessionId;
812     sessionId = OpenSession(SESSION_NAME_DATA, SESSION_NAME_DATA, g_networkId, DEF_GROUP_ID, g_sessionAttr4Data);
813     if (sessionId < SESSION_ID_MIN) {
814         LOG("call OpenSession[data] fail, ret sid:%d,netId:%s", sessionId, g_networkId);
815         ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA);
816         if (ret != SOFTBUS_OK) {
817             LOG("RemoveSessionServer[data] fail, ret:%d", ret);
818         }
819         return SOFTBUS_ERR;
820     }
821     SetCurrentSessionId4Data(sessionId);
822     LOG("call OpenSession[data] success,sid:%d", sessionId);
823 
824     ret = Wait4Session(timeout, SESSION_4DATA);
825     if (ret != SOFTBUS_OK) {
826         LOG("OpenSession[data] fail");
827         ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA);
828         if (ret != SOFTBUS_OK) {
829             LOG("RemoveSessionServer[data] fail, ret:%d", ret);
830         }
831         return SOFTBUS_ERR;
832     }
833     return ret;
834 }
835 
OpenSession4Data(void)836 int OpenSession4Data(void)
837 {
838     int ret;
839     int sessionId;
840     int timeout = 10;
841     ResetWaitFlag4Data();
842     sessionId = OpenSession(SESSION_NAME_DATA, SESSION_NAME_DATA, g_networkId, DEF_GROUP_ID, g_sessionAttr4Data);
843     if (sessionId < SESSION_ID_MIN) {
844         LOG("call OpenSession[data] fail, ret sid:%d,netId:%s", sessionId, g_networkId);
845         return SOFTBUS_ERR;
846     }
847     SetCurrentSessionId4Data(sessionId);
848     LOG("call OpenSession[data] success,sid:%d", sessionId);
849     ret = Wait4Session(timeout, SESSION_4DATA);
850     if (ret != SOFTBUS_OK) {
851         LOG("OpenSession[data] fail");
852         return SOFTBUS_ERR;
853     }
854     return ret;
855 }
856 
CreateSsAndOpenSession4Ctl(void)857 int CreateSsAndOpenSession4Ctl(void)
858 {
859     int ret;
860     int timeout = 10;
861     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL, g_sessionlistener4Ctl);
862     if (ret != SOFTBUS_OK) {
863         LOG("call CreateSessionServer[ctl] fail, ret:%d", ret);
864         return ret;
865     }
866 
867     int sessionId;
868     ResetWaitFlag4Ctl();
869     sessionId = OpenSession(SESSION_NAME_CTL, SESSION_NAME_CTL, g_networkId, DEF_GROUP_ID, g_sessionAttr4Ctl);
870     if (sessionId < SESSION_ID_MIN) {
871         LOG("call OpenSession[ctl] fail, ret sid:%d", sessionId);
872         ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL);
873         if (ret != SOFTBUS_OK) {
874             LOG("RemoveSessionServer[ctl] fail, ret:%d", ret);
875         }
876         return SOFTBUS_ERR;
877     }
878     SetCurrentSessionId4Ctl(sessionId);
879     LOG("call OpenSession[ctl] success,sid:%d", sessionId);
880 
881     ret = Wait4Session(timeout, SESSION_4CTL);
882     if (ret != SOFTBUS_OK) {
883         LOG("OpenSession[ctl] fail");
884         ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL);
885         if (ret != SOFTBUS_OK) {
886             LOG("RemoveSessionServer[ctl] fail, ret:%d", ret);
887         }
888         return SOFTBUS_ERR;
889     }
890     return ret;
891 }
892 
OpenSession4Ctl(void)893 int OpenSession4Ctl(void)
894 {
895     int ret;
896     int timeout = 10;
897     int sessionId;
898     ResetWaitFlag4Ctl();
899     sessionId = OpenSession(SESSION_NAME_CTL, SESSION_NAME_CTL, g_networkId, DEF_GROUP_ID, g_sessionAttr4Ctl);
900     if (sessionId < SESSION_ID_MIN) {
901         LOG("call OpenSession[ctl] fail, ret sid:%d", sessionId);
902         return SOFTBUS_ERR;
903     }
904     SetCurrentSessionId4Ctl(sessionId);
905     LOG("call OpenSession[ctl] success,sid:%d", sessionId);
906 
907     ret = Wait4Session(timeout, SESSION_4CTL);
908     if (ret != SOFTBUS_OK) {
909         LOG("OpenSession[ctl] fail");
910         return SOFTBUS_ERR;
911     }
912     return ret;
913 }
914 
SendCtrlMsgToRemote(CtrlCodeType code)915 int SendCtrlMsgToRemote(CtrlCodeType code)
916 {
917     int ret = -1;
918     switch (code) {
919         case CTRL_CODE_CLOSE_WIFI_TEN_SEC:
920             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_CLOSE_WIFI_TEN_SEC, strlen(CTRL_MSG_CLOSE_WIFI_TEN_SEC));
921             break;
922         case CTRL_CODE_CLOSE_WIFI_THREE_SEC:
923             ret = SendMessage(
924                 g_currentSessionId4Ctl, CTRL_MSG_CLOSE_WIFI_THREE_SEC, strlen(CTRL_MSG_CLOSE_WIFI_THREE_SEC));
925             break;
926         case CTRL_CODE_CLOSE_WIFI_TEN_MIN:
927             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_CLOSE_WIFI_TEN_MIN, strlen(CTRL_MSG_CLOSE_WIFI_TEN_MIN));
928             break;
929         case CTRL_CODE_CLOSE_WIFI_FIVE_MIN:
930             ret =
931                 SendMessage(g_currentSessionId4Ctl, CTRL_MSG_CLOSE_WIFI_FIVE_MIN, strlen(CTRL_MSG_CLOSE_WIFI_FIVE_MIN));
932             break;
933         case CTRL_CODE_CHANGE_WIFI_TEN_SEC:
934             ret =
935                 SendMessage(g_currentSessionId4Ctl, CTRL_MSG_CHANGE_WIFI_TEN_SEC, strlen(CTRL_MSG_CHANGE_WIFI_TEN_SEC));
936             break;
937         case CTRL_CODE_CHANGE_WIFI_SIXTY_SEC:
938             ret = SendMessage(
939                 g_currentSessionId4Ctl, CTRL_MSG_CHANGE_WIFI_SIXTY_SEC, strlen(CTRL_MSG_CHANGE_WIFI_SIXTY_SEC));
940             break;
941         case CTRL_CODE_CHANGE_WIFI_LOOP20:
942             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_CHANGE_WIFI_LOOP20, strlen(CTRL_MSG_CHANGE_WIFI_LOOP20));
943             break;
944         case CTRL_CODE_CLOSE_WIFI_LOOP20:
945             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_CLOSE_WIFI_LOOP20, strlen(CTRL_MSG_CLOSE_WIFI_LOOP20));
946             break;
947         case CTRL_CODE_CHANGE_WIFI_LOOP100:
948             ret =
949                 SendMessage(g_currentSessionId4Ctl, CTRL_MSG_CHANGE_WIFI_LOOP100, strlen(CTRL_MSG_CHANGE_WIFI_LOOP100));
950             break;
951         case CTRL_CODE_CLOSE_WIFI_LOOP100:
952             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_CLOSE_WIFI_LOOP100, strlen(CTRL_MSG_CLOSE_WIFI_LOOP100));
953             break;
954         case CTRL_CODE_CLOSE_BR:
955             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_CLOSE_BR, strlen(CTRL_MSG_CLOSE_BR));
956             break;
957         case CTRL_CODE_CLOSE_OPEN_BR:
958             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_CLOSE_OPEN_BR, strlen(CTRL_MSG_CLOSE_OPEN_BR));
959             break;
960         case CTRL_CODE_OPEN_SESSION:
961             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_OPEN_SESSION, strlen(CTRL_MSG_OPEN_SESSION));
962             break;
963         case CTRL_CODE_OPEN_SESSION_MSG:
964             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_OPEN_SESSION_MSG, strlen(CTRL_MSG_OPEN_SESSION_MSG));
965             break;
966         case CTRL_CODE_OPEN_SESSION_FAIL:
967             g_passiveOpenRetFlag = SOFTBUS_ERR;
968             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_OPEN_SESSION_FAIL, strlen(CTRL_MSG_OPEN_SESSION_FAIL));
969             break;
970         case CTRL_CODE_CLOSE_SESSION:
971             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_CLOSE_SESSION, strlen(CTRL_MSG_CLOSE_SESSION));
972             break;
973         case CTRL_CODE_OPEN_SESSION_NOT_EXIST:
974             ret = SendMessage(
975                 g_currentSessionId4Ctl, CTRL_MSG_OPEN_SESSION_NOT_EXIST, strlen(CTRL_MSG_OPEN_SESSION_NOT_EXIST));
976             break;
977         case CTRL_CODE_SEND_BIG_DATA:
978             ret = SendMessage(g_currentSessionId4Ctl, CTRL_MSG_SEND_BIG_DATA, strlen(CTRL_MSG_SEND_BIG_DATA));
979             break;
980         default:
981             LOG("[send ctrl msg]not support this code");
982             break;
983     }
984     LOG("[send ctrl msg]send ret:%d", ret);
985     return ret;
986 }
987 
SendData4Data(DataType type,int size)988 int SendData4Data(DataType type, int size)
989 {
990     int ret;
991     if (size > 0) {
992         g_expectDataContent = (char*)calloc(1, size);
993         if (g_expectDataContent == NULL) {
994             LOG("[send data]calloc fail");
995             return SOFTBUS_ERR;
996         }
997         (void)memset_s(g_expectDataContent, size, g_fillContentChar, size);
998     } else {
999         LOG("[send data]invalid param[size>=1]");
1000         return SOFTBUS_ERR;
1001     }
1002 
1003     g_expectDataSize = size;
1004     ResetWaitFlag();
1005     if (type == DATA_TYPE_MSG) {
1006         ret = SendMessage(g_currentSessionId4Data, g_expectDataContent, size);
1007     } else if (type == DATA_TYPE_BYTE) {
1008         ret = SendBytes(g_currentSessionId4Data, g_expectDataContent, size);
1009     } else {
1010         LOG("[send data]invalid param[DataType]");
1011         free(g_expectDataContent);
1012         return SOFTBUS_ERR;
1013     }
1014     if (ret != SOFTBUS_OK) {
1015         LOG("[send data]call SendX fail, ret:%d", ret);
1016         free(g_expectDataContent);
1017         return SOFTBUS_ERR;
1018     }
1019     LOG("[send data]call SendX success");
1020     int sleeptime = 15;
1021     int timeout = 5;
1022     if (size > SIZE_1K * SIZE_1K) {
1023         timeout = sleeptime;
1024     }
1025     ret = Wait(timeout);
1026     free(g_expectDataContent);
1027     g_expectDataContent = NULL;
1028     return ret;
1029 }
1030 
1031 // if open session success, return session id
OpenSession4Perf(void)1032 int OpenSession4Perf(void)
1033 {
1034     int ret;
1035     int sessionId;
1036     int timeout = 10;
1037     ResetWaitFlag();
1038     g_openSessionTimeStart = GetCurrentTimeOfMs();
1039     sessionId = OpenSession(SESSION_NAME_PERF, SESSION_NAME_PERF, g_networkId, DEF_GROUP_ID, g_sessionAttr4Perf);
1040     if (sessionId < SESSION_ID_MIN) {
1041         LOG("call OpenSession[perf] fail, ret sid:%d", sessionId);
1042         return SOFTBUS_ERR;
1043     }
1044     ret = Wait(timeout);
1045     if (ret != SOFTBUS_OK) {
1046         LOG("OpenSession[perf] fail");
1047         return SOFTBUS_ERR;
1048     }
1049     return sessionId;
1050 }
1051 
OpenSession4PerfWithParam(const char * sessionName,const char * groupId,char * netId)1052 int OpenSession4PerfWithParam(const char* sessionName, const char* groupId, char* netId)
1053 {
1054     int ret;
1055     int sessionId;
1056     int timeout = 10;
1057     ResetWaitFlag();
1058     g_openSessionTimeStart = GetCurrentTimeOfMs();
1059     sessionId = OpenSession(sessionName, sessionName, netId, groupId, g_sessionAttr4Perf);
1060     if (sessionId < SESSION_ID_MIN) {
1061         LOG("call OpenSession[perf] fail, ret sid:%d", sessionId);
1062         return SOFTBUS_ERR;
1063     }
1064     ret = Wait(timeout);
1065     if (ret != SOFTBUS_OK) {
1066         LOG("OpenSession[perf] fail");
1067         return SOFTBUS_ERR;
1068     }
1069     return sessionId;
1070 }
1071 
SendData4Perf(int sessionId,char * dataMsg,char * dataByte)1072 int SendData4Perf(int sessionId, char* dataMsg, char* dataByte)
1073 {
1074     int sleeptime = 500000;
1075     int timeout = 5;
1076     int isHitFail = SOFTBUS_OK;
1077     ResetWaitFlag();
1078     g_transTimeStart = GetCurrentTimeOfMs();
1079     int ret = SendMessage(sessionId, dataMsg, TRANS_MESSAGE_LENGTH_MAX);
1080     g_transTimeEnd = GetCurrentTimeOfMs();
1081     if (ret != SOFTBUS_OK) {
1082         LOG("call SendMessage[perf] fail, ret:%d", ret);
1083         isHitFail = SOFTBUS_ERR;
1084     } else {
1085     }
1086     usleep(sleeptime);
1087 
1088     ResetWaitFlag();
1089     g_transTimeStart = GetCurrentTimeOfMs();
1090     ret = SendBytes(sessionId, dataByte, TRANS_BYTES_LENGTH_MAX);
1091     if (ret != SOFTBUS_OK) {
1092         LOG("call SendBytes[perf] fail, ret:%d", ret);
1093         isHitFail = SOFTBUS_ERR;
1094     } else {
1095         ret = Wait(timeout);
1096         if (ret != SOFTBUS_OK) {
1097             LOG("wait byte callback fail ret:%d", ret);
1098             isHitFail = SOFTBUS_ERR;
1099         }
1100     }
1101     return isHitFail;
1102 }
1103 
SetTransStartTime(void)1104 void SetTransStartTime(void)
1105 {
1106     g_transTimeStart = GetCurrentTimeOfMs();
1107 }
1108 
CloseSessionAndRemoveSs4Data(void)1109 int CloseSessionAndRemoveSs4Data(void)
1110 {
1111     int ret4Close;
1112     int timeout = 2;
1113     // 主动close不回调
1114     ResetWaitFlag4Data();
1115     CloseSession(g_currentSessionId4Data);
1116     ret4Close = Wait4Session(timeout, SESSION_4DATA);
1117     if (ret4Close == SOFTBUS_OK) {
1118         LOG("CloseSession[data] recv callback");
1119     }
1120 
1121     int ret4Ss;
1122     ret4Ss = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA);
1123     if (ret4Ss != SOFTBUS_OK) {
1124         LOG("RemoveSessionServer[data] fail, ret:%d", ret4Ss);
1125     }
1126 
1127     if (ret4Ss != SOFTBUS_OK || ret4Close == SOFTBUS_OK) {
1128         return SOFTBUS_ERR;
1129     } else {
1130         return SOFTBUS_OK;
1131     }
1132 }
1133 
CloseSessionAndRemoveSs4Ctl(void)1134 int CloseSessionAndRemoveSs4Ctl(void)
1135 {
1136     int ret4Close;
1137     int timeout = 2;
1138     ResetWaitFlag4Ctl();
1139     CloseSession(g_currentSessionId4Ctl);
1140     ret4Close = Wait4Session(timeout, SESSION_4CTL);
1141     if (ret4Close == SOFTBUS_OK) {
1142         LOG("CloseSession[ctrl] recv callback");
1143     }
1144 
1145     int ret4Ss;
1146     ret4Ss = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL);
1147     if (ret4Ss != SOFTBUS_OK) {
1148         LOG("RemoveSessionServer[ctl] fail, ret:%d", ret4Ss);
1149     }
1150 
1151     if (ret4Ss != SOFTBUS_OK || ret4Close == SOFTBUS_OK) {
1152         return SOFTBUS_ERR;
1153     } else {
1154         return SOFTBUS_OK;
1155     }
1156 }
1157 
OpenSessionBatch4Data(char groupId[][GROUP_ID_LEN],int * sessionId,int count)1158 int OpenSessionBatch4Data(char groupId[][GROUP_ID_LEN], int* sessionId, int count)
1159 {
1160     int ret;
1161     int timeout = 10;
1162     int rstFlag = SOFTBUS_OK;
1163     for (int i = 0; i < count; i++) {
1164         ResetWaitFlag4Data();
1165         int sId = OpenSession(SESSION_NAME_DATA, SESSION_NAME_DATA, g_networkId, groupId[i], g_sessionAttr4Data);
1166         if (sId < SESSION_ID_MIN) {
1167             LOG("call OpenSession[data] fail,sid:%d,i:%d", sId, i);
1168             rstFlag = SOFTBUS_ERR;
1169             continue;
1170         }
1171         SetCurrentSessionId4Data(sId);
1172         *(sessionId + i) = sId;
1173         ret = Wait4Session(timeout, SESSION_4DATA);
1174         if (ret != SOFTBUS_OK) {
1175             LOG("Wait4Session[data] fail,i:%d", i);
1176             rstFlag = SOFTBUS_ERR;
1177         }
1178     }
1179     return rstFlag;
1180 }
1181 
OpenSessionBatch4Ctl(char groupId[][GROUP_ID_LEN],int * sessionId,int count)1182 int OpenSessionBatch4Ctl(char groupId[][GROUP_ID_LEN], int* sessionId, int count)
1183 {
1184     int ret;
1185     int timeout = 10;
1186     int rstFlag = SOFTBUS_OK;
1187     for (int i = 0; i < count; i++) {
1188         ResetWaitFlag4Ctl();
1189         int sId = OpenSession(SESSION_NAME_CTL, SESSION_NAME_CTL, g_networkId, groupId[i], g_sessionAttr4Ctl);
1190         if (sId < SESSION_ID_MIN) {
1191             LOG("call OpenSession[ctrl] fail,sid:%d,i:%d", sId, i);
1192             rstFlag = SOFTBUS_ERR;
1193             continue;
1194         }
1195         SetCurrentSessionId4Ctl(sId);
1196         *(sessionId + i) = sId;
1197         ret = Wait4Session(timeout, SESSION_4CTL);
1198         if (ret != SOFTBUS_OK) {
1199             LOG("Wait4Session[ctrl] fail,i:%d", i);
1200             rstFlag = SOFTBUS_ERR;
1201         }
1202     }
1203     return rstFlag;
1204 }
1205 
CloseSessionBatch4Data(int * sessionId,int count)1206 int CloseSessionBatch4Data(int* sessionId, int count)
1207 {
1208     for (int i = 0; i < count; i++) {
1209         int sid = *(sessionId + i);
1210         LOG("close session[data] sid:%d", sid);
1211 
1212         SetCurrentSessionId4Data(sid);
1213         CloseSession(sid);
1214     }
1215     return SOFTBUS_OK;
1216 }
1217 
CloseSessionBatch4Ctl(int * sessionId,int count)1218 int CloseSessionBatch4Ctl(int* sessionId, int count)
1219 {
1220     for (int i = 0; i < count; i++) {
1221         int sid = *(sessionId + i);
1222         LOG("close session[ctrl] sid:%d", sid);
1223 
1224         SetCurrentSessionId4Ctl(sid);
1225         CloseSession(sid);
1226     }
1227     return SOFTBUS_OK;
1228 }
1229 
OpenSessionTask4Data(void * param)1230 void* OpenSessionTask4Data(void* param)
1231 {
1232     LOG("OpenSessionTask[Data] start");
1233     int ret;
1234     int step1Flag;
1235     int step2Flag;
1236     int count = MAX_SESSION_NUM / 2;
1237     int sessionId4Data[count];
1238     char groupId[][GROUP_ID_LEN] = { "g1", "g2", "g3", "g4", "g5", "g6", "g7", "g8" };
1239 
1240     pthread_barrier_wait(g_barrier);
1241     ret = OpenSessionBatch4Data(groupId, sessionId4Data, count);
1242     if (ret != SOFTBUS_OK) {
1243         LOG("OpenSessionBatch4Data ret fail");
1244     } else {
1245         LOG("OpenSessionBatch4Data ret success");
1246     }
1247     step1Flag = ret;
1248 
1249     pthread_barrier_wait(g_barrier);
1250     // create more, expect fail
1251     int moreCount = 3;
1252     step2Flag = SOFTBUS_OK;
1253     char groupIdMore[][GROUP_ID_LEN] = { "m1", "m2", "m3" };
1254     for (int i = 0; i < moreCount; i++) {
1255         int sessionId =
1256             OpenSession(SESSION_NAME_DATA, SESSION_NAME_DATA, g_networkId, groupIdMore[i], g_sessionAttr4Data);
1257         if (sessionId >= SESSION_ID_MIN) {
1258             LOG("OpenSessionTask[Ctrl] open more success, expect fail,i:%d, "
1259                 "sid:%d",
1260                 i, sessionId);
1261             step2Flag = SOFTBUS_ERR;
1262         }
1263     }
1264 
1265     if (step1Flag == SOFTBUS_OK && step2Flag == SOFTBUS_OK) {
1266         g_threadResult4Data = SOFTBUS_OK;
1267     } else {
1268         g_threadResult4Data = SOFTBUS_ERR;
1269     }
1270 
1271     LOG("OpenSessionTask[Data] end");
1272     return NULL;
1273 }
1274 
OpenSessionTask4Ctl(void * param)1275 void* OpenSessionTask4Ctl(void* param)
1276 {
1277     LOG("OpenSessionTask[Ctrl] start");
1278     int ret;
1279     int step1Flag;
1280     int step2Flag;
1281     int count = MAX_SESSION_NUM / 2;
1282     int sessionId4Ctrl[count];
1283     char groupId[][GROUP_ID_LEN] = { "g1", "g2", "g3", "g4", "g5", "g6", "g7", "g8" };
1284 
1285     pthread_barrier_wait(g_barrier);
1286     ret = OpenSessionBatch4Ctl(groupId, sessionId4Ctrl, count);
1287     if (ret != SOFTBUS_OK) {
1288         LOG("OpenSessionBatch4Ctl ret fail");
1289     } else {
1290         LOG("OpenSessionBatch4Ctl ret success");
1291     }
1292     step1Flag = ret;
1293 
1294     pthread_barrier_wait(g_barrier);
1295     // create more, expect fail
1296     int moreCount = 3;
1297     step2Flag = SOFTBUS_OK;
1298     char groupIdMore[][GROUP_ID_LEN] = { "m1", "m2", "m3" };
1299     for (int i = 0; i < moreCount; i++) {
1300         int sessionId = OpenSession(SESSION_NAME_CTL, SESSION_NAME_CTL, g_networkId, groupIdMore[i], g_sessionAttr4Ctl);
1301         if (sessionId >= SESSION_ID_MIN) {
1302             LOG("OpenSessionTask[Ctrl] open more success, expect fail,i:%d, "
1303                 "sid:%d",
1304                 i, sessionId);
1305             step2Flag = SOFTBUS_ERR;
1306         }
1307     }
1308 
1309     if (step1Flag == SOFTBUS_OK && step2Flag == SOFTBUS_OK) {
1310         g_threadResult4Ctl = SOFTBUS_OK;
1311     } else {
1312         g_threadResult4Ctl = SOFTBUS_ERR;
1313     }
1314 
1315     LOG("OpenSessionTask[Ctrl] end");
1316     return NULL;
1317 }
1318 
1319 // set/get function
ResetClosedSessionCount4Data(void)1320 void ResetClosedSessionCount4Data(void)
1321 {
1322     g_sessionCloseCount4Data = 0;
1323 }
1324 
ResetClosedSessionCount4Ctrl(void)1325 void ResetClosedSessionCount4Ctrl(void)
1326 {
1327     g_sessionCloseCount4Ctrl = 0;
1328 }
1329 
GetClosedSessionCount4Data(void)1330 int GetClosedSessionCount4Data(void)
1331 {
1332     return g_sessionCloseCount4Data;
1333 }
1334 
GetClosedSessionCount4Ctrl(void)1335 int GetClosedSessionCount4Ctrl(void)
1336 {
1337     return g_sessionCloseCount4Ctrl;
1338 }
1339 
ResetOpenSessionCount4Data(void)1340 void ResetOpenSessionCount4Data(void)
1341 {
1342     g_sessionOpenCount4Data = 0;
1343 }
1344 
ResetOpenSessionCount4Ctrl(void)1345 void ResetOpenSessionCount4Ctrl(void)
1346 {
1347     g_sessionOpenCount4Ctrl = 0;
1348 }
1349 
GetOpenSessionCount4Data(void)1350 int GetOpenSessionCount4Data(void)
1351 {
1352     return g_sessionOpenCount4Data;
1353 }
1354 
GetOpenSessionCount4Ctrl(void)1355 int GetOpenSessionCount4Ctrl(void)
1356 {
1357     return g_sessionOpenCount4Ctrl;
1358 }
1359 
GetSid4Task2(void)1360 int* GetSid4Task2(void)
1361 {
1362     return g_sId4Task2;
1363 }
1364 
GetSid4Task3(void)1365 int* GetSid4Task3(void)
1366 {
1367     return g_sId4Task3;
1368 }
1369 
ResetMsgStat4Control(void)1370 void ResetMsgStat4Control(void)
1371 {
1372     for (int i = 0; i < MAX_SESSION_NUM; i++) {
1373         g_recvMsgStat4Control[i] = 0;
1374     }
1375 }
1376 
ResetByteStat4Control(void)1377 void ResetByteStat4Control(void)
1378 {
1379     for (int i = 0; i < MAX_SESSION_NUM; i++) {
1380         g_recvByteStat4Control[i] = 0;
1381     }
1382 }
1383 
GetThreadBarrier(void)1384 pthread_barrier_t* GetThreadBarrier(void)
1385 {
1386     return g_barrier;
1387 }
1388 
GetNetworkId(void)1389 char* GetNetworkId(void)
1390 {
1391     return g_networkId;
1392 }
1393 
1394 // To one device only
CheckRemoteDeviceIsNull(int isSetNetId)1395 int CheckRemoteDeviceIsNull(int isSetNetId)
1396 {
1397     int nodeNum = 0;
1398     NodeBasicInfo* nodeInfo = NULL;
1399     int ret = GetAllNodeDeviceInfo(DEF_PKG_NAME, &nodeInfo, &nodeNum);
1400     LOG("[check]get node number is:%d, ret:%d", nodeNum, ret);
1401     if (nodeInfo != NULL && nodeNum > 0) {
1402         LOG("[check]get netid is:%s", nodeInfo->networkId);
1403         if (isSetNetId == BOOL_TRUE) {
1404             (void)strncpy_s(g_networkId, NETWORK_ID_BUF_LEN, nodeInfo->networkId, NETWORK_ID_BUF_LEN);
1405         }
1406         FreeNodeInfo(nodeInfo);
1407         return SOFTBUS_OK;
1408     } else {
1409         LOG("[check]get nodeInfo is null");
1410         return SOFTBUS_ERR;
1411     }
1412 }
1413 
GetRemoteDeviceNetId(char ** netId)1414 int GetRemoteDeviceNetId(char** netId)
1415 {
1416     int nodeNum = 0;
1417     NodeBasicInfo* nodeInfo = NULL;
1418     NodeBasicInfo* nodeInfoTmp = NULL;
1419     int ret = GetAllNodeDeviceInfo(DEF_PKG_NAME, &nodeInfo, &nodeNum);
1420     nodeInfoTmp = nodeInfo;
1421     LOG("[get]node number is:%d, ret:%d", nodeNum, ret);
1422     if (nodeInfo != NULL && nodeNum > 0) {
1423         for (int i = 0; i < nodeNum; i++) {
1424             LOG("[get] netid is:%s", nodeInfo->networkId);
1425             *(netId + i) = (char*)malloc(NETWORK_ID_BUF_LEN * sizeof(char));
1426             (void)strncpy_s(*(netId + i), NETWORK_ID_BUF_LEN, nodeInfo->networkId, NETWORK_ID_BUF_LEN);
1427             LOG("[get] netid is [strcpy]:%s", *(netId + i));
1428             nodeInfo++;
1429         }
1430         FreeNodeInfo(nodeInfoTmp);
1431     } else {
1432         LOG("[get] nodeInfo is null");
1433     }
1434     return nodeNum;
1435 }
1436 
1437 // get remote device network id, then set to global array
SetRemoteDeviceNetIdToGarray(void)1438 int SetRemoteDeviceNetIdToGarray(void)
1439 {
1440     int nodeNum = 0;
1441     NodeBasicInfo* nodeInfo = NULL;
1442     NodeBasicInfo* nodeInfoTmp = NULL;
1443     int ret = GetAllNodeDeviceInfo(DEF_PKG_NAME, &nodeInfo, &nodeNum);
1444     nodeInfoTmp = nodeInfo;
1445     LOG("[setdev netid]dev number is:%d, ret:%d", nodeNum, ret);
1446     if (nodeInfo != NULL && nodeNum > 0) {
1447         for (int i = 0; i < nodeNum; i++) {
1448             (void)strncpy_s(g_networkIdArray[i], NETWORK_ID_BUF_LEN, nodeInfo->networkId, NETWORK_ID_BUF_LEN);
1449             LOG("[setdev netid] netid:%s", g_networkIdArray[i]);
1450             nodeInfo++;
1451         }
1452         FreeNodeInfo(nodeInfoTmp);
1453     } else {
1454         LOG("[setdev netid] nodeInfo is null");
1455     }
1456     return nodeNum;
1457 }
1458 
SetCurrentNetworkId(int index)1459 int SetCurrentNetworkId(int index)
1460 {
1461     if (index < 0 || index >= MULTI_REMOTE_DEV_COUNT) {
1462         LOG("input index is error");
1463         return SOFTBUS_ERR;
1464     }
1465     int ret = strncpy_s(g_networkId, NETWORK_ID_BUF_LEN, g_networkIdArray[index], NETWORK_ID_BUF_LEN);
1466     if (ret != SOFTBUS_OK) {
1467         LOG("strncpy_s fail");
1468         return SOFTBUS_ERR;
1469     }
1470 
1471     return SOFTBUS_OK;
1472 }
1473 
GetSessionListenser4Data(void)1474 ISessionListener* GetSessionListenser4Data(void)
1475 {
1476     return g_sessionlistener4Data;
1477 }
1478 
GetSessionListenser4Ctl(void)1479 ISessionListener* GetSessionListenser4Ctl(void)
1480 {
1481     return g_sessionlistener4Ctl;
1482 }
1483 
GetSessionListenser4Pass(void)1484 ISessionListener* GetSessionListenser4Pass(void)
1485 {
1486     return g_sessionlistener4Pass;
1487 }
1488 
GetSessionListenser4Perf(void)1489 ISessionListener* GetSessionListenser4Perf(void)
1490 {
1491     return g_sessionlistener4Perf;
1492 }
1493 
GetSessionListenser4Proxy(void)1494 ISessionListener* GetSessionListenser4Proxy(void)
1495 {
1496     return g_sessionlistener4Proxy;
1497 }
1498 
GetSendFileListener(void)1499 IFileSendListener* GetSendFileListener(void)
1500 {
1501     return g_fileSendListener;
1502 }
1503 
GetRecvFileListener(void)1504 IFileReceiveListener* GetRecvFileListener(void)
1505 {
1506     return g_fileRecvListener;
1507 }
1508 
GetSessionAttr4Data(void)1509 SessionAttribute* GetSessionAttr4Data(void)
1510 {
1511     return g_sessionAttr4Data;
1512 }
1513 
GetSessionAttr4Ctl(void)1514 SessionAttribute* GetSessionAttr4Ctl(void)
1515 {
1516     return g_sessionAttr4Ctl;
1517 }
1518 
GetSessionAttr4Pass(void)1519 SessionAttribute* GetSessionAttr4Pass(void)
1520 {
1521     return g_sessionAttr4Pass;
1522 }
1523 
GetSessionAttr4Perf(void)1524 SessionAttribute* GetSessionAttr4Perf(void)
1525 {
1526     return g_sessionAttr4Perf;
1527 }
1528 
GetSessionAttr4Proxy(void)1529 SessionAttribute* GetSessionAttr4Proxy(void)
1530 {
1531     return g_sessionAttr4Proxy;
1532 }
1533 
SetCurrentSessionId4Data(int sessionId)1534 void SetCurrentSessionId4Data(int sessionId)
1535 {
1536     g_currentSessionId4Data = sessionId;
1537 }
1538 
SetCurrentSessionId4Ctl(int sessionId)1539 void SetCurrentSessionId4Ctl(int sessionId)
1540 {
1541     g_currentSessionId4Ctl = sessionId;
1542 }
1543 
GetCurrentSessionId4Data(void)1544 int GetCurrentSessionId4Data(void)
1545 {
1546     return g_currentSessionId4Data;
1547 }
1548 
GetCurrentSessionId4Ctl(void)1549 int GetCurrentSessionId4Ctl(void)
1550 {
1551     return g_currentSessionId4Ctl;
1552 }
1553 
GetThreadResult4Data(void)1554 int GetThreadResult4Data(void)
1555 {
1556     return g_threadResult4Data;
1557 }
1558 
GetThreadResult4Ctl(void)1559 int GetThreadResult4Ctl(void)
1560 {
1561     return g_threadResult4Ctl;
1562 }
1563 
GetConnectAddr(void)1564 ConnectionAddr* GetConnectAddr(void)
1565 {
1566     return &g_ethAddr;
1567 }
1568 
TestSetUp(void)1569 void TestSetUp(void)
1570 {
1571     g_defNodeStateCallback.events = EVENT_NODE_STATE_MASK;
1572     g_defNodeStateCallback.onNodeOnline = OnDefNodeOnline;
1573     g_defNodeStateCallback.onNodeOffline = OnDefNodeOffline;
1574     g_defNodeStateCallback.onNodeBasicInfoChanged = OnDefNodeBasicInfoChanged;
1575 
1576     g_defDiscCallback.OnDeviceFound = OnDefDeviceFound;
1577     g_defDiscCallback.OnDiscoverFailed = OnDefDiscoverFail;
1578     g_defDiscCallback.OnDiscoverySuccess = OnDefDiscoverSuccess;
1579 
1580     if (g_sessionlistener4Data == NULL) {
1581         g_sessionlistener4Data = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1582         g_sessionlistener4Data->OnSessionOpened = DataSessionOpened;
1583         g_sessionlistener4Data->OnSessionClosed = DataSessionClosed;
1584         g_sessionlistener4Data->OnMessageReceived = DataMessageReceived;
1585         g_sessionlistener4Data->OnBytesReceived = DataBytesReceived;
1586     }
1587     if (g_sessionlistener4Ctl == NULL) {
1588         g_sessionlistener4Ctl = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1589         g_sessionlistener4Ctl->OnSessionOpened = ControlSessionOpened;
1590         g_sessionlistener4Ctl->OnSessionClosed = ControlSessionClosed;
1591         g_sessionlistener4Ctl->OnMessageReceived = ControlMessageReceived;
1592         g_sessionlistener4Ctl->OnBytesReceived = ControlBytesReceived;
1593     }
1594     if (g_sessionlistener4Pass == NULL) {
1595         g_sessionlistener4Pass = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1596         g_sessionlistener4Pass->OnSessionOpened = PassiveSessionOpened;
1597         g_sessionlistener4Pass->OnSessionClosed = PassiveSessionClosed;
1598         g_sessionlistener4Pass->OnMessageReceived = PassiveMessageReceived;
1599         g_sessionlistener4Pass->OnBytesReceived = PassiveBytesReceived;
1600     }
1601     if (g_sessionlistener4Perf == NULL) {
1602         g_sessionlistener4Perf = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1603         g_sessionlistener4Perf->OnSessionOpened = PerfSessionOpened;
1604         g_sessionlistener4Perf->OnSessionClosed = PerfSessionClosed;
1605         g_sessionlistener4Perf->OnMessageReceived = PerfMessageReceived;
1606         g_sessionlistener4Perf->OnBytesReceived = PerfBytesReceived;
1607     }
1608     if (g_sessionlistener4Proxy == NULL) {
1609         g_sessionlistener4Proxy = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1610         g_sessionlistener4Proxy->OnSessionOpened = ProxySessionOpened;
1611         g_sessionlistener4Proxy->OnSessionClosed = ProxySessionClosed;
1612         g_sessionlistener4Proxy->OnMessageReceived = ProxyMessageReceived;
1613         g_sessionlistener4Proxy->OnBytesReceived = ProxyBytesReceived;
1614     }
1615 
1616     if (g_fileSendListener == NULL) {
1617         g_fileSendListener = (IFileSendListener*)calloc(1, sizeof(IFileSendListener));
1618         g_fileSendListener->OnSendFileProcess = OnSendFileProcess;
1619         g_fileSendListener->OnSendFileFinished = OnSendFileFinished;
1620         g_fileSendListener->OnFileTransError = OnSendFileTransError;
1621     };
1622     if (g_fileRecvListener == NULL) {
1623         g_fileRecvListener = (IFileReceiveListener*)calloc(1, sizeof(IFileReceiveListener));
1624         g_fileRecvListener->OnReceiveFileStarted = OnReceiveFileStarted;
1625         g_fileRecvListener->OnReceiveFileProcess = OnReceiveFileProcess;
1626         g_fileRecvListener->OnReceiveFileFinished = OnReceiveFileFinished;
1627         g_fileRecvListener->OnFileTransError = OnRecvFileTransError;
1628     }
1629 
1630     if (g_sessionAttr4Data == NULL) {
1631         g_sessionAttr4Data = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1632         g_sessionAttr4Data->dataType = TYPE_BYTES;
1633     }
1634     if (g_sessionAttr4Ctl == NULL) {
1635         g_sessionAttr4Ctl = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1636         g_sessionAttr4Ctl->dataType = TYPE_BYTES;
1637     }
1638     if (g_sessionAttr4Pass == NULL) {
1639         g_sessionAttr4Pass = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1640         g_sessionAttr4Pass->dataType = TYPE_BYTES;
1641     }
1642     if (g_sessionAttr4Perf == NULL) {
1643         g_sessionAttr4Perf = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1644         g_sessionAttr4Perf->dataType = TYPE_BYTES;
1645     }
1646     if (g_sessionAttr4Proxy == NULL) {
1647         g_sessionAttr4Proxy = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1648         g_sessionAttr4Proxy->dataType = TYPE_MESSAGE;
1649     }
1650 
1651     if (g_barrier == NULL) {
1652         g_barrier = (pthread_barrier_t*)calloc(1, sizeof(pthread_barrier_t));
1653     }
1654 
1655     if (g_sId4Task2 == NULL) {
1656         g_sId4Task2 = (int*)malloc(sizeof(int) * DEF_SEND_DATA_SID_COUNT);
1657     }
1658     if (g_sId4Task3 == NULL) {
1659         g_sId4Task3 = (int*)malloc(sizeof(int) * DEF_SEND_DATA_SID_COUNT);
1660     }
1661 }
1662 
TestTearDown(void)1663 void TestTearDown(void)
1664 {
1665     if (g_sessionlistener4Data != NULL) {
1666         free(g_sessionlistener4Data);
1667         g_sessionlistener4Data = NULL;
1668     }
1669     if (g_sessionlistener4Ctl != NULL) {
1670         free(g_sessionlistener4Ctl);
1671         g_sessionlistener4Ctl = NULL;
1672     }
1673     if (g_sessionlistener4Pass != NULL) {
1674         free(g_sessionlistener4Pass);
1675         g_sessionlistener4Pass = NULL;
1676     }
1677     if (g_sessionlistener4Perf != NULL) {
1678         free(g_sessionlistener4Perf);
1679         g_sessionlistener4Perf = NULL;
1680     }
1681     if (g_sessionlistener4Proxy != NULL) {
1682         free(g_sessionlistener4Proxy);
1683         g_sessionlistener4Proxy = NULL;
1684     }
1685 
1686     if (g_fileRecvListener != NULL) {
1687         free(g_fileRecvListener);
1688         g_fileRecvListener = NULL;
1689     }
1690     if (g_fileSendListener != NULL) {
1691         free(g_fileSendListener);
1692         g_fileSendListener = NULL;
1693     }
1694 
1695     if (g_sessionAttr4Data != NULL) {
1696         free(g_sessionAttr4Data);
1697         g_sessionAttr4Data = NULL;
1698     }
1699     if (g_sessionAttr4Ctl != NULL) {
1700         free(g_sessionAttr4Ctl);
1701         g_sessionAttr4Ctl = NULL;
1702     }
1703     if (g_sessionAttr4Pass != NULL) {
1704         free(g_sessionAttr4Pass);
1705         g_sessionAttr4Pass = NULL;
1706     }
1707     if (g_sessionAttr4Perf != NULL) {
1708         free(g_sessionAttr4Perf);
1709         g_sessionAttr4Perf = NULL;
1710     }
1711     if (g_sessionAttr4Proxy != NULL) {
1712         free(g_sessionAttr4Proxy);
1713         g_sessionAttr4Proxy = NULL;
1714     }
1715 
1716     if (g_barrier != NULL) {
1717         free(g_barrier);
1718         g_barrier = NULL;
1719     }
1720 
1721     if (g_sId4Task2 != NULL) {
1722         free(g_sId4Task2);
1723         g_sId4Task2 = NULL;
1724     }
1725     if (g_sId4Task3 != NULL) {
1726         free(g_sId4Task3);
1727         g_sId4Task3 = NULL;
1728     }
1729 }
1730