100600bfbSopenharmony_ci/* 200600bfbSopenharmony_ci * Copyright (c) 2024 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 <fcntl.h> 1600600bfbSopenharmony_ci#include <vector> 1700600bfbSopenharmony_ci#include <unistd.h> 1800600bfbSopenharmony_ci#include <cstdlib> 1900600bfbSopenharmony_ci#include <gtest/gtest.h> 2000600bfbSopenharmony_ci#include <string_ex.h> 2100600bfbSopenharmony_ci#include "inner/dump_service_id.h" 2200600bfbSopenharmony_ci#include "dump_client_main.h" 2300600bfbSopenharmony_ci#include "dump_controller.h" 2400600bfbSopenharmony_ci#include "dump_manager_client.h" 2500600bfbSopenharmony_ci#include "app_mgr_client.h" 2600600bfbSopenharmony_ci 2700600bfbSopenharmony_ciusing namespace testing::ext; 2800600bfbSopenharmony_ciusing namespace std; 2900600bfbSopenharmony_ciusing OHOS::HiviewDFX::DumpClientMain; 3000600bfbSopenharmony_ciusing OHOS::AppExecFwk::AppMgrClient; 3100600bfbSopenharmony_ciusing OHOS::AppExecFwk::RunningProcessInfo; 3200600bfbSopenharmony_cinamespace OHOS { 3300600bfbSopenharmony_cinamespace HiviewDFX { 3400600bfbSopenharmony_ciconst std::string TOOL_NAME = "hidumper"; 3500600bfbSopenharmony_ciconst int BUFFER_SIZE = 1024; 3600600bfbSopenharmony_ciclass HidumperClientTest : 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 HidumperClientTest::SetUpTestCase(void) 4500600bfbSopenharmony_ci{ 4600600bfbSopenharmony_ci} 4700600bfbSopenharmony_ci 4800600bfbSopenharmony_civoid HidumperClientTest::TearDownTestCase(void) 4900600bfbSopenharmony_ci{ 5000600bfbSopenharmony_ci} 5100600bfbSopenharmony_ci 5200600bfbSopenharmony_civoid HidumperClientTest::SetUp(void) 5300600bfbSopenharmony_ci{ 5400600bfbSopenharmony_ci} 5500600bfbSopenharmony_ci 5600600bfbSopenharmony_civoid HidumperClientTest::TearDown(void) 5700600bfbSopenharmony_ci{ 5800600bfbSopenharmony_ci} 5900600bfbSopenharmony_ci 6000600bfbSopenharmony_ci/** 6100600bfbSopenharmony_ci * @tc.name: ClientMainTest001 6200600bfbSopenharmony_ci * @tc.desc: Test too many arguments. 6300600bfbSopenharmony_ci * @tc.type: FUNC 6400600bfbSopenharmony_ci */ 6500600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ClientMainTest001, TestSize.Level0) 6600600bfbSopenharmony_ci{ 6700600bfbSopenharmony_ci char *argv[] = { 6800600bfbSopenharmony_ci const_cast<char *>(TOOL_NAME.c_str()), 6900600bfbSopenharmony_ci }; 7000600bfbSopenharmony_ci int argc = ARG_MAX_COUNT + 1; 7100600bfbSopenharmony_ci int ret = DumpClientMain::GetInstance().Main(argc, argv, STDOUT_FILENO); 7200600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_INVALID_ARG); 7300600bfbSopenharmony_ci} 7400600bfbSopenharmony_ci 7500600bfbSopenharmony_ci/** 7600600bfbSopenharmony_ci * @tc.name: ClientMainTest002 7700600bfbSopenharmony_ci * @tc.desc: Test empty argument. 7800600bfbSopenharmony_ci * @tc.type: FUNC 7900600bfbSopenharmony_ci */ 8000600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ClientMainTest002, TestSize.Level0) 8100600bfbSopenharmony_ci{ 8200600bfbSopenharmony_ci char *argv[] = { 8300600bfbSopenharmony_ci const_cast<char *>(TOOL_NAME.c_str()), 8400600bfbSopenharmony_ci const_cast<char *>("--mem"), 8500600bfbSopenharmony_ci const_cast<char *>("-1"), 8600600bfbSopenharmony_ci const_cast<char *>(""), 8700600bfbSopenharmony_ci const_cast<char *>("--mem"), 8800600bfbSopenharmony_ci }; 8900600bfbSopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]) - 1; 9000600bfbSopenharmony_ci int ret = DumpClientMain::GetInstance().Main(argc, argv, STDOUT_FILENO); 9100600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_INVALID_ARG); 9200600bfbSopenharmony_ci} 9300600bfbSopenharmony_ci 9400600bfbSopenharmony_ci/** 9500600bfbSopenharmony_ci * @tc.name: ClientMainTest003 9600600bfbSopenharmony_ci * @tc.desc: Test too long argument . 9700600bfbSopenharmony_ci * @tc.type: FUNC 9800600bfbSopenharmony_ci */ 9900600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ClientMainTest003, TestSize.Level0) 10000600bfbSopenharmony_ci{ 10100600bfbSopenharmony_ci std::string longArg; 10200600bfbSopenharmony_ci longArg.assign(SINGLE_ARG_MAXLEN + 1, 'c'); 10300600bfbSopenharmony_ci char *argv[] = { 10400600bfbSopenharmony_ci const_cast<char *>(TOOL_NAME.c_str()), 10500600bfbSopenharmony_ci const_cast<char *>("-h"), 10600600bfbSopenharmony_ci const_cast<char *>(longArg.c_str()), 10700600bfbSopenharmony_ci }; 10800600bfbSopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 10900600bfbSopenharmony_ci int ret = DumpClientMain::GetInstance().Main(argc, argv, STDOUT_FILENO); 11000600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_INVALID_ARG); 11100600bfbSopenharmony_ci} 11200600bfbSopenharmony_ci 11300600bfbSopenharmony_ci/** 11400600bfbSopenharmony_ci * @tc.name: ClientMainTest004 11500600bfbSopenharmony_ci * @tc.desc: Test null argument. 11600600bfbSopenharmony_ci * @tc.type: FUNC 11700600bfbSopenharmony_ci */ 11800600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ClientMainTest004, TestSize.Level0) 11900600bfbSopenharmony_ci{ 12000600bfbSopenharmony_ci char *argv[] = { 12100600bfbSopenharmony_ci const_cast<char *>(TOOL_NAME.c_str()), 12200600bfbSopenharmony_ci nullptr, 12300600bfbSopenharmony_ci }; 12400600bfbSopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 12500600bfbSopenharmony_ci int ret = DumpClientMain::GetInstance().Main(argc, argv, STDOUT_FILENO); 12600600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_INVALID_ARG); 12700600bfbSopenharmony_ci} 12800600bfbSopenharmony_ci 12900600bfbSopenharmony_ci/** 13000600bfbSopenharmony_ci * @tc.name: ClientMainTest005 13100600bfbSopenharmony_ci * @tc.desc: Test null fd. 13200600bfbSopenharmony_ci * @tc.type: FUNC 13300600bfbSopenharmony_ci */ 13400600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ClientMainTest005, TestSize.Level0) 13500600bfbSopenharmony_ci{ 13600600bfbSopenharmony_ci char *argv[] = { 13700600bfbSopenharmony_ci const_cast<char *>("hidumper"), 13800600bfbSopenharmony_ci const_cast<char *>("--mem"), 13900600bfbSopenharmony_ci const_cast<char *>("1"), 14000600bfbSopenharmony_ci }; 14100600bfbSopenharmony_ci int argc = sizeof(argv) / sizeof(argv[0]); 14200600bfbSopenharmony_ci int fd = open("/dev/null", O_RDWR | O_CREAT | O_TRUNC, 0664); 14300600bfbSopenharmony_ci if (fd <= 0) { 14400600bfbSopenharmony_ci fd = STDERR_FILENO; 14500600bfbSopenharmony_ci } 14600600bfbSopenharmony_ci int ret = DumpClientMain::GetInstance().Main(argc, argv, fd); 14700600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_OK); 14800600bfbSopenharmony_ci} 14900600bfbSopenharmony_ci 15000600bfbSopenharmony_ci/** 15100600bfbSopenharmony_ci * @tc.name: ClientMainTest006 15200600bfbSopenharmony_ci * @tc.desc: Test null argv. 15300600bfbSopenharmony_ci * @tc.type: FUNC 15400600bfbSopenharmony_ci */ 15500600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ClientMainTest006, TestSize.Level0) 15600600bfbSopenharmony_ci{ 15700600bfbSopenharmony_ci int argc = ARG_MAX_COUNT; 15800600bfbSopenharmony_ci int ret = DumpClientMain::GetInstance().Main(argc, nullptr, STDOUT_FILENO); 15900600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_INVALID_ARG); 16000600bfbSopenharmony_ci} 16100600bfbSopenharmony_ci 16200600bfbSopenharmony_ci/** 16300600bfbSopenharmony_ci * @tc.name: ManagerClientTest001 16400600bfbSopenharmony_ci * @tc.desc: Test emtpy argument list. 16500600bfbSopenharmony_ci * @tc.type: FUNC 16600600bfbSopenharmony_ci */ 16700600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest001, TestSize.Level0) 16800600bfbSopenharmony_ci{ 16900600bfbSopenharmony_ci vector<u16string> args{}; 17000600bfbSopenharmony_ci int ret = DumpManagerClient::GetInstance().Request(args, STDOUT_FILENO); 17100600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_FAIL); 17200600bfbSopenharmony_ci} 17300600bfbSopenharmony_ci 17400600bfbSopenharmony_ci/** 17500600bfbSopenharmony_ci * @tc.name: ManagerClientTest002 17600600bfbSopenharmony_ci * @tc.desc: Test emtpy argument. 17700600bfbSopenharmony_ci * @tc.type: FUNC 17800600bfbSopenharmony_ci */ 17900600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest002, TestSize.Level0) 18000600bfbSopenharmony_ci{ 18100600bfbSopenharmony_ci vector<u16string> args{ 18200600bfbSopenharmony_ci std::u16string(), 18300600bfbSopenharmony_ci }; 18400600bfbSopenharmony_ci int ret = DumpManagerClient::GetInstance().Request(args, STDOUT_FILENO); 18500600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_FAIL); 18600600bfbSopenharmony_ci} 18700600bfbSopenharmony_ci 18800600bfbSopenharmony_ci/** 18900600bfbSopenharmony_ci * @tc.name: ManagerClientTest003 19000600bfbSopenharmony_ci * @tc.desc: Test mamanage client Request. 19100600bfbSopenharmony_ci * @tc.type: FUNC 19200600bfbSopenharmony_ci */ 19300600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest003, TestSize.Level0) 19400600bfbSopenharmony_ci{ 19500600bfbSopenharmony_ci vector<u16string> args{ 19600600bfbSopenharmony_ci std::u16string(u"hidumper"), 19700600bfbSopenharmony_ci std::u16string(u"-s"), 19800600bfbSopenharmony_ci std::u16string(u"1212"), 19900600bfbSopenharmony_ci }; 20000600bfbSopenharmony_ci int ret = DumpManagerClient::GetInstance().Request(args, STDOUT_FILENO); 20100600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_OK); 20200600bfbSopenharmony_ci} 20300600bfbSopenharmony_ci 20400600bfbSopenharmony_ci/** 20500600bfbSopenharmony_ci * @tc.name: ManagerClientTest004 20600600bfbSopenharmony_ci * @tc.desc: Test mamanage client ScanPidOverLimit. 20700600bfbSopenharmony_ci * @tc.type: FUNC 20800600bfbSopenharmony_ci */ 20900600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest004, TestSize.Level0) 21000600bfbSopenharmony_ci{ 21100600bfbSopenharmony_ci sptr<IDumpBroker> proxy_ {nullptr}; 21200600bfbSopenharmony_ci sptr<ISystemAbilityManager> sam = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); 21300600bfbSopenharmony_ci ASSERT_TRUE(sam != nullptr) << "ManagerClientTest004 fail to get GetSystemAbilityManager"; 21400600bfbSopenharmony_ci sptr<IRemoteObject> remoteObject = sam->CheckSystemAbility(DFX_HI_DUMPER_SERVICE_ABILITY_ID); 21500600bfbSopenharmony_ci ASSERT_TRUE(remoteObject != nullptr) << "Get SystemAbility failed."; 21600600bfbSopenharmony_ci proxy_ = iface_cast<IDumpBroker>(remoteObject); 21700600bfbSopenharmony_ci std::string requestType = "fd"; 21800600bfbSopenharmony_ci std::vector<int32_t> pidList; 21900600bfbSopenharmony_ci int ret = proxy_->ScanPidOverLimit(requestType, LIMIT_SIZE, pidList); 22000600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_OK); 22100600bfbSopenharmony_ci} 22200600bfbSopenharmony_ci 22300600bfbSopenharmony_ci/** 22400600bfbSopenharmony_ci * @tc.name: ManagerClientTest005 22500600bfbSopenharmony_ci * @tc.desc: Test mamanage client CountFdNums. 22600600bfbSopenharmony_ci * @tc.type: FUNC 22700600bfbSopenharmony_ci */ 22800600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest005, TestSize.Level0) 22900600bfbSopenharmony_ci{ 23000600bfbSopenharmony_ci sptr<IDumpBroker> proxy_ {nullptr}; 23100600bfbSopenharmony_ci sptr<ISystemAbilityManager> sam = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); 23200600bfbSopenharmony_ci ASSERT_TRUE(sam != nullptr) << "ManagerClientTest005 fail to get GetSystemAbilityManager"; 23300600bfbSopenharmony_ci sptr<IRemoteObject> remoteObject = sam->CheckSystemAbility(DFX_HI_DUMPER_SERVICE_ABILITY_ID); 23400600bfbSopenharmony_ci ASSERT_TRUE(remoteObject != nullptr) << "Get SystemAbility failed."; 23500600bfbSopenharmony_ci proxy_ = iface_cast<IDumpBroker>(remoteObject); 23600600bfbSopenharmony_ci int32_t pid = 1; 23700600bfbSopenharmony_ci uint32_t fdNums = 0; 23800600bfbSopenharmony_ci std::string detailFdInfo; 23900600bfbSopenharmony_ci std::string topLeakedType; 24000600bfbSopenharmony_ci int ret = proxy_->CountFdNums(pid, fdNums, detailFdInfo, topLeakedType); 24100600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_OK); 24200600bfbSopenharmony_ci} 24300600bfbSopenharmony_ci 24400600bfbSopenharmony_ci/** 24500600bfbSopenharmony_ci * @tc.name: ManagerClientTest006 24600600bfbSopenharmony_ci * @tc.desc: Test ipc stat dump with pid. 24700600bfbSopenharmony_ci * @tc.type: FUNC 24800600bfbSopenharmony_ci */ 24900600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest006, TestSize.Level0) 25000600bfbSopenharmony_ci{ 25100600bfbSopenharmony_ci string pid; 25200600bfbSopenharmony_ci FILE* file = popen("pidof samgr", "r"); 25300600bfbSopenharmony_ci if (file) { 25400600bfbSopenharmony_ci char buffer[BUFFER_SIZE]; 25500600bfbSopenharmony_ci if (fgets(buffer, sizeof(buffer), file) != nullptr) { 25600600bfbSopenharmony_ci pid.assign(buffer); 25700600bfbSopenharmony_ci }; 25800600bfbSopenharmony_ci pid = pid.substr(0, pid.length() - 1); 25900600bfbSopenharmony_ci pclose(file); 26000600bfbSopenharmony_ci } else { 26100600bfbSopenharmony_ci std::cerr << "Failed to execute command" << std::endl; 26200600bfbSopenharmony_ci } 26300600bfbSopenharmony_ci vector<u16string> args{ 26400600bfbSopenharmony_ci std::u16string(u"hidumper"), 26500600bfbSopenharmony_ci std::u16string(u"--ipc"), 26600600bfbSopenharmony_ci Str8ToStr16(pid), 26700600bfbSopenharmony_ci std::u16string(u"--start-stat"), 26800600bfbSopenharmony_ci }; 26900600bfbSopenharmony_ci int32_t ret = DumpManagerClient::GetInstance().Request(args, STDOUT_FILENO); 27000600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_OK); 27100600bfbSopenharmony_ci} 27200600bfbSopenharmony_ci 27300600bfbSopenharmony_ci/** 27400600bfbSopenharmony_ci * @tc.name: ManagerClientTest007 27500600bfbSopenharmony_ci * @tc.desc: Test ipc stat dump all. 27600600bfbSopenharmony_ci * @tc.type: FUNC 27700600bfbSopenharmony_ci */ 27800600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest007, TestSize.Level0) 27900600bfbSopenharmony_ci{ 28000600bfbSopenharmony_ci vector<u16string> args{ 28100600bfbSopenharmony_ci std::u16string(u"hidumper"), 28200600bfbSopenharmony_ci std::u16string(u"--ipc"), 28300600bfbSopenharmony_ci std::u16string(u"-a"), 28400600bfbSopenharmony_ci std::u16string(u"--start-stat"), 28500600bfbSopenharmony_ci }; 28600600bfbSopenharmony_ci int ret = DumpManagerClient::GetInstance().Request(args, STDOUT_FILENO); 28700600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_OK); 28800600bfbSopenharmony_ci} 28900600bfbSopenharmony_ci 29000600bfbSopenharmony_ci/** 29100600bfbSopenharmony_ci * @tc.name: ManagerClientTest008 29200600bfbSopenharmony_ci * @tc.desc: Test cpuusage of all processes. 29300600bfbSopenharmony_ci * @tc.type: FUNC 29400600bfbSopenharmony_ci */ 29500600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest008, TestSize.Level0) 29600600bfbSopenharmony_ci{ 29700600bfbSopenharmony_ci vector<u16string> args{ 29800600bfbSopenharmony_ci std::u16string(u"hidumper"), 29900600bfbSopenharmony_ci std::u16string(u"--cpuusage"), 30000600bfbSopenharmony_ci }; 30100600bfbSopenharmony_ci int ret = DumpManagerClient::GetInstance().Request(args, STDOUT_FILENO); 30200600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_OK); 30300600bfbSopenharmony_ci} 30400600bfbSopenharmony_ci 30500600bfbSopenharmony_ci/** 30600600bfbSopenharmony_ci * @tc.name: ManagerClientTest009 30700600bfbSopenharmony_ci * @tc.desc: Test cpuusage with pid. 30800600bfbSopenharmony_ci * @tc.type: FUNC 30900600bfbSopenharmony_ci */ 31000600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest009, TestSize.Level0) 31100600bfbSopenharmony_ci{ 31200600bfbSopenharmony_ci vector<u16string> args{ 31300600bfbSopenharmony_ci std::u16string(u"hidumper"), 31400600bfbSopenharmony_ci std::u16string(u"--cpuusage"), 31500600bfbSopenharmony_ci std::u16string(u"1"), 31600600bfbSopenharmony_ci }; 31700600bfbSopenharmony_ci int ret = DumpManagerClient::GetInstance().Request(args, STDOUT_FILENO); 31800600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_OK); 31900600bfbSopenharmony_ci} 32000600bfbSopenharmony_ci 32100600bfbSopenharmony_ci/** 32200600bfbSopenharmony_ci * @tc.name: ManagerClientTest010 32300600bfbSopenharmony_ci * @tc.desc: Test cpufreq. 32400600bfbSopenharmony_ci * @tc.type: FUNC 32500600bfbSopenharmony_ci */ 32600600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest010, TestSize.Level0) 32700600bfbSopenharmony_ci{ 32800600bfbSopenharmony_ci vector<u16string> args{ 32900600bfbSopenharmony_ci std::u16string(u"hidumper"), 33000600bfbSopenharmony_ci std::u16string(u"--cpufreq"), 33100600bfbSopenharmony_ci }; 33200600bfbSopenharmony_ci int ret = DumpManagerClient::GetInstance().Request(args, STDOUT_FILENO); 33300600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_OK); 33400600bfbSopenharmony_ci} 33500600bfbSopenharmony_ci 33600600bfbSopenharmony_ci/** 33700600bfbSopenharmony_ci * @tc.name: ManagerClientTest011 33800600bfbSopenharmony_ci * @tc.desc: Test --mem-jsheap. 33900600bfbSopenharmony_ci * @tc.type: FUNC 34000600bfbSopenharmony_ci */ 34100600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest011, TestSize.Level0) 34200600bfbSopenharmony_ci{ 34300600bfbSopenharmony_ci vector<u16string> args{ 34400600bfbSopenharmony_ci std::u16string(u"hidumper"), 34500600bfbSopenharmony_ci std::u16string(u"--mem-jsheap"), 34600600bfbSopenharmony_ci }; 34700600bfbSopenharmony_ci int ret = DumpManagerClient::GetInstance().Request(args, STDOUT_FILENO); 34800600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_OK); 34900600bfbSopenharmony_ci} 35000600bfbSopenharmony_ci 35100600bfbSopenharmony_ci/** 35200600bfbSopenharmony_ci * @tc.name: ManagerClientTest012 35300600bfbSopenharmony_ci * @tc.desc: Test --mem-jsheap. 35400600bfbSopenharmony_ci * @tc.type: FUNC 35500600bfbSopenharmony_ci */ 35600600bfbSopenharmony_ciHWTEST_F(HidumperClientTest, ManagerClientTest012, TestSize.Level0) 35700600bfbSopenharmony_ci{ 35800600bfbSopenharmony_ci string pid; 35900600bfbSopenharmony_ci auto appMgrClient = std::make_unique<AppMgrClient>(); 36000600bfbSopenharmony_ci std::vector<RunningProcessInfo> runningProcessInfos; 36100600bfbSopenharmony_ci appMgrClient->GetAllRunningProcesses(runningProcessInfos); 36200600bfbSopenharmony_ci ASSERT_TRUE(runningProcessInfos.size() > 0); 36300600bfbSopenharmony_ci 36400600bfbSopenharmony_ci pid = to_string(runningProcessInfos[0].pid_); 36500600bfbSopenharmony_ci vector<u16string> args{ 36600600bfbSopenharmony_ci std::u16string(u"hidumper"), 36700600bfbSopenharmony_ci std::u16string(u"--mem-jsheap"), 36800600bfbSopenharmony_ci Str8ToStr16(pid) 36900600bfbSopenharmony_ci }; 37000600bfbSopenharmony_ci int ret = DumpManagerClient::GetInstance().Request(args, STDOUT_FILENO); 37100600bfbSopenharmony_ci ASSERT_EQ(ret, DumpStatus::DUMP_OK); 37200600bfbSopenharmony_ci} 37300600bfbSopenharmony_ci} // namespace HiviewDFX 37400600bfbSopenharmony_ci} // namespace OHOS