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