1 /*
2 * Copyright (c) 2021-2022 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
16 /* This files contains unit test of daemon module. */
17
18 #include "faultlogger_daemon_test.h"
19
20 #include <securec.h>
21 #include <unistd.h>
22
23 #define private public
24 #include "fault_logger_daemon.h"
25 #undef private
26
27 using namespace OHOS::HiviewDFX;
28 using namespace testing::ext;
29 using namespace std;
30
SetUpTestCase(void)31 void FaultLoggerDaemonTest::SetUpTestCase(void)
32 {
33 }
34
TearDownTestCase(void)35 void FaultLoggerDaemonTest::TearDownTestCase(void)
36 {
37 }
38
SetUp(void)39 void FaultLoggerDaemonTest::SetUp(void)
40 {
41 }
42
TearDown(void)43 void FaultLoggerDaemonTest::TearDown(void)
44 {
45 }
46
47 /**
48 * @tc.name: FaultLoggerDaemonTest001
49 * @tc.desc: test HandleDefaultClientRequest/HandleLogFileDesClientRequest func
50 * @tc.type: FUNC
51 */
52 HWTEST_F (FaultLoggerDaemonTest, FaultLoggerDaemonTest001, TestSize.Level2)
53 {
54 GTEST_LOG_(INFO) << "FaultLoggerDaemonTest001: start.";
55 std::shared_ptr<FaultLoggerDaemon> daemon = std::make_shared<FaultLoggerDaemon>();
56 bool ret = daemon->InitEnvironment();
57 ASSERT_TRUE(ret);
58 struct FaultLoggerdRequest faultloggerdRequest;
59 if (memset_s(&faultloggerdRequest, sizeof(faultloggerdRequest), 0, sizeof(struct FaultLoggerdRequest)) != 0) {
60 GTEST_LOG_(ERROR) << "memset_s failed" ;
61 ASSERT_TRUE(false);
62 }
63 faultloggerdRequest.type = 0;
64 faultloggerdRequest.pid = getpid();
65 faultloggerdRequest.tid = gettid();
66 faultloggerdRequest.uid = getuid();
67 daemon->HandleDefaultClientRequest(-1, &faultloggerdRequest);
68 faultloggerdRequest.type = 2; // 2 : CPP_CRASH
69 daemon->HandleDefaultClientRequest(-1, &faultloggerdRequest);
70 daemon->HandleLogFileDesClientRequest(-1, &faultloggerdRequest);
71 faultloggerdRequest.type = 101; // 101 : CPP_STACKTRACE
72 daemon->HandleDefaultClientRequest(-1, &faultloggerdRequest);
73 faultloggerdRequest.type = 102; // 102 : JS_STACKTRACE
74 daemon->HandleDefaultClientRequest(-1, &faultloggerdRequest);
75 faultloggerdRequest.type = 103; // 103 : JS_HEAP_SNAPSHOT
76 daemon->HandleDefaultClientRequest(-1, &faultloggerdRequest);
77 GTEST_LOG_(INFO) << "FaultLoggerDaemonTest001: end.";
78 }
79
80 /**
81 * @tc.name: FaultLoggerDaemonTest002
82 * @tc.desc: test HandleSdkDumpRequest/HandlePipeFdClientRequest func
83 * @tc.type: FUNC
84 */
85 HWTEST_F (FaultLoggerDaemonTest, FaultLoggerDaemonTest002, TestSize.Level2)
86 {
87 GTEST_LOG_(INFO) << "FaultLoggerDaemonTest002: start.";
88 std::shared_ptr<FaultLoggerDaemon> daemon = std::make_shared<FaultLoggerDaemon>();
89 bool ret = daemon->InitEnvironment();
90 ASSERT_TRUE(ret);
91 struct FaultLoggerdRequest faultloggerdRequest;
92 if (memset_s(&faultloggerdRequest, sizeof(faultloggerdRequest), 0, sizeof(struct FaultLoggerdRequest)) != 0) {
93 GTEST_LOG_(ERROR) << "memset_s failed" ;
94 ASSERT_TRUE(false);
95 }
96 faultloggerdRequest.type = 2; // 2 : CPP_CRASH
97 faultloggerdRequest.pid = getpid();
98 faultloggerdRequest.tid = gettid();
99 faultloggerdRequest.uid = getuid();
100 daemon->HandleSdkDumpRequest(-1, &faultloggerdRequest);
101 faultloggerdRequest.pipeType = FaultLoggerPipeType::PIPE_FD_READ_BUF;
102 daemon->HandlePipeFdClientRequest(-1, &faultloggerdRequest);
103 faultloggerdRequest.pipeType = FaultLoggerPipeType::PIPE_FD_WRITE_BUF;
104 daemon->HandlePipeFdClientRequest(-1, &faultloggerdRequest);
105 faultloggerdRequest.pipeType = FaultLoggerPipeType::PIPE_FD_READ_RES;
106 daemon->HandlePipeFdClientRequest(-1, &faultloggerdRequest);
107 faultloggerdRequest.pipeType = FaultLoggerPipeType::PIPE_FD_WRITE_RES;
108 daemon->HandlePipeFdClientRequest(-1, &faultloggerdRequest);
109 faultloggerdRequest.pipeType = FaultLoggerPipeType::PIPE_FD_DELETE;
110 daemon->HandlePipeFdClientRequest(-1, &faultloggerdRequest);
111 GTEST_LOG_(INFO) << "FaultLoggerDaemonTest002: end.";
112 }
113
114 /**
115 * @tc.name: FaultLoggerDaemonTest003
116 * @tc.desc: test HandleSdkDumpRequest func
117 * @tc.type: FUNC
118 */
119 HWTEST_F (FaultLoggerDaemonTest, FaultLoggerDaemonTest003, TestSize.Level2)
120 {
121 GTEST_LOG_(INFO) << "FaultLoggerDaemonTest003: start.";
122 std::shared_ptr<FaultLoggerDaemon> daemon = std::make_shared<FaultLoggerDaemon>();
123 bool ret = daemon->InitEnvironment();
124 ASSERT_TRUE(ret);
125 struct FaultLoggerdRequest faultloggerdRequest;
126 if (memset_s(&faultloggerdRequest, sizeof(faultloggerdRequest), 0, sizeof(struct FaultLoggerdRequest)) != 0) {
127 GTEST_LOG_(ERROR) << "memset_s failed" ;
128 ASSERT_TRUE(false);
129 }
130 faultloggerdRequest.type = 2; // 2 : CPP_CRASH
131 faultloggerdRequest.pid = getpid();
132 faultloggerdRequest.tid = gettid();
133 faultloggerdRequest.uid = getuid();
134 daemon->HandleSdkDumpRequest(-1, &faultloggerdRequest);
135 faultloggerdRequest.tid = 0;
136 daemon->HandleSdkDumpRequest(-1, &faultloggerdRequest);
137 GTEST_LOG_(INFO) << "FaultLoggerDaemonTest003: end.";
138 }
139