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::RemoveInstance 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(); 104 connectServerManager.handlerConnectServerSo_ = nullptr; 105 EXPECT_FALSE(connectServerManager.handlerConnectServerSo_); 106 connectServerManager.RemoveInstance(ONE); 107 const std::string instanceName = "test"; 108 char data[] = "WaitForConnection"; 109 char *dptr = data; 110 connectServerManager.handlerConnectServerSo_ = dptr; 111 connectServerManager.instanceMap_.clear(); 112 auto res = connectServerManager.instanceMap_.try_emplace(ONE, instanceName, gettid()); 113 EXPECT_TRUE(res.second); 114 connectServerManager.RemoveInstance(ONE); 115 EXPECT_TRUE(connectServerManager.handlerConnectServerSo_); 116 connectServerManager.RemoveInstance(ONE); 117 TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0400 is end"); 118 } 119 120 /* 121 * @tc.number : ConnectServerManagerTest_0500 122 * @tc.name : ConnectServerManager 123 * @tc.desc : Test Function ConnectServerManager::SendInspector 124 */ 125 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0500, TestSize.Level1) 126 { 127 TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0500 is start"); 128 ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get(); 129 const std::string jsonTreeStr = "jsonTreeStr"; 130 const std::string jsonSnapshotStr = "jsonSnapshotStr"; 131 connectServerManager.handlerConnectServerSo_ = nullptr; 132 EXPECT_FALSE(connectServerManager.handlerConnectServerSo_); 133 connectServerManager.SendInspector(jsonTreeStr, jsonSnapshotStr); 134 TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0500 is end"); 135 } 136 137 /* 138 * @tc.number : ConnectServerManagerTest_0600 139 * @tc.name : ConnectServerManager 140 * @tc.desc : Test Function ConnectServerManager::RemoveInstance 141 */ 142 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0600, TestSize.Level1) 143 { 144 TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0600 is start"); 145 ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get(); 146 const std::string instanceName = "test02"; 147 connectServerManager.handlerConnectServerSo_ = nullptr; 148 const std::string bundleName = "StartServer"; 149 uint32_t socketFd = 0; 150 connectServerManager.StartConnectServer(bundleName, socketFd, true); 151 connectServerManager.RemoveInstance(TWO); 152 EXPECT_TRUE(connectServerManager.instanceMap_.find(TWO) == connectServerManager.instanceMap_.end()); 153 TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0600 is end"); 154 } 155 156 /* 157 * @tc.number : ConnectServerManagerTest_0700 158 * @tc.name : ConnectServerManager 159 * @tc.desc : Test Function ConnectServerManager::SendInspector 160 */ 161 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0700, TestSize.Level1) 162 { 163 TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0700 is start"); 164 ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get(); 165 const std::string instanceName = "test02"; 166 connectServerManager.handlerConnectServerSo_ = nullptr; 167 const std::string bundleName = "StartServer"; 168 uint32_t socketFd = 0; 169 connectServerManager.StartConnectServer(bundleName, socketFd, true); 170 const std::string jsonTreeStr = "jsonTreeStr"; 171 const std::string jsonSnapshotStr = "jsonSnapshotStr"; 172 connectServerManager.SendInspector(jsonTreeStr, jsonSnapshotStr); 173 EXPECT_TRUE(connectServerManager.handlerConnectServerSo_ != nullptr); 174 TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0700 is end"); 175 } 176 177 /* 178 * @tc.number : ConnectServerManagerTest_0800 179 * @tc.name : ConnectServerManager 180 * @tc.desc : Test Function ConnectServerManager::SetRecordCallback 181 */ 182 HWTEST_F(ConnectServerManagerTest, ConnectServerManagerTest_0800, TestSize.Level1) 183 { 184 TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0800 is start"); 185 ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get(); __anonc88fa7be0202() 186 auto startRecordFunc = []() {}; __anonc88fa7be0302() 187 auto stopRecordFunc = []() {}; 188 bool result = connectServerManager.SetRecordCallback(startRecordFunc, stopRecordFunc); 189 EXPECT_TRUE(result); 190 TAG_LOGI(AAFwkTag::TEST, "ConnectServerManagerTest_0800 is end"); 191 } 192 193 /* 194 * @tc.number : SendInstanceMessageTest_0100 195 * @tc.name : ConnectServerManager 196 * @tc.desc : Test Function ConnectServerManager::SendInstanceMessage 197 */ 198 HWTEST_F(ConnectServerManagerTest, SendInstanceMessageTest_0100, TestSize.Level1) 199 { 200 TAG_LOGI(AAFwkTag::TEST, "SendInstanceMessageTest_0100 is start"); 201 ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get(); 202 std::string message = "Message"; 203 connectServerManager.SendMessage(message); 204 int32_t tid = 1; 205 int32_t instanceId = 1; 206 const std::string instanceName = "instanceName"; 207 connectServerManager.SetConnectedCallback(); 208 bool result = connectServerManager.SendInstanceMessage(tid, instanceId, instanceName); 209 EXPECT_EQ(result, true); 210 TAG_LOGI(AAFwkTag::TEST, "SendInstanceMessageTest_0100 is end"); 211 } 212 213 /* 214 * @tc.number : RegisterConnectServerCallbackTest_0100 215 * @tc.name : ConnectServerManager 216 * @tc.desc : Test Function ConnectServerManager::RegisterConnectServerCallback 217 */ 218 HWTEST_F(ConnectServerManagerTest, RegisterConnectServerCallbackTest_0100, TestSize.Level1) 219 { 220 TAG_LOGI(AAFwkTag::TEST, "RegisterConnectServerCallbackTest_0100 is start"); 221 bool needBreakPoint = false; 222 bool isDebugApp = false; 223 ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get(); 224 connectServerManager.SendDebuggerInfo(needBreakPoint, isDebugApp); __anonc88fa7be0402() 225 auto connectServerCB = []() {}; 226 ServerConnectCallback connectServerCallback = connectServerCB; 227 connectServerManager.connectServerCallbacks_.clear(); 228 connectServerManager.RegisterConnectServerCallback(connectServerCallback); 229 EXPECT_FALSE(connectServerManager.connectServerCallbacks_.empty()); 230 TAG_LOGI(AAFwkTag::TEST, "RegisterConnectServerCallbackTest_0100 is end"); 231 } 232 233 /* 234 * @tc.number : RegisterSendInstanceMessageCallbackTest_0100 235 * @tc.name : ConnectServerManager 236 * @tc.desc : Test Function ConnectServerManager::RegisterSendInstanceMessageCallback 237 */ 238 HWTEST_F(ConnectServerManagerTest, RegisterSendInstanceMessageCallbackTest_0100, TestSize.Level1) 239 { 240 TAG_LOGI(AAFwkTag::TEST, "RegisterSendInstanceMessageCallbackTest_0100 is start"); 241 std::string jsonArrayStr = "jsonArrayStr"; 242 ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get(); 243 connectServerManager.SetRecordResults(jsonArrayStr); __anonc88fa7be0502(int32_t) 244 auto sendInstanceMessageCB = [](int32_t) {}; 245 SendInstanceMessageCallBack sendInstanceMessageCallback = sendInstanceMessageCB; 246 connectServerManager.sendInstanceMessageCallbacks_.clear(); 247 connectServerManager.RegisterSendInstanceMessageCallback(sendInstanceMessageCallback); 248 EXPECT_FALSE(connectServerManager.sendInstanceMessageCallbacks_.empty()); 249 TAG_LOGI(AAFwkTag::TEST, "RegisterSendInstanceMessageCallbackTest_0100 is end"); 250 } 251 252 /* 253 * @tc.number : RegisterAddInstanceCallbackTest_0100 254 * @tc.name : ConnectServerManager 255 * @tc.desc : Test Function ConnectServerManager::RegisterAddInstanceCallback 256 */ 257 HWTEST_F(ConnectServerManagerTest, RegisterAddInstanceCallbackTest_0100, TestSize.Level1) 258 { 259 TAG_LOGI(AAFwkTag::TEST, "RegisterAddInstanceCallbackTest_0100 is start"); __anonc88fa7be0602(int32_t) 260 auto addInstanceCB = [](int32_t) {}; 261 AddInstanceCallBack addInstanceCallback = addInstanceCB; 262 ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get(); 263 connectServerManager.addInstanceCallbacks_.clear(); 264 connectServerManager.RegisterAddInstanceCallback(addInstanceCallback); 265 EXPECT_FALSE(connectServerManager.addInstanceCallbacks_.empty()); 266 TAG_LOGI(AAFwkTag::TEST, "RegisterAddInstanceCallbackTest_0100 is end"); 267 } 268 269 /* 270 * @tc.number : StoreInstanceMessage_0100 271 * @tc.name : ConnectServerManager 272 * @tc.desc : Test Function ConnectServerManager::StoreInstanceMessage 273 */ 274 HWTEST_F(ConnectServerManagerTest, StoreInstanceMessage_0100, TestSize.Level1) 275 { 276 int32_t tid = 1; 277 int32_t instanceId = 1; 278 279 ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get(); 280 connectServerManager.instanceMap_.clear(); 281 auto result = connectServerManager.StoreInstanceMessage(tid, instanceId); 282 EXPECT_EQ(connectServerManager.instanceMap_.size(), 1); 283 EXPECT_EQ(result, true); 284 } 285 286 /* 287 * @tc.number : StoreDebuggerInfo_0100 288 * @tc.name : StoreDebuggerInfo 289 * @tc.desc : Test Function ConnectServerManager::StoreDebuggerInfo 290 */ 291 HWTEST_F(ConnectServerManagerTest, StoreDebuggerInfo_0100, TestSize.Level1) 292 { 293 int32_t tid = 1; 294 void* vm = nullptr; 295 panda::JSNApi::DebugOption debugOption; __anonc88fa7be0702(std::function<void()>&&) 296 DebuggerPostTask debuggerPostTask = [](std::function<void()>&&) {}; 297 bool isDebugApp = false; 298 ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get(); 299 connectServerManager.StoreDebuggerInfo(tid, vm, debugOption, debuggerPostTask, isDebugApp); 300 EXPECT_NE(&connectServerManager, nullptr); 301 } 302 303 /* 304 * @tc.number : AddInstance_0100 305 * @tc.name : ConnectServerManager 306 * @tc.desc : Test Function ConnectServerManager::AddInstance when isConnected_ is false 307 */ 308 HWTEST_F(ConnectServerManagerTest, AddInstance_0100, TestSize.Level1) 309 { 310 TAG_LOGI(AAFwkTag::TEST, "AddInstance_0100 is start"); 311 int32_t tid = 2; 312 int32_t instanceId = 2; 313 const std::string instanceName = "testInstance"; 314 ConnectServerManager &connectServerManager = AbilityRuntime::ConnectServerManager::Get(); 315 connectServerManager.instanceMap_.clear(); 316 connectServerManager.isConnected_ = false; 317 bool result = connectServerManager.AddInstance(tid, instanceId, instanceName); 318 EXPECT_EQ(connectServerManager.instanceMap_.size(), 1); 319 EXPECT_FALSE(result); 320 TAG_LOGI(AAFwkTag::TEST, "AddInstance_0100 is end"); 321 } 322 323 } // namespace AAFwk 324 } // namespace OHOS 325