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 }