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 <cstdlib>
1800600bfbSopenharmony_ci#include <unistd.h>
1900600bfbSopenharmony_ci#include <vector>
2000600bfbSopenharmony_ci#include <cerrno>
2100600bfbSopenharmony_ci
2200600bfbSopenharmony_ci#include "iservice_registry.h"
2300600bfbSopenharmony_ci#include "manager/dump_implement.h"
2400600bfbSopenharmony_ci#include "raw_param.h"
2500600bfbSopenharmony_ci#include "dump_utils.h"
2600600bfbSopenharmony_ci
2700600bfbSopenharmony_ciusing namespace testing::ext;
2800600bfbSopenharmony_cinamespace OHOS {
2900600bfbSopenharmony_cinamespace HiviewDFX {
3000600bfbSopenharmony_ciconst int SCORE_ADJ = 1000;
3100600bfbSopenharmony_ciconst std::string SCORE_ADJ_STR = "1000";
3200600bfbSopenharmony_ciconst std::string TOOL_NAME = "hidumper";
3300600bfbSopenharmony_cichar g_fileName[] = "/tmp/test.XXXXXX";
3400600bfbSopenharmony_ciint g_fd = -1;
3500600bfbSopenharmony_ci
3600600bfbSopenharmony_ciconst uint64_t BASELINE_SIZE = 1353 * 1024;
3700600bfbSopenharmony_ci#if defined(__LP64__)
3800600bfbSopenharmony_ciconst std::string LIB_PATH = "lib64/";
3900600bfbSopenharmony_ci#else
4000600bfbSopenharmony_ciconst std::string LIB_PATH = "lib/";
4100600bfbSopenharmony_ci#endif
4200600bfbSopenharmony_civector<string> OUTPUT_PATH = {
4300600bfbSopenharmony_ci    "/system/etc/init/hidumper_service.cfg",
4400600bfbSopenharmony_ci    "/system/etc/hidumper/infos_config.json",
4500600bfbSopenharmony_ci    "/system/bin/hidumper",
4600600bfbSopenharmony_ci    "/system/" + LIB_PATH + "libhidumperclient.z.so",
4700600bfbSopenharmony_ci    "/system/" + LIB_PATH + "libhidumper_client.z.so",
4800600bfbSopenharmony_ci    "/system/" + LIB_PATH + "libhidumpermemory.z.so",
4900600bfbSopenharmony_ci    "/system/" + LIB_PATH + "libhidumperservice.z.so",
5000600bfbSopenharmony_ci    "/system/" + LIB_PATH + "libhidumperservice_cpu_source.z.so",
5100600bfbSopenharmony_ci    "/system/" + LIB_PATH + "platformsdk/lib_dump_usage.z.so",
5200600bfbSopenharmony_ci};
5300600bfbSopenharmony_ciclass HiDumperManagerTest : public testing::Test {
5400600bfbSopenharmony_cipublic:
5500600bfbSopenharmony_ci    static void SetUpTestCase(void);
5600600bfbSopenharmony_ci    static void TearDownTestCase(void);
5700600bfbSopenharmony_ci    void SetUp();
5800600bfbSopenharmony_ci    void TearDown();
5900600bfbSopenharmony_ci    int GetDumpResult(int argc, char *argv[]);
6000600bfbSopenharmony_ci    int fd_;
6100600bfbSopenharmony_ci};
6200600bfbSopenharmony_ci
6300600bfbSopenharmony_civoid HiDumperManagerTest::SetUpTestCase(void)
6400600bfbSopenharmony_ci{
6500600bfbSopenharmony_ci    g_fd = mkstemp(g_fileName);
6600600bfbSopenharmony_ci    if (g_fd == -1) {
6700600bfbSopenharmony_ci        printf("create tmp file fail! erro = %s", DumpUtils::ErrnoToMsg(errno).c_str());
6800600bfbSopenharmony_ci        return;
6900600bfbSopenharmony_ci    }
7000600bfbSopenharmony_ci}
7100600bfbSopenharmony_civoid HiDumperManagerTest::TearDownTestCase(void)
7200600bfbSopenharmony_ci{
7300600bfbSopenharmony_ci    if (g_fd != -1) {
7400600bfbSopenharmony_ci        close(g_fd);
7500600bfbSopenharmony_ci        g_fd = -1;
7600600bfbSopenharmony_ci    }
7700600bfbSopenharmony_ci    unlink(g_fileName);
7800600bfbSopenharmony_ci}
7900600bfbSopenharmony_civoid HiDumperManagerTest::SetUp(void)
8000600bfbSopenharmony_ci{
8100600bfbSopenharmony_ci}
8200600bfbSopenharmony_civoid HiDumperManagerTest::TearDown(void)
8300600bfbSopenharmony_ci{
8400600bfbSopenharmony_ci}
8500600bfbSopenharmony_ci
8600600bfbSopenharmony_ciint HiDumperManagerTest::GetDumpResult(int argc, char *argv[])
8700600bfbSopenharmony_ci{
8800600bfbSopenharmony_ci    std::vector<std::u16string> args;
8900600bfbSopenharmony_ci    std::shared_ptr<RawParam> rawParam = std::make_shared<RawParam>(0, 1, 0, args, g_fd);
9000600bfbSopenharmony_ci    return DumpImplement::GetInstance().Main(argc, argv, rawParam);
9100600bfbSopenharmony_ci}
9200600bfbSopenharmony_ci
9300600bfbSopenharmony_ci/**
9400600bfbSopenharmony_ci * @tc.name: MemoryDumperTest001
9500600bfbSopenharmony_ci * @tc.desc: Test help msg has correct ret.
9600600bfbSopenharmony_ci * @tc.type: FUNC
9700600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
9800600bfbSopenharmony_ci */
9900600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest001, TestSize.Level0)
10000600bfbSopenharmony_ci{
10100600bfbSopenharmony_ci    char *argv[] = {
10200600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
10300600bfbSopenharmony_ci        const_cast<char *>("-h"),
10400600bfbSopenharmony_ci        const_cast<char *>(""),
10500600bfbSopenharmony_ci    };
10600600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
10700600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
10800600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_HELP);
10900600bfbSopenharmony_ci}
11000600bfbSopenharmony_ci
11100600bfbSopenharmony_ci/**
11200600bfbSopenharmony_ci * @tc.name: MemoryDumperTest002
11300600bfbSopenharmony_ci * @tc.desc: Test list system has correct ret.
11400600bfbSopenharmony_ci * @tc.type: FUNC
11500600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
11600600bfbSopenharmony_ci */
11700600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest002, TestSize.Level0)
11800600bfbSopenharmony_ci{
11900600bfbSopenharmony_ci    char *argv[] = {
12000600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
12100600bfbSopenharmony_ci        const_cast<char *>("-lc"),
12200600bfbSopenharmony_ci        const_cast<char *>(""),
12300600bfbSopenharmony_ci    };
12400600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
12500600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
12600600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
12700600bfbSopenharmony_ci}
12800600bfbSopenharmony_ci
12900600bfbSopenharmony_ci/**
13000600bfbSopenharmony_ci * @tc.name: MemoryDumperTest003
13100600bfbSopenharmony_ci * @tc.desc: Test list aility has correct ret.
13200600bfbSopenharmony_ci * @tc.type: FUNC
13300600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
13400600bfbSopenharmony_ci */
13500600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest003, TestSize.Level0)
13600600bfbSopenharmony_ci{
13700600bfbSopenharmony_ci    char *argv[] = {
13800600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
13900600bfbSopenharmony_ci        const_cast<char *>("-ls"),
14000600bfbSopenharmony_ci        const_cast<char *>(""),
14100600bfbSopenharmony_ci    };
14200600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
14300600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
14400600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
14500600bfbSopenharmony_ci}
14600600bfbSopenharmony_ci
14700600bfbSopenharmony_ci/**
14800600bfbSopenharmony_ci * @tc.name: MemoryDumperTest004
14900600bfbSopenharmony_ci * @tc.desc: Test dump base information has correct ret.
15000600bfbSopenharmony_ci * @tc.type: FUNC
15100600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
15200600bfbSopenharmony_ci */
15300600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest004, TestSize.Level0)
15400600bfbSopenharmony_ci{
15500600bfbSopenharmony_ci    char *argv[] = {
15600600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
15700600bfbSopenharmony_ci        const_cast<char *>("-c"),
15800600bfbSopenharmony_ci        const_cast<char *>("base"),
15900600bfbSopenharmony_ci        const_cast<char *>(""),
16000600bfbSopenharmony_ci    };
16100600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
16200600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
16300600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
16400600bfbSopenharmony_ci}
16500600bfbSopenharmony_ci
16600600bfbSopenharmony_ci/**
16700600bfbSopenharmony_ci * @tc.name: MemoryDumperTest005
16800600bfbSopenharmony_ci * @tc.desc: Test dump system information has correct ret.
16900600bfbSopenharmony_ci * @tc.type: FUNC
17000600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
17100600bfbSopenharmony_ci */
17200600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest005, TestSize.Level0)
17300600bfbSopenharmony_ci{
17400600bfbSopenharmony_ci    char *argv[] = {
17500600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
17600600bfbSopenharmony_ci        const_cast<char *>("-c"),
17700600bfbSopenharmony_ci        const_cast<char *>("system"),
17800600bfbSopenharmony_ci        const_cast<char *>(""),
17900600bfbSopenharmony_ci    };
18000600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
18100600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
18200600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
18300600bfbSopenharmony_ci}
18400600bfbSopenharmony_ci
18500600bfbSopenharmony_ci/**
18600600bfbSopenharmony_ci * @tc.name: MemoryDumperTest006
18700600bfbSopenharmony_ci * @tc.desc: Test dump all system information has correct ret.
18800600bfbSopenharmony_ci * @tc.type: FUNC
18900600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
19000600bfbSopenharmony_ci */
19100600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest006, TestSize.Level0)
19200600bfbSopenharmony_ci{
19300600bfbSopenharmony_ci    char *argv[] = {
19400600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
19500600bfbSopenharmony_ci        const_cast<char *>("-c"),
19600600bfbSopenharmony_ci        const_cast<char *>(""),
19700600bfbSopenharmony_ci    };
19800600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
19900600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
20000600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
20100600bfbSopenharmony_ci}
20200600bfbSopenharmony_ci
20300600bfbSopenharmony_ci/**
20400600bfbSopenharmony_ci * @tc.name: MemoryDumperTest007
20500600bfbSopenharmony_ci * @tc.desc: Test dump all ability has correct ret.
20600600bfbSopenharmony_ci * @tc.type: FUNC
20700600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
20800600bfbSopenharmony_ci */
20900600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest007, TestSize.Level0)
21000600bfbSopenharmony_ci{
21100600bfbSopenharmony_ci    char *argv[] = {
21200600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
21300600bfbSopenharmony_ci        const_cast<char *>("-s"),
21400600bfbSopenharmony_ci        const_cast<char *>(""),
21500600bfbSopenharmony_ci    };
21600600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
21700600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
21800600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
21900600bfbSopenharmony_ci}
22000600bfbSopenharmony_ci
22100600bfbSopenharmony_ci/**
22200600bfbSopenharmony_ci * @tc.name: MemoryDumperTest007
22300600bfbSopenharmony_ci * @tc.desc: Test dump one ability has correct ret.
22400600bfbSopenharmony_ci * @tc.type: FUNC
22500600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
22600600bfbSopenharmony_ci */
22700600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest008, TestSize.Level0)
22800600bfbSopenharmony_ci{
22900600bfbSopenharmony_ci    char *argv[] = {
23000600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
23100600bfbSopenharmony_ci        const_cast<char *>("-s"),
23200600bfbSopenharmony_ci        const_cast<char *>("1212"),
23300600bfbSopenharmony_ci        const_cast<char *>(""),
23400600bfbSopenharmony_ci    };
23500600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
23600600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
23700600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
23800600bfbSopenharmony_ci}
23900600bfbSopenharmony_ci
24000600bfbSopenharmony_ci/**
24100600bfbSopenharmony_ci * @tc.name: MemoryDumperTest009
24200600bfbSopenharmony_ci * @tc.desc: Test dump one ability with arg has correct ret.
24300600bfbSopenharmony_ci * @tc.type: FUNC
24400600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
24500600bfbSopenharmony_ci */
24600600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest009, TestSize.Level0)
24700600bfbSopenharmony_ci{
24800600bfbSopenharmony_ci    char *argv[] = {
24900600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
25000600bfbSopenharmony_ci        const_cast<char *>("-s"),
25100600bfbSopenharmony_ci        const_cast<char *>("SensorService"),
25200600bfbSopenharmony_ci        const_cast<char *>("-a"),
25300600bfbSopenharmony_ci        const_cast<char *>("-h"),
25400600bfbSopenharmony_ci        const_cast<char *>(""),
25500600bfbSopenharmony_ci    };
25600600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
25700600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
25800600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
25900600bfbSopenharmony_ci}
26000600bfbSopenharmony_ci
26100600bfbSopenharmony_ci/**
26200600bfbSopenharmony_ci * @tc.name: MemoryDumperTest010
26300600bfbSopenharmony_ci * @tc.desc: Test dump faultlogs of crash history has correct ret.
26400600bfbSopenharmony_ci * @tc.type: FUNC
26500600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
26600600bfbSopenharmony_ci */
26700600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest010, TestSize.Level0)
26800600bfbSopenharmony_ci{
26900600bfbSopenharmony_ci    char *argv[] = {
27000600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
27100600bfbSopenharmony_ci        const_cast<char *>("-e"),
27200600bfbSopenharmony_ci        const_cast<char *>(""),
27300600bfbSopenharmony_ci    };
27400600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
27500600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
27600600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
27700600bfbSopenharmony_ci}
27800600bfbSopenharmony_ci
27900600bfbSopenharmony_ci/**
28000600bfbSopenharmony_ci * @tc.name: MemoryDumperTest011
28100600bfbSopenharmony_ci * @tc.desc: Test dump network information has correct ret.
28200600bfbSopenharmony_ci * @tc.type: FUNC
28300600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
28400600bfbSopenharmony_ci */
28500600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest011, TestSize.Level0)
28600600bfbSopenharmony_ci{
28700600bfbSopenharmony_ci    char *argv[] = {
28800600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
28900600bfbSopenharmony_ci        const_cast<char *>("--net"),
29000600bfbSopenharmony_ci        const_cast<char *>(""),
29100600bfbSopenharmony_ci    };
29200600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
29300600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
29400600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
29500600bfbSopenharmony_ci}
29600600bfbSopenharmony_ci
29700600bfbSopenharmony_ci/**
29800600bfbSopenharmony_ci * @tc.name: MemoryDumperTest012
29900600bfbSopenharmony_ci * @tc.desc: Test dump storage information has correct ret.
30000600bfbSopenharmony_ci * @tc.type: FUNC
30100600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
30200600bfbSopenharmony_ci */
30300600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest012, TestSize.Level0)
30400600bfbSopenharmony_ci{
30500600bfbSopenharmony_ci    char *argv[] = {
30600600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
30700600bfbSopenharmony_ci        const_cast<char *>("--storage"),
30800600bfbSopenharmony_ci        const_cast<char *>(""),
30900600bfbSopenharmony_ci    };
31000600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
31100600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
31200600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
31300600bfbSopenharmony_ci}
31400600bfbSopenharmony_ci
31500600bfbSopenharmony_ci/**
31600600bfbSopenharmony_ci * @tc.name: MemoryDumperTest013
31700600bfbSopenharmony_ci * @tc.desc: Test dump processes information has correct ret.
31800600bfbSopenharmony_ci * @tc.type: FUNC
31900600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
32000600bfbSopenharmony_ci */
32100600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest013, TestSize.Level0)
32200600bfbSopenharmony_ci{
32300600bfbSopenharmony_ci    char *argv[] = {
32400600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
32500600bfbSopenharmony_ci        const_cast<char *>("-p"),
32600600bfbSopenharmony_ci        const_cast<char *>(""),
32700600bfbSopenharmony_ci    };
32800600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
32900600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
33000600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
33100600bfbSopenharmony_ci}
33200600bfbSopenharmony_ci
33300600bfbSopenharmony_ci/**
33400600bfbSopenharmony_ci * @tc.name: MemoryDumperTest014
33500600bfbSopenharmony_ci * @tc.desc: Test dump one process information has correct ret.
33600600bfbSopenharmony_ci * @tc.type: FUNC
33700600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
33800600bfbSopenharmony_ci */
33900600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest014, TestSize.Level0)
34000600bfbSopenharmony_ci{
34100600bfbSopenharmony_ci    char *argv[] = {
34200600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
34300600bfbSopenharmony_ci        const_cast<char *>("-p"),
34400600bfbSopenharmony_ci        const_cast<char *>(std::to_string(getpid()).c_str()),
34500600bfbSopenharmony_ci        const_cast<char *>(""),
34600600bfbSopenharmony_ci    };
34700600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
34800600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
34900600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
35000600bfbSopenharmony_ci}
35100600bfbSopenharmony_ci
35200600bfbSopenharmony_ci#ifdef HIDUMPER_HIVIEWDFX_HIVIEW_ENABLE
35300600bfbSopenharmony_ci/**
35400600bfbSopenharmony_ci * @tc.name: MemoryDumperTest015
35500600bfbSopenharmony_ci * @tc.desc: Test dump all process cpu usage has correct ret.
35600600bfbSopenharmony_ci * @tc.type: FUNC
35700600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
35800600bfbSopenharmony_ci */
35900600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest015, TestSize.Level0)
36000600bfbSopenharmony_ci{
36100600bfbSopenharmony_ci    char *argv[] = {
36200600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
36300600bfbSopenharmony_ci        const_cast<char *>("--cpuusage"),
36400600bfbSopenharmony_ci        const_cast<char *>(""),
36500600bfbSopenharmony_ci    };
36600600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
36700600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
36800600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
36900600bfbSopenharmony_ci}
37000600bfbSopenharmony_ci
37100600bfbSopenharmony_ci/**
37200600bfbSopenharmony_ci * @tc.name: MemoryDumperTest016
37300600bfbSopenharmony_ci * @tc.desc: Test dump one process cpu usage has correct ret.
37400600bfbSopenharmony_ci * @tc.type: FUNC
37500600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
37600600bfbSopenharmony_ci */
37700600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest016, TestSize.Level0)
37800600bfbSopenharmony_ci{
37900600bfbSopenharmony_ci    char *argv[] = {
38000600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
38100600bfbSopenharmony_ci        const_cast<char *>("--cpuusage"),
38200600bfbSopenharmony_ci        const_cast<char *>(std::to_string(getpid()).c_str()),
38300600bfbSopenharmony_ci        const_cast<char *>(""),
38400600bfbSopenharmony_ci    };
38500600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
38600600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
38700600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
38800600bfbSopenharmony_ci}
38900600bfbSopenharmony_ci#endif
39000600bfbSopenharmony_ci
39100600bfbSopenharmony_ci/**
39200600bfbSopenharmony_ci * @tc.name: MemoryDumperTest017
39300600bfbSopenharmony_ci * @tc.desc: Test dumpreal CPU frequency has correct ret.
39400600bfbSopenharmony_ci * @tc.type: FUNC
39500600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
39600600bfbSopenharmony_ci */
39700600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest017, TestSize.Level0)
39800600bfbSopenharmony_ci{
39900600bfbSopenharmony_ci    char *argv[] = {
40000600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
40100600bfbSopenharmony_ci        const_cast<char *>("--cpufreq"),
40200600bfbSopenharmony_ci        const_cast<char *>(""),
40300600bfbSopenharmony_ci    };
40400600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
40500600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
40600600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
40700600bfbSopenharmony_ci}
40800600bfbSopenharmony_ci
40900600bfbSopenharmony_ci/**
41000600bfbSopenharmony_ci * @tc.name: MemoryDumperTest018
41100600bfbSopenharmony_ci * @tc.desc: Test dump all processes memory info has correct ret.
41200600bfbSopenharmony_ci * @tc.type: FUNC
41300600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
41400600bfbSopenharmony_ci */
41500600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest018, TestSize.Level0)
41600600bfbSopenharmony_ci{
41700600bfbSopenharmony_ci    char *argv[] = {
41800600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
41900600bfbSopenharmony_ci        const_cast<char *>("--mem"),
42000600bfbSopenharmony_ci        const_cast<char *>(""),
42100600bfbSopenharmony_ci    };
42200600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
42300600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
42400600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
42500600bfbSopenharmony_ci}
42600600bfbSopenharmony_ci
42700600bfbSopenharmony_ci/**
42800600bfbSopenharmony_ci * @tc.name: MemoryDumperTest019
42900600bfbSopenharmony_ci * @tc.desc: Test dump one process memory info has correct ret.
43000600bfbSopenharmony_ci * @tc.type: FUNC
43100600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
43200600bfbSopenharmony_ci */
43300600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest019, TestSize.Level0)
43400600bfbSopenharmony_ci{
43500600bfbSopenharmony_ci    char *argv[] = {
43600600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
43700600bfbSopenharmony_ci        const_cast<char *>("--mem"),
43800600bfbSopenharmony_ci        const_cast<char *>(std::to_string(getpid()).c_str()),
43900600bfbSopenharmony_ci        const_cast<char *>(""),
44000600bfbSopenharmony_ci    };
44100600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
44200600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
44300600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
44400600bfbSopenharmony_ci}
44500600bfbSopenharmony_ci
44600600bfbSopenharmony_ci/**
44700600bfbSopenharmony_ci * @tc.name: MemoryDumperTest020
44800600bfbSopenharmony_ci * @tc.desc: Test compress has correct ret.
44900600bfbSopenharmony_ci * @tc.type: FUNC
45000600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
45100600bfbSopenharmony_ci */
45200600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest020, TestSize.Level0)
45300600bfbSopenharmony_ci{
45400600bfbSopenharmony_ci    char *argv[] = {
45500600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
45600600bfbSopenharmony_ci        const_cast<char *>("-p"),
45700600bfbSopenharmony_ci        const_cast<char *>("--zip"),
45800600bfbSopenharmony_ci        const_cast<char *>(""),
45900600bfbSopenharmony_ci    };
46000600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
46100600bfbSopenharmony_ci    std::vector<std::u16string> args;
46200600bfbSopenharmony_ci    std::shared_ptr<RawParam> rawParam = std::make_shared<RawParam>(0, 1, 0, args, g_fd);
46300600bfbSopenharmony_ci    std::string srcpath = "/data/log/hilog/";
46400600bfbSopenharmony_ci    rawParam->SetFolder(srcpath);
46500600bfbSopenharmony_ci    int ret = DumpImplement::GetInstance().Main(argc, argv, rawParam);
46600600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
46700600bfbSopenharmony_ci}
46800600bfbSopenharmony_ci
46900600bfbSopenharmony_ci/**
47000600bfbSopenharmony_ci * @tc.name: MemoryDumperTest023
47100600bfbSopenharmony_ci * @tc.desc: Test for all infomation.
47200600bfbSopenharmony_ci * @tc.type: FUNC
47300600bfbSopenharmony_ci */
47400600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest023, TestSize.Level0)
47500600bfbSopenharmony_ci{
47600600bfbSopenharmony_ci    char *argv[] = {
47700600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
47800600bfbSopenharmony_ci        const_cast<char *>(""),
47900600bfbSopenharmony_ci    };
48000600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
48100600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
48200600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
48300600bfbSopenharmony_ci}
48400600bfbSopenharmony_ci
48500600bfbSopenharmony_ci/**
48600600bfbSopenharmony_ci * @tc.name: MemoryDumperTest021
48700600bfbSopenharmony_ci * @tc.desc: Test dump statistic in /proc/pid/smaps has correct ret.
48800600bfbSopenharmony_ci * @tc.type: FUNC
48900600bfbSopenharmony_ci */
49000600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest021, TestSize.Level0)
49100600bfbSopenharmony_ci{
49200600bfbSopenharmony_ci    char *argv[] = {
49300600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
49400600bfbSopenharmony_ci        const_cast<char *>("--mem-smaps"),
49500600bfbSopenharmony_ci        const_cast<char *>(std::to_string(getpid()).c_str()),
49600600bfbSopenharmony_ci        const_cast<char *>(""),
49700600bfbSopenharmony_ci    };
49800600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
49900600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
50000600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
50100600bfbSopenharmony_ci}
50200600bfbSopenharmony_ci
50300600bfbSopenharmony_ci/**
50400600bfbSopenharmony_ci * @tc.name: MemoryDumperTest022
50500600bfbSopenharmony_ci * @tc.desc: Test dump details in /proc/pid/smaps has correct ret.
50600600bfbSopenharmony_ci * @tc.type: FUNC
50700600bfbSopenharmony_ci */
50800600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest022, TestSize.Level0)
50900600bfbSopenharmony_ci{
51000600bfbSopenharmony_ci    char *argv[] = {
51100600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
51200600bfbSopenharmony_ci        const_cast<char *>("--mem-smaps"),
51300600bfbSopenharmony_ci        const_cast<char *>(std::to_string(getpid()).c_str()),
51400600bfbSopenharmony_ci        const_cast<char *>("-v"),
51500600bfbSopenharmony_ci    };
51600600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
51700600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
51800600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
51900600bfbSopenharmony_ci}
52000600bfbSopenharmony_ci
52100600bfbSopenharmony_ci/**
52200600bfbSopenharmony_ci * @tc.name: MemoryDumperTest024
52300600bfbSopenharmony_ci * @tc.desc: Test ? msg has correct ret.
52400600bfbSopenharmony_ci * @tc.type: FUNC
52500600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
52600600bfbSopenharmony_ci */
52700600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest024, TestSize.Level0)
52800600bfbSopenharmony_ci{
52900600bfbSopenharmony_ci    char *argv[] = {
53000600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
53100600bfbSopenharmony_ci        const_cast<char *>("-?"),
53200600bfbSopenharmony_ci        const_cast<char *>(""),
53300600bfbSopenharmony_ci    };
53400600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
53500600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
53600600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_INVALID_ARG);
53700600bfbSopenharmony_ci}
53800600bfbSopenharmony_ci
53900600bfbSopenharmony_ci/**
54000600bfbSopenharmony_ci * @tc.name: MemoryDumperTest025
54100600bfbSopenharmony_ci * @tc.desc: Test ? with -vv msg has correct ret.
54200600bfbSopenharmony_ci * @tc.type: FUNC
54300600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
54400600bfbSopenharmony_ci */
54500600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest025, TestSize.Level0)
54600600bfbSopenharmony_ci{
54700600bfbSopenharmony_ci    char *argv[] = {
54800600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
54900600bfbSopenharmony_ci        const_cast<char *>("-?"),
55000600bfbSopenharmony_ci        const_cast<char *>("-v"),
55100600bfbSopenharmony_ci    };
55200600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
55300600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
55400600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_INVALID_ARG);
55500600bfbSopenharmony_ci}
55600600bfbSopenharmony_ci
55700600bfbSopenharmony_ci/**
55800600bfbSopenharmony_ci * @tc.name: MemoryDumperTest026
55900600bfbSopenharmony_ci * @tc.desc: Test cpufreq with ? msg has correct ret.
56000600bfbSopenharmony_ci * @tc.type: FUNC
56100600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
56200600bfbSopenharmony_ci */
56300600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest026, TestSize.Level0)
56400600bfbSopenharmony_ci{
56500600bfbSopenharmony_ci    char *argv[] = {
56600600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
56700600bfbSopenharmony_ci        const_cast<char *>("--cpufreq"),
56800600bfbSopenharmony_ci        const_cast<char *>("-?"),
56900600bfbSopenharmony_ci    };
57000600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
57100600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
57200600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
57300600bfbSopenharmony_ci}
57400600bfbSopenharmony_ci
57500600bfbSopenharmony_ci/**
57600600bfbSopenharmony_ci * @tc.name: MemoryDumperTest027
57700600bfbSopenharmony_ci * @tc.desc: Test error msg has correct ret.
57800600bfbSopenharmony_ci * @tc.type: FUNC
57900600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
58000600bfbSopenharmony_ci */
58100600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest027, TestSize.Level0)
58200600bfbSopenharmony_ci{
58300600bfbSopenharmony_ci    char *argv[] = {
58400600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
58500600bfbSopenharmony_ci        const_cast<char *>("--error"),
58600600bfbSopenharmony_ci        const_cast<char *>(""),
58700600bfbSopenharmony_ci    };
58800600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
58900600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
59000600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_INVALID_ARG);
59100600bfbSopenharmony_ci}
59200600bfbSopenharmony_ci
59300600bfbSopenharmony_ci/**
59400600bfbSopenharmony_ci * @tc.name: MemoryDumperTest028
59500600bfbSopenharmony_ci * @tc.desc: Test dump error process memory info has correct ret.
59600600bfbSopenharmony_ci * @tc.type: FUNC
59700600bfbSopenharmony_ci * @tc.require: issueI5NWZQ
59800600bfbSopenharmony_ci */
59900600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest028, TestSize.Level0)
60000600bfbSopenharmony_ci{
60100600bfbSopenharmony_ci    char *argv[] = {
60200600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
60300600bfbSopenharmony_ci        const_cast<char *>("--mem"),
60400600bfbSopenharmony_ci        const_cast<char *>("-1"),
60500600bfbSopenharmony_ci        const_cast<char *>(""),
60600600bfbSopenharmony_ci    };
60700600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
60800600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
60900600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_INVALID_ARG);
61000600bfbSopenharmony_ci}
61100600bfbSopenharmony_ci
61200600bfbSopenharmony_ci/**
61300600bfbSopenharmony_ci * @tc.name: MemoryDumperTest029
61400600bfbSopenharmony_ci * @tc.desc: Test dump statistic in /proc/pid/smaps has correct ret.
61500600bfbSopenharmony_ci * @tc.type: FUNC
61600600bfbSopenharmony_ci */
61700600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest029, TestSize.Level0)
61800600bfbSopenharmony_ci{
61900600bfbSopenharmony_ci    char *argv[] = {
62000600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
62100600bfbSopenharmony_ci        const_cast<char *>("--mem-jsheap"),
62200600bfbSopenharmony_ci        const_cast<char *>(std::to_string(getpid()).c_str()),
62300600bfbSopenharmony_ci        const_cast<char *>(""),
62400600bfbSopenharmony_ci    };
62500600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
62600600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
62700600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
62800600bfbSopenharmony_ci}
62900600bfbSopenharmony_ci
63000600bfbSopenharmony_ci/**
63100600bfbSopenharmony_ci * @tc.name: MemoryDumperTest030
63200600bfbSopenharmony_ci * @tc.desc: Test dump statistic in /proc/pid/smaps has error ret.
63300600bfbSopenharmony_ci * @tc.type: FUNC
63400600bfbSopenharmony_ci */
63500600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest030, TestSize.Level0)
63600600bfbSopenharmony_ci{
63700600bfbSopenharmony_ci    char *argv[] = {
63800600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
63900600bfbSopenharmony_ci        const_cast<char *>("--mem-smaps"),
64000600bfbSopenharmony_ci        const_cast<char *>(""),
64100600bfbSopenharmony_ci    };
64200600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
64300600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
64400600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_FAIL);
64500600bfbSopenharmony_ci}
64600600bfbSopenharmony_ci
64700600bfbSopenharmony_ci/**
64800600bfbSopenharmony_ci * @tc.name: DumpTest031
64900600bfbSopenharmony_ci * @tc.desc: Test too many arguments.
65000600bfbSopenharmony_ci * @tc.type: FUNC
65100600bfbSopenharmony_ci */
65200600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest031, TestSize.Level0)
65300600bfbSopenharmony_ci{
65400600bfbSopenharmony_ci    char *argv[] = {
65500600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
65600600bfbSopenharmony_ci    };
65700600bfbSopenharmony_ci    int argc = ARG_MAX_COUNT + 1;
65800600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
65900600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_FAIL);
66000600bfbSopenharmony_ci}
66100600bfbSopenharmony_ci
66200600bfbSopenharmony_ci/**
66300600bfbSopenharmony_ci * @tc.name: DumpTest032
66400600bfbSopenharmony_ci * @tc.desc: Test empty argument.
66500600bfbSopenharmony_ci * @tc.type: FUNC
66600600bfbSopenharmony_ci */
66700600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest032, TestSize.Level0)
66800600bfbSopenharmony_ci{
66900600bfbSopenharmony_ci    char *argv[] = {
67000600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
67100600bfbSopenharmony_ci        const_cast<char *>("--mem"),
67200600bfbSopenharmony_ci        const_cast<char *>("-1"),
67300600bfbSopenharmony_ci        const_cast<char *>(""),
67400600bfbSopenharmony_ci        const_cast<char *>("--mem"),
67500600bfbSopenharmony_ci    };
67600600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]) - 1;
67700600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
67800600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_FAIL);
67900600bfbSopenharmony_ci}
68000600bfbSopenharmony_ci
68100600bfbSopenharmony_ci/**
68200600bfbSopenharmony_ci * @tc.name: DumpTest033
68300600bfbSopenharmony_ci * @tc.desc: Test too long argument .
68400600bfbSopenharmony_ci * @tc.type: FUNC
68500600bfbSopenharmony_ci */
68600600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest033, TestSize.Level0)
68700600bfbSopenharmony_ci{
68800600bfbSopenharmony_ci    std::string longArg;
68900600bfbSopenharmony_ci    longArg.assign(SINGLE_ARG_MAXLEN + 1, 'c');
69000600bfbSopenharmony_ci    char *argv[] = {
69100600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
69200600bfbSopenharmony_ci        const_cast<char *>("-h"),
69300600bfbSopenharmony_ci        const_cast<char *>(longArg.c_str()),
69400600bfbSopenharmony_ci    };
69500600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
69600600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
69700600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_FAIL);
69800600bfbSopenharmony_ci}
69900600bfbSopenharmony_ci
70000600bfbSopenharmony_ci/**
70100600bfbSopenharmony_ci * @tc.name: DumpTest034
70200600bfbSopenharmony_ci * @tc.desc: Test null argument.
70300600bfbSopenharmony_ci * @tc.type: FUNC
70400600bfbSopenharmony_ci */
70500600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest034, TestSize.Level0)
70600600bfbSopenharmony_ci{
70700600bfbSopenharmony_ci    char *argv[] = {
70800600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
70900600bfbSopenharmony_ci        nullptr,
71000600bfbSopenharmony_ci    };
71100600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
71200600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
71300600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_FAIL);
71400600bfbSopenharmony_ci}
71500600bfbSopenharmony_ci
71600600bfbSopenharmony_ci/**
71700600bfbSopenharmony_ci * @tc.name: DumpTest035
71800600bfbSopenharmony_ci * @tc.desc: Test DumpUtils
71900600bfbSopenharmony_ci * @tc.type: FUNC
72000600bfbSopenharmony_ci */
72100600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, DumpTest035, TestSize.Level0)
72200600bfbSopenharmony_ci{
72300600bfbSopenharmony_ci    DumpUtils::SetAdj(SCORE_ADJ);
72400600bfbSopenharmony_ci    std::string name = DumpUtils::ConvertSaIdToSaName(SCORE_ADJ_STR);
72500600bfbSopenharmony_ci    ASSERT_TRUE(name == SCORE_ADJ_STR);
72600600bfbSopenharmony_ci}
72700600bfbSopenharmony_ci
72800600bfbSopenharmony_ci/**
72900600bfbSopenharmony_ci * @tc.name: IpcStatDumpTest001
73000600bfbSopenharmony_ci * @tc.desc: hidumper --ipc -a --start-stat
73100600bfbSopenharmony_ci * @tc.type: FUNC
73200600bfbSopenharmony_ci */
73300600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, IpcStatDumpTest001, TestSize.Level0)
73400600bfbSopenharmony_ci{
73500600bfbSopenharmony_ci    char *argv[] = {
73600600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
73700600bfbSopenharmony_ci        const_cast<char *>("--ipc"),
73800600bfbSopenharmony_ci        const_cast<char *>("-a"),
73900600bfbSopenharmony_ci        const_cast<char *>("--start-stat"),
74000600bfbSopenharmony_ci    };
74100600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
74200600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
74300600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
74400600bfbSopenharmony_ci}
74500600bfbSopenharmony_ci
74600600bfbSopenharmony_ci/**
74700600bfbSopenharmony_ci * @tc.name: IpcStatDumpTest002
74800600bfbSopenharmony_ci * @tc.desc: hidumper --ipc -a --stop-stat
74900600bfbSopenharmony_ci * @tc.type: FUNC
75000600bfbSopenharmony_ci */
75100600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, IpcStatDumpTest002, TestSize.Level0)
75200600bfbSopenharmony_ci{
75300600bfbSopenharmony_ci    char *argv[] = {
75400600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
75500600bfbSopenharmony_ci        const_cast<char *>("--ipc"),
75600600bfbSopenharmony_ci        const_cast<char *>("-a"),
75700600bfbSopenharmony_ci        const_cast<char *>("--stop-stat"),
75800600bfbSopenharmony_ci    };
75900600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
76000600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
76100600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
76200600bfbSopenharmony_ci}
76300600bfbSopenharmony_ci
76400600bfbSopenharmony_ci/**
76500600bfbSopenharmony_ci * @tc.name: IpcStatDumpTest003
76600600bfbSopenharmony_ci * @tc.desc: hidumper --ipc -a --stat
76700600bfbSopenharmony_ci * @tc.type: FUNC
76800600bfbSopenharmony_ci */
76900600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, IpcStatDumpTest003, TestSize.Level0)
77000600bfbSopenharmony_ci{
77100600bfbSopenharmony_ci    char *argv[] = {
77200600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
77300600bfbSopenharmony_ci        const_cast<char *>("--ipc"),
77400600bfbSopenharmony_ci        const_cast<char *>("-a"),
77500600bfbSopenharmony_ci        const_cast<char *>("--stat"),
77600600bfbSopenharmony_ci    };
77700600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
77800600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
77900600bfbSopenharmony_ci    ASSERT_EQ(ret, DumpStatus::DUMP_OK);
78000600bfbSopenharmony_ci}
78100600bfbSopenharmony_ci
78200600bfbSopenharmony_ci/**
78300600bfbSopenharmony_ci * @tc.name: IpcStatDumpTest004
78400600bfbSopenharmony_ci * @tc.desc: hidumper --ipc
78500600bfbSopenharmony_ci * @tc.type: FUNC
78600600bfbSopenharmony_ci */
78700600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, IpcStatDumpTest004, TestSize.Level0)
78800600bfbSopenharmony_ci{
78900600bfbSopenharmony_ci    char *argv[] = {
79000600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
79100600bfbSopenharmony_ci        const_cast<char *>("--ipc"),
79200600bfbSopenharmony_ci    };
79300600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
79400600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
79500600bfbSopenharmony_ci    ASSERT_TRUE(ret != DumpStatus::DUMP_OK);
79600600bfbSopenharmony_ci}
79700600bfbSopenharmony_ci
79800600bfbSopenharmony_ci/**
79900600bfbSopenharmony_ci * @tc.name: IpcStatDumpTest005
80000600bfbSopenharmony_ci * @tc.desc: hidumper --ipc -a
80100600bfbSopenharmony_ci * @tc.type: FUNC
80200600bfbSopenharmony_ci */
80300600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, IpcStatDumpTest005, TestSize.Level0)
80400600bfbSopenharmony_ci{
80500600bfbSopenharmony_ci    char *argv[] = {
80600600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
80700600bfbSopenharmony_ci        const_cast<char *>("--ipc"),
80800600bfbSopenharmony_ci        const_cast<char *>("-a"),
80900600bfbSopenharmony_ci    };
81000600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
81100600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
81200600bfbSopenharmony_ci    ASSERT_TRUE(ret != DumpStatus::DUMP_OK);
81300600bfbSopenharmony_ci}
81400600bfbSopenharmony_ci
81500600bfbSopenharmony_ci/**
81600600bfbSopenharmony_ci * @tc.name: IpcStatDumpTest006
81700600bfbSopenharmony_ci * @tc.desc: hidumper --ipc -a --start-stat --stop-stat
81800600bfbSopenharmony_ci * @tc.type: FUNC
81900600bfbSopenharmony_ci */
82000600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, IpcStatDumpTest006, TestSize.Level0)
82100600bfbSopenharmony_ci{
82200600bfbSopenharmony_ci    char *argv[] = {
82300600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
82400600bfbSopenharmony_ci        const_cast<char *>("--ipc"),
82500600bfbSopenharmony_ci        const_cast<char *>("-a"),
82600600bfbSopenharmony_ci        const_cast<char *>("--start-stat"),
82700600bfbSopenharmony_ci        const_cast<char *>("--stop-stat"),
82800600bfbSopenharmony_ci    };
82900600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
83000600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
83100600bfbSopenharmony_ci    ASSERT_TRUE(ret != DumpStatus::DUMP_OK);
83200600bfbSopenharmony_ci}
83300600bfbSopenharmony_ci
83400600bfbSopenharmony_ci/**
83500600bfbSopenharmony_ci * @tc.name: IpcStatDumpTest007
83600600bfbSopenharmony_ci * @tc.desc: hidumper --start-stat
83700600bfbSopenharmony_ci * @tc.type: FUNC
83800600bfbSopenharmony_ci */
83900600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, IpcStatDumpTest007, TestSize.Level0)
84000600bfbSopenharmony_ci{
84100600bfbSopenharmony_ci    char *argv[] = {
84200600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
84300600bfbSopenharmony_ci        const_cast<char *>("--start-stat"),
84400600bfbSopenharmony_ci    };
84500600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
84600600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
84700600bfbSopenharmony_ci    ASSERT_TRUE(ret != DumpStatus::DUMP_OK);
84800600bfbSopenharmony_ci}
84900600bfbSopenharmony_ci
85000600bfbSopenharmony_ci/**
85100600bfbSopenharmony_ci * @tc.name: IpcStatDumpTest008
85200600bfbSopenharmony_ci * @tc.desc: hidumper --stop-stat
85300600bfbSopenharmony_ci * @tc.type: FUNC
85400600bfbSopenharmony_ci */
85500600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, IpcStatDumpTest008, TestSize.Level0)
85600600bfbSopenharmony_ci{
85700600bfbSopenharmony_ci    char *argv[] = {
85800600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
85900600bfbSopenharmony_ci        const_cast<char *>("--stop-stat"),
86000600bfbSopenharmony_ci    };
86100600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
86200600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
86300600bfbSopenharmony_ci    ASSERT_TRUE(ret != DumpStatus::DUMP_OK);
86400600bfbSopenharmony_ci}
86500600bfbSopenharmony_ci
86600600bfbSopenharmony_ci/**
86700600bfbSopenharmony_ci * @tc.name: IpcStatDumpTest009
86800600bfbSopenharmony_ci * @tc.desc: hidumper --stat
86900600bfbSopenharmony_ci * @tc.type: FUNC
87000600bfbSopenharmony_ci */
87100600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, IpcStatDumpTest009, TestSize.Level0)
87200600bfbSopenharmony_ci{
87300600bfbSopenharmony_ci    char *argv[] = {
87400600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
87500600bfbSopenharmony_ci        const_cast<char *>("--stat"),
87600600bfbSopenharmony_ci    };
87700600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
87800600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
87900600bfbSopenharmony_ci    ASSERT_TRUE(ret != DumpStatus::DUMP_OK);
88000600bfbSopenharmony_ci}
88100600bfbSopenharmony_ci
88200600bfbSopenharmony_ci/**
88300600bfbSopenharmony_ci * @tc.name: IpcStatDumpTest010
88400600bfbSopenharmony_ci * @tc.desc: hidumper --ipc -1 --start-stat
88500600bfbSopenharmony_ci * @tc.type: FUNC
88600600bfbSopenharmony_ci */
88700600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, IpcStatDumpTest010, TestSize.Level0)
88800600bfbSopenharmony_ci{
88900600bfbSopenharmony_ci    char *argv[] = {
89000600bfbSopenharmony_ci        const_cast<char *>(TOOL_NAME.c_str()),
89100600bfbSopenharmony_ci        const_cast<char *>("--ipc"),
89200600bfbSopenharmony_ci        const_cast<char *>("-1"),
89300600bfbSopenharmony_ci        const_cast<char *>("--start-stat"),
89400600bfbSopenharmony_ci    };
89500600bfbSopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
89600600bfbSopenharmony_ci    int ret = GetDumpResult(argc, argv);
89700600bfbSopenharmony_ci    ASSERT_TRUE(ret != DumpStatus::DUMP_OK);
89800600bfbSopenharmony_ci}
89900600bfbSopenharmony_ci
90000600bfbSopenharmony_ci/**
90100600bfbSopenharmony_ci * @tc.name: HidumperRomTest001
90200600bfbSopenharmony_ci * @tc.desc: test hidumper rom
90300600bfbSopenharmony_ci * @tc.type: FUNC
90400600bfbSopenharmony_ci */
90500600bfbSopenharmony_ciHWTEST_F(HiDumperManagerTest, HidumperRomTest001, TestSize.Level0)
90600600bfbSopenharmony_ci{
90700600bfbSopenharmony_ci    uint64_t realSize = 0;
90800600bfbSopenharmony_ci    for (int i = 0; i < OUTPUT_PATH.size(); i++) {
90900600bfbSopenharmony_ci        struct stat info = { 0 };
91000600bfbSopenharmony_ci        stat(OUTPUT_PATH[i].c_str(), &info);
91100600bfbSopenharmony_ci        std::cout << "path:" << OUTPUT_PATH[i].c_str() << " realSize: " << info.st_size << std::endl;
91200600bfbSopenharmony_ci        realSize += static_cast<uint64_t>(info.st_size);
91300600bfbSopenharmony_ci    }
91400600bfbSopenharmony_ci    std::cout << "total realSize = " << realSize << std::endl;
91500600bfbSopenharmony_ci    EXPECT_LT(realSize, BASELINE_SIZE * 1.05);
91600600bfbSopenharmony_ci}
91700600bfbSopenharmony_ci} // namespace HiviewDFX
91800600bfbSopenharmony_ci} // namespace OHOS
919