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