• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include <gtest/gtest.h>
16 #define private public
17 #include "executor/memory_dumper.h"
18 #include "executor/api_dumper.h"
19 #include "executor/cmd_dumper.h"
20 #include "executor/cpu_dumper.h"
21 #include "executor/file_stream_dumper.h"
22 #include "executor/list_dumper.h"
23 #include "executor/sa_dumper.h"
24 #include "executor/version_dumper.h"
25 #include "util/config_utils.h"
26 #undef private
27 
28 using namespace std;
29 using namespace testing::ext;
30 using namespace OHOS;
31 using namespace OHOS::HiviewDFX;
32 namespace OHOS {
33 namespace HiviewDFX {
34 class HidumperDumpersTest : public testing::Test {
35 public:
36     static void SetUpTestCase(void);
37     static void TearDownTestCase(void);
38     void SetUp();
39     void TearDown();
40 
41 protected:
42     static constexpr auto& FILE_CPUINFO = "/proc/cpuinfo";
43     static constexpr auto DEFAULT_PID = 1;
44     static constexpr auto DEFAULT_UID = 0;
45 };
46 
SetUpTestCase(void)47 void HidumperDumpersTest::SetUpTestCase(void)
48 {
49 }
50 
TearDownTestCase(void)51 void HidumperDumpersTest::TearDownTestCase(void)
52 {
53 }
54 
SetUp(void)55 void HidumperDumpersTest::SetUp(void)
56 {
57 }
58 
TearDown(void)59 void HidumperDumpersTest::TearDown(void)
60 {
61 }
62 
63 /**
64  * @tc.name: FileDumperTest001
65  * @tc.desc: Test FileDumper base function with loop = TRUE.
66  * @tc.type: FUNC
67  */
68 HWTEST_F(HidumperDumpersTest, FileDumperTest001, TestSize.Level3)
69 {
70     auto parameter = std::make_shared<DumperParameter>();
71     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
72     auto file_dumper = make_shared<FileStreamDumper>();
73     auto config = std::make_shared<DumpCfg>();
74     config->name_ = "FileDumperTest";
75     std::string file_name = FILE_CPUINFO;
76     config->target_ = file_name;
77     config->loop_ = DumperConstant::LOOP;
78     config->args_ = OptionArgs::Create();
79     config->args_->SetPid(DEFAULT_PID, DEFAULT_UID);
80     file_dumper->SetDumpConfig(config);
81     DumpStatus ret = file_dumper->DoPreExecute(parameter, dump_datas);
82     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
83 
84     ret = DumpStatus::DUMP_MORE_DATA;
85     while (ret == DumpStatus::DUMP_MORE_DATA) {
86         // loop for all lines
87         ret = file_dumper->DoExecute();
88         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
89         ret = file_dumper->DoAfterExecute();
90         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
91     }
92 }
93 
94 /**
95  * @tc.name: FileDumperTest002
96  * @tc.desc: Test FileDumper base function with loop = FALSE.
97  * @tc.type: FUNC
98  */
99 HWTEST_F(HidumperDumpersTest, FileDumperTest002, TestSize.Level3)
100 {
101     auto parameter = std::make_shared<DumperParameter>();
102     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
103     auto file_dumper = make_shared<FileStreamDumper>();
104     auto config = std::make_shared<DumpCfg>();
105     config->name_ = "FileDumperTest";
106     std::string file_name = FILE_CPUINFO;
107     config->target_ = file_name;
108     config->loop_ = DumperConstant::NONE;
109     file_dumper->SetDumpConfig(config);
110     DumpStatus ret = file_dumper->DoPreExecute(parameter, dump_datas);
111     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
112 
113     ret = DumpStatus::DUMP_MORE_DATA;
114     while (ret == DumpStatus::DUMP_MORE_DATA) {
115         // loop for all lines
116         ret = file_dumper->DoExecute();
117         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
118         ret = file_dumper->DoAfterExecute();
119         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
120     }
121 }
122 
123 /**
124  * @tc.name: FileDumperTest003
125  * @tc.desc: Test FileDumper base function with inputing dir(end with /) and LOOP = TRUE.
126  * @tc.type: FUNC
127  */
128 HWTEST_F(HidumperDumpersTest, FileDumperTest003, TestSize.Level3)
129 {
130     auto parameter = std::make_shared<DumperParameter>();
131     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
132     auto file_dumper = make_shared<FileStreamDumper>();
133     auto config = std::make_shared<DumpCfg>();
134     config->name_ = "FileDumperTest";
135     std::string file_name = "/data/log/faultlog/temp/";
136     config->target_ = file_name;
137     config->loop_ = DumperConstant::LOOP;
138     file_dumper->SetDumpConfig(config);
139     DumpStatus ret = file_dumper->DoPreExecute(parameter, dump_datas);
140     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
141 
142     ret = DumpStatus::DUMP_MORE_DATA;
143     while (ret == DumpStatus::DUMP_MORE_DATA) {
144         // loop for all lines
145         ret = file_dumper->DoExecute();
146         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
147         ret = file_dumper->DoAfterExecute();
148         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
149     }
150 }
151 
152 /**
153  * @tc.name: FileDumperTest004
154  * @tc.desc: Test FileDumper base function with inputing dir.
155  * @tc.type: FUNC
156  */
157 HWTEST_F(HidumperDumpersTest, FileDumperTest004, TestSize.Level3)
158 {
159     auto parameter = std::make_shared<DumperParameter>();
160     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
161     auto file_dumper = make_shared<FileStreamDumper>();
162     auto config = std::make_shared<DumpCfg>();
163     config->name_ = "FileDumperTest";
164     std::string file_name = "/data/log/faultlog/temp";
165     config->target_ = file_name;
166     config->loop_ = DumperConstant::NONE;
167     file_dumper->SetDumpConfig(config);
168     DumpStatus ret = file_dumper->DoPreExecute(parameter, dump_datas);
169     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
170 
171     ret = DumpStatus::DUMP_MORE_DATA;
172     while (ret == DumpStatus::DUMP_MORE_DATA) {
173         // loop for all lines
174         ret = file_dumper->DoExecute();
175         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
176         ret = file_dumper->DoAfterExecute();
177         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
178     }
179 }
180 /**
181  * @tc.name: FileDumperTest005
182  * @tc.desc: Test FileDumper base function with replacing PID in file paths.
183  * @tc.type: FUNC
184  */
185 HWTEST_F(HidumperDumpersTest, FileDumperTest005, TestSize.Level0)
186 {
187     auto parameter = std::make_shared<DumperParameter>();
188     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
189     auto file_dumper = make_shared<FileStreamDumper>();
190     auto config = std::make_shared<DumpCfg>();
191     config->name_ = "FileDumperTest";
192     std::string file_name = "/proc/%pid/smaps";
193     config->target_ = file_name;
194     config->loop_ = DumperConstant::LOOP;
195     config->args_ = OptionArgs::Create();
196     config->args_->SetPid(DEFAULT_PID, DEFAULT_UID);
197     file_dumper->SetDumpConfig(config);
198     DumpStatus ret = file_dumper->DoPreExecute(parameter, dump_datas);
199     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
200 
201     ret = DumpStatus::DUMP_MORE_DATA;
202     while (ret == DumpStatus::DUMP_MORE_DATA) {
203         // loop for all lines
204         ret = file_dumper->DoExecute();
205         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
206         ret = file_dumper->DoAfterExecute();
207         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
208     }
209 }
210 
211 /**
212  * @tc.name: APIDumperTest001
213  * @tc.desc: Test APIDumper target is build_version.
214  * @tc.type: FUNC
215  */
216 HWTEST_F(HidumperDumpersTest, APIDumperTest001, TestSize.Level3)
217 {
218     auto parameter = std::make_shared<DumperParameter>();
219     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
220     auto fapi_dumper = make_shared<APIDumper>();
221     auto config = std::make_shared<DumpCfg>();
222     config->name_ = "dumper_build_id";
223     config->target_ = "build_version";
224     fapi_dumper->SetDumpConfig(config);
225     DumpStatus ret = fapi_dumper->DoPreExecute(parameter, dump_datas);
226     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
227     ret = fapi_dumper->DoExecute();
228     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed.";
229     ret = fapi_dumper->DoAfterExecute();
230     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed.";
231 }
232 
233 /**
234  * @tc.name: APIDumperTest002
235  * @tc.desc: Test APIDumper target is hw_sc.build.os.releasetype.
236  * @tc.type: FUNC
237  */
238 HWTEST_F(HidumperDumpersTest, APIDumperTest002, TestSize.Level3)
239 {
240     auto parameter = std::make_shared<DumperParameter>();
241     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
242     auto fapi_dumper = make_shared<APIDumper>();
243     auto config = std::make_shared<DumpCfg>();
244     config->name_ = "dumper_release_type";
245     config->target_ = "hw_sc.build.os.releasetype";
246     fapi_dumper->SetDumpConfig(config);
247     DumpStatus ret = fapi_dumper->DoPreExecute(parameter, dump_datas);
248     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
249     ret = fapi_dumper->DoExecute();
250     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed.";
251     ret = fapi_dumper->DoAfterExecute();
252     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed.";
253 }
254 
255 /**
256  * @tc.name: APIDumperTest003
257  * @tc.desc: Test APIDumper target is hw_sc.build.os.version.
258  * @tc.type: FUNC
259  */
260 HWTEST_F(HidumperDumpersTest, APIDumperTest003, TestSize.Level3)
261 {
262     auto parameter = std::make_shared<DumperParameter>();
263     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
264     auto fapi_dumper = make_shared<APIDumper>();
265     auto config = std::make_shared<DumpCfg>();
266     config->name_ = "dumper_os_version";
267     config->target_ = "hw_sc.build.os.version";
268     fapi_dumper->SetDumpConfig(config);
269     DumpStatus ret = fapi_dumper->DoPreExecute(parameter, dump_datas);
270     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
271     ret = fapi_dumper->DoExecute();
272     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed.";
273     ret = fapi_dumper->DoAfterExecute();
274     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed.";
275 }
276 
277 /**
278  * @tc.name: APIDumperTest004
279  * @tc.desc: Test APIDumper target is system_param.
280  * @tc.type: FUNC
281  */
282 HWTEST_F(HidumperDumpersTest, APIDumperTest004, TestSize.Level3)
283 {
284     auto parameter = std::make_shared<DumperParameter>();
285     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
286     auto fapi_dumper = make_shared<APIDumper>();
287     auto config = std::make_shared<DumpCfg>();
288     config->name_ = "dumper_system_param";
289     config->target_ = "system_param";
290     fapi_dumper->SetDumpConfig(config);
291     DumpStatus ret = fapi_dumper->DoPreExecute(parameter, dump_datas);
292     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
293     ret = fapi_dumper->DoExecute();
294     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed.";
295     ret = fapi_dumper->DoAfterExecute();
296     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed.";
297 }
298 
299 /**
300  * @tc.name: APIDumperTest005
301  * @tc.desc: Test VersionDumper.
302  * @tc.type: FUNC
303  */
304 HWTEST_F(HidumperDumpersTest, VersionDumperTest001, TestSize.Level3)
305 {
306     auto parameter = std::make_shared<DumperParameter>();
307     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
308     auto fapi_dumper = make_shared<VersionDumper>();
309     DumpStatus ret = fapi_dumper->DoPreExecute(parameter, dump_datas);
310     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
311     ret = fapi_dumper->DoExecute();
312     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "Execute failed.";
313     ret = fapi_dumper->DoAfterExecute();
314     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "AfterExecute failed.";
315 }
316 
317 /**
318  * @tc.name: CMDDumperTest001
319  * @tc.desc: CMD Dumper base function with loop = TRUE.
320  * @tc.type: FUNC
321  */
322 HWTEST_F(HidumperDumpersTest, CMDDumperTest001, TestSize.Level3)
323 {
324     auto parameter = std::make_shared<DumperParameter>();
325     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
326     auto cmd_dumper = make_shared<CMDDumper>();
327     auto config = std::make_shared<DumpCfg>();
328     config->name_ = "CmdDumperTest";
329     std::string cmd = "ps -ef";
330     config->target_ = cmd;
331     config->loop_ = DumperConstant::LOOP;
332     cmd_dumper->SetDumpConfig(config);
333     DumpStatus ret = cmd_dumper->DoPreExecute(parameter, dump_datas);
334     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
335 
336     ret = DumpStatus::DUMP_MORE_DATA;
337     while (ret == DumpStatus::DUMP_MORE_DATA) {
338         // loop for all lines
339         ret = cmd_dumper->DoExecute();
340         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
341         ret = cmd_dumper->DoAfterExecute();
342         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
343     }
344 }
345 
346 /**
347  * @tc.name: CMDDumperTest002
348  * @tc.desc: CMD Dumper base function with loop = False.
349  * @tc.type: FUNC
350  */
351 HWTEST_F(HidumperDumpersTest, CMDDumperTest002, TestSize.Level3)
352 {
353     auto parameter = std::make_shared<DumperParameter>();
354     auto dump_datas = std::make_shared<std::vector<std::vector<std::string>>>();
355     auto cmd_dumper = make_shared<CMDDumper>();
356     auto config = std::make_shared<DumpCfg>();
357     config->name_ = "CmdDumperTest";
358     std::string cmd = "ps -ef";
359     config->target_ = cmd;
360     config->loop_ = DumperConstant::NONE;
361     cmd_dumper->SetDumpConfig(config);
362     DumpStatus ret = cmd_dumper->DoPreExecute(parameter, dump_datas);
363     ASSERT_TRUE(ret == DumpStatus::DUMP_OK) << "PreExecute failed.";
364 
365     ret = DumpStatus::DUMP_MORE_DATA;
366     while (ret == DumpStatus::DUMP_MORE_DATA) {
367         // loop for all lines
368         ret = cmd_dumper->DoExecute();
369         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
370         ret = cmd_dumper->DoAfterExecute();
371         ASSERT_TRUE(ret == DumpStatus::DUMP_OK || ret == DumpStatus::DUMP_MORE_DATA) << "Execute failed.";
372     }
373 }
374 
375 /**
376  * @tc.name: MemoryDumperTest001
377  * @tc.desc: Test MemoryDumper one process has correct ret.
378  * @tc.type: FUNC
379  */
380 HWTEST_F(HidumperDumpersTest, MemoryDumperTest001, TestSize.Level1)
381 {
382     auto memoryDumper = std::make_shared<MemoryDumper>();
383     memoryDumper->pid_ = 1;
384     auto dumpDatas = std::make_shared<std::vector<std::vector<std::string>>>();
385     memoryDumper->dumpDatas_ = dumpDatas;
386     int ret = DumpStatus::DUMP_MORE_DATA;
387     while (ret == DumpStatus::DUMP_MORE_DATA) {
388         ret = memoryDumper->Execute();
389     }
390     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
391 }
392 
393 /**
394  * @tc.name: MemoryDumperTest002
395  * @tc.desc: Test MemoryDumper all process has correct ret.
396  * @tc.type: FUNC
397  */
398 HWTEST_F(HidumperDumpersTest, MemoryDumperTest002, TestSize.Level1)
399 {
400     auto memoryDumper = std::make_shared<MemoryDumper>();
401     memoryDumper->pid_ = -1;
402     auto dumpDatas = std::make_shared<std::vector<std::vector<std::string>>>();
403     memoryDumper->dumpDatas_ = dumpDatas;
404     int ret = DumpStatus::DUMP_MORE_DATA;
405     while (ret == DumpStatus::DUMP_MORE_DATA) {
406         ret = memoryDumper->Execute();
407     }
408     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
409 }
410 
411 /**
412  * @tc.name: SADumperTest001
413  * @tc.desc: Test SADumper no saname has correct ret.
414  * @tc.type: FUNC
415  */
416 HWTEST_F(HidumperDumpersTest, SADumperTest001, TestSize.Level1)
417 {
418     auto parameter = std::make_shared<DumperParameter>();
419     auto dumpDatas = std::make_shared<std::vector<std::vector<std::string>>>();
420     auto saDumper = std::make_shared<SADumper>();
421     auto config = std::make_shared<DumpCfg>();
422     config->args_ = OptionArgs::Create();
423     saDumper->SetDumpConfig(config);
424     int ret = DumpStatus::DUMP_FAIL;
425     ret = saDumper->PreExecute(parameter, dumpDatas);
426     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
427     ret = saDumper->Execute();
428     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
429 }
430 
431 /**
432  * @tc.name: SADumperTest002
433  * @tc.desc: Test SADumper one saname has correct ret.
434  * @tc.type: FUNC
435  */
436 HWTEST_F(HidumperDumpersTest, SADumperTest002, TestSize.Level1)
437 {
438     auto parameter = std::make_shared<DumperParameter>();
439     auto dumpDatas = std::make_shared<std::vector<std::vector<std::string>>>();
440     auto saDumper = std::make_shared<SADumper>();
441     auto config = std::make_shared<DumpCfg>();
442     config->args_ = OptionArgs::Create();
443     const std::vector<std::string> names = {"1202"};
444     const std::vector<std::string> args;
445     config->args_->SetNamesAndArgs(names, args);
446     saDumper->SetDumpConfig(config);
447     int ret = DumpStatus::DUMP_FAIL;
448     ret = saDumper->PreExecute(parameter, dumpDatas);
449     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
450     ret = saDumper->Execute();
451     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
452 }
453 
454 /**
455  * @tc.name: CpuDumperTest001
456  * @tc.desc: Test CpuDumper dump all process has correct ret.
457  * @tc.type: FUNC
458  */
459 HWTEST_F(HidumperDumpersTest, CpuDumperTest001, TestSize.Level1)
460 {
461     auto parameter = std::make_shared<DumperParameter>();
462     DumperOpts opts;
463     opts.isDumpCpuUsage_ = true;
464     opts.cpuUsagePid_ = -1;
465     parameter->SetOpts(opts);
466     auto dumpDatas = std::make_shared<std::vector<std::vector<std::string>>>();
467     auto cpuDumper = std::make_shared<CPUDumper>();
468     int ret = DumpStatus::DUMP_FAIL;
469     ret = cpuDumper->PreExecute(parameter, dumpDatas);
470     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
471     ret = cpuDumper->Execute();
472     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
473     ret = cpuDumper->AfterExecute();
474     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
475 }
476 
477 /**
478  * @tc.name: CpuDumperTest002
479  * @tc.desc: Test CpuDumper has correct ret when opts is vaild.
480  * @tc.type: FUNC
481  */
482 HWTEST_F(HidumperDumpersTest, CpuDumperTest002, TestSize.Level1)
483 {
484     auto parameter = std::make_shared<DumperParameter>();
485     DumperOpts opts;
486     opts.isDumpCpuUsage_ = false;
487     opts.cpuUsagePid_ = getpid();
488     parameter->SetOpts(opts);
489     auto dumpDatas = std::make_shared<std::vector<std::vector<std::string>>>();
490     auto cpuDumper = std::make_shared<CPUDumper>();
491     int ret = DumpStatus::DUMP_FAIL;
492     ret = cpuDumper->PreExecute(parameter, dumpDatas);
493     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
494     ret = cpuDumper->Execute();
495     ASSERT_EQ(ret, DumpStatus::DUMP_FAIL);
496 }
497 
498 /**
499  * @tc.name: ListDumperTest001
500  * @tc.desc: Test ListDumper dump ABILITY has correct ret.
501  * @tc.type: FUNC
502  */
503 HWTEST_F(HidumperDumpersTest, ListDumperTest001, TestSize.Level1)
504 {
505     auto parameter = std::make_shared<DumperParameter>();
506     auto dumpDatas = std::make_shared<std::vector<std::vector<std::string>>>();
507     auto listDumper = std::make_shared<ListDumper>();
508     auto config = std::make_shared<DumpCfg>();
509     config->target_ = ConfigUtils::STR_ABILITY;
510     listDumper->SetDumpConfig(config);
511 
512     int ret = DumpStatus::DUMP_FAIL;
513     ret = listDumper->PreExecute(parameter, dumpDatas);
514     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
515     ret = listDumper->Execute();
516     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
517     ret = listDumper->AfterExecute();
518     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
519 }
520 
521 /**
522  * @tc.name: ListDumperTest002
523  * @tc.desc: Test ListDumper dump SYSTEM has correct ret.
524  * @tc.type: FUNC
525  */
526 HWTEST_F(HidumperDumpersTest, ListDumperTest002, TestSize.Level1)
527 {
528     auto parameter = std::make_shared<DumperParameter>();
529     auto dumpDatas = std::make_shared<std::vector<std::vector<std::string>>>();
530     auto listDumper = std::make_shared<ListDumper>();
531     auto config = std::make_shared<DumpCfg>();
532     config->target_ = ConfigUtils::STR_SYSTEM;
533     listDumper->SetDumpConfig(config);
534 
535     int ret = DumpStatus::DUMP_FAIL;
536     ret = listDumper->PreExecute(parameter, dumpDatas);
537     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
538     ret = listDumper->Execute();
539     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
540     ret = listDumper->AfterExecute();
541     ASSERT_EQ(ret, DumpStatus::DUMP_OK);
542 }
543 } // namespace HiviewDFX
544 } // namespace OHOS