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 */
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 ResetWaitFlag4Stream();
89 int sessionId = OpenSession(SESSION_NAME_STREAM, SESSION_NAME_STREAM, GetNetworkId(),
90 DEF_GROUP_ID, &attr);
91 EXPECT_TRUE(sessionId >= SESSION_ID_MIN) << "call OpenSession[Stream] fail, sessionId=" << sessionId;
92 if (sessionId >= SESSION_ID_MIN) {
93 ret = Wait4Session(5, SESSION_4STREAM);
94 EXPECT_EQ(SOFTBUS_OK, ret) << "wait opensession fail[Stream]";
95 LOG("call OpenSession[Stream] success");
96 }
97 ResetWaitFlag4Stream();
98 ret = SendStream(sessionId, &streamData, &extStreamData, &frame);
99 EXPECT_EQ(SOFTBUS_OK, ret) << "call SendStream fail";
100
101 CloseSession(sessionId);
102 ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_STREAM);
103 EXPECT_EQ(SOFTBUS_OK, ret) << "RemoveSS[proxy] fail";
104 }
105
106 /**
107 * @tc.number : SUB_DSoftbus_Spec_DCTS_SendStream_P2P_0100
108 * @tc.name : test Stream By P2P
109 * @tc.desc : Test send stream function
110 * @tc.type : FUNC
111 * @tc.size : MediumTest
112 */
113 HWTEST_F(TransStreamTest, SUB_DSoftbus_Spec_DCTS_SendStream_P2P_0100, TestSize.Level2) {
114 int ret;
115
116 string data = "send stream transmission test!!!!";
117 char *sendData = (char *)malloc(data.length() + 1);
118 EXPECT_NE(sendData, nullptr);
119 ret = strcpy_s(sendData, data.length() + 1, data.c_str());
120 EXPECT_EQ(ret, SOFTBUS_OK);
121 StreamData extStreamData {0};
122 StreamData streamData {
123 .buf = sendData,
124 .bufLen = data.length() + 1,
125 };
126 StreamFrameInfo frame = {0};
127
128 ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_STREAM, GetSessionListenser4Stream());
129 EXPECT_EQ(SOFTBUS_OK, ret) << "CreateSS[Stream] fail";
130
131 SessionAttribute attr;
132 (void)memset_s(&attr, sizeof(attr), 0, sizeof(attr));
133 attr.dataType = TYPE_STREAM;
134 attr.linkTypeNum = 1;
135 attr.linkType[0] = LINK_TYPE_WIFI_P2P;
136 ResetWaitFlag4Stream();
137 int sessionId = OpenSession(SESSION_NAME_STREAM, SESSION_NAME_STREAM, GetNetworkId(),
138 DEF_GROUP_ID, &attr);
139 EXPECT_TRUE(sessionId >= SESSION_ID_MIN) << "call OpenSession[Stream] fail, sessionId=" << sessionId;
140 if (sessionId >= SESSION_ID_MIN) {
141 ret = Wait4Session(5, SESSION_4STREAM);
142 EXPECT_EQ(SOFTBUS_OK, ret) << "wait opensession fail[Stream]";
143 LOG("call OpenSession[Stream] success");
144 }
145 ResetWaitFlag4Stream();
146 ret = SendStream(sessionId, &streamData, &extStreamData, &frame);
147 EXPECT_EQ(SOFTBUS_OK, ret) << "call SendStream fail";
148
149 CloseSession(sessionId);
150 ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_STREAM);
151 EXPECT_EQ(SOFTBUS_OK, ret) << "RemoveSS[proxy] fail";
152 }