1 /*
2  * Copyright (c) 2024 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 #include <unistd.h>
17 
18 #include "faultlog_formatter.h"
19 #include "common_utils.h"
20 #include <fcntl.h>
21 using namespace testing::ext;
22 namespace OHOS {
23 namespace HiviewDFX {
24 class FaultlogFormatterUnittest : public testing::Test {};
25 
26 /**
27  * @tc.name: GetSummaryByTypeTest001
28  * @tc.desc: Test GetSummaryByType
29  * @tc.type: FUNC
30  */
31 HWTEST_F(FaultlogFormatterUnittest, GetSummaryByTypeTest001, testing::ext::TestSize.Level1)
32 {
33     std::map<std::string, std::string> sections = {
34         {"TRUSTSTACK", "Selected stacktrace:"},
35         {"KEY_THREAD_INFO", "Fault thread info:"}
36     };
37     int32_t logType = FaultLogType::APP_FREEZE;
38     auto summary = FaultLogger::GetSummaryByType(logType, sections);
39     ASSERT_EQ(summary, "Selected stacktrace:");
40     logType = FaultLogType::CPP_CRASH;
41     summary = FaultLogger::GetSummaryByType(logType, sections);
42     ASSERT_EQ(summary, "Fault thread info:");
43     logType = FaultLogType::ADDR_SANITIZER;
44     summary = FaultLogger::GetSummaryByType(logType, sections);
45     ASSERT_EQ(summary, "Could not figure out summary for this fault.");
46 }
47 
48 /**
49  * @tc.name: WriteStackTraceFromLogTest001
50  * @tc.desc: Test WriteStackTraceFromLog
51  * @tc.type: FUNC
52  */
53 HWTEST_F(FaultlogFormatterUnittest, WriteStackTraceFromLogTest001, testing::ext::TestSize.Level1)
54 {
55     std::string pidStr;
56     int32_t fd = -1;
57     std::string path = "/testError";
58     FaultLogger::WriteStackTraceFromLog(fd, pidStr, path);
59     ASSERT_EQ(fd, -1);
60     path = "/data/test/test_faultlogger_data/plugin_config_test";
61     FaultLogger::WriteStackTraceFromLog(fd, pidStr, path);
62     ASSERT_EQ(fd, -1);
63 }
64 } // namespace HiviewDFX
65 } // namespace OHOS
66