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 #include "accesstoken_kit.h"
21 
22 using namespace testing::ext;
23 
24 class TransFuncTest : public testing::Test {
25 public:
26     // 测试套前置和后置操作
27     static void SetUpTestCase();
28     static void TearDownTestCase();
29 
30     // 测试用例前置和后置操作
31     void SetUp();
32     void TearDown();
33 };
34 
SetUp()35 void TransFuncTest::SetUp() {}
36 
TearDown()37 void TransFuncTest::TearDown()
38 {
39     sleepn(1);
40 }
41 
SetUpTestCase()42 void TransFuncTest::SetUpTestCase()
43 {
44     LOG("SetUp begin");
45     AddPermission();
46     sleep(1);
47     OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
48     sleep(1);
49     TestSetUp();
50     int ret = RegisterDeviceStateDefCallback();
51     EXPECT_EQ(SOFTBUS_OK, ret) << "call reg node state callback fail";
52     ret = CheckRemoteDeviceIsNull(BOOL_TRUE);
53     ASSERT_EQ(SOFTBUS_OK, ret) << "get node fail,please check network";
54 
55     LOG("SetUp end");
56 }
57 
TearDownTestCase()58 void TransFuncTest::TearDownTestCase()
59 {
60     int ret = UnRegisterDeviceStateDefCallback();
61     EXPECT_EQ(SOFTBUS_OK, ret) << "call unReg node state callback fail";
62 
63     TestTearDown();
64 }
65 
66 /**
67  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_0100
68  * @tc.name   : SendByte Packet size 1B, send and receive successful
69  * @tc.desc   : Test the SendByte specification
70  * @tc.type   : FUNC
71  * @tc.size   : MediumTest
72  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0100, TestSize.Level3)73 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0100, TestSize.Level3)
74 {
75     int ret;
76     ret = CreateSsAndOpenSession4Data();
77     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
78 
79     int size = 1;
80     ret = SendData4Data(DATA_TYPE_BYTE, size);
81     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte, 1B) fail";
82 
83     ret = CloseSessionAndRemoveSs4Data();
84     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
85 }
86 
87 /**
88  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_0200
89  * @tc.name   : SendByte Packet size 2M, send and receive successful
90  * @tc.desc   : Test the SendByte specification
91  * @tc.type   : FUNC
92  * @tc.size   : MediumTest
93  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0200, TestSize.Level3)94 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0200, TestSize.Level3)
95 {
96     int ret;
97     ret = CreateSsAndOpenSession4Data();
98     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
99 
100     int size = 2 * 1024 * 1024;
101     ret = SendData4Data(DATA_TYPE_BYTE, size);
102     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte,2M) fail";
103 
104     ret = CloseSessionAndRemoveSs4Data();
105     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
106 }
107 
108 /**
109  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_0300
110  * @tc.name   : SendByte Packet size 0, send and receive failed
111  * @tc.desc   : Test the SendByte specification
112  * @tc.type   : FUNC
113  * @tc.size   : MediumTest
114  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0300, TestSize.Level3)115 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0300, TestSize.Level3)
116 {
117     int ret;
118     ret = CreateSsAndOpenSession4Data();
119     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
120 
121     int size = 0;
122     string emptyStr = "";
123     int sessionId = GetCurrentSessionId4Data();
124     ret = SendBytes(sessionId, emptyStr.c_str(), size);
125     EXPECT_NE(SOFTBUS_OK, ret) << "call sendbytes(empty) fail";
126 
127     ret = CloseSessionAndRemoveSs4Data();
128     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
129 }
130 
131 
132 /**
133  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_0400
134  * @tc.name   : SendByte Packet size 1B ,Proxy channel, send and receive failed
135  * @tc.desc   : Test the SendByte specification
136  * @tc.type   : FUNC
137  * @tc.size   : MediumTest
138  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0400, TestSize.Level3)139 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0400, TestSize.Level3)
140 {
141     int ret;
142     ret = CreateSsAndOpenSession4Proxy();
143     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
144 
145     int size = 1;
146     ret = SendData4Message(DATA_TYPE_BYTE, size);
147     EXPECT_NE(SOFTBUS_OK, ret) << "SendData4Data(byte, 1B) fail";
148 
149     ret = CloseSessionAndRemoveSs4Proxy();
150     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
151 }
152 
153 /**
154  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_0500
155  * @tc.name   : SendByte Packet size Max by session Negotiate, send and receive failed
156  * @tc.desc   : Test the SendByte specification
157  * @tc.type   : FUNC
158  * @tc.size   : MediumTest
159  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0500, TestSize.Level3)160 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0500, TestSize.Level3)
161 {
162     int ret;
163     ret = CreateSsAndOpenSession4Data();
164     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
165 
166     int optionvalue = 0;
167     ret = GetSessionOption(GetCurrentSessionId4Data(), SESSION_OPTION_MAX_SENDBYTES_SIZE,
168                            &optionvalue, sizeof(optionvalue));
169     EXPECT_EQ(SOFTBUS_OK, ret) << "GetSessionOption fail";
170     LOG("GetSessionOption optionvalue = %d", optionvalue);
171     int size = optionvalue;
172     ret = SendData4Data(DATA_TYPE_BYTE, size);
173     EXPECT_EQ(SOFTBUS_OK, ret) << "call sendbytes(Max) fail";
174 
175     ret = CloseSessionAndRemoveSs4Data();
176     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
177 }
178 
179 /**
180  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_0600
181  * @tc.name   : SendByte Packet size Max + 1 by session Negotiate, send and receive failed
182  * @tc.desc   : Test the SendByte specification
183  * @tc.type   : FUNC
184  * @tc.size   : MediumTest
185  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0600, TestSize.Level3)186 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_0600, TestSize.Level3)
187 {
188     int ret;
189     ret = CreateSsAndOpenSession4Data();
190     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
191 
192     int optionvalue = 0;
193     ret = GetSessionOption(GetCurrentSessionId4Data(), SESSION_OPTION_MAX_SENDBYTES_SIZE,
194                            &optionvalue, sizeof(optionvalue));
195     EXPECT_EQ(SOFTBUS_OK, ret) << "GetSessionOption fail";
196     LOG("GetSessionOption optionvalue = %d", optionvalue);
197     int size = optionvalue + 1;
198     ret = SendData4Data(DATA_TYPE_BYTE, size);
199     EXPECT_NE(SOFTBUS_OK, ret) << "call sendbytes(Max + 1) fail";
200 
201     ret = CloseSessionAndRemoveSs4Data();
202     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
203 }
204 
205 /**
206  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_0100
207  * @tc.name   : SendMessage Packet size 1B, session type is TYPE_BYTES send and receive failed
208  * @tc.desc   : Test the SendMessage specification
209  * @tc.type   : FUNC
210  * @tc.size   : MediumTest
211  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0100, TestSize.Level3)212 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0100, TestSize.Level3)
213 {
214     int ret;
215     ret = CreateSsAndOpenSession4Data();
216     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
217 
218     int size = 1;
219     ret = SendData4Data(DATA_TYPE_MSG, size);
220     EXPECT_NE(SOFTBUS_OK, ret) << "SendData4Data(msg, 1B) fail";
221 
222     ret = CloseSessionAndRemoveSs4Data();
223     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
224 }
225 
226 /**
227  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_0200
228  * @tc.name   : SendMessage Packet size 1B, proxy channel, send and receive successful
229  * @tc.desc   : [G-DISTRIBUTED-0206]禁止修改传输的默认协议,新增或者变更默认传输协议必须通过协商机制来实现
230  * @tc.type   : FUNC
231  * @tc.size   : MediumTest
232  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0200, TestSize.Level3)233 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0200, TestSize.Level3)
234 {
235     int ret;
236     ret = CreateSsAndOpenSession4Proxy();
237     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
238 
239     int size = 1;
240     ret = SendData4Message(DATA_TYPE_MSG, size);
241     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(msg, 1B) fail";
242 
243     ret = CloseSessionAndRemoveSs4Proxy();
244     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
245 }
246 
247 /**
248  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_0300
249  * @tc.name   : SendMessage Packet size 1K, proxy channel, send and receive successful
250  * @tc.desc   : [G-DISTRIBUTED-0206]禁止修改传输的默认协议,新增或者变更默认传输协议必须通过协商机制来实现
251  * @tc.type   : FUNC
252  * @tc.size   : MediumTest
253  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0300, TestSize.Level3)254 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0300, TestSize.Level3)
255 {
256     int ret;
257     ret = CreateSsAndOpenSession4Proxy();
258     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
259 
260     int size = 1024;
261     ret = SendData4Message(DATA_TYPE_MSG, size);
262     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(msg,1K) fail";
263 
264     ret = CloseSessionAndRemoveSs4Proxy();
265     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
266 }
267 
268 /**
269  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_0400
270  * @tc.name   : SendMessage Packet size 0, proxy channel, send and receive failed
271  * @tc.desc   : Test the SendMessage specification
272  * @tc.type   : FUNC
273  * @tc.size   : MediumTest
274  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0400, TestSize.Level3)275 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0400, TestSize.Level3)
276 {
277     int ret;
278     ret = CreateSsAndOpenSession4Proxy();
279     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
280 
281     int size = 0;
282     string emptystr = "";
283     int sessionId = GetCurrentSessionId4Proxy();
284     ret = SendMessage(sessionId, emptystr.c_str(), size);
285     EXPECT_NE(SOFTBUS_OK, ret) << "call sendmsg(empty) fail";
286 
287     ret = CloseSessionAndRemoveSs4Proxy();
288     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
289 }
290 
291 /**
292  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_0500
293  * @tc.name   : SendMessage Packet size Max by session Negotiate, proxy channel, send and receive failed
294  * @tc.desc   : [G-DISTRIBUTED-0210] 使用消息传输接口,消息大小不超过4K字节,超过时需要业务对消息进行分包
295  *             处理,或者改为使用字节传输接口,字节传输可支持最大4M字节
296  * @tc.type   : FUNC
297  * @tc.size   : MediumTest
298  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0500, TestSize.Level3)299 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0500, TestSize.Level3)
300 {
301     int ret;
302     ret = CreateSsAndOpenSession4Proxy();
303     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
304 
305     int optionvalue = 0;
306     ret = GetSessionOption(GetCurrentSessionId4Proxy(), SESSION_OPTION_MAX_SENDMESSAGE_SIZE,
307                            &optionvalue, sizeof(optionvalue));
308     EXPECT_EQ(SOFTBUS_OK, ret) << "GetSessionOption fail";
309     LOG("GetSessionOption optionvalue = %d", optionvalue);
310     int size = optionvalue;
311     ret = SendData4Message(DATA_TYPE_MSG, size);
312     EXPECT_EQ(SOFTBUS_OK, ret) << "call sendmsg(Max) fail";
313 
314     ret = CloseSessionAndRemoveSs4Proxy();
315     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
316 }
317 
318 /**
319  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_0600
320  * @tc.name   : SendMessage Packet size Max +1 by session Negotiate, proxy channel, send and receive failed
321  * @tc.desc   : [G-DISTRIBUTED-0210] 使用消息传输接口,消息大小不超过4K字节,超过时需要业务对消息进行分包
322  *             处理,或者改为使用字节传输接口,字节传输可支持最大4M字节
323  * @tc.type   : FUNC
324  * @tc.size   : MediumTest
325  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0600, TestSize.Level3)326 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_0600, TestSize.Level3)
327 {
328     int ret;
329     ret = CreateSsAndOpenSession4Proxy();
330     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
331 
332     int optionvalue = 0;
333     ret = GetSessionOption(GetCurrentSessionId4Proxy(), SESSION_OPTION_MAX_SENDMESSAGE_SIZE,
334                            &optionvalue, sizeof(optionvalue));
335     EXPECT_EQ(SOFTBUS_OK, ret) << "GetSessionOption fail";
336     LOG("GetSessionOption optionvalue = %d", optionvalue);
337     int size = optionvalue + 1;
338     ret = SendData4Message(DATA_TYPE_MSG, size);
339     EXPECT_NE(SOFTBUS_OK, ret) << "call sendmsg(Max+1) fail";
340 
341     ret = CloseSessionAndRemoveSs4Proxy();
342     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
343 }
344 
345 /**
346  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0100
347  * @tc.name   : SendByte By P2P Packet size 1B, send and receive successful
348  * @tc.desc   : [G-DISTRIBUTED-0206]禁止修改传输的默认协议,新增或者变更默认传输协议必须通过协商机制来实现
349  * @tc.type   : FUNC
350  * @tc.size   : MediumTest
351  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0100, TestSize.Level3)352 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0100, TestSize.Level3)
353 {
354     int ret;
355     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA, GetSessionListenser4Data());
356     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
357 
358     ret = OpenSession4DataByP2p();
359     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte, 1B) fail";
360 
361     int size = 1;
362     ret = SendData4Data(DATA_TYPE_BYTE, size);
363     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte, 1B) fail";
364 
365     ret = CloseSessionAndRemoveSs4Data();
366     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
367 }
368 
369 /**
370  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0200
371  * @tc.name   : SendByte By P2P Packet size 2M, send and receive successful
372  * @tc.desc   : Test the SendByte specification
373  * @tc.type   : FUNC
374  * @tc.size   : MediumTest
375  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0200, TestSize.Level3)376 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0200, TestSize.Level3)
377 {
378     int ret;
379     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA, GetSessionListenser4Data());
380     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
381 
382     ret = OpenSession4DataByP2p();
383     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte, 1B) fail";
384 
385     int size = 2 * 1024 * 1024;
386     ret = SendData4Data(DATA_TYPE_BYTE, size);
387     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte,2M) fail";
388 
389     ret = CloseSessionAndRemoveSs4Data();
390     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
391 }
392 
393 /**
394  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0300
395  * @tc.name   : SendByte By P2P Packet size 0, send and receive failed
396  * @tc.desc   : Test the SendByte specification
397  * @tc.type   : FUNC
398  * @tc.size   : MediumTest
399  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0300, TestSize.Level3)400 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0300, TestSize.Level3)
401 {
402     int ret;
403     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA, GetSessionListenser4Data());
404     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
405 
406     ret = OpenSession4DataByP2p();
407     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte, 1B) fail";
408 
409     int size = 0;
410     string emptyStr = "";
411     int sessionId = GetCurrentSessionId4Data();
412     ret = SendBytes(sessionId, emptyStr.c_str(), size);
413     EXPECT_NE(SOFTBUS_OK, ret) << "call sendbytes(empty) fail";
414 
415     ret = CloseSessionAndRemoveSs4Data();
416     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
417 }
418 
419 /**
420  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0400
421  * @tc.name   : SendByte By P2P Packet size 1B ,Proxy channel, send and receive failed
422  * @tc.desc   : Test the SendByte specification
423  * @tc.type   : FUNC
424  * @tc.size   : MediumTest
425  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0400, TestSize.Level3)426 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0400, TestSize.Level3)
427 {
428     int ret;
429     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY, GetSessionListenser4Proxy());
430     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
431 
432     ret = OpenSession4ProxyByP2p();
433     ASSERT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte, 1B) fail";
434 
435     int size = 1;
436     ret = SendData4Message(DATA_TYPE_BYTE, size);
437     EXPECT_NE(SOFTBUS_OK, ret) << "SendData4Data(byte, 1B) fail";
438 
439     ret = CloseSessionAndRemoveSs4Proxy();
440     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
441 }
442 
443 /**
444  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0500
445  * @tc.name   : SendByte By P2P Packet size Max by session Negotiate, send and receive successful
446  * @tc.desc   : [G-DISTRIBUTED-0210] 使用消息传输接口,消息大小不超过4K字节,超过时需要业务对消息进行分包
447  *             处理,或者改为使用字节传输接口,字节传输可支持最大4M字节
448  * @tc.type   : FUNC
449  * @tc.size   : MediumTest
450  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0500, TestSize.Level3)451 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0500, TestSize.Level3)
452 {
453     int ret;
454     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA, GetSessionListenser4Data());
455     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
456 
457     ret = OpenSession4DataByP2p();
458     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte, 1B) fail";
459 
460     int optionvalue = 0;
461     ret = GetSessionOption(GetCurrentSessionId4Data(), SESSION_OPTION_MAX_SENDBYTES_SIZE,
462                            &optionvalue, sizeof(optionvalue));
463     EXPECT_EQ(SOFTBUS_OK, ret) << "GetSessionOption fail";
464     LOG("GetSessionOption optionvalue = %d", optionvalue);
465     int size = optionvalue;
466     ret = SendData4Data(DATA_TYPE_BYTE, size);
467     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte,Max) fail";
468 
469     ret = CloseSessionAndRemoveSs4Data();
470     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
471 }
472 
473 /**
474  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0600
475  * @tc.name   : SendByte By P2P Packet size Max + 1 by session Negotiate, send and receive failed
476  * @tc.desc   : [G-DISTRIBUTED-0210] 使用消息传输接口,消息大小不超过4K字节,超过时需要业务对消息进行分包
477  *             处理,或者改为使用字节传输接口,字节传输可支持最大4M字节
478  * @tc.type   : FUNC
479  * @tc.size   : MediumTest
480  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0600, TestSize.Level3)481 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendBytes_P2P_0600, TestSize.Level3)
482 {
483     int ret;
484     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA, GetSessionListenser4Data());
485     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
486 
487     ret = OpenSession4DataByP2p();
488     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte, 1B) fail";
489 
490     int optionvalue = 0;
491     ret = GetSessionOption(GetCurrentSessionId4Data(), SESSION_OPTION_MAX_SENDBYTES_SIZE,
492                            &optionvalue, sizeof(optionvalue));
493     EXPECT_EQ(SOFTBUS_OK, ret) << "GetSessionOption fail";
494     LOG("GetSessionOption optionvalue = %d", optionvalue);
495     int size = optionvalue + 1;
496     ret = SendData4Data(DATA_TYPE_BYTE, size);
497     EXPECT_NE(SOFTBUS_OK, ret) << "call sendbytes(empty) fail";
498 
499     ret = CloseSessionAndRemoveSs4Data();
500     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
501 }
502 
503 /**
504  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0100
505  * @tc.name   : SendMessage By P2P Packet size 1B, send and receive failed
506  * @tc.desc   : Test the SendMessage specification
507  * @tc.type   : FUNC
508  * @tc.size   : MediumTest
509  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0100, TestSize.Level3)510 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0100, TestSize.Level3)
511 {
512     int ret;
513     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA, GetSessionListenser4Data());
514     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss and openS[data] fail";
515 
516     ret = OpenSession4DataByP2p();
517     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(byte, 1B) fail";
518     int size = 1;
519     ret = SendData4Data(DATA_TYPE_MSG, size);
520     EXPECT_NE(SOFTBUS_OK, ret) << "SendData4Data(msg, 1B) fail";
521 
522     ret = CloseSessionAndRemoveSs4Data();
523     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
524 }
525 
526 /**
527  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0200
528  * @tc.name   : SendMessage Packet size 1B, proxy channel, send and receive successful
529  * @tc.desc   : Test the SendMessage specification
530  * @tc.type   : FUNC
531  * @tc.size   : MediumTest
532  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0200, TestSize.Level3)533 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0200, TestSize.Level3)
534 {
535     int ret;
536     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY, GetSessionListenser4Proxy());
537     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss [Proxy] fail";
538 
539     ret = OpenSession4ProxyByP2p();
540     EXPECT_EQ(SOFTBUS_OK, ret) << "OpenSession Proxy fail";
541 
542     int size = 1;
543     ret = SendData4Message(DATA_TYPE_MSG, size);
544     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(msg, 1B) fail";
545 
546     ret = CloseSessionAndRemoveSs4Proxy();
547     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
548 }
549 
550 /**
551  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0300
552  * @tc.name   : SendMessage Packet size 1K, proxy channel, send and receive successful
553  * @tc.desc   : Test the SendMessage specification
554  * @tc.type   : FUNC
555  * @tc.size   : MediumTest
556  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0300, TestSize.Level3)557 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0300, TestSize.Level3)
558 {
559     int ret;
560     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY, GetSessionListenser4Proxy());
561     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss [Proxy] fail";
562 
563     ret = OpenSession4ProxyByP2p();
564     EXPECT_EQ(SOFTBUS_OK, ret) << "OpenSession Proxy fail";
565 
566     int size = 1024;
567     ret = SendData4Message(DATA_TYPE_MSG, size);
568     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(msg,1K) fail";
569 
570     ret = CloseSessionAndRemoveSs4Proxy();
571     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
572 }
573 
574 /**
575  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0400
576  * @tc.name   : SendMessage Packet size 0, proxy channel, send and receive failed
577  * @tc.desc   : Test the SendMessage specification
578  * @tc.type   : FUNC
579  * @tc.size   : MediumTest
580  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0400, TestSize.Level3)581 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0400, TestSize.Level3)
582 {
583     int ret;
584     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY, GetSessionListenser4Proxy());
585     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss [Proxy] fail";
586 
587     ret = OpenSession4ProxyByP2p();
588     ASSERT_EQ(SOFTBUS_OK, ret) << "OpenSession Proxy fail";
589 
590     int size = 0;
591     string emptystr = "";
592     int sessionId = GetCurrentSessionId4Proxy();
593     ret = SendMessage(sessionId, emptystr.c_str(), size);
594     EXPECT_NE(SOFTBUS_OK, ret) << "call sendmsg(empty) fail";
595 
596     ret = CloseSessionAndRemoveSs4Proxy();
597     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
598 }
599 
600 /**
601  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0500
602  * @tc.name   : SendMessage Packet size max by session Negotiate, proxy channel, send and receive successful
603  * @tc.desc   : [G-DISTRIBUTED-0210] 使用消息传输接口,消息大小不超过4K字节,超过时需要业务对消息进行分包
604  *             处理,或者改为使用字节传输接口,字节传输可支持最大4M字节
605  * @tc.type   : FUNC
606  * @tc.size   : MediumTest
607  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0500, TestSize.Level3)608 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0500, TestSize.Level3)
609 {
610     int ret;
611     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY, GetSessionListenser4Proxy());
612     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss [Proxy] fail";
613 
614     ret = OpenSession4ProxyByP2p();
615     EXPECT_EQ(SOFTBUS_OK, ret) << "OpenSession Proxy fail";
616 
617     int optionvalue = 0;
618     ret = GetSessionOption(GetCurrentSessionId4Proxy(), SESSION_OPTION_MAX_SENDMESSAGE_SIZE,
619                            &optionvalue, sizeof(optionvalue));
620     EXPECT_EQ(SOFTBUS_OK, ret) << "GetSessionOption fail";
621     LOG("GetSessionOption optionvalue = %d", optionvalue);
622     int size = optionvalue;
623     ret = SendData4Message(DATA_TYPE_MSG, size);
624     EXPECT_EQ(SOFTBUS_OK, ret) << "SendData4Data(msg,Max) fail";
625 
626     ret = CloseSessionAndRemoveSs4Proxy();
627     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
628 }
629 
630 /**
631  * @tc.number : SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0600
632  * @tc.name   : SendMessage Packet size Max +1 by session Negotiate, proxy channel, send and receive failed
633  * @tc.desc   : [G-DISTRIBUTED-0210] 使用消息传输接口,消息大小不超过4K字节,超过时需要业务对消息进行分包
634  *             处理,或者改为使用字节传输接口,字节传输可支持最大4M字节
635  * @tc.type   : FUNC
636  * @tc.size   : MediumTest
637  */
HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0600, TestSize.Level3)638 HWTEST_F(TransFuncTest, SUB_DSoftbus_Spec_DCTS_SendMessage_P2P_0600, TestSize.Level3)
639 {
640     int ret;
641     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY, GetSessionListenser4Proxy());
642     ASSERT_EQ(SOFTBUS_OK, ret) << "create Ss [Proxy] fail";
643 
644     ret = OpenSession4ProxyByP2p();
645     ASSERT_EQ(SOFTBUS_OK, ret) << "OpenSession Proxy fail";
646 
647     int optionvalue = 0;
648     ret = GetSessionOption(GetCurrentSessionId4Proxy(), SESSION_OPTION_MAX_SENDMESSAGE_SIZE,
649                            &optionvalue, sizeof(optionvalue));
650     EXPECT_EQ(SOFTBUS_OK, ret) << "GetSessionOption fail";
651     LOG("GetSessionOption optionvalue = %d", optionvalue);
652     int size = optionvalue + 1;
653     ret = SendData4Message(DATA_TYPE_MSG, size);
654     EXPECT_NE(SOFTBUS_OK, ret) << "call sendmsg(Max+1) fail";
655 
656     ret = CloseSessionAndRemoveSs4Proxy();
657     EXPECT_EQ(SOFTBUS_OK, ret) << "close session and remove Ss fail";
658 }