100600bfbSopenharmony_ci/*
200600bfbSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
300600bfbSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
400600bfbSopenharmony_ci * you may not use this file except in compliance with the License.
500600bfbSopenharmony_ci * You may obtain a copy of the License at
600600bfbSopenharmony_ci *
700600bfbSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
800600bfbSopenharmony_ci *
900600bfbSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1000600bfbSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1100600bfbSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1200600bfbSopenharmony_ci * See the License for the specific language governing permissions and
1300600bfbSopenharmony_ci * limitations under the License.
1400600bfbSopenharmony_ci */
1500600bfbSopenharmony_ci#include <gtest/gtest.h>
1600600bfbSopenharmony_ci#include <map>
1700600bfbSopenharmony_ci#include <unistd.h>
1800600bfbSopenharmony_ci#include <vector>
1900600bfbSopenharmony_ci#include <v1_0/imemory_tracker_interface.h>
2000600bfbSopenharmony_ci
2100600bfbSopenharmony_ci#define private public
2200600bfbSopenharmony_ci#include "executor/memory_dumper.h"
2300600bfbSopenharmony_ci#undef private
2400600bfbSopenharmony_ci#include "dump_client_main.h"
2500600bfbSopenharmony_ci#include "dump_utils.h"
2600600bfbSopenharmony_ci#include "hdf_base.h"
2700600bfbSopenharmony_ci#include "executor/memory/memory_filter.h"
2800600bfbSopenharmony_ci#include "executor/memory/memory_util.h"
2900600bfbSopenharmony_ci#include "hidumper_test_utils.h"
3000600bfbSopenharmony_ci#include "util/string_utils.h"
3100600bfbSopenharmony_ci
3200600bfbSopenharmony_ciusing namespace testing::ext;
3300600bfbSopenharmony_ciusing namespace OHOS::HDI::Memorytracker::V1_0;
3400600bfbSopenharmony_cinamespace OHOS {
3500600bfbSopenharmony_cinamespace HiviewDFX {
3600600bfbSopenharmony_ciclass MemoryDumperTest : public testing::Test {
3700600bfbSopenharmony_cipublic:
3800600bfbSopenharmony_ci    static void SetUpTestCase(void);
3900600bfbSopenharmony_ci    static void TearDownTestCase(void);
4000600bfbSopenharmony_ci    void SetUp();
4100600bfbSopenharmony_ci    void TearDown();
4200600bfbSopenharmony_ci};
4300600bfbSopenharmony_ci
4400600bfbSopenharmony_civoid MemoryDumperTest::SetUpTestCase(void)
4500600bfbSopenharmony_ci{
4600600bfbSopenharmony_ci}
4700600bfbSopenharmony_civoid MemoryDumperTest::TearDownTestCase(void)
4800600bfbSopenharmony_ci{
4900600bfbSopenharmony_ci}
5000600bfbSopenharmony_civoid MemoryDumperTest::SetUp(void)
5100600bfbSopenharmony_ci{
5200600bfbSopenharmony_ci}
5300600bfbSopenharmony_civoid MemoryDumperTest::TearDown(void)
5400600bfbSopenharmony_ci{
5500600bfbSopenharmony_ci}
5600600bfbSopenharmony_ci
5700600bfbSopenharmony_ci/**
5800600bfbSopenharmony_ci * @tc.name: MemoryDumperTest001
5900600bfbSopenharmony_ci * @tc.desc: Test MemoryDumper has correct group.
6000600bfbSopenharmony_ci * @tc.type: FUNC
6100600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
6200600bfbSopenharmony_ci */
6300600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryDumperTest001, TestSize.Level3)
6400600bfbSopenharmony_ci{
6500600bfbSopenharmony_ci    std::string cmd = "hidumper --mem";
6600600bfbSopenharmony_ci    std::string str = "Anonymous Page";
6700600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
6800600bfbSopenharmony_ci}
6900600bfbSopenharmony_ci
7000600bfbSopenharmony_ci/**
7100600bfbSopenharmony_ci * @tc.name: MemoryDumperTest002
7200600bfbSopenharmony_ci * @tc.desc: Test MemoryDumper has DMA group.
7300600bfbSopenharmony_ci * @tc.type: FUNC
7400600bfbSopenharmony_ci * @tc.require: issueI5NX04
7500600bfbSopenharmony_ci */
7600600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryDumperTest002, TestSize.Level3)
7700600bfbSopenharmony_ci{
7800600bfbSopenharmony_ci    std::string cmd = "hidumper --mem";
7900600bfbSopenharmony_ci    std::string str = "DMA";
8000600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
8100600bfbSopenharmony_ci}
8200600bfbSopenharmony_ci
8300600bfbSopenharmony_ci/**
8400600bfbSopenharmony_ci * @tc.name: MemoryDumperTest003
8500600bfbSopenharmony_ci * @tc.desc: Test MemoryDumper has correct group.
8600600bfbSopenharmony_ci * @tc.type: FUNC
8700600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
8800600bfbSopenharmony_ci */
8900600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryDumperTest003, TestSize.Level3)
9000600bfbSopenharmony_ci{
9100600bfbSopenharmony_ci    std::string cmd = "hidumper --mem 1";
9200600bfbSopenharmony_ci    std::string str = "Total";
9300600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
9400600bfbSopenharmony_ci    str = "native heap:";
9500600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
9600600bfbSopenharmony_ci    str = "Purgeable:";
9700600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
9800600bfbSopenharmony_ci    str = "DMA:";
9900600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
10000600bfbSopenharmony_ci}
10100600bfbSopenharmony_ci
10200600bfbSopenharmony_ci/**
10300600bfbSopenharmony_ci * @tc.name: MemoryDumperTest004
10400600bfbSopenharmony_ci * @tc.desc: Test MemoryDumper has GPU group.
10500600bfbSopenharmony_ci * @tc.type: FUNC
10600600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
10700600bfbSopenharmony_ci */
10800600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryDumperTest004, TestSize.Level3)
10900600bfbSopenharmony_ci{
11000600bfbSopenharmony_ci    std::string cmd = "hidumper --mem";
11100600bfbSopenharmony_ci    std::string str = "GPU";
11200600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
11300600bfbSopenharmony_ci}
11400600bfbSopenharmony_ci
11500600bfbSopenharmony_ci/**
11600600bfbSopenharmony_ci * @tc.name: MemoryDumperTest005
11700600bfbSopenharmony_ci * @tc.desc: Test MemoryDumper has Purgeable group.
11800600bfbSopenharmony_ci * @tc.type: FUNC
11900600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
12000600bfbSopenharmony_ci */
12100600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryDumperTest005, TestSize.Level3)
12200600bfbSopenharmony_ci{
12300600bfbSopenharmony_ci    std::string cmd = "hidumper --mem";
12400600bfbSopenharmony_ci    std::string str = "Total Purgeable";
12500600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
12600600bfbSopenharmony_ci    str = "Total PurgSum";
12700600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
12800600bfbSopenharmony_ci    str = "Total PurgPin";
12900600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
13000600bfbSopenharmony_ci}
13100600bfbSopenharmony_ci
13200600bfbSopenharmony_ci/**
13300600bfbSopenharmony_ci * @tc.name: MemoryDumperTest006
13400600bfbSopenharmony_ci * @tc.desc: Test MemoryDumper has Dma/PurgSum/PurgPin group.
13500600bfbSopenharmony_ci * @tc.type: FUNC
13600600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
13700600bfbSopenharmony_ci */
13800600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryDumperTest006, TestSize.Level3)
13900600bfbSopenharmony_ci{
14000600bfbSopenharmony_ci    std::string cmd = "hidumper --mem";
14100600bfbSopenharmony_ci    std::string str = "Dma     PurgSum     PurgPin";
14200600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
14300600bfbSopenharmony_ci}
14400600bfbSopenharmony_ci
14500600bfbSopenharmony_ci/**
14600600bfbSopenharmony_ci * @tc.name: MemoryDumperTest007
14700600bfbSopenharmony_ci * @tc.desc: Test zip memory not contain "Total Memory Usage by PID".
14800600bfbSopenharmony_ci * @tc.type: FUNC
14900600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
15000600bfbSopenharmony_ci */
15100600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryDumperTest007, TestSize.Level3)
15200600bfbSopenharmony_ci{
15300600bfbSopenharmony_ci    std::string cmd = "hidumper --mem --zip";
15400600bfbSopenharmony_ci    std::string str = "Total Memory Usage by PID";
15500600bfbSopenharmony_ci    ASSERT_FALSE(HidumperTestUtils::GetInstance().IsExistInCmdResult(cmd, str));
15600600bfbSopenharmony_ci}
15700600bfbSopenharmony_ci
15800600bfbSopenharmony_ci/**
15900600bfbSopenharmony_ci * @tc.name: MemoryDumperTest008
16000600bfbSopenharmony_ci * @tc.desc: Test dma is equal graph.
16100600bfbSopenharmony_ci * @tc.type: FUNC
16200600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
16300600bfbSopenharmony_ci */
16400600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryDumperTest008, TestSize.Level3)
16500600bfbSopenharmony_ci{
16600600bfbSopenharmony_ci    auto rsPid = static_cast<int32_t>(HidumperTestUtils::GetInstance().GetPidByName("render_service"));
16700600bfbSopenharmony_ci    int pid = rsPid > 0 ? rsPid : 1;
16800600bfbSopenharmony_ci    ASSERT_GT(pid, 0);
16900600bfbSopenharmony_ci    std::string cmd = "hidumper --mem " + std::to_string(pid);
17000600bfbSopenharmony_ci    std::string str = "Graph";
17100600bfbSopenharmony_ci    std::string result = "";
17200600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().GetSpecialLine(cmd, str, result));
17300600bfbSopenharmony_ci    std::string graphPss = HidumperTestUtils::GetInstance().GetValueInLine(result, 1);
17400600bfbSopenharmony_ci    ASSERT_TRUE(IsNumericStr(graphPss));
17500600bfbSopenharmony_ci    str = "Dma";
17600600bfbSopenharmony_ci    result = "";
17700600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().GetSpecialLine(cmd, str, result));
17800600bfbSopenharmony_ci    vector<string> values;
17900600bfbSopenharmony_ci    StringUtils::GetInstance().StringSplit(result, ":", values); // Dma:0 kB
18000600bfbSopenharmony_ci    std::string dmaStr = "";
18100600bfbSopenharmony_ci    if (!values.empty() && values.size() >= 2) { // 2: Dma, 0 kB
18200600bfbSopenharmony_ci        dmaStr = values[1];
18300600bfbSopenharmony_ci        if (dmaStr.size() >= 3) {
18400600bfbSopenharmony_ci            dmaStr = dmaStr.substr(0, dmaStr.size() - 4);  // 4: ' kB' + 1(index from to 0,1,2...)
18500600bfbSopenharmony_ci            ASSERT_TRUE(IsNumericStr(dmaStr));
18600600bfbSopenharmony_ci        }
18700600bfbSopenharmony_ci    }
18800600bfbSopenharmony_ci    ASSERT_TRUE(graphPss == dmaStr);
18900600bfbSopenharmony_ci}
19000600bfbSopenharmony_ci
19100600bfbSopenharmony_ci/**
19200600bfbSopenharmony_ci * @tc.name: MemoryDumperTest009
19300600bfbSopenharmony_ci * @tc.desc: Test GL not out of bounds.
19400600bfbSopenharmony_ci * @tc.type: FUNC
19500600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
19600600bfbSopenharmony_ci */
19700600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryDumperTest009, TestSize.Level3)
19800600bfbSopenharmony_ci{
19900600bfbSopenharmony_ci    auto rsPid = static_cast<int32_t>(HidumperTestUtils::GetInstance().GetPidByName("render_service"));
20000600bfbSopenharmony_ci    int pid = rsPid > 0 ? rsPid : 1;
20100600bfbSopenharmony_ci    ASSERT_GT(pid, 0);
20200600bfbSopenharmony_ci    std::string cmd = "hidumper --mem " + std::to_string(pid);
20300600bfbSopenharmony_ci    std::string str = "GL";
20400600bfbSopenharmony_ci    std::string result = "";
20500600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().GetSpecialLine(cmd, str, result));
20600600bfbSopenharmony_ci    std::string glPss = HidumperTestUtils::GetInstance().GetValueInLine(result, 1);
20700600bfbSopenharmony_ci    ASSERT_TRUE(IsNumericStr(glPss));
20800600bfbSopenharmony_ci    uint64_t gl = static_cast<uint64_t>(std::stoi(glPss));
20900600bfbSopenharmony_ci    ASSERT_FALSE(gl < 0 || gl > UINT64_MAX);
21000600bfbSopenharmony_ci}
21100600bfbSopenharmony_ci
21200600bfbSopenharmony_ci/**
21300600bfbSopenharmony_ci * @tc.name: MemoryDumperTest010
21400600bfbSopenharmony_ci * @tc.desc: Test HeapSize for "hidumper --mem `pidof com.ohos.sceneboard`"".
21500600bfbSopenharmony_ci * @tc.type: FUNC
21600600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
21700600bfbSopenharmony_ci */
21800600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryDumperTest010, TestSize.Level3)
21900600bfbSopenharmony_ci{
22000600bfbSopenharmony_ci    auto sceneboardPid = static_cast<int32_t>(HidumperTestUtils::GetInstance().GetPidByName("com.ohos.sceneboard"));
22100600bfbSopenharmony_ci    int pid = sceneboardPid > 0 ? sceneboardPid : 1;
22200600bfbSopenharmony_ci    ASSERT_GT(pid, 0);
22300600bfbSopenharmony_ci    std::string cmd = "hidumper --mem " + std::to_string(pid);
22400600bfbSopenharmony_ci    std::string str = "native heap";
22500600bfbSopenharmony_ci    std::string result = "";
22600600bfbSopenharmony_ci    ASSERT_TRUE(HidumperTestUtils::GetInstance().GetSpecialLine(cmd, str, result));
22700600bfbSopenharmony_ci    // 9: HeapSize index
22800600bfbSopenharmony_ci    std::string nativeHeapSizeStr = HidumperTestUtils::GetInstance().GetValueInLine(result, 9);
22900600bfbSopenharmony_ci    ASSERT_TRUE(IsNumericStr(nativeHeapSizeStr));
23000600bfbSopenharmony_ci    if (DumpUtils::IsHmKernel()) {
23100600bfbSopenharmony_ci        uint64_t nativeHeapSize = static_cast<uint64_t>(std::stoi(nativeHeapSizeStr));
23200600bfbSopenharmony_ci        ASSERT_TRUE(nativeHeapSize > 0);
23300600bfbSopenharmony_ci    }
23400600bfbSopenharmony_ci}
23500600bfbSopenharmony_ci
23600600bfbSopenharmony_ci/**
23700600bfbSopenharmony_ci * @tc.name: MemoryUtilTest001
23800600bfbSopenharmony_ci * @tc.desc: Test IsNameLine has correct ret.
23900600bfbSopenharmony_ci * @tc.type: FUNC
24000600bfbSopenharmony_ci */
24100600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryUtilTest001, TestSize.Level1)
24200600bfbSopenharmony_ci{
24300600bfbSopenharmony_ci    const std::string valueLine = "Rss:                  24 kB";
24400600bfbSopenharmony_ci    std::string name;
24500600bfbSopenharmony_ci    uint64_t iNode = 0;
24600600bfbSopenharmony_ci    ASSERT_FALSE(MemoryUtil::GetInstance().IsNameLine(valueLine, name, iNode));
24700600bfbSopenharmony_ci    ASSERT_EQ(name, "");
24800600bfbSopenharmony_ci    const std::string nameLine = "ffb84000-ffba5000 rw-p 00000000 00:00 0                                  [stack]";
24900600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().IsNameLine(nameLine, name, iNode));
25000600bfbSopenharmony_ci    ASSERT_EQ(name, "[stack]");
25100600bfbSopenharmony_ci}
25200600bfbSopenharmony_ci
25300600bfbSopenharmony_ci/**
25400600bfbSopenharmony_ci * @tc.name: MemoryUtilTest002
25500600bfbSopenharmony_ci * @tc.desc: Test GetTypeAndValue has correct ret.
25600600bfbSopenharmony_ci * @tc.type: FUNC
25700600bfbSopenharmony_ci */
25800600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryUtilTest002, TestSize.Level1)
25900600bfbSopenharmony_ci{
26000600bfbSopenharmony_ci    std::string type;
26100600bfbSopenharmony_ci    uint64_t value = 0;
26200600bfbSopenharmony_ci    const std::string illegalStr = "aaaaaa";
26300600bfbSopenharmony_ci    ASSERT_FALSE(MemoryUtil::GetInstance().GetTypeAndValue(illegalStr, type, value));
26400600bfbSopenharmony_ci    const std::string valueStr = "MemTotal:        2010244 kB";
26500600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().GetTypeAndValue(valueStr, type, value));
26600600bfbSopenharmony_ci    ASSERT_EQ(type, "MemTotal");
26700600bfbSopenharmony_ci    ASSERT_EQ(value, 2010244);
26800600bfbSopenharmony_ci}
26900600bfbSopenharmony_ci
27000600bfbSopenharmony_ci/**
27100600bfbSopenharmony_ci * @tc.name: MemoryUtilTest003
27200600bfbSopenharmony_ci * @tc.desc: Test RunCMD has correct ret.
27300600bfbSopenharmony_ci * @tc.type: FUNC
27400600bfbSopenharmony_ci */
27500600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryUtilTest003, TestSize.Level1)
27600600bfbSopenharmony_ci{
27700600bfbSopenharmony_ci    const std::string cmd = "ps -ef";
27800600bfbSopenharmony_ci    std::vector<std::string> vec;
27900600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
28000600bfbSopenharmony_ci    ASSERT_GT(vec.size(), 0);
28100600bfbSopenharmony_ci}
28200600bfbSopenharmony_ci
28300600bfbSopenharmony_ci/**
28400600bfbSopenharmony_ci * @tc.name: MemoryUtilTest004
28500600bfbSopenharmony_ci * @tc.desc: Test hidumper some cmd.
28600600bfbSopenharmony_ci * @tc.type: FUNC
28700600bfbSopenharmony_ci */
28800600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryUtilTest004, TestSize.Level1)
28900600bfbSopenharmony_ci{
29000600bfbSopenharmony_ci    std::string cmd = "hidumper --mem-smaps 1";
29100600bfbSopenharmony_ci    std::vector<std::string> vec;
29200600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
29300600bfbSopenharmony_ci    cmd = "hidumper --mem-smaps 1 -v";
29400600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
29500600bfbSopenharmony_ci    cmd = "hidumper --net 1";
29600600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
29700600bfbSopenharmony_ci    cmd = "hidumper --storage 1";
29800600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
29900600bfbSopenharmony_ci}
30000600bfbSopenharmony_ci
30100600bfbSopenharmony_ci/**
30200600bfbSopenharmony_ci * @tc.name: MemoryUtilTest005
30300600bfbSopenharmony_ci * @tc.desc: Test no such pid.
30400600bfbSopenharmony_ci * @tc.type: FUNC
30500600bfbSopenharmony_ci */
30600600bfbSopenharmony_ciHWTEST_F(MemoryDumperTest, MemoryUtilTest005, TestSize.Level1)
30700600bfbSopenharmony_ci{
30800600bfbSopenharmony_ci    std::string cmd = "hidumper --mem-smaps 100000";
30900600bfbSopenharmony_ci    std::vector<std::string> vec;
31000600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
31100600bfbSopenharmony_ci    cmd = "hidumper --mem-smaps 100000 -v";
31200600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
31300600bfbSopenharmony_ci    cmd = "hidumper --cpuusage 100000";
31400600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
31500600bfbSopenharmony_ci    cmd = "hidumper --mem 100000";
31600600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
31700600bfbSopenharmony_ci    cmd = "hidumper -p 100000";
31800600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
31900600bfbSopenharmony_ci    cmd = "hidumper --storage 100000";
32000600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
32100600bfbSopenharmony_ci    cmd = "hidumper --net 100000";
32200600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
32300600bfbSopenharmony_ci    cmd = "hidumper --mem-jsheap 100000";
32400600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
32500600bfbSopenharmony_ci    cmd = "hidumper --mem-jsheap 0";
32600600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
32700600bfbSopenharmony_ci    cmd = "hidumper --ipc --stat 100000";
32800600bfbSopenharmony_ci    ASSERT_TRUE(MemoryUtil::GetInstance().RunCMD(cmd, vec));
32900600bfbSopenharmony_ci}
33000600bfbSopenharmony_ci} // namespace HiviewDFX
33100600bfbSopenharmony_ci} // namespace OHOS