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 #include "net_trans_common.h"
18 #include "wifi_utils.h"
19 #include "accesstoken_kit.h"
20 
21 #define I_FRAME_SIZE (150 * 1024)
22 #define P_FRAME_SIZE (30 * 1024)
23 
24 using namespace testing::ext;
25 
26 class TransStreamTest : public testing::Test {
27    public:
28     static void SetUpTestCase();
29     static void TearDownTestCase();
30     void SetUp();
31     void TearDown();
32 };
33 
SetUp()34 void TransStreamTest::SetUp() {}
35 
TearDown()36 void TransStreamTest::TearDown() {}
37 
SetUpTestCase()38 void TransStreamTest::SetUpTestCase()
39 {
40     LOG("SetUp begin");
41     AddPermission();
42     sleep(1);
43     OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
44     sleep(1);
45     TestSetUp();
46     int ret = RegisterDeviceStateDefCallback();
47     EXPECT_EQ(SOFTBUS_OK, ret) << "call reg node state callback fail";
48     ret = CheckRemoteDeviceIsNull(BOOL_TRUE);
49     ASSERT_EQ(SOFTBUS_OK, ret) << "get node fail,please check network";
50 }
51 
TearDownTestCase()52 void TransStreamTest::TearDownTestCase()
53 {
54     int ret = UnRegisterDeviceStateDefCallback();
55     EXPECT_EQ(SOFTBUS_OK, ret) << "call unReg node state callback fail";
56 
57     TestTearDown();
58 }
59 
60 /**
61  * @tc.number   : SUB_DSoftbus_Spec_DCTS_SendStream_0100
62  * @tc.name     : test Stream
63  * @tc.desc     : Test send stream function
64  * @tc.type     : FUNC
65  * @tc.size     : MediumTest
66  */
HWTEST_F(TransStreamTest, SUB_DSoftbus_Spec_DCTS_SendStream_0100, TestSize.Level2)67 HWTEST_F(TransStreamTest, SUB_DSoftbus_Spec_DCTS_SendStream_0100, TestSize.Level2) {
68     int ret;
69 
70     string data = "send stream transmission test!!!!";
71     char *sendData = (char *)malloc(data.length() + 1);
72     EXPECT_NE(sendData, nullptr);
73     ret = strcpy_s(sendData, data.length() + 1, data.c_str());
74     EXPECT_EQ(ret, SOFTBUS_OK);
75     StreamData extStreamData {0};
76     StreamData streamData {
77         .buf = sendData,
78         .bufLen = data.length() + 1,
79     };
80     StreamFrameInfo  frame = {0};
81 
82     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_STREAM, GetSessionListenser4Stream());
83     EXPECT_EQ(SOFTBUS_OK, ret) << "CreateSS[Stream] fail";
84 
85     SessionAttribute attr;
86     (void)memset_s(&attr, sizeof(attr), 0, sizeof(attr));
87     attr.dataType = TYPE_STREAM;
88     int sessionId = OpenSession(SESSION_NAME_STREAM, SESSION_NAME_STREAM, GetNetworkId(),
89                           DEF_GROUP_ID, &attr);
90     EXPECT_TRUE(sessionId >= SESSION_ID_MIN) << "call OpenSession[Stream] fail, sessionId=" << sessionId;
91     if (sessionId >= SESSION_ID_MIN) {
92         ret = Wait4Session(5, SESSION_4STREAM);
93         EXPECT_EQ(SOFTBUS_OK, ret) << "wait opensession fail[Stream]";
94         LOG("call OpenSession[Stream] success");
95     }
96     ResetWaitFlag();
97     ret = SendStream(sessionId, &streamData, &extStreamData, &frame);
98     EXPECT_EQ(SOFTBUS_OK, ret) << "call SendStream fail";
99 
100     CloseSession(sessionId);
101     ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_STREAM);
102     EXPECT_EQ(SOFTBUS_OK, ret) << "RemoveSS[proxy] fail";
103 }
104 
105 /**
106  * @tc.number   : SUB_DSoftbus_Spec_DCTS_SendStream_P2P_0100
107  * @tc.name     : test Stream By P2P
108  * @tc.desc     : Test send stream function
109  * @tc.type     : FUNC
110  * @tc.size     : MediumTest
111  */
HWTEST_F(TransStreamTest, SUB_DSoftbus_Spec_DCTS_SendStream_P2P_0100, TestSize.Level2)112 HWTEST_F(TransStreamTest, SUB_DSoftbus_Spec_DCTS_SendStream_P2P_0100, TestSize.Level2) {
113     int ret;
114 
115     string data = "send stream transmission test!!!!";
116     char *sendData = (char *)malloc(data.length() + 1);
117     EXPECT_NE(sendData, nullptr);
118     ret = strcpy_s(sendData, data.length() + 1, data.c_str());
119     EXPECT_EQ(ret, SOFTBUS_OK);
120     StreamData extStreamData {0};
121     StreamData streamData {
122         .buf = sendData,
123         .bufLen = data.length() + 1,
124     };
125     StreamFrameInfo  frame = {0};
126 
127     ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_STREAM, GetSessionListenser4Stream());
128     EXPECT_EQ(SOFTBUS_OK, ret) << "CreateSS[Stream] fail";
129 
130     SessionAttribute attr;
131     (void)memset_s(&attr, sizeof(attr), 0, sizeof(attr));
132     attr.dataType = TYPE_STREAM;
133     attr.linkTypeNum = 1;
134     attr.linkType[0] = LINK_TYPE_WIFI_P2P;
135 
136     int sessionId = OpenSession(SESSION_NAME_STREAM, SESSION_NAME_STREAM, GetNetworkId(),
137                           DEF_GROUP_ID, &attr);
138     EXPECT_TRUE(sessionId >= SESSION_ID_MIN) << "call OpenSession[Stream] fail, sessionId=" << sessionId;
139     if (sessionId >= SESSION_ID_MIN) {
140         ret = Wait4Session(5, SESSION_4STREAM);
141         EXPECT_EQ(SOFTBUS_OK, ret) << "wait opensession fail[Stream]";
142         LOG("call OpenSession[Stream] success");
143     }
144     ResetWaitFlag();
145     ret = SendStream(sessionId, &streamData, &extStreamData, &frame);
146     EXPECT_EQ(SOFTBUS_OK, ret) << "call SendStream fail";
147 
148     CloseSession(sessionId);
149     ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_STREAM);
150     EXPECT_EQ(SOFTBUS_OK, ret) << "RemoveSS[proxy] fail";
151 }