100600bfbSopenharmony_ci/* 200600bfbSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 300600bfbSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 400600bfbSopenharmony_ci * you may not use this file except in compliance with the License. 500600bfbSopenharmony_ci * You may obtain a copy of the License at 600600bfbSopenharmony_ci * 700600bfbSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 800600bfbSopenharmony_ci * 900600bfbSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1000600bfbSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1100600bfbSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1200600bfbSopenharmony_ci * See the License for the specific language governing permissions and 1300600bfbSopenharmony_ci * limitations under the License. 1400600bfbSopenharmony_ci */ 1500600bfbSopenharmony_ci 1600600bfbSopenharmony_ci#include <gtest/gtest.h> 1700600bfbSopenharmony_ci#include <vector> 1800600bfbSopenharmony_ci#include <unistd.h> 1900600bfbSopenharmony_ci 2000600bfbSopenharmony_ci#include "directory_ex.h" 2100600bfbSopenharmony_ci#include "executor/zip_output.h" 2200600bfbSopenharmony_ci#include "executor/fd_output.h" 2300600bfbSopenharmony_ci#include "executor/zipfolder_output.h" 2400600bfbSopenharmony_ci#define private public 2500600bfbSopenharmony_ci#include "raw_param.h" 2600600bfbSopenharmony_ci#undef private 2700600bfbSopenharmony_ci 2800600bfbSopenharmony_ciusing namespace std; 2900600bfbSopenharmony_ciusing namespace testing::ext; 3000600bfbSopenharmony_ciusing namespace OHOS; 3100600bfbSopenharmony_ciusing namespace OHOS::HiviewDFX; 3200600bfbSopenharmony_cinamespace OHOS { 3300600bfbSopenharmony_cinamespace HiviewDFX { 3400600bfbSopenharmony_ciclass HidumperOutputTest : public testing::Test { 3500600bfbSopenharmony_cipublic: 3600600bfbSopenharmony_ci static void SetUpTestCase(void); 3700600bfbSopenharmony_ci static void TearDownTestCase(void); 3800600bfbSopenharmony_ci void SetUp(); 3900600bfbSopenharmony_ci void TearDown(); 4000600bfbSopenharmony_ci 4100600bfbSopenharmony_ciprotected: 4200600bfbSopenharmony_ci static const std::string FILE_ROOT; 4300600bfbSopenharmony_ci}; 4400600bfbSopenharmony_ci 4500600bfbSopenharmony_civoid HidumperOutputTest::SetUpTestCase(void) 4600600bfbSopenharmony_ci{ 4700600bfbSopenharmony_ci ForceCreateDirectory(FILE_ROOT); 4800600bfbSopenharmony_ci} 4900600bfbSopenharmony_civoid HidumperOutputTest::TearDownTestCase(void) 5000600bfbSopenharmony_ci{ 5100600bfbSopenharmony_ci ForceRemoveDirectory(FILE_ROOT); 5200600bfbSopenharmony_ci} 5300600bfbSopenharmony_civoid HidumperOutputTest::SetUp(void) 5400600bfbSopenharmony_ci{ 5500600bfbSopenharmony_ci} 5600600bfbSopenharmony_civoid HidumperOutputTest::TearDown(void) 5700600bfbSopenharmony_ci{ 5800600bfbSopenharmony_ci} 5900600bfbSopenharmony_ci 6000600bfbSopenharmony_ciconst std::string HidumperOutputTest::FILE_ROOT = "/data/local/tmp/hidumper_test/"; 6100600bfbSopenharmony_ci 6200600bfbSopenharmony_ci/** 6300600bfbSopenharmony_ci * @tc.name: HidumperOutputTest001 6400600bfbSopenharmony_ci * @tc.desc: Test ZipOutpu with multibytes content. 6500600bfbSopenharmony_ci * @tc.type: FUNC 6600600bfbSopenharmony_ci */ 6700600bfbSopenharmony_ciHWTEST_F(HidumperOutputTest, HidumperOutputTest001, TestSize.Level3) 6800600bfbSopenharmony_ci{ 6900600bfbSopenharmony_ci auto parameter = std::make_shared<DumperParameter>(); 7000600bfbSopenharmony_ci auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>(); 7100600bfbSopenharmony_ci auto zip_output = make_shared<ZipOutput>(); 7200600bfbSopenharmony_ci 7300600bfbSopenharmony_ci // multibytes content 7400600bfbSopenharmony_ci { 7500600bfbSopenharmony_ci std::string line_content; 7600600bfbSopenharmony_ci line_content = "根据输出结果(win32 + vc 编译器)可以看到," 7700600bfbSopenharmony_ci "strShort 对象的地址和 c_str() 的地址很接近," 7800600bfbSopenharmony_ci "都在 strShort 对象的栈控件内," 7900600bfbSopenharmony_ci "而 strLong 的 c_str() 地址很明显与 strLong 对象地址不同,是在 heap 中分配的."; 8000600bfbSopenharmony_ci std::vector<std::string> line_vector; 8100600bfbSopenharmony_ci line_vector.push_back(line_content); 8200600bfbSopenharmony_ci dump_datas->push_back(line_vector); 8300600bfbSopenharmony_ci } 8400600bfbSopenharmony_ci 8500600bfbSopenharmony_ci DumperOpts opts; 8600600bfbSopenharmony_ci opts.path_ = FILE_ROOT + "GZ_HidumperOutputTest001.gz"; 8700600bfbSopenharmony_ci parameter->SetOpts(opts); 8800600bfbSopenharmony_ci 8900600bfbSopenharmony_ci auto config = std::make_shared<DumpCfg>(); 9000600bfbSopenharmony_ci zip_output->SetDumpConfig(config); 9100600bfbSopenharmony_ci 9200600bfbSopenharmony_ci DumpStatus ret = zip_output->PreExecute(parameter, dump_datas); 9300600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed."; 9400600bfbSopenharmony_ci 9500600bfbSopenharmony_ci ret = zip_output->Execute(); 9600600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed."; 9700600bfbSopenharmony_ci 9800600bfbSopenharmony_ci ret = zip_output->AfterExecute(); 9900600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed."; 10000600bfbSopenharmony_ci} 10100600bfbSopenharmony_ci 10200600bfbSopenharmony_ci/** 10300600bfbSopenharmony_ci * @tc.name: HidumperOutputTest002 10400600bfbSopenharmony_ci * @tc.desc: Test ZipOutpu with content size touch buffer size. 10500600bfbSopenharmony_ci * @tc.type: FUNC 10600600bfbSopenharmony_ci */ 10700600bfbSopenharmony_ciHWTEST_F(HidumperOutputTest, HidumperOutputTest002, TestSize.Level3) 10800600bfbSopenharmony_ci{ 10900600bfbSopenharmony_ci auto parameter = std::make_shared<DumperParameter>(); 11000600bfbSopenharmony_ci auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>(); 11100600bfbSopenharmony_ci auto zip_output = make_shared<ZipOutput>(); 11200600bfbSopenharmony_ci 11300600bfbSopenharmony_ci // Touch Buffer Size 11400600bfbSopenharmony_ci { 11500600bfbSopenharmony_ci std::string line_content; 11600600bfbSopenharmony_ci line_content = "HidumperOutputTest001 big one!HidumperOutputTest001 big one!" 11700600bfbSopenharmony_ci "HidumperOutputTest001 big one!HidumperOutputTest001 big one!" 11800600bfbSopenharmony_ci "HidumperOutputTest001 big one!HidumperOutputTest001 big one!" 11900600bfbSopenharmony_ci "HidumperOutputTest001 big one!HidumperOutputTest001 big one!" 12000600bfbSopenharmony_ci "HidumperOut123456"; 12100600bfbSopenharmony_ci std::vector<std::string> line_vector; 12200600bfbSopenharmony_ci line_vector.push_back(line_content); 12300600bfbSopenharmony_ci dump_datas->push_back(line_vector); 12400600bfbSopenharmony_ci } 12500600bfbSopenharmony_ci 12600600bfbSopenharmony_ci DumperOpts opts; 12700600bfbSopenharmony_ci opts.path_ = FILE_ROOT + "GZ_HidumperOutputTest002.gz"; 12800600bfbSopenharmony_ci parameter->SetOpts(opts); 12900600bfbSopenharmony_ci 13000600bfbSopenharmony_ci DumpStatus ret = zip_output->PreExecute(parameter, dump_datas); 13100600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed."; 13200600bfbSopenharmony_ci 13300600bfbSopenharmony_ci ret = zip_output->Execute(); 13400600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed."; 13500600bfbSopenharmony_ci 13600600bfbSopenharmony_ci ret = zip_output->AfterExecute(); 13700600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed."; 13800600bfbSopenharmony_ci} 13900600bfbSopenharmony_ci 14000600bfbSopenharmony_ci/** 14100600bfbSopenharmony_ci * @tc.name: HidumperOutputTest003 14200600bfbSopenharmony_ci * @tc.desc: Test ZipOutpu with content size touch buffer size - 1. 14300600bfbSopenharmony_ci * @tc.type: FUNC 14400600bfbSopenharmony_ci */ 14500600bfbSopenharmony_ciHWTEST_F(HidumperOutputTest, HidumperOutputTest003, TestSize.Level3) 14600600bfbSopenharmony_ci{ 14700600bfbSopenharmony_ci auto parameter = std::make_shared<DumperParameter>(); 14800600bfbSopenharmony_ci auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>(); 14900600bfbSopenharmony_ci auto zip_output = make_shared<ZipOutput>(); 15000600bfbSopenharmony_ci 15100600bfbSopenharmony_ci // Touch Buffer Size - 1 15200600bfbSopenharmony_ci { 15300600bfbSopenharmony_ci std::string line_content; 15400600bfbSopenharmony_ci line_content = "HidumperOutputTest003 big one!" 15500600bfbSopenharmony_ci "HidumperOutputTest003 big one!" 15600600bfbSopenharmony_ci "HidumperOutputTest003 big one!" 15700600bfbSopenharmony_ci "HidumperOutputTest003 big one!" 15800600bfbSopenharmony_ci "HidumperOutputTest003 big one!" 15900600bfbSopenharmony_ci "HidumperOutputTest003 big one!" 16000600bfbSopenharmony_ci "HidumperOutputTest003 big one!" 16100600bfbSopenharmony_ci "HidumperOutputTest003 big one!" 16200600bfbSopenharmony_ci "HidumperOu12345"; 16300600bfbSopenharmony_ci std::vector<std::string> line_vector; 16400600bfbSopenharmony_ci line_vector.push_back(line_content); 16500600bfbSopenharmony_ci dump_datas->push_back(line_vector); 16600600bfbSopenharmony_ci } 16700600bfbSopenharmony_ci 16800600bfbSopenharmony_ci DumperOpts opts; 16900600bfbSopenharmony_ci opts.path_ = FILE_ROOT + "GZ_HidumperOutputTest003.gz"; 17000600bfbSopenharmony_ci parameter->SetOpts(opts); 17100600bfbSopenharmony_ci 17200600bfbSopenharmony_ci DumpStatus ret = zip_output->PreExecute(parameter, dump_datas); 17300600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed."; 17400600bfbSopenharmony_ci 17500600bfbSopenharmony_ci ret = zip_output->Execute(); 17600600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed."; 17700600bfbSopenharmony_ci 17800600bfbSopenharmony_ci ret = zip_output->AfterExecute(); 17900600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed."; 18000600bfbSopenharmony_ci} 18100600bfbSopenharmony_ci 18200600bfbSopenharmony_ci/** 18300600bfbSopenharmony_ci * @tc.name: HidumperOutputTest004 18400600bfbSopenharmony_ci * @tc.desc: Test ZipOutpu with content size touch buffer size + 1. 18500600bfbSopenharmony_ci * @tc.type: FUNC 18600600bfbSopenharmony_ci */ 18700600bfbSopenharmony_ciHWTEST_F(HidumperOutputTest, HidumperOutputTest004, TestSize.Level3) 18800600bfbSopenharmony_ci{ 18900600bfbSopenharmony_ci auto parameter = std::make_shared<DumperParameter>(); 19000600bfbSopenharmony_ci auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>(); 19100600bfbSopenharmony_ci auto zip_output = make_shared<ZipOutput>(); 19200600bfbSopenharmony_ci 19300600bfbSopenharmony_ci // Touch Buffer Size + 1 19400600bfbSopenharmony_ci { 19500600bfbSopenharmony_ci std::string line_content; 19600600bfbSopenharmony_ci line_content = "HidumperOutputTest004 big one!" 19700600bfbSopenharmony_ci "HidumperOutputTest004 big one!" 19800600bfbSopenharmony_ci "HidumperOutputTest004 big one!" 19900600bfbSopenharmony_ci "HidumperOutputTest004 big one!" 20000600bfbSopenharmony_ci "HidumperOutputTest004 big one!" 20100600bfbSopenharmony_ci "HidumperOutputTest004 big one!" 20200600bfbSopenharmony_ci "HidumperOutputTest004 big one!" 20300600bfbSopenharmony_ci "HidumperOutputTest004 big one!" 20400600bfbSopenharmony_ci "HidumperOu1234567"; 20500600bfbSopenharmony_ci std::vector<std::string> line_vector; 20600600bfbSopenharmony_ci line_vector.push_back(line_content); 20700600bfbSopenharmony_ci dump_datas->push_back(line_vector); 20800600bfbSopenharmony_ci } 20900600bfbSopenharmony_ci 21000600bfbSopenharmony_ci DumperOpts opts; 21100600bfbSopenharmony_ci opts.path_ = FILE_ROOT + "GZ_HidumperOutputTest004.gz"; 21200600bfbSopenharmony_ci parameter->SetOpts(opts); 21300600bfbSopenharmony_ci 21400600bfbSopenharmony_ci DumpStatus ret = zip_output->PreExecute(parameter, dump_datas); 21500600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed."; 21600600bfbSopenharmony_ci 21700600bfbSopenharmony_ci ret = zip_output->Execute(); 21800600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed."; 21900600bfbSopenharmony_ci 22000600bfbSopenharmony_ci ret = zip_output->AfterExecute(); 22100600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed."; 22200600bfbSopenharmony_ci} 22300600bfbSopenharmony_ci 22400600bfbSopenharmony_ci/** 22500600bfbSopenharmony_ci * @tc.name: HidumperOutputTest005 22600600bfbSopenharmony_ci * @tc.desc: Test ZipOutpu with multi lines content. 22700600bfbSopenharmony_ci * @tc.type: FUNC 22800600bfbSopenharmony_ci */ 22900600bfbSopenharmony_ciHWTEST_F(HidumperOutputTest, HidumperOutputTest005, TestSize.Level3) 23000600bfbSopenharmony_ci{ 23100600bfbSopenharmony_ci auto parameter = std::make_shared<DumperParameter>(); 23200600bfbSopenharmony_ci auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>(); 23300600bfbSopenharmony_ci auto zip_output = make_shared<ZipOutput>(); 23400600bfbSopenharmony_ci 23500600bfbSopenharmony_ci // Multi lines 23600600bfbSopenharmony_ci for (int i = 1; i < 1000; i++) { 23700600bfbSopenharmony_ci std::string line_content; 23800600bfbSopenharmony_ci line_content = "HidumperOutputTest005 big one!" 23900600bfbSopenharmony_ci "HidumperOutputTest005 big two!" 24000600bfbSopenharmony_ci "HidumperOutputTest005 big three!" 24100600bfbSopenharmony_ci "HidumperOutputTest005 big four!" 24200600bfbSopenharmony_ci "HidumperOutputTest005 big five!" 24300600bfbSopenharmony_ci "HidumperOutputTest005 big six!" 24400600bfbSopenharmony_ci "HidumperOutputTest005 big seven!" 24500600bfbSopenharmony_ci "HidumperOutputTest005 big eight!" 24600600bfbSopenharmony_ci "HidumperOutputTest005 big nine!" 24700600bfbSopenharmony_ci "HidumperOutputTest005 big ten!" 24800600bfbSopenharmony_ci "HidumperOutputTest005 big eleven!" 24900600bfbSopenharmony_ci "HidumperOutputTest005 big twelve!" 25000600bfbSopenharmony_ci "HidumperOutputTest005 big thirteen!" 25100600bfbSopenharmony_ci "HidumperOutputTest005 big fourteen!"; 25200600bfbSopenharmony_ci std::vector<std::string> line_vector; 25300600bfbSopenharmony_ci line_vector.push_back(line_content); 25400600bfbSopenharmony_ci dump_datas->push_back(line_vector); 25500600bfbSopenharmony_ci } 25600600bfbSopenharmony_ci 25700600bfbSopenharmony_ci DumperOpts opts; 25800600bfbSopenharmony_ci opts.path_ = FILE_ROOT + "GZ_HidumperOutputTest005.gz"; 25900600bfbSopenharmony_ci parameter->SetOpts(opts); 26000600bfbSopenharmony_ci 26100600bfbSopenharmony_ci DumpStatus ret = zip_output->PreExecute(parameter, dump_datas); 26200600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed."; 26300600bfbSopenharmony_ci 26400600bfbSopenharmony_ci ret = zip_output->Execute(); 26500600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed."; 26600600bfbSopenharmony_ci 26700600bfbSopenharmony_ci ret = zip_output->AfterExecute(); 26800600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed."; 26900600bfbSopenharmony_ci} 27000600bfbSopenharmony_ci 27100600bfbSopenharmony_ci/** 27200600bfbSopenharmony_ci * @tc.name: HidumperOutputTest006 27300600bfbSopenharmony_ci * @tc.desc: Test ZipOutpu with short string. 27400600bfbSopenharmony_ci * @tc.type: FUNC 27500600bfbSopenharmony_ci */ 27600600bfbSopenharmony_ciHWTEST_F(HidumperOutputTest, HidumperOutputTest006, TestSize.Level3) 27700600bfbSopenharmony_ci{ 27800600bfbSopenharmony_ci auto parameter = std::make_shared<DumperParameter>(); 27900600bfbSopenharmony_ci auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>(); 28000600bfbSopenharmony_ci auto zip_output = make_shared<ZipOutput>(); 28100600bfbSopenharmony_ci 28200600bfbSopenharmony_ci std::string line_content; 28300600bfbSopenharmony_ci line_content = "cmd is:"; 28400600bfbSopenharmony_ci std::vector<std::string> line_vector; 28500600bfbSopenharmony_ci line_vector.push_back(line_content); 28600600bfbSopenharmony_ci dump_datas->push_back(line_vector); 28700600bfbSopenharmony_ci 28800600bfbSopenharmony_ci DumperOpts opts; 28900600bfbSopenharmony_ci opts.path_ = FILE_ROOT + "GZ_HidumperOutputTest006.gz"; 29000600bfbSopenharmony_ci parameter->SetOpts(opts); 29100600bfbSopenharmony_ci 29200600bfbSopenharmony_ci DumpStatus ret = zip_output->PreExecute(parameter, dump_datas); 29300600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed."; 29400600bfbSopenharmony_ci 29500600bfbSopenharmony_ci ret = zip_output->Execute(); 29600600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed."; 29700600bfbSopenharmony_ci 29800600bfbSopenharmony_ci ret = zip_output->AfterExecute(); 29900600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed."; 30000600bfbSopenharmony_ci} 30100600bfbSopenharmony_ci 30200600bfbSopenharmony_ci/** 30300600bfbSopenharmony_ci * @tc.name: HidumperOutputTest008 30400600bfbSopenharmony_ci * @tc.desc: Test ZipOutpu with short string. 30500600bfbSopenharmony_ci * @tc.type: FUNC 30600600bfbSopenharmony_ci */ 30700600bfbSopenharmony_ciHWTEST_F(HidumperOutputTest, HidumperOutputTest008, TestSize.Level3) 30800600bfbSopenharmony_ci{ 30900600bfbSopenharmony_ci auto parameter = std::make_shared<DumperParameter>(); 31000600bfbSopenharmony_ci auto dumpDatas = std::make_shared<std::vector<std::vector<std::string>>>(); 31100600bfbSopenharmony_ci auto zipFdOutput = make_shared<ZipFolderOutput>(); 31200600bfbSopenharmony_ci 31300600bfbSopenharmony_ci DumperOpts opts; 31400600bfbSopenharmony_ci opts.path_ = FILE_ROOT + "zipOutputTest.gz"; 31500600bfbSopenharmony_ci parameter->SetOpts(opts); 31600600bfbSopenharmony_ci 31700600bfbSopenharmony_ci std::string srcpath = "/data/log/hilog"; 31800600bfbSopenharmony_ci std::vector<std::u16string> args; 31900600bfbSopenharmony_ci auto rawparam = std::make_shared<RawParam>(0, 1, 0, args, -1); 32000600bfbSopenharmony_ci rawparam->SetFolder(srcpath); 32100600bfbSopenharmony_ci parameter->setClientCallback(rawparam); 32200600bfbSopenharmony_ci 32300600bfbSopenharmony_ci DumpStatus ret = zipFdOutput -> PreExecute(parameter, dumpDatas); 32400600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed."; 32500600bfbSopenharmony_ci 32600600bfbSopenharmony_ci ret = zipFdOutput->Execute(); 32700600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed."; 32800600bfbSopenharmony_ci 32900600bfbSopenharmony_ci ret = zipFdOutput->AfterExecute(); 33000600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed."; 33100600bfbSopenharmony_ci 33200600bfbSopenharmony_ci zipFdOutput->Reset(); 33300600bfbSopenharmony_ci} 33400600bfbSopenharmony_ci 33500600bfbSopenharmony_ci/** 33600600bfbSopenharmony_ci * @tc.name: HidumperOutputTest009 33700600bfbSopenharmony_ci * @tc.desc: Test ZipOutpu with multibytes content. 33800600bfbSopenharmony_ci * @tc.type: FUNC 33900600bfbSopenharmony_ci */ 34000600bfbSopenharmony_ciHWTEST_F(HidumperOutputTest, HidumperOutputTest009, TestSize.Level3) 34100600bfbSopenharmony_ci{ 34200600bfbSopenharmony_ci auto parameter = std::make_shared<DumperParameter>(); 34300600bfbSopenharmony_ci auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>(); 34400600bfbSopenharmony_ci auto zip_output = make_shared<ZipOutput>(); 34500600bfbSopenharmony_ci 34600600bfbSopenharmony_ci // multibytes content 34700600bfbSopenharmony_ci { 34800600bfbSopenharmony_ci std::string line_content; 34900600bfbSopenharmony_ci for (int i = 0; i < 1025; i++) { // 1025: loop size 35000600bfbSopenharmony_ci line_content += "HidumperOutputTest000008 big one"; 35100600bfbSopenharmony_ci } 35200600bfbSopenharmony_ci std::vector<std::string> line_vector; 35300600bfbSopenharmony_ci line_vector.push_back(line_content); 35400600bfbSopenharmony_ci dump_datas->push_back(line_vector); 35500600bfbSopenharmony_ci } 35600600bfbSopenharmony_ci 35700600bfbSopenharmony_ci DumperOpts opts; 35800600bfbSopenharmony_ci opts.path_ = FILE_ROOT + "GZ_HidumperOutputTest008.gz"; 35900600bfbSopenharmony_ci parameter->SetOpts(opts); 36000600bfbSopenharmony_ci 36100600bfbSopenharmony_ci auto config = std::make_shared<DumpCfg>(); 36200600bfbSopenharmony_ci zip_output->SetDumpConfig(config); 36300600bfbSopenharmony_ci 36400600bfbSopenharmony_ci DumpStatus ret = zip_output->PreExecute(parameter, dump_datas); 36500600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed."; 36600600bfbSopenharmony_ci 36700600bfbSopenharmony_ci ret = zip_output->Execute(); 36800600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed."; 36900600bfbSopenharmony_ci 37000600bfbSopenharmony_ci ret = zip_output->AfterExecute(); 37100600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed."; 37200600bfbSopenharmony_ci} 37300600bfbSopenharmony_ci 37400600bfbSopenharmony_ci/** 37500600bfbSopenharmony_ci * @tc.name: HidumperOutputTest007 37600600bfbSopenharmony_ci * @tc.desc: Test FdOutput. 37700600bfbSopenharmony_ci * @tc.type: FUNC 37800600bfbSopenharmony_ci */ 37900600bfbSopenharmony_ciHWTEST_F(HidumperOutputTest, HidumperOutputTest007, TestSize.Level3) 38000600bfbSopenharmony_ci{ 38100600bfbSopenharmony_ci auto parameter = std::make_shared<DumperParameter>(); 38200600bfbSopenharmony_ci std::vector<std::u16string> args; 38300600bfbSopenharmony_ci auto reqCtl = std::make_shared<RawParam>(0, 0, 0, args, STDOUT_FILENO); 38400600bfbSopenharmony_ci parameter->setClientCallback(reqCtl); 38500600bfbSopenharmony_ci auto dumpDatas = std::make_shared<std::vector<std::vector<std::string>>>(); 38600600bfbSopenharmony_ci auto fdOutput = make_shared<FDOutput>(); 38700600bfbSopenharmony_ci 38800600bfbSopenharmony_ci std::string lineContent; 38900600bfbSopenharmony_ci lineContent = "this is FdOutputTest"; 39000600bfbSopenharmony_ci std::vector<std::string> lineVector; 39100600bfbSopenharmony_ci lineVector.push_back(lineContent); 39200600bfbSopenharmony_ci dumpDatas->push_back(lineVector); 39300600bfbSopenharmony_ci 39400600bfbSopenharmony_ci DumpStatus ret = fdOutput->PreExecute(parameter, dumpDatas); 39500600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed."; 39600600bfbSopenharmony_ci 39700600bfbSopenharmony_ci ret = fdOutput->Execute(); 39800600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed."; 39900600bfbSopenharmony_ci 40000600bfbSopenharmony_ci ret = fdOutput->AfterExecute(); 40100600bfbSopenharmony_ci ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed."; 40200600bfbSopenharmony_ci} 40300600bfbSopenharmony_ci} // namespace HiviewDFX 40400600bfbSopenharmony_ci} // namespace OHOS 405