1a69a01cdSopenharmony_ci/* 2a69a01cdSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3a69a01cdSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4a69a01cdSopenharmony_ci * you may not use this file except in compliance with the License. 5a69a01cdSopenharmony_ci * You may obtain a copy of the License at 6a69a01cdSopenharmony_ci * 7a69a01cdSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8a69a01cdSopenharmony_ci * 9a69a01cdSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10a69a01cdSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11a69a01cdSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12a69a01cdSopenharmony_ci * See the License for the specific language governing permissions and 13a69a01cdSopenharmony_ci * limitations under the License. 14a69a01cdSopenharmony_ci */ 15a69a01cdSopenharmony_ci 16a69a01cdSopenharmony_ci#ifndef TEST_WUKONG_UTIL_H 17a69a01cdSopenharmony_ci#define TEST_WUKONG_UTIL_H 18a69a01cdSopenharmony_ci 19a69a01cdSopenharmony_ci#include <cstdio> 20a69a01cdSopenharmony_ci#include <dirent.h> 21a69a01cdSopenharmony_ci#include <string> 22a69a01cdSopenharmony_ci#include <unistd.h> 23a69a01cdSopenharmony_ci#include <vector> 24a69a01cdSopenharmony_ci 25a69a01cdSopenharmony_ci#include "bundle_mgr_proxy.h" 26a69a01cdSopenharmony_ci#include "errors.h" 27a69a01cdSopenharmony_ci#include "semaphore_ex.h" 28a69a01cdSopenharmony_ci#include "singleton.h" 29a69a01cdSopenharmony_ci 30a69a01cdSopenharmony_cinamespace OHOS { 31a69a01cdSopenharmony_cinamespace WuKong { 32a69a01cdSopenharmony_ciclass WuKongUtil : public DelayedSingleton<WuKongUtil> { 33a69a01cdSopenharmony_cipublic: 34a69a01cdSopenharmony_ci /** 35a69a01cdSopenharmony_ci * @brief Get the All App Info object 36a69a01cdSopenharmony_ci * @return Return ERR_OK on success, others on failure. 37a69a01cdSopenharmony_ci */ 38a69a01cdSopenharmony_ci ErrCode GetAllAppInfo(); 39a69a01cdSopenharmony_ci 40a69a01cdSopenharmony_ci /** 41a69a01cdSopenharmony_ci * @brief to find the location of the key bundle in the bundle list. 42a69a01cdSopenharmony_ci * @param bundleList the bundlelist of test 43a69a01cdSopenharmony_ci * @param key the key subscript in the bundle list. 44a69a01cdSopenharmony_ci * @return the location of the key bundle in the bundlelist. 45a69a01cdSopenharmony_ci */ 46a69a01cdSopenharmony_ci uint32_t FindElement(std::vector<std::string> &bundleList, std::string key); 47a69a01cdSopenharmony_ci 48a69a01cdSopenharmony_ci /** 49a69a01cdSopenharmony_ci * @brief to find if the key bundle is in the bundle list. 50a69a01cdSopenharmony_ci * @param bundleList the bundlelist of test 51a69a01cdSopenharmony_ci * @param key the key subscript in the bundle list. 52a69a01cdSopenharmony_ci * @return if the key bundle in the bundlelist. 53a69a01cdSopenharmony_ci */ 54a69a01cdSopenharmony_ci bool ContainsElement(std::vector<std::string> &bundleList, std::string key); 55a69a01cdSopenharmony_ci 56a69a01cdSopenharmony_ci /** 57a69a01cdSopenharmony_ci * @brief Set the Allow List. 58a69a01cdSopenharmony_ci * @param optarg command string 59a69a01cdSopenharmony_ci * @return Return ERR_OK on success, others on failure. 60a69a01cdSopenharmony_ci */ 61a69a01cdSopenharmony_ci ErrCode SetAllowList(const std::string &optarg); 62a69a01cdSopenharmony_ci 63a69a01cdSopenharmony_ci /** 64a69a01cdSopenharmony_ci * @brief Set the Block List. 65a69a01cdSopenharmony_ci * @param optarg command string. 66a69a01cdSopenharmony_ci * @return Return ERR_OK on success, others on failure. 67a69a01cdSopenharmony_ci */ 68a69a01cdSopenharmony_ci ErrCode SetBlockList(const std::string &optarg); 69a69a01cdSopenharmony_ci 70a69a01cdSopenharmony_ci /** 71a69a01cdSopenharmony_ci * @brief Set the BlockPage List. 72a69a01cdSopenharmony_ci * @param optarg command string. 73a69a01cdSopenharmony_ci * @return Return ERR_OK on success, others on failure. 74a69a01cdSopenharmony_ci */ 75a69a01cdSopenharmony_ci ErrCode SetBlockPageList(const std::string &optarg); 76a69a01cdSopenharmony_ci 77a69a01cdSopenharmony_ci /** 78a69a01cdSopenharmony_ci * @brief Set the BlockAbility List. 79a69a01cdSopenharmony_ci * @param optarg command string. 80a69a01cdSopenharmony_ci * @return Return ERR_OK on success, others on failure. 81a69a01cdSopenharmony_ci */ 82a69a01cdSopenharmony_ci ErrCode SetBlockAbilityList(const std::string &optarg); 83a69a01cdSopenharmony_ci 84a69a01cdSopenharmony_ci /** 85a69a01cdSopenharmony_ci * @brief Check if AbilityName is valid 86a69a01cdSopenharmony_ci * @return Return ERR_OK argument is valid, others is invalid. 87a69a01cdSopenharmony_ci */ 88a69a01cdSopenharmony_ci ErrCode CheckAbilityNameList(); 89a69a01cdSopenharmony_ci 90a69a01cdSopenharmony_ci /** 91a69a01cdSopenharmony_ci * @brief Get the Allow Ability List of the test. 92a69a01cdSopenharmony_ci * @param bundleNameArgs the Allow Ability list. 93a69a01cdSopenharmony_ci */ 94a69a01cdSopenharmony_ci void GetAllowAbilityList(std::vector<std::string> &allowAbilityList); 95a69a01cdSopenharmony_ci 96a69a01cdSopenharmony_ci /** 97a69a01cdSopenharmony_ci * @brief Check the list of allowed abilities to cannibalize 98a69a01cdSopenharmony_ci * @return Return ERR_OK is ok, others have not ok. 99a69a01cdSopenharmony_ci */ 100a69a01cdSopenharmony_ci ErrCode CheckAbilityArgumentList(std::vector<std::string> &allowAbilityList); 101a69a01cdSopenharmony_ci 102a69a01cdSopenharmony_ci /** 103a69a01cdSopenharmony_ci * @brief Set Allow Ability List. 104a69a01cdSopenharmony_ci * @param optarg the Ability list of the test. 105a69a01cdSopenharmony_ci */ 106a69a01cdSopenharmony_ci ErrCode SetAllowAbilityList(const std::string &optarg); 107a69a01cdSopenharmony_ci 108a69a01cdSopenharmony_ci /** 109a69a01cdSopenharmony_ci * @brief Get the Block Ability List of the test. 110a69a01cdSopenharmony_ci * @param blockAbilityList the block Ability List. 111a69a01cdSopenharmony_ci */ 112a69a01cdSopenharmony_ci void GetBlockAbilityList(std::vector<std::string> &blockAbilityList); 113a69a01cdSopenharmony_ci 114a69a01cdSopenharmony_ci /** 115a69a01cdSopenharmony_ci * @brief Get the Allow List of the test. 116a69a01cdSopenharmony_ci * @param bundleNameArgs the Allow list. 117a69a01cdSopenharmony_ci */ 118a69a01cdSopenharmony_ci void GetAllowList(std::vector<std::string> &Allowlist); 119a69a01cdSopenharmony_ci 120a69a01cdSopenharmony_ci /** 121a69a01cdSopenharmony_ci * @brief Get the block List of the test. 122a69a01cdSopenharmony_ci * @param blockList the block list. 123a69a01cdSopenharmony_ci */ 124a69a01cdSopenharmony_ci void GetBlockList(std::vector<std::string> &blockList); 125a69a01cdSopenharmony_ci 126a69a01cdSopenharmony_ci /** 127a69a01cdSopenharmony_ci * @brief Get the block page List of the test. 128a69a01cdSopenharmony_ci * @param blockList the block page list. 129a69a01cdSopenharmony_ci */ 130a69a01cdSopenharmony_ci void GetBlockPageList(std::vector<std::string> &blockPageList); 131a69a01cdSopenharmony_ci 132a69a01cdSopenharmony_ci /** 133a69a01cdSopenharmony_ci * @brief get the bundlelist and ability list. 134a69a01cdSopenharmony_ci * @param bundleList the bundle list of the test. 135a69a01cdSopenharmony_ci * @param abilityList the ability list of the test. 136a69a01cdSopenharmony_ci */ 137a69a01cdSopenharmony_ci void SetAllAppInfo(std::vector<std::string> &bundleList, std::vector<std::string> &abilityList); 138a69a01cdSopenharmony_ci 139a69a01cdSopenharmony_ci /** 140a69a01cdSopenharmony_ci * @brief Get the Bundle List of the test. 141a69a01cdSopenharmony_ci * @param bundlelist 142a69a01cdSopenharmony_ci * @param abilitylist 143a69a01cdSopenharmony_ci */ 144a69a01cdSopenharmony_ci void GetBundleList(std::vector<std::string> &bundlelist, std::vector<std::string> &abilitylist); 145a69a01cdSopenharmony_ci 146a69a01cdSopenharmony_ci /** 147a69a01cdSopenharmony_ci * @brief Get the list of the bundle list except for blockList. 148a69a01cdSopenharmony_ci * @param validbundlelist the list except for blockList 149a69a01cdSopenharmony_ci */ 150a69a01cdSopenharmony_ci void GetValidBundleList(std::vector<std::string> &validbundlelist); 151a69a01cdSopenharmony_ci 152a69a01cdSopenharmony_ci /** 153a69a01cdSopenharmony_ci * @brief get the size of screen. 154a69a01cdSopenharmony_ci * @param width the width of screen. 155a69a01cdSopenharmony_ci * @param height the height of screen. 156a69a01cdSopenharmony_ci * @return Return ERR_OK on success, others on failure. 157a69a01cdSopenharmony_ci */ 158a69a01cdSopenharmony_ci ErrCode GetScreenSize(int32_t &width, int32_t &height); 159a69a01cdSopenharmony_ci 160a69a01cdSopenharmony_ci /** 161a69a01cdSopenharmony_ci * @brief get the icon path of app. 162a69a01cdSopenharmony_ci * @param iconpath icon path of app. 163a69a01cdSopenharmony_ci */ 164a69a01cdSopenharmony_ci void GetIconPath(std::string &iconpath); 165a69a01cdSopenharmony_ci 166a69a01cdSopenharmony_ci /** 167a69a01cdSopenharmony_ci * @brief get start run time string for report, log etc. 168a69a01cdSopenharmony_ci * @return start run time string. 169a69a01cdSopenharmony_ci */ 170a69a01cdSopenharmony_ci std::string GetStartRunTime() 171a69a01cdSopenharmony_ci { 172a69a01cdSopenharmony_ci return startRunTime_; 173a69a01cdSopenharmony_ci } 174a69a01cdSopenharmony_ci 175a69a01cdSopenharmony_ci /** 176a69a01cdSopenharmony_ci * @brief get screenshot. 177a69a01cdSopenharmony_ci * @return Return ERR_OK on success, others on failure. 178a69a01cdSopenharmony_ci */ 179a69a01cdSopenharmony_ci ErrCode WukongScreenCap(std::string &screenStorePath, bool gCommandUitest, bool g_commandCheckBWScreen = false); 180a69a01cdSopenharmony_ci 181a69a01cdSopenharmony_ci /** 182a69a01cdSopenharmony_ci * @brief get all abilities by bundleName string. 183a69a01cdSopenharmony_ci * @param bundleName bundle name. 184a69a01cdSopenharmony_ci * @param abilities all abilities find by bundle name. 185a69a01cdSopenharmony_ci */ 186a69a01cdSopenharmony_ci void GetAllAbilitiesByBundleName(std::string bundleName, std::vector<std::string> &abilities); 187a69a01cdSopenharmony_ci 188a69a01cdSopenharmony_ci /** 189a69a01cdSopenharmony_ci * @brief Check if param is valid 190a69a01cdSopenharmony_ci * @param argumentlist argument list. 191a69a01cdSopenharmony_ci * @param isAddToList should add check item to bundleList. 192a69a01cdSopenharmony_ci * @return Return ERR_OK argument is valid, others is invalid. 193a69a01cdSopenharmony_ci */ 194a69a01cdSopenharmony_ci ErrCode CheckArgumentList(std::vector<std::string> &arguments, bool isAddToList); 195a69a01cdSopenharmony_ci 196a69a01cdSopenharmony_ci /** 197a69a01cdSopenharmony_ci * @brief get current test wukong base dir. 198a69a01cdSopenharmony_ci * @return dir string 199a69a01cdSopenharmony_ci */ 200a69a01cdSopenharmony_ci std::string GetCurrentTestDir(); 201a69a01cdSopenharmony_ci 202a69a01cdSopenharmony_ci /* 203a69a01cdSopenharmony_ci * @brief copy file from soruce to dest 204a69a01cdSopenharmony_ci * @param targetFile 205a69a01cdSopenharmony_ci * @param sourceFile 206a69a01cdSopenharmony_ci * @param destFile 207a69a01cdSopenharmony_ci * @return bool 208a69a01cdSopenharmony_ci */ 209a69a01cdSopenharmony_ci bool CopyFile(std::string &targetFile, std::string &sourceDir, std::string &destDir); 210a69a01cdSopenharmony_ci 211a69a01cdSopenharmony_ci /* 212a69a01cdSopenharmony_ci * @brief deleted screenshots 213a69a01cdSopenharmony_ci * @param targetDir 214a69a01cdSopenharmony_ci * @return bool 215a69a01cdSopenharmony_ci */ 216a69a01cdSopenharmony_ci bool DeleteFile(std::string targetDir); 217a69a01cdSopenharmony_ci 218a69a01cdSopenharmony_ci /* 219a69a01cdSopenharmony_ci * @brief set the whitelist list 220a69a01cdSopenharmony_ci * @param tempAllowList 221a69a01cdSopenharmony_ci */ 222a69a01cdSopenharmony_ci void SetTempAllowList(std::vector<std::string> tempAllowList); 223a69a01cdSopenharmony_ci 224a69a01cdSopenharmony_ci /* 225a69a01cdSopenharmony_ci * @brief get the whitelist list 226a69a01cdSopenharmony_ci * @return tmpAllowList 227a69a01cdSopenharmony_ci */ 228a69a01cdSopenharmony_ci std::vector<std::string> GetTempAllowList(); 229a69a01cdSopenharmony_ci 230a69a01cdSopenharmony_ci /* 231a69a01cdSopenharmony_ci * @brief set orderFlag 232a69a01cdSopenharmony_ci * @param orderFlag 233a69a01cdSopenharmony_ci */ 234a69a01cdSopenharmony_ci void SetOrderFlag(bool orderFlag); 235a69a01cdSopenharmony_ci 236a69a01cdSopenharmony_ci /* 237a69a01cdSopenharmony_ci * @brief get orderFlag 238a69a01cdSopenharmony_ci * @return bool 239a69a01cdSopenharmony_ci */ 240a69a01cdSopenharmony_ci bool GetOrderFlag(); 241a69a01cdSopenharmony_ci 242a69a01cdSopenharmony_ci /* 243a69a01cdSopenharmony_ci * @brief set ComponentUri 244a69a01cdSopenharmony_ci * @param optarg 245a69a01cdSopenharmony_ci */ 246a69a01cdSopenharmony_ci ErrCode SetComponentUri(const std::string &optarg); 247a69a01cdSopenharmony_ci 248a69a01cdSopenharmony_ci /* 249a69a01cdSopenharmony_ci * @brief get ComponentUri 250a69a01cdSopenharmony_ci * @return string 251a69a01cdSopenharmony_ci */ 252a69a01cdSopenharmony_ci std::string GetComponentUri(); 253a69a01cdSopenharmony_ci 254a69a01cdSopenharmony_ci /* 255a69a01cdSopenharmony_ci * @brief set ComponentUriType 256a69a01cdSopenharmony_ci * @param optarg 257a69a01cdSopenharmony_ci */ 258a69a01cdSopenharmony_ci ErrCode SetComponentUriType(const std::string &optarg); 259a69a01cdSopenharmony_ci 260a69a01cdSopenharmony_ci /* 261a69a01cdSopenharmony_ci * @brief get ComponentUriType 262a69a01cdSopenharmony_ci * @return string 263a69a01cdSopenharmony_ci */ 264a69a01cdSopenharmony_ci std::string GetComponentUriType(); 265a69a01cdSopenharmony_ci 266a69a01cdSopenharmony_ci /** 267a69a01cdSopenharmony_ci * @brief get all ability infos 268a69a01cdSopenharmony_ci * @return Return ERR_OK if get sth, others not. 269a69a01cdSopenharmony_ci */ 270a69a01cdSopenharmony_ci ErrCode GetAllAbilities(); 271a69a01cdSopenharmony_ci 272a69a01cdSopenharmony_ci /* 273a69a01cdSopenharmony_ci * @brief set the component id block list 274a69a01cdSopenharmony_ci * @param compIdBlockList 275a69a01cdSopenharmony_ci */ 276a69a01cdSopenharmony_ci void SetCompIdBlockList(const std::string &optarg); 277a69a01cdSopenharmony_ci 278a69a01cdSopenharmony_ci /* 279a69a01cdSopenharmony_ci * @brief get the component id block list 280a69a01cdSopenharmony_ci * @return compIdBlockList 281a69a01cdSopenharmony_ci */ 282a69a01cdSopenharmony_ci std::vector<std::string> GetCompIdBlockList(); 283a69a01cdSopenharmony_ci 284a69a01cdSopenharmony_ci /* 285a69a01cdSopenharmony_ci * @brief set the component Type block list 286a69a01cdSopenharmony_ci * @param compTypeBlockList 287a69a01cdSopenharmony_ci */ 288a69a01cdSopenharmony_ci void SetCompTypeBlockList(const std::string &optarg); 289a69a01cdSopenharmony_ci 290a69a01cdSopenharmony_ci /* 291a69a01cdSopenharmony_ci * @brief get the component Type block list 292a69a01cdSopenharmony_ci * @return compTypeBlockList 293a69a01cdSopenharmony_ci */ 294a69a01cdSopenharmony_ci std::vector<std::string> GetCompTypeBlockList(); 295a69a01cdSopenharmony_ci 296a69a01cdSopenharmony_ci /* 297a69a01cdSopenharmony_ci * @brief cmd calls 298a69a01cdSopenharmony_ci * @param cmd 299a69a01cdSopenharmony_ci * @return cmd result 300a69a01cdSopenharmony_ci */ 301a69a01cdSopenharmony_ci std::string runProcess(std::string cmd); 302a69a01cdSopenharmony_ci 303a69a01cdSopenharmony_ci /* 304a69a01cdSopenharmony_ci * @brief set IsFirstStartAppFlag 305a69a01cdSopenharmony_ci * @param isFirstStartApp 306a69a01cdSopenharmony_ci */ 307a69a01cdSopenharmony_ci void SetIsFirstStartAppFlag(bool isFirstStartApp); 308a69a01cdSopenharmony_ci 309a69a01cdSopenharmony_ci /* 310a69a01cdSopenharmony_ci * @brief get isFirstStartApp 311a69a01cdSopenharmony_ci * @return bool 312a69a01cdSopenharmony_ci */ 313a69a01cdSopenharmony_ci bool GetIsFirstStartAppFlag(); 314a69a01cdSopenharmony_ci 315a69a01cdSopenharmony_ci /* 316a69a01cdSopenharmony_ci * @brief get Bundle Pid 317a69a01cdSopenharmony_ci * @return string 318a69a01cdSopenharmony_ci */ 319a69a01cdSopenharmony_ci std::string GetBundlePid(); 320a69a01cdSopenharmony_ci 321a69a01cdSopenharmony_ci /* 322a69a01cdSopenharmony_ci * @brief get Bundle PssTotal 323a69a01cdSopenharmony_ci * @return uint64_t 324a69a01cdSopenharmony_ci */ 325a69a01cdSopenharmony_ci uint64_t GetBundlePssTotal(); 326a69a01cdSopenharmony_ci 327a69a01cdSopenharmony_ci DECLARE_DELAYED_SINGLETON(WuKongUtil); 328a69a01cdSopenharmony_ci 329a69a01cdSopenharmony_ciprivate: 330a69a01cdSopenharmony_ci /** 331a69a01cdSopenharmony_ci * @brief delete repeat argument of argument list. 332a69a01cdSopenharmony_ci * @param argumentlist argument list. 333a69a01cdSopenharmony_ci */ 334a69a01cdSopenharmony_ci void DelRepeatArguments(std::vector<std::string> &argumentlist); 335a69a01cdSopenharmony_ci 336a69a01cdSopenharmony_ci /** 337a69a01cdSopenharmony_ci * @brief Check if there is a conflict between the block and Allow lists 338a69a01cdSopenharmony_ci * @return Return ERR_OK no conflict, others have conflict. 339a69a01cdSopenharmony_ci */ 340a69a01cdSopenharmony_ci ErrCode CheckBundleNameList(); 341a69a01cdSopenharmony_ci 342a69a01cdSopenharmony_ci /** 343a69a01cdSopenharmony_ci * @brief get bundle manager proxy for get abilitys. 344a69a01cdSopenharmony_ci * @return return bundleManager instance. 345a69a01cdSopenharmony_ci */ 346a69a01cdSopenharmony_ci sptr<OHOS::AppExecFwk::IBundleMgr> GetBundleMgrProxy() const; 347a69a01cdSopenharmony_ci 348a69a01cdSopenharmony_ci std::string iconPath_; 349a69a01cdSopenharmony_ci std::vector<std::string> bundleList_; 350a69a01cdSopenharmony_ci std::vector<std::string> abilityList_; 351a69a01cdSopenharmony_ci std::vector<std::string> allowAbilityList_; 352a69a01cdSopenharmony_ci std::vector<std::string> validBundleList_; 353a69a01cdSopenharmony_ci std::vector<std::string> validAbilityList_; 354a69a01cdSopenharmony_ci std::vector<std::string> allowList_; 355a69a01cdSopenharmony_ci std::vector<std::string> blockList_ = {"com.ohos.devicemanagerui", "com.ohos.screenlock", 356a69a01cdSopenharmony_ci "com.ohos.permissionmanager"}; 357a69a01cdSopenharmony_ci std::vector<std::string> blockPageList_ = {"pages/system"}; 358a69a01cdSopenharmony_ci std::vector<std::string> blockAbilityList_; 359a69a01cdSopenharmony_ci std::vector<std::string> unLaunchedBundleList_; 360a69a01cdSopenharmony_ci std::vector<std::string> unLaunchedAbilityList_; 361a69a01cdSopenharmony_ci std::vector<std::string> allBundleList_; 362a69a01cdSopenharmony_ci std::vector<std::string> allAbilityList_; 363a69a01cdSopenharmony_ci std::string uri_; 364a69a01cdSopenharmony_ci std::string uriType_; 365a69a01cdSopenharmony_ci int32_t screenWidth_ = -1; 366a69a01cdSopenharmony_ci int32_t screenHeight_ = -1; 367a69a01cdSopenharmony_ci 368a69a01cdSopenharmony_ci std::string startRunTime_; 369a69a01cdSopenharmony_ci std::string curDir_; 370a69a01cdSopenharmony_ci 371a69a01cdSopenharmony_ci bool orderFlag_ = false; 372a69a01cdSopenharmony_ci bool isFirstStartApp_ = true; 373a69a01cdSopenharmony_ci std::vector<std::string> tempAllowList_; 374a69a01cdSopenharmony_ci std::vector<std::string> compIdBlockList_ = {}; 375a69a01cdSopenharmony_ci std::vector<std::string> compTypeBlockList_ = {"Divider"}; 376a69a01cdSopenharmony_ci}; 377a69a01cdSopenharmony_ci 378a69a01cdSopenharmony_ciclass WukongSemaphore { 379a69a01cdSopenharmony_cipublic: 380a69a01cdSopenharmony_ci WukongSemaphore(const std::string &name, size_t size) : name_(name) 381a69a01cdSopenharmony_ci { 382a69a01cdSopenharmony_ci maxCount_ = 0; 383a69a01cdSopenharmony_ci } 384a69a01cdSopenharmony_ci ~WukongSemaphore() 385a69a01cdSopenharmony_ci { 386a69a01cdSopenharmony_ci } 387a69a01cdSopenharmony_ci 388a69a01cdSopenharmony_ci bool Create() 389a69a01cdSopenharmony_ci { 390a69a01cdSopenharmony_ci return true; 391a69a01cdSopenharmony_ci } 392a69a01cdSopenharmony_ci bool Unlink() 393a69a01cdSopenharmony_ci { 394a69a01cdSopenharmony_ci return true; 395a69a01cdSopenharmony_ci } 396a69a01cdSopenharmony_ci 397a69a01cdSopenharmony_ci bool Open() 398a69a01cdSopenharmony_ci { 399a69a01cdSopenharmony_ci return true; 400a69a01cdSopenharmony_ci } 401a69a01cdSopenharmony_ci bool Close() 402a69a01cdSopenharmony_ci { 403a69a01cdSopenharmony_ci return true; 404a69a01cdSopenharmony_ci } 405a69a01cdSopenharmony_ci 406a69a01cdSopenharmony_ci bool Wait() 407a69a01cdSopenharmony_ci { 408a69a01cdSopenharmony_ci return true; 409a69a01cdSopenharmony_ci } 410a69a01cdSopenharmony_ci bool TryWait() 411a69a01cdSopenharmony_ci { 412a69a01cdSopenharmony_ci return true; 413a69a01cdSopenharmony_ci } 414a69a01cdSopenharmony_ci bool TimedWait(const struct timespec &ts) 415a69a01cdSopenharmony_ci { 416a69a01cdSopenharmony_ci return true; 417a69a01cdSopenharmony_ci } 418a69a01cdSopenharmony_ci bool Post() 419a69a01cdSopenharmony_ci { 420a69a01cdSopenharmony_ci return true; 421a69a01cdSopenharmony_ci } 422a69a01cdSopenharmony_ci 423a69a01cdSopenharmony_ci int GetValue() const 424a69a01cdSopenharmony_ci { 425a69a01cdSopenharmony_ci return maxCount_; 426a69a01cdSopenharmony_ci } 427a69a01cdSopenharmony_ci 428a69a01cdSopenharmony_ciprivate: 429a69a01cdSopenharmony_ci std::string name_; 430a69a01cdSopenharmony_ci int maxCount_; 431a69a01cdSopenharmony_ci}; 432a69a01cdSopenharmony_ci 433a69a01cdSopenharmony_citypedef WukongSemaphore NamedSemaphore; 434a69a01cdSopenharmony_ci} // namespace WuKong 435a69a01cdSopenharmony_ci} // namespace OHOS 436a69a01cdSopenharmony_ci#endif // TEST_WUKONG_UTIL_H 437