148f512ceSopenharmony_ci/*
248f512ceSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
348f512ceSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
448f512ceSopenharmony_ci * you may not use this file except in compliance with the License.
548f512ceSopenharmony_ci * You may obtain a copy of the License at
648f512ceSopenharmony_ci *
748f512ceSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
848f512ceSopenharmony_ci *
948f512ceSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1048f512ceSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1148f512ceSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1248f512ceSopenharmony_ci * See the License for the specific language governing permissions and
1348f512ceSopenharmony_ci * limitations under the License.
1448f512ceSopenharmony_ci */
1548f512ceSopenharmony_ci
1648f512ceSopenharmony_ci#include "subcommand_dump_test.h"
1748f512ceSopenharmony_ci
1848f512ceSopenharmony_ci#include <algorithm>
1948f512ceSopenharmony_ci#include <chrono>
2048f512ceSopenharmony_ci#include <cinttypes>
2148f512ceSopenharmony_ci#include <sched.h>
2248f512ceSopenharmony_ci#include <sstream>
2348f512ceSopenharmony_ci#include <thread>
2448f512ceSopenharmony_ci
2548f512ceSopenharmony_ci#include "command.h"
2648f512ceSopenharmony_ci#include "debug_logger.h"
2748f512ceSopenharmony_ci#include "utilities.h"
2848f512ceSopenharmony_ci
2948f512ceSopenharmony_ciusing namespace std::literals::chrono_literals;
3048f512ceSopenharmony_ciusing namespace testing::ext;
3148f512ceSopenharmony_ciusing namespace std;
3248f512ceSopenharmony_ciusing namespace OHOS::HiviewDFX;
3348f512ceSopenharmony_cinamespace OHOS {
3448f512ceSopenharmony_cinamespace Developtools {
3548f512ceSopenharmony_cinamespace HiPerf {
3648f512ceSopenharmony_ciclass SubCommandDumpTest : public testing::Test {
3748f512ceSopenharmony_cipublic:
3848f512ceSopenharmony_ci    static void SetUpTestCase(void);
3948f512ceSopenharmony_ci    static void TearDownTestCase(void);
4048f512ceSopenharmony_ci    void SetUp();
4148f512ceSopenharmony_ci    void TearDown();
4248f512ceSopenharmony_ci
4348f512ceSopenharmony_ci    void TestDumpCommand(const std::string &option, bool expect = true) const;
4448f512ceSopenharmony_ci};
4548f512ceSopenharmony_ci
4648f512ceSopenharmony_civoid SubCommandDumpTest::SetUpTestCase()
4748f512ceSopenharmony_ci{
4848f512ceSopenharmony_ci    SubCommand::ClearSubCommands();
4948f512ceSopenharmony_ci}
5048f512ceSopenharmony_ci
5148f512ceSopenharmony_civoid SubCommandDumpTest::TearDownTestCase() {}
5248f512ceSopenharmony_ci
5348f512ceSopenharmony_civoid SubCommandDumpTest::SetUp()
5448f512ceSopenharmony_ci{
5548f512ceSopenharmony_ci    // clear the subCommands left from other UT
5648f512ceSopenharmony_ci    SubCommand::ClearSubCommands();
5748f512ceSopenharmony_ci    ASSERT_EQ(SubCommand::GetSubCommands().size(), 0u);
5848f512ceSopenharmony_ci    SubCommandDump::RegisterSubCommandDump();
5948f512ceSopenharmony_ci    ASSERT_EQ(SubCommand::GetSubCommands().size(), 1u);
6048f512ceSopenharmony_ci}
6148f512ceSopenharmony_ci
6248f512ceSopenharmony_civoid SubCommandDumpTest::TearDown()
6348f512ceSopenharmony_ci{
6448f512ceSopenharmony_ci    ASSERT_EQ(SubCommand::GetSubCommands().size(), 1u);
6548f512ceSopenharmony_ci    SubCommand::ClearSubCommands();
6648f512ceSopenharmony_ci    ASSERT_EQ(SubCommand::GetSubCommands().size(), 0u);
6748f512ceSopenharmony_ci}
6848f512ceSopenharmony_ci
6948f512ceSopenharmony_civoid SubCommandDumpTest::TestDumpCommand(const std::string &option, bool expect) const
7048f512ceSopenharmony_ci{
7148f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
7248f512ceSopenharmony_ci
7348f512ceSopenharmony_ci    std::string cmdString = "dump";
7448f512ceSopenharmony_ci    cmdString += " " + option + " ";
7548f512ceSopenharmony_ci
7648f512ceSopenharmony_ci    // it need load some symbols and much more log
7748f512ceSopenharmony_ci
7848f512ceSopenharmony_ci    ScopeDebugLevel tempLogLevel {LEVEL_DEBUG};
7948f512ceSopenharmony_ci
8048f512ceSopenharmony_ci    stdoutRecord.Start();
8148f512ceSopenharmony_ci    const auto startTime = chrono::steady_clock::now();
8248f512ceSopenharmony_ci    bool ret = Command::DispatchCommand(cmdString);
8348f512ceSopenharmony_ci    const auto costMs = std::chrono::duration_cast<std::chrono::milliseconds>(
8448f512ceSopenharmony_ci        chrono::steady_clock::now() - startTime);
8548f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
8648f512ceSopenharmony_ci
8748f512ceSopenharmony_ci    printf("command : %s(run %" PRId64 " ms) return %s(expect %s)\n", cmdString.c_str(),
8848f512ceSopenharmony_ci           (uint64_t)costMs.count(), ret ? "true" : "false", expect ? "true" : "false");
8948f512ceSopenharmony_ci    EXPECT_EQ(expect, ret);
9048f512ceSopenharmony_ci    if (expect) {
9148f512ceSopenharmony_ci        EXPECT_EQ(SubStringCount(stringOut, "HILOG/E"), 0u);
9248f512ceSopenharmony_ci    }
9348f512ceSopenharmony_ci}
9448f512ceSopenharmony_ci
9548f512ceSopenharmony_ci/**
9648f512ceSopenharmony_ci * @tc.name:
9748f512ceSopenharmony_ci * @tc.desc: record
9848f512ceSopenharmony_ci * @tc.type: FUNC
9948f512ceSopenharmony_ci */
10048f512ceSopenharmony_ci
10148f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, Test_LibReport_Success, TestSize.Level1)
10248f512ceSopenharmony_ci{
10348f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
10448f512ceSopenharmony_ci    stdoutRecord.Start();
10548f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/report/perf.data.libreport";
10648f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
10748f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
10848f512ceSopenharmony_ci    size_t symbolsCount = 39;
10948f512ceSopenharmony_ci    size_t buildIdCount = 32;
11048f512ceSopenharmony_ci    size_t sampleCount = 1000;
11148f512ceSopenharmony_ci    size_t featureCount = 10;
11248f512ceSopenharmony_ci
11348f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("magic: PERFILE2") != std::string::npos, true);
11448f512ceSopenharmony_ci    EXPECT_EQ(SubStringCount(stringOut, "fileid:"), symbolsCount);
11548f512ceSopenharmony_ci    EXPECT_EQ(SubStringCount(stringOut, "buildId:"), buildIdCount);
11648f512ceSopenharmony_ci    EXPECT_EQ(SubStringCount(stringOut, "record sample:"), sampleCount);
11748f512ceSopenharmony_ci    EXPECT_EQ(SubStringCount(stringOut, "feature:"), featureCount);
11848f512ceSopenharmony_ci}
11948f512ceSopenharmony_ci
12048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpInputFilename1, TestSize.Level1)
12148f512ceSopenharmony_ci{
12248f512ceSopenharmony_ci    TestDumpCommand("/data/test/resource/testdata/perf.data ", false);
12348f512ceSopenharmony_ci}
12448f512ceSopenharmony_ci
12548f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpInputFilename2, TestSize.Level1)
12648f512ceSopenharmony_ci{
12748f512ceSopenharmony_ci    TestDumpCommand("-i /data/test/resource/testdata/perf.data ");
12848f512ceSopenharmony_ci}
12948f512ceSopenharmony_ci
13048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpInputFilenamErr, TestSize.Level1)
13148f512ceSopenharmony_ci{
13248f512ceSopenharmony_ci    TestDumpCommand("-i whatfile ", false);
13348f512ceSopenharmony_ci}
13448f512ceSopenharmony_ci
13548f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpHeaderAttrs, TestSize.Level1)
13648f512ceSopenharmony_ci{
13748f512ceSopenharmony_ci    TestDumpCommand("-i /data/test/resource/testdata/perf.data --head ");
13848f512ceSopenharmony_ci}
13948f512ceSopenharmony_ci
14048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpData, TestSize.Level1)
14148f512ceSopenharmony_ci{
14248f512ceSopenharmony_ci    TestDumpCommand("-i /data/test/resource/testdata/perf.data -d ");
14348f512ceSopenharmony_ci}
14448f512ceSopenharmony_ci
14548f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpFeatures, TestSize.Level1)
14648f512ceSopenharmony_ci{
14748f512ceSopenharmony_ci    TestDumpCommand("-i /data/test/resource/testdata/perf.data -f ");
14848f512ceSopenharmony_ci}
14948f512ceSopenharmony_ci
15048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpSympath, TestSize.Level1)
15148f512ceSopenharmony_ci{
15248f512ceSopenharmony_ci    TestDumpCommand("-i /data/test/resource/testdata/perf.data --sympath ./ ");
15348f512ceSopenharmony_ci}
15448f512ceSopenharmony_ci
15548f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpSympathErr, TestSize.Level1)
15648f512ceSopenharmony_ci{
15748f512ceSopenharmony_ci    TestDumpCommand("-i /data/test/resource/testdata/perf.data --sympath where ", false);
15848f512ceSopenharmony_ci}
15948f512ceSopenharmony_ci
16048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpExportUserdata0, TestSize.Level1)
16148f512ceSopenharmony_ci{
16248f512ceSopenharmony_ci    TestDumpCommand("-i /data/test/resource/testdata/perf.data --export 0");
16348f512ceSopenharmony_ci}
16448f512ceSopenharmony_ci
16548f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpExportUserdata1, TestSize.Level1)
16648f512ceSopenharmony_ci{
16748f512ceSopenharmony_ci    TestDumpCommand("-i /data/test/resource/testdata/perf.data --export 1");
16848f512ceSopenharmony_ci}
16948f512ceSopenharmony_ci
17048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpElffile, TestSize.Level1)
17148f512ceSopenharmony_ci{
17248f512ceSopenharmony_ci    TestDumpCommand("--elf /data/test/resource/testdata/elf_test ");
17348f512ceSopenharmony_ci}
17448f512ceSopenharmony_ci
17548f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpElffileErr, TestSize.Level1)
17648f512ceSopenharmony_ci{
17748f512ceSopenharmony_ci    TestDumpCommand("--elf whatfile ", false);
17848f512ceSopenharmony_ci}
17948f512ceSopenharmony_ci
18048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpInputElfConflict, TestSize.Level1)
18148f512ceSopenharmony_ci{
18248f512ceSopenharmony_ci    TestDumpCommand("perf.data --elf elffile ", false);
18348f512ceSopenharmony_ci}
18448f512ceSopenharmony_ci
18548f512ceSopenharmony_ci#if defined(HAVE_PROTOBUF) && HAVE_PROTOBUF
18648f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpProtofile, TestSize.Level1)
18748f512ceSopenharmony_ci{
18848f512ceSopenharmony_ci    TestDumpCommand("--proto /data/test/resource/testdata/proto_test ");
18948f512ceSopenharmony_ci}
19048f512ceSopenharmony_ci
19148f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpProtofileErr, TestSize.Level1)
19248f512ceSopenharmony_ci{
19348f512ceSopenharmony_ci    TestDumpCommand("--proto whatfile ", false);
19448f512ceSopenharmony_ci}
19548f512ceSopenharmony_ci
19648f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpInputProtoConflict, TestSize.Level1)
19748f512ceSopenharmony_ci{
19848f512ceSopenharmony_ci    TestDumpCommand("perf.data --proto ptotofile ", false);
19948f512ceSopenharmony_ci}
20048f512ceSopenharmony_ci
20148f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpElfProtoConflict, TestSize.Level1)
20248f512ceSopenharmony_ci{
20348f512ceSopenharmony_ci    TestDumpCommand("--elf elffile --proto ptotofile ", false);
20448f512ceSopenharmony_ci}
20548f512ceSopenharmony_ci#endif
20648f512ceSopenharmony_ci
20748f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfStackTable, TestSize.Level1)
20848f512ceSopenharmony_ci{
20948f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
21048f512ceSopenharmony_ci    stdoutRecord.Start();
21148f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
21248f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
21348f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
21448f512ceSopenharmony_ci
21548f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("hiperf_stack_table") != std::string::npos, true);
21648f512ceSopenharmony_ci}
21748f512ceSopenharmony_ci
21848f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfStackid, TestSize.Level1)
21948f512ceSopenharmony_ci{
22048f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
22148f512ceSopenharmony_ci    stdoutRecord.Start();
22248f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
22348f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
22448f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
22548f512ceSopenharmony_ci
22648f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("stackid") != std::string::npos, true);
22748f512ceSopenharmony_ci}
22848f512ceSopenharmony_ci
22948f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfTableNums, TestSize.Level1)
23048f512ceSopenharmony_ci{
23148f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
23248f512ceSopenharmony_ci    stdoutRecord.Start();
23348f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
23448f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
23548f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
23648f512ceSopenharmony_ci
23748f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("TableNums") != std::string::npos, true);
23848f512ceSopenharmony_ci}
23948f512ceSopenharmony_ci
24048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfNumNodes, TestSize.Level1)
24148f512ceSopenharmony_ci{
24248f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
24348f512ceSopenharmony_ci    stdoutRecord.Start();
24448f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
24548f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
24648f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
24748f512ceSopenharmony_ci
24848f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("numNodes") != std::string::npos, true);
24948f512ceSopenharmony_ci}
25048f512ceSopenharmony_ci
25148f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfStackTableContent, TestSize.Level1)
25248f512ceSopenharmony_ci{
25348f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
25448f512ceSopenharmony_ci    stdoutRecord.Start();
25548f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
25648f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
25748f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
25848f512ceSopenharmony_ci
25948f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("hiperf_stack_table content") != std::string::npos, true);
26048f512ceSopenharmony_ci}
26148f512ceSopenharmony_ci
26248f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfTableid, TestSize.Level1)
26348f512ceSopenharmony_ci{
26448f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
26548f512ceSopenharmony_ci    stdoutRecord.Start();
26648f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
26748f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
26848f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
26948f512ceSopenharmony_ci
27048f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("tableid") != std::string::npos, true);
27148f512ceSopenharmony_ci}
27248f512ceSopenharmony_ci
27348f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfTableSize, TestSize.Level1)
27448f512ceSopenharmony_ci{
27548f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
27648f512ceSopenharmony_ci    stdoutRecord.Start();
27748f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
27848f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
27948f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
28048f512ceSopenharmony_ci
28148f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("tableSize") != std::string::npos, true);
28248f512ceSopenharmony_ci}
28348f512ceSopenharmony_ci
28448f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfKernelUpperBoundary, TestSize.Level1)
28548f512ceSopenharmony_ci{
28648f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
28748f512ceSopenharmony_ci    stdoutRecord.Start();
28848f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
28948f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
29048f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
29148f512ceSopenharmony_ci    std::string kernelUpperBoundary = "0xffffffffffffff80";
29248f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelUpperBoundary) != std::string::npos, true);
29348f512ceSopenharmony_ci}
29448f512ceSopenharmony_ci
29548f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfKernelLowerBoundary, TestSize.Level1)
29648f512ceSopenharmony_ci{
29748f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
29848f512ceSopenharmony_ci    stdoutRecord.Start();
29948f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
30048f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
30148f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
30248f512ceSopenharmony_ci    std::string kernelLowerBoundary = "0xfffffffffffffe00";
30348f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelLowerBoundary) != std::string::npos, true);
30448f512ceSopenharmony_ci}
30548f512ceSopenharmony_ci
30648f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfKernelIp, TestSize.Level1)
30748f512ceSopenharmony_ci{
30848f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
30948f512ceSopenharmony_ci    stdoutRecord.Start();
31048f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
31148f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
31248f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
31348f512ceSopenharmony_ci    std::string kernelIp = "0xffffffc011605050";
31448f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelIp) != std::string::npos, true);
31548f512ceSopenharmony_ci}
31648f512ceSopenharmony_ci
31748f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfUerIpFixZero, TestSize.Level1)
31848f512ceSopenharmony_ci{
31948f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
32048f512ceSopenharmony_ci    stdoutRecord.Start();
32148f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
32248f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
32348f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
32448f512ceSopenharmony_ci    std::string userIpFixZero = "0xffffffc0100fa3b0";
32548f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(userIpFixZero) != std::string::npos, true);
32648f512ceSopenharmony_ci}
32748f512ceSopenharmony_ci
32848f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfUserIp, TestSize.Level1)
32948f512ceSopenharmony_ci{
33048f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
33148f512ceSopenharmony_ci    stdoutRecord.Start();
33248f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
33348f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
33448f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
33548f512ceSopenharmony_ci    std::string userIp = "0xf7b43f50";
33648f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(userIp) != std::string::npos, true);
33748f512ceSopenharmony_ci}
33848f512ceSopenharmony_ci
33948f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfCallchain, TestSize.Level1)
34048f512ceSopenharmony_ci{
34148f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
34248f512ceSopenharmony_ci    stdoutRecord.Start();
34348f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
34448f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
34548f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
34648f512ceSopenharmony_ci    std::string callchain = "callchain nr=25";
34748f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(callchain) != std::string::npos, true);
34848f512ceSopenharmony_ci}
34948f512ceSopenharmony_ci
35048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressDwarfSymbol, TestSize.Level1)
35148f512ceSopenharmony_ci{
35248f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
35348f512ceSopenharmony_ci    stdoutRecord.Start();
35448f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.compress.data";
35548f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
35648f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
35748f512ceSopenharmony_ci    std::string symbol = "0xffffffc01160072c : __schedule";
35848f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(symbol) != std::string::npos, true);
35948f512ceSopenharmony_ci}
36048f512ceSopenharmony_ci
36148f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpStackTable, TestSize.Level1)
36248f512ceSopenharmony_ci{
36348f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
36448f512ceSopenharmony_ci    stdoutRecord.Start();
36548f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
36648f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
36748f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
36848f512ceSopenharmony_ci
36948f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("hiperf_stack_table") != std::string::npos, true);
37048f512ceSopenharmony_ci}
37148f512ceSopenharmony_ci
37248f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpStackid, TestSize.Level1)
37348f512ceSopenharmony_ci{
37448f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
37548f512ceSopenharmony_ci    stdoutRecord.Start();
37648f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
37748f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
37848f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
37948f512ceSopenharmony_ci
38048f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("stackid") != std::string::npos, true);
38148f512ceSopenharmony_ci}
38248f512ceSopenharmony_ci
38348f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpTableNums, TestSize.Level1)
38448f512ceSopenharmony_ci{
38548f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
38648f512ceSopenharmony_ci    stdoutRecord.Start();
38748f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
38848f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
38948f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
39048f512ceSopenharmony_ci
39148f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("TableNums") != std::string::npos, true);
39248f512ceSopenharmony_ci}
39348f512ceSopenharmony_ci
39448f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpNumNodes, TestSize.Level1)
39548f512ceSopenharmony_ci{
39648f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
39748f512ceSopenharmony_ci    stdoutRecord.Start();
39848f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
39948f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
40048f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
40148f512ceSopenharmony_ci
40248f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("numNodes") != std::string::npos, true);
40348f512ceSopenharmony_ci}
40448f512ceSopenharmony_ci
40548f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpStackTableContent, TestSize.Level1)
40648f512ceSopenharmony_ci{
40748f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
40848f512ceSopenharmony_ci    stdoutRecord.Start();
40948f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
41048f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
41148f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
41248f512ceSopenharmony_ci
41348f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("hiperf_stack_table content") != std::string::npos, true);
41448f512ceSopenharmony_ci}
41548f512ceSopenharmony_ci
41648f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpTableid, TestSize.Level1)
41748f512ceSopenharmony_ci{
41848f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
41948f512ceSopenharmony_ci    stdoutRecord.Start();
42048f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
42148f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
42248f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
42348f512ceSopenharmony_ci
42448f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("tableid") != std::string::npos, true);
42548f512ceSopenharmony_ci}
42648f512ceSopenharmony_ci
42748f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpTableSize, TestSize.Level1)
42848f512ceSopenharmony_ci{
42948f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
43048f512ceSopenharmony_ci    stdoutRecord.Start();
43148f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
43248f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
43348f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
43448f512ceSopenharmony_ci
43548f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("tableSize") != std::string::npos, true);
43648f512ceSopenharmony_ci}
43748f512ceSopenharmony_ci
43848f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpKernelUpperBoundary, TestSize.Level1)
43948f512ceSopenharmony_ci{
44048f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
44148f512ceSopenharmony_ci    stdoutRecord.Start();
44248f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
44348f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
44448f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
44548f512ceSopenharmony_ci    std::string kernelUpperBoundary = "0xffffffffffffff80";
44648f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelUpperBoundary) != std::string::npos, true);
44748f512ceSopenharmony_ci}
44848f512ceSopenharmony_ci
44948f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpKernelLowerBoundary, TestSize.Level1)
45048f512ceSopenharmony_ci{
45148f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
45248f512ceSopenharmony_ci    stdoutRecord.Start();
45348f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
45448f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
45548f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
45648f512ceSopenharmony_ci    std::string kernelLowerBoundary = "0xfffffffffffffe00";
45748f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelLowerBoundary) != std::string::npos, true);
45848f512ceSopenharmony_ci}
45948f512ceSopenharmony_ci
46048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpKernelIp, TestSize.Level1)
46148f512ceSopenharmony_ci{
46248f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
46348f512ceSopenharmony_ci    stdoutRecord.Start();
46448f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
46548f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
46648f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
46748f512ceSopenharmony_ci    std::string kernelIp = "0xffffffc011605050";
46848f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelIp) != std::string::npos, true);
46948f512ceSopenharmony_ci}
47048f512ceSopenharmony_ci
47148f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpUerIpFixZero, TestSize.Level1)
47248f512ceSopenharmony_ci{
47348f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
47448f512ceSopenharmony_ci    stdoutRecord.Start();
47548f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
47648f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
47748f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
47848f512ceSopenharmony_ci    std::string userIpFixZero = "0xffffffc0100fa3b0";
47948f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(userIpFixZero) != std::string::npos, true);
48048f512ceSopenharmony_ci}
48148f512ceSopenharmony_ci
48248f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpUserIp, TestSize.Level1)
48348f512ceSopenharmony_ci{
48448f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
48548f512ceSopenharmony_ci    stdoutRecord.Start();
48648f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
48748f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
48848f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
48948f512ceSopenharmony_ci    std::string userIp = "0xf7b43f50";
49048f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(userIp) != std::string::npos, true);
49148f512ceSopenharmony_ci}
49248f512ceSopenharmony_ci
49348f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpCallchain, TestSize.Level1)
49448f512ceSopenharmony_ci{
49548f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
49648f512ceSopenharmony_ci    stdoutRecord.Start();
49748f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
49848f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
49948f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
50048f512ceSopenharmony_ci    std::string callchain = "callchain nr=21";
50148f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(callchain) != std::string::npos, true);
50248f512ceSopenharmony_ci}
50348f512ceSopenharmony_ci
50448f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpCompressFpSymbol, TestSize.Level1)
50548f512ceSopenharmony_ci{
50648f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
50748f512ceSopenharmony_ci    stdoutRecord.Start();
50848f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.compress.data";
50948f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
51048f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
51148f512ceSopenharmony_ci    std::string symbol = "0xffffffc011600984 : schedule";
51248f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(symbol) != std::string::npos, true);
51348f512ceSopenharmony_ci}
51448f512ceSopenharmony_ci
51548f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfStackTable, TestSize.Level1)
51648f512ceSopenharmony_ci{
51748f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
51848f512ceSopenharmony_ci    stdoutRecord.Start();
51948f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
52048f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
52148f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
52248f512ceSopenharmony_ci
52348f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("hiperf_stack_table") != std::string::npos, false);
52448f512ceSopenharmony_ci}
52548f512ceSopenharmony_ci
52648f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfStackid, TestSize.Level1)
52748f512ceSopenharmony_ci{
52848f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
52948f512ceSopenharmony_ci    stdoutRecord.Start();
53048f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
53148f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
53248f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
53348f512ceSopenharmony_ci
53448f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("stackid") != std::string::npos, false);
53548f512ceSopenharmony_ci}
53648f512ceSopenharmony_ci
53748f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfTableNums, TestSize.Level1)
53848f512ceSopenharmony_ci{
53948f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
54048f512ceSopenharmony_ci    stdoutRecord.Start();
54148f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
54248f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
54348f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
54448f512ceSopenharmony_ci
54548f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("TableNums") != std::string::npos, false);
54648f512ceSopenharmony_ci}
54748f512ceSopenharmony_ci
54848f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfNumNodes, TestSize.Level1)
54948f512ceSopenharmony_ci{
55048f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
55148f512ceSopenharmony_ci    stdoutRecord.Start();
55248f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
55348f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
55448f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
55548f512ceSopenharmony_ci
55648f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("numNodes") != std::string::npos, false);
55748f512ceSopenharmony_ci}
55848f512ceSopenharmony_ci
55948f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfStackTableContent, TestSize.Level1)
56048f512ceSopenharmony_ci{
56148f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
56248f512ceSopenharmony_ci    stdoutRecord.Start();
56348f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
56448f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
56548f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
56648f512ceSopenharmony_ci
56748f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("hiperf_stack_table content") != std::string::npos, false);
56848f512ceSopenharmony_ci}
56948f512ceSopenharmony_ci
57048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfTableid, TestSize.Level1)
57148f512ceSopenharmony_ci{
57248f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
57348f512ceSopenharmony_ci    stdoutRecord.Start();
57448f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
57548f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
57648f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
57748f512ceSopenharmony_ci
57848f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("tableid") != std::string::npos, false);
57948f512ceSopenharmony_ci}
58048f512ceSopenharmony_ci
58148f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfTableSize, TestSize.Level1)
58248f512ceSopenharmony_ci{
58348f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
58448f512ceSopenharmony_ci    stdoutRecord.Start();
58548f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
58648f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
58748f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
58848f512ceSopenharmony_ci
58948f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("tableSize") != std::string::npos, false);
59048f512ceSopenharmony_ci}
59148f512ceSopenharmony_ci
59248f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfKernelUpperBoundary, TestSize.Level1)
59348f512ceSopenharmony_ci{
59448f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
59548f512ceSopenharmony_ci    stdoutRecord.Start();
59648f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
59748f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
59848f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
59948f512ceSopenharmony_ci    std::string kernelUpperBoundary = "0xffffffffffffff80";
60048f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelUpperBoundary) != std::string::npos, true);
60148f512ceSopenharmony_ci}
60248f512ceSopenharmony_ci
60348f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfKernelLowerBoundary, TestSize.Level1)
60448f512ceSopenharmony_ci{
60548f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
60648f512ceSopenharmony_ci    stdoutRecord.Start();
60748f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
60848f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
60948f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
61048f512ceSopenharmony_ci    std::string kernelLowerBoundary = "0xfffffffffffffe00";
61148f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelLowerBoundary) != std::string::npos, true);
61248f512ceSopenharmony_ci}
61348f512ceSopenharmony_ci
61448f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfKernelIp, TestSize.Level1)
61548f512ceSopenharmony_ci{
61648f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
61748f512ceSopenharmony_ci    stdoutRecord.Start();
61848f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
61948f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
62048f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
62148f512ceSopenharmony_ci    std::string kernelIp = "0xffffffc011605050";
62248f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelIp) != std::string::npos, true);
62348f512ceSopenharmony_ci}
62448f512ceSopenharmony_ci
62548f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfUerIpFixZero, TestSize.Level1)
62648f512ceSopenharmony_ci{
62748f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
62848f512ceSopenharmony_ci    stdoutRecord.Start();
62948f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
63048f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
63148f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
63248f512ceSopenharmony_ci    std::string userIpFixZero = "0x00000000f7a70f67";
63348f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(userIpFixZero) != std::string::npos, true);
63448f512ceSopenharmony_ci}
63548f512ceSopenharmony_ci
63648f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfUserIp, TestSize.Level1)
63748f512ceSopenharmony_ci{
63848f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
63948f512ceSopenharmony_ci    stdoutRecord.Start();
64048f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
64148f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
64248f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
64348f512ceSopenharmony_ci    std::string userIp = "0xf7a70f67";
64448f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(userIp) != std::string::npos, true);
64548f512ceSopenharmony_ci}
64648f512ceSopenharmony_ci
64748f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfCallchain, TestSize.Level1)
64848f512ceSopenharmony_ci{
64948f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
65048f512ceSopenharmony_ci    stdoutRecord.Start();
65148f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
65248f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
65348f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
65448f512ceSopenharmony_ci    std::string callchain = "callchain nr=20";
65548f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(callchain) != std::string::npos, true);
65648f512ceSopenharmony_ci}
65748f512ceSopenharmony_ci
65848f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressDwarfSymbol, TestSize.Level1)
65948f512ceSopenharmony_ci{
66048f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
66148f512ceSopenharmony_ci    stdoutRecord.Start();
66248f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/dwarf.uncompress.data";
66348f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
66448f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
66548f512ceSopenharmony_ci    std::string symbol = "0xffffffc0102fafa0 : ksys_read";
66648f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(symbol) != std::string::npos, true);
66748f512ceSopenharmony_ci}
66848f512ceSopenharmony_ci
66948f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpStackTable, TestSize.Level1)
67048f512ceSopenharmony_ci{
67148f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
67248f512ceSopenharmony_ci    stdoutRecord.Start();
67348f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
67448f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
67548f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
67648f512ceSopenharmony_ci
67748f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("hiperf_stack_table") != std::string::npos, false);
67848f512ceSopenharmony_ci}
67948f512ceSopenharmony_ci
68048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpStackid, TestSize.Level1)
68148f512ceSopenharmony_ci{
68248f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
68348f512ceSopenharmony_ci    stdoutRecord.Start();
68448f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
68548f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
68648f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
68748f512ceSopenharmony_ci
68848f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("stackid") != std::string::npos, false);
68948f512ceSopenharmony_ci}
69048f512ceSopenharmony_ci
69148f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpTableNums, TestSize.Level1)
69248f512ceSopenharmony_ci{
69348f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
69448f512ceSopenharmony_ci    stdoutRecord.Start();
69548f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
69648f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
69748f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
69848f512ceSopenharmony_ci
69948f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("TableNums") != std::string::npos, false);
70048f512ceSopenharmony_ci}
70148f512ceSopenharmony_ci
70248f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpNumNodes, TestSize.Level1)
70348f512ceSopenharmony_ci{
70448f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
70548f512ceSopenharmony_ci    stdoutRecord.Start();
70648f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
70748f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
70848f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
70948f512ceSopenharmony_ci
71048f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("numNodes") != std::string::npos, false);
71148f512ceSopenharmony_ci}
71248f512ceSopenharmony_ci
71348f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpStackTableContent, TestSize.Level1)
71448f512ceSopenharmony_ci{
71548f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
71648f512ceSopenharmony_ci    stdoutRecord.Start();
71748f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
71848f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
71948f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
72048f512ceSopenharmony_ci
72148f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("hiperf_stack_table content") != std::string::npos, false);
72248f512ceSopenharmony_ci}
72348f512ceSopenharmony_ci
72448f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpTableid, TestSize.Level1)
72548f512ceSopenharmony_ci{
72648f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
72748f512ceSopenharmony_ci    stdoutRecord.Start();
72848f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
72948f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
73048f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
73148f512ceSopenharmony_ci
73248f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("tableid") != std::string::npos, false);
73348f512ceSopenharmony_ci}
73448f512ceSopenharmony_ci
73548f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpTableSize, TestSize.Level1)
73648f512ceSopenharmony_ci{
73748f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
73848f512ceSopenharmony_ci    stdoutRecord.Start();
73948f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
74048f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
74148f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
74248f512ceSopenharmony_ci
74348f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find("tableSize") != std::string::npos, false);
74448f512ceSopenharmony_ci}
74548f512ceSopenharmony_ci
74648f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpKernelUpperBoundary, TestSize.Level1)
74748f512ceSopenharmony_ci{
74848f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
74948f512ceSopenharmony_ci    stdoutRecord.Start();
75048f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
75148f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
75248f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
75348f512ceSopenharmony_ci    std::string kernelUpperBoundary = "0xffffffffffffff80";
75448f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelUpperBoundary) != std::string::npos, true);
75548f512ceSopenharmony_ci}
75648f512ceSopenharmony_ci
75748f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpKernelLowerBoundary, TestSize.Level1)
75848f512ceSopenharmony_ci{
75948f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
76048f512ceSopenharmony_ci    stdoutRecord.Start();
76148f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
76248f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
76348f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
76448f512ceSopenharmony_ci    std::string kernelLowerBoundary = "0xfffffffffffffe00";
76548f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelLowerBoundary) != std::string::npos, true);
76648f512ceSopenharmony_ci}
76748f512ceSopenharmony_ci
76848f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpKernelIp, TestSize.Level1)
76948f512ceSopenharmony_ci{
77048f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
77148f512ceSopenharmony_ci    stdoutRecord.Start();
77248f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
77348f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
77448f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
77548f512ceSopenharmony_ci    std::string kernelIp = "0xffffffc011605050";
77648f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(kernelIp) != std::string::npos, true);
77748f512ceSopenharmony_ci}
77848f512ceSopenharmony_ci
77948f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpUerIpFixZero, TestSize.Level1)
78048f512ceSopenharmony_ci{
78148f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
78248f512ceSopenharmony_ci    stdoutRecord.Start();
78348f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
78448f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
78548f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
78648f512ceSopenharmony_ci    std::string userIpFixZero = "0x00000000f6ebfd24";
78748f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(userIpFixZero) != std::string::npos, true);
78848f512ceSopenharmony_ci}
78948f512ceSopenharmony_ci
79048f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpUserIp, TestSize.Level1)
79148f512ceSopenharmony_ci{
79248f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
79348f512ceSopenharmony_ci    stdoutRecord.Start();
79448f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
79548f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
79648f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
79748f512ceSopenharmony_ci    std::string userIp = "0xf6ebfd24";
79848f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(userIp) != std::string::npos, true);
79948f512ceSopenharmony_ci}
80048f512ceSopenharmony_ci
80148f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpCallchain, TestSize.Level1)
80248f512ceSopenharmony_ci{
80348f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
80448f512ceSopenharmony_ci    stdoutRecord.Start();
80548f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
80648f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
80748f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
80848f512ceSopenharmony_ci    std::string callchain = "callchain nr=16";
80948f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(callchain) != std::string::npos, true);
81048f512ceSopenharmony_ci}
81148f512ceSopenharmony_ci
81248f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpUncompressFpSymbol, TestSize.Level1)
81348f512ceSopenharmony_ci{
81448f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
81548f512ceSopenharmony_ci    stdoutRecord.Start();
81648f512ceSopenharmony_ci    std::string cmdString = "dump -i /data/test/resource/testdata/fp.uncompress.data";
81748f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), true);
81848f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
81948f512ceSopenharmony_ci    std::string symbol = "0xffffffc0100030c4 : el0_sync_compat";
82048f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(symbol) != std::string::npos, true);
82148f512ceSopenharmony_ci}
82248f512ceSopenharmony_ci
82348f512ceSopenharmony_ciHWTEST_F(SubCommandDumpTest, DumpOutputFail, TestSize.Level1)
82448f512ceSopenharmony_ci{
82548f512ceSopenharmony_ci    StdoutRecord stdoutRecord;
82648f512ceSopenharmony_ci    stdoutRecord.Start();
82748f512ceSopenharmony_ci    std::string cmdString = "dump -o /root/output.txt";
82848f512ceSopenharmony_ci    EXPECT_EQ(Command::DispatchCommand(cmdString), false);
82948f512ceSopenharmony_ci    std::string stringOut = stdoutRecord.Stop();
83048f512ceSopenharmony_ci    std::string symbol = "unable open file";
83148f512ceSopenharmony_ci    EXPECT_EQ(stringOut.find(symbol) != std::string::npos, true);
83248f512ceSopenharmony_ci}
83348f512ceSopenharmony_ci} // namespace HiPerf
83448f512ceSopenharmony_ci} // namespace Developtools
83548f512ceSopenharmony_ci} // namespace OHOS
836