1 /*
2  * Copyright (c) 2022-2024 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 <dlfcn.h>
17 #include <gtest/gtest.h>
18 #include <mutex>
19 #include <unordered_map>
20 #define private public
21 #define protected public
22 #include "connect_server_manager.h"
23 #undef private
24 #undef protected
25 #include "hilog_tag_wrapper.h"
26 using namespace testing::ext;
27 using namespace testing;
28 using namespace OHOS::AbilityRuntime;
29 namespace OHOS {
30 namespace AAFwk {
31 namespace {
32 constexpr int32_t ONE = 1;
33 constexpr int32_t TWO = 2;
34 }
35 class ConnectServerManagerTest : public testing::Test {
36 public:
SetUpTestCase(void)37     static void SetUpTestCase(void) {};
TearDownTestCase(void)38     static void TearDownTestCase(void) {};
SetUp()39     void SetUp() {};
TearDown()40     void TearDown() {};
41 };
42 
43 /*
44  * @tc.number    : ConnectServerManagerTest_0100
45  * @tc.name      : ConnectServerManager
46  * @tc.desc      : Test Function ConnectServerManager::Get and ConnectServerManager::~ConnectServerManager
47  */
48 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0100, TestSize.Level1)
49 {
50     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0100 is start");
51     std::shared_ptr<ConnectServerManager> connectServerManager = std::make_shared<ConnectServerManager>();
52     EXPECT_TRUE(connectServerManager != nullptr);
53     connectServerManager.reset();
54     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0100 is end");
55 }
56 
57 /*
58  * @tc.number    : ConnectServerManagerTest_0200
59  * @tc.name      : ConnectServerManager
60  * @tc.desc      : Test Function ConnectServerManager::StartConnectServer
61  */
62 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0200, TestSize.Level1)
63 {
64     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0200 is start");
65     ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get();
66     const std::string bundleName = "StartServer";
67     uint32_t socketFd = 0;
68     connectServerManager.StartConnectServer(bundleName, socketFd, true);
69     EXPECT_TRUE(connectServerManager.bundleName_ == "StartServer");
70     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0200 is end");
71 }
72 
73 /*
74  * @tc.number    : ConnectServerManagerTest_0300
75  * @tc.name      : ConnectServerManager
76  * @tc.desc      : Test Function ConnectServerManager::StopConnectServer
77  */
78 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0300, TestSize.Level1)
79 {
80     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0300 is start");
81     ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get();
82     connectServerManager.StopConnectServer();
83     EXPECT_FALSE(connectServerManager.handlerConnectServerSo_);
84     connectServerManager.handlerConnectServerSo_ = nullptr;
85     connectServerManager.StopConnectServer();
86     EXPECT_FALSE(connectServerManager.handlerConnectServerSo_);
87     char data[] = "StopServer";
88     char *dptr = data;
89     connectServerManager.handlerConnectServerSo_ = dptr;
90     connectServerManager.StopConnectServer();
91     EXPECT_FALSE(connectServerManager.handlerConnectServerSo_);
92     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0300 is end");
93 }
94 
95 /*
96  * @tc.number    : ConnectServerManagerTest_0400
97  * @tc.name      : ConnectServerManager
98  * @tc.desc      : Test Function ConnectServerManager::AddInstance
99  */
100 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0400, TestSize.Level1)
101 {
102     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0400 is start");
103     ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get();
__anonb46d53d40202(int32_t val) 104     auto createTest = [] (int32_t val) {};
__anonb46d53d40302(bool flag) 105     auto setTest = [] (bool flag) {};
106     connectServerManager.SetLayoutInspectorCallback(createTest, setTest);
107     const std::string instanceName = "test";
108     connectServerManager.handlerConnectServerSo_ = nullptr;
109     EXPECT_FALSE(connectServerManager.AddInstance(gettid(), ONE, instanceName));
110     char data[] = "WaitForConnection";
111     char *dptr = data;
112     connectServerManager.handlerConnectServerSo_ = dptr;
113     EXPECT_FALSE(connectServerManager.AddInstance(gettid(), ONE, instanceName));
114     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0400 is end");
115 }
116 
117 /*
118  * @tc.number    : ConnectServerManagerTest_0500
119  * @tc.name      : ConnectServerManager
120  * @tc.desc      : Test Function ConnectServerManager::RemoveInstance
121  */
122 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0500, TestSize.Level1)
123 {
124     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0500 is start");
125     ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get();
126     connectServerManager.handlerConnectServerSo_ = nullptr;
127     EXPECT_FALSE(connectServerManager.handlerConnectServerSo_);
128     connectServerManager.RemoveInstance(ONE);
129     const std::string instanceName = "test";
130     char data[] = "WaitForConnection";
131     char *dptr = data;
132     connectServerManager.handlerConnectServerSo_ = dptr;
133     connectServerManager.instanceMap_.clear();
134     auto res = connectServerManager.instanceMap_.try_emplace(ONE, instanceName, gettid());
135     EXPECT_TRUE(res.second);
136     connectServerManager.RemoveInstance(ONE);
137     EXPECT_TRUE(connectServerManager.handlerConnectServerSo_);
138     connectServerManager.RemoveInstance(ONE);
139     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0500 is end");
140 }
141 
142 /*
143  * @tc.number    : ConnectServerManagerTest_0600
144  * @tc.name      : ConnectServerManager
145  * @tc.desc      : Test Function ConnectServerManager::SendInspector
146  */
147 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0600, TestSize.Level1)
148 {
149     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0600 is start");
150     ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get();
151     const std::string jsonTreeStr = "jsonTreeStr";
152     const std::string jsonSnapshotStr = "jsonSnapshotStr";
153     connectServerManager.handlerConnectServerSo_ = nullptr;
154     EXPECT_FALSE(connectServerManager.handlerConnectServerSo_);
155     connectServerManager.SendInspector(jsonTreeStr, jsonSnapshotStr);
156     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0600 is end");
157 }
158 
159 /*
160  * @tc.number    : ConnectServerManagerTest_0700
161  * @tc.name      : ConnectServerManager
162  * @tc.desc      : Test Function ConnectServerManager::AddInstance
163  */
164 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0700, TestSize.Level1)
165 {
166     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0700 is start");
167     ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get();
__anonb46d53d40402(int32_t val) 168     auto createTest = [] (int32_t val) {};
__anonb46d53d40502(bool flag) 169     auto setTest = [] (bool flag) {};
170     connectServerManager.SetLayoutInspectorCallback(createTest, setTest);
171     const std::string instanceName = "test02";
172     connectServerManager.handlerConnectServerSo_ = nullptr;
173     const std::string bundleName = "StartServer";
174     uint32_t socketFd = 0;
175     connectServerManager.StartConnectServer(bundleName, socketFd, true);
176     EXPECT_FALSE(connectServerManager.AddInstance(gettid(), TWO, instanceName));
177     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0700 is end");
178 }
179 
180 /*
181  * @tc.number    : ConnectServerManagerTest_0800
182  * @tc.name      : ConnectServerManager
183  * @tc.desc      : Test Function ConnectServerManager::RemoveInstance
184  */
185 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0800, TestSize.Level1)
186 {
187     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0800 is start");
188     ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get();
189     const std::string instanceName = "test02";
190     connectServerManager.handlerConnectServerSo_ = nullptr;
191     const std::string bundleName = "StartServer";
192     uint32_t socketFd = 0;
193     connectServerManager.StartConnectServer(bundleName, socketFd, true);
194     connectServerManager.RemoveInstance(TWO);
195     EXPECT_TRUE(connectServerManager.instanceMap_.find(TWO) == connectServerManager.instanceMap_.end());
196     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0800 is end");
197 }
198 
199 /*
200  * @tc.number    : ConnectServerManagerTest_0900
201  * @tc.name      : ConnectServerManager
202  * @tc.desc      : Test Function ConnectServerManager::SendInspector
203  */
204 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0900, TestSize.Level1)
205 {
206     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0900 is start");
207     ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get();
208     const std::string instanceName = "test02";
209     connectServerManager.handlerConnectServerSo_ = nullptr;
210     const std::string bundleName = "StartServer";
211     uint32_t socketFd = 0;
212     connectServerManager.StartConnectServer(bundleName, socketFd, true);
213     const std::string jsonTreeStr = "jsonTreeStr";
214     const std::string jsonSnapshotStr = "jsonSnapshotStr";
215     connectServerManager.SendInspector(jsonTreeStr, jsonSnapshotStr);
216     EXPECT_TRUE(connectServerManager.handlerConnectServerSo_ != nullptr);
217     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0900 is end");
218 }
219 
220 /*
221  * @tc.number    : ConnectServerManagerTest_1000
222  * @tc.name      : ConnectServerManager
223  * @tc.desc      : Test Function ConnectServerManager::GetLayoutInspectorCallback
224  */
225 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_1000, TestSize.Level1)
226 {
227     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_1000 is start");
228     ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get();
229     connectServerManager.SetLayoutInspectorCallback(nullptr, nullptr);
230     auto resulftSetTest = connectServerManager.GetLayoutInspectorCallback();
231     EXPECT_TRUE(resulftSetTest == nullptr);
232 
__anonb46d53d40602(int32_t val) 233     auto createTest = [] (int32_t val) {};
__anonb46d53d40702(bool flag) 234     auto setTest = [] (bool flag) {};
235     connectServerManager.SetLayoutInspectorCallback(createTest, setTest);
236     resulftSetTest = connectServerManager.GetLayoutInspectorCallback();
237     EXPECT_TRUE(resulftSetTest != nullptr);
238     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_1000 is end");
239 }
240 
241 /*
242  * @tc.number    : ConnectServerManagerTest_1100
243  * @tc.name      : ConnectServerManager
244  * @tc.desc      : Test Function ConnectServerManager::SetRecordCallback
245  */
246 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_1100, TestSize.Level1)
247 {
248     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_1100 is start");
249     ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get();
__anonb46d53d40802() 250     auto startRecordFunc = []() {};
__anonb46d53d40902() 251     auto stopRecordFunc = []() {};
252     bool result = connectServerManager.SetRecordCallback(startRecordFunc, stopRecordFunc);
253     EXPECT_TRUE(result);
254     TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_1100 is end");
255 }
256 } // namespace AAFwk
257 } // namespace OHOS
258