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