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