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