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