1 /*
2 * Copyright (C) 2022 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 "soft_bus_manager_test.h"
17 #include "soft_bus_manager.h"
18 #include "socket_factory.h"
19 #include "socket.h"
20 #include "remote_connect_listener_manager.h"
21
22 #include "gtest/gtest.h"
23
24 namespace OHOS {
25 namespace UserIam {
26 namespace UserAuth {
27 using namespace testing;
28 using namespace testing::ext;
29
SetUpTestCase()30 void SoftBusManagerTest::SetUpTestCase()
31 {
32 }
33
TearDownTestCase()34 void SoftBusManagerTest::TearDownTestCase()
35 {
36 }
37
SetUp()38 void SoftBusManagerTest::SetUp()
39 {
40 }
41
TearDown()42 void SoftBusManagerTest::TearDown()
43 {
44 }
45
46 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestCheckAndCopyStr, TestSize.Level0)
47 {
48 char dest[1];
49 uint32_t destLen = 2;
50 const std::string src = "123123123";
51 EXPECT_EQ(SoftBusManager::GetInstance().CheckAndCopyStr(dest, destLen, src), false);
52 }
53
54 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOnBind_001, TestSize.Level0)
55 {
56 PeerSocketInfo info;
57 EXPECT_NO_THROW(SoftBusManager::GetInstance().OnBind(-2, info));
58 }
59
60 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestRegistSoftBusListener, TestSize.Level0)
61 {
62 EXPECT_NO_THROW({
63 SoftBusManager::GetInstance().RegistSoftBusListener();
64 SoftBusManager::GetInstance().UnRegistSoftBusListener();
65 });
66 }
67
68 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestSocketInit, TestSize.Level0)
69 {
70 EXPECT_NO_THROW({
71 SoftBusManager::GetInstance().ServiceSocketInit();
72 SoftBusManager::GetInstance().ServiceSocketUnInit();
73 });
74 }
75
76 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestDeleteSocket, TestSize.Level0)
77 {
78 EXPECT_NO_THROW({
79 SoftBusManager::GetInstance().DeleteSocket(600);
80 });
81 }
82
83 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestServiceSocketListen, TestSize.Level0)
84 {
85 int32_t socketId = 100;
86 SoftBusManager::GetInstance().ServiceSocketUnInit();
87 SoftBusManager::GetInstance().ServiceSocketInit();
88 int ret = SoftBusManager::GetInstance().ServiceSocketListen(socketId);
89 EXPECT_EQ(ret, SUCCESS);
90
91 PeerSocketInfo info;
92 char testNetworkId[] = "1122";
93 info.networkId = testNetworkId;
94 EXPECT_NO_THROW(SoftBusManager::GetInstance().OnBind(socketId, info));
95
96 int32_t clientSocketId = 200;
97 const std::string connectionName = "testConnection";
98 const uint32_t tokenId = 1234;
99 const std::string networkId = "networkId";
100 SoftBusManager::GetInstance().DoOpenConnection(connectionName, tokenId, networkId);
101 auto clientSocket = SocketFactory::CreateClientSocket(clientSocketId, connectionName, networkId);
102 EXPECT_EQ(SoftBusManager::GetInstance().ClientSocketBind(clientSocketId), SUCCESS);
103 SoftBusManager::GetInstance().AddConnection(connectionName, clientSocket);
104 SoftBusManager::GetInstance().AddSocket(clientSocketId, clientSocket);
105 RemoteConnectListenerManager::GetInstance().OnConnectionUp(connectionName);
106
107 const std::string srcEndPoint = "123";
108 const std::string destEndPoint = "456";
109 const std::shared_ptr<Attributes> attributes = Common::MakeShared<Attributes>();
110 ASSERT_NE(attributes, nullptr);
111 MsgCallback callback;
112 EXPECT_NO_THROW(SoftBusManager::GetInstance().SendMessage(connectionName, srcEndPoint, destEndPoint, attributes,
113 callback));
114
115 EXPECT_EQ(SoftBusManager::GetInstance().DoCloseConnection(connectionName), SUCCESS);
116 SoftBusManager::GetInstance().ServiceSocketUnInit();
117 SoftBusManager::GetInstance().DeleteSocket(socketId);
118 SoftBusManager::GetInstance().DeleteSocket(clientSocketId);
119 }
120
121 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOpenConnection, TestSize.Level0)
122 {
123 const std::string connectionName = "testConnection";
124 const uint32_t tokenId = 1234;
125 const std::string networkId = "networkId";
126 SoftBusManager::GetInstance().DoOpenConnection(connectionName, tokenId, networkId);
127 EXPECT_EQ(SoftBusManager::GetInstance().DoCloseConnection(connectionName), SUCCESS);
128 }
129
130 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestServiceSocketUnInit_003, TestSize.Level0)
131 {
132 int32_t socketId = 100;
133 int32_t clientSocketId = 200;
134 const std::string connectionName = "testConnection";
135 const std::string networkId = "networkId";
136 SoftBusManager::GetInstance().ServiceSocketUnInit();
137 SoftBusManager::GetInstance().ServiceSocketInit();
138 std::shared_ptr<BaseSocket> clientSocket = SocketFactory::CreateClientSocket(clientSocketId,
139 connectionName, networkId);
140 SoftBusManager::GetInstance().AddSocket(clientSocketId, clientSocket);
141 auto findSocket = SoftBusManager::GetInstance().FindSocketBySocketId(socketId);
142 EXPECT_EQ(findSocket, nullptr);
143 SoftBusManager::GetInstance().ServiceSocketUnInit();
144 SoftBusManager::GetInstance().DeleteSocket(socketId);
145 SoftBusManager::GetInstance().DeleteSocket(clientSocketId);
146 }
147
148 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOnServerBytes_001, TestSize.Level0)
149 {
150 const void *data = new char[10];
151 uint32_t dataLen = 3;
152 int32_t socketId = 100;
153 int32_t clientSocketId = 200;
154 const std::string connectionName = "testConnection";
155 const std::string networkId = "networkId";
156 SoftBusManager::GetInstance().ServiceSocketUnInit();
157 SoftBusManager::GetInstance().ServiceSocketInit();
158 std::shared_ptr<BaseSocket> clientSocket = SocketFactory::CreateClientSocket(clientSocketId,
159 connectionName, networkId);
160 SoftBusManager::GetInstance().AddSocket(clientSocketId, clientSocket);
161 EXPECT_NO_THROW({
162 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
163 });
164 SoftBusManager::GetInstance().ServiceSocketUnInit();
165 SoftBusManager::GetInstance().DeleteSocket(socketId);
166 SoftBusManager::GetInstance().DeleteSocket(clientSocketId);
167 }
168
169 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOnShutdown_001, TestSize.Level0)
170 {
171 ShutdownReason reason = SHUTDOWN_REASON_UNKNOWN;
172 EXPECT_NO_THROW(SoftBusManager::GetInstance().OnShutdown(-2, reason));
173 int32_t socketId = 100;
174 std::shared_ptr<BaseSocket> serverSocket = SocketFactory::CreateServerSocket(socketId);
175 SoftBusManager::GetInstance().AddSocket(socketId, serverSocket);
176 SoftBusManager::GetInstance().SetServerSocket(serverSocket);
177 EXPECT_NO_THROW(SoftBusManager::GetInstance().OnShutdown(600, reason));
178 SoftBusManager::GetInstance().DeleteSocket(socketId);
179 SoftBusManager::GetInstance().ServiceSocketUnInit();
180 }
181
182 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOnServerBytes_002, TestSize.Level0)
183 {
184 int32_t socketId = 100;
185 const void *data = new char[10];
186 uint32_t dataLen = 3;
187 EXPECT_NO_THROW({
188 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
189 });
190 }
191
192 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOnServerBytes_003, TestSize.Level0)
193 {
194 int32_t socketId = -2;
195 const void *data = new char[10];
196 uint32_t dataLen = 3;
197 EXPECT_NO_THROW({
198 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
199 SoftBusManager::GetInstance().OnClientBytes(socketId, nullptr, dataLen);
200 });
201 }
202
203 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOnClientBytes_001, TestSize.Level0)
204 {
205 int32_t socketId = -2;
206 const void *data = new char[10];
207 uint32_t dataLen = 3;
208 static const int32_t MAX_ONBYTES_RECEIVED_DATA_LEN = 1024 * 1024 * 10;
209 std::string connectionName = "testConnection1";
210 const std::string networkId = "networkId1";
211 EXPECT_NO_THROW({
212 SoftBusManager::GetInstance().OnClientBytes(socketId, data, dataLen);
213 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
214 });
215 socketId = 0;
216 SoftBusManager::GetInstance().OnClientBytes(socketId, data, dataLen);
217 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
218 socketId = 100;
219 SoftBusManager::GetInstance().OnClientBytes(socketId, data, dataLen);
220 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
221 dataLen = 0;
222 SoftBusManager::GetInstance().OnClientBytes(socketId, data, dataLen);
223 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
224 dataLen = MAX_ONBYTES_RECEIVED_DATA_LEN + 1;
225 SoftBusManager::GetInstance().OnClientBytes(socketId, data, dataLen);
226 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
227 dataLen = 3;
228 SoftBusManager::GetInstance().OnClientBytes(socketId, data, dataLen);
229 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
230 while (connectionName.length() <= 257) {
231 connectionName += "testConnection1";
232 }
233 SoftBusManager::GetInstance().ClientSocketInit(connectionName, networkId);
234 }
235
236 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestStart, TestSize.Level0)
237 {
238 EXPECT_NO_THROW({
239 SoftBusManager::GetInstance().Start();
240 SoftBusManager::GetInstance().Stop();
241 });
242 }
243
244 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestDeviceInit, TestSize.Level0)
245 {
246 ResultCode ret = SoftBusManager::GetInstance().DeviceInit();
247 EXPECT_EQ(ret, SUCCESS);
248 EXPECT_NO_THROW(SoftBusManager::GetInstance().DeviceUnInit());
249 }
250 } // namespace UserAuth
251 } // namespace UserIam
252 } // namespace OHOS
253