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