1 /*
2 * Copyright (c) 2023 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 "event_logger_test.h"
16
17 #include "common_utils.h"
18
19 #define private public
20 #include "event_logger.h"
21 #undef private
22 #include "event.h"
23 using namespace testing::ext;
24 using namespace OHOS::HiviewDFX;
25 namespace OHOS {
26 namespace HiviewDFX {
SetUp()27 void EventLoggerTest::SetUp()
28 {
29 printf("SetUp.\n");
30 }
31
TearDown()32 void EventLoggerTest::TearDown()
33 {
34 printf("TearDown.\n");
35 }
36
SetUpTestCase()37 void EventLoggerTest::SetUpTestCase()
38 {
39 }
40
TearDownTestCase()41 void EventLoggerTest::TearDownTestCase()
42 {
43 }
44
45 /**
46 * @tc.name: EventLoggerTest_001
47 * @tc.desc: add testcase coverage
48 * @tc.type: FUNC
49 */
50 static HWTEST_F(EventLoggerTest, EventLoggerTest_001, TestSize.Level3)
51 {
52 auto eventLogger = std::make_shared<EventLogger>();
53 auto jsonStr = "{\"domain_\":\"RELIABILITY\"}";
54 std::shared_ptr<SysEvent> sysEvent = std::make_shared<SysEvent>("EventLoggerTest_001",
55 nullptr, jsonStr);
56 sysEvent->SetEventValue("PACKAGE_NAME", "");
57 sysEvent->SetEventValue("MODULE_NAME", "");
58 EXPECT_EQ(eventLogger->IsHandleAppfreeze(sysEvent), true);
59 sysEvent->SetEventValue("PACKAGE_NAME", "EventLoggerTest");
60 EXPECT_EQ(eventLogger->IsHandleAppfreeze(sysEvent), true);
61 sysEvent->SetEventValue("PID", 0);
62 sysEvent->SetEventValue("eventLog_action", "");
63 std::shared_ptr<OHOS::HiviewDFX::Event> event = std::static_pointer_cast<Event>(sysEvent);
64 EXPECT_EQ(eventLogger->OnEvent(event), true);
65 }
66
67 /**
68 * @tc.name: EventLoggerTest_002
69 * @tc.desc: add testcase coverage
70 * @tc.type: FUNC
71 */
72 static HWTEST_F(EventLoggerTest, EventLoggerTest_002, TestSize.Level3)
73 {
74 auto eventLogger = std::make_shared<EventLogger>();
75 auto jsonStr = "{\"domain_\":\"RELIABILITY\"}";
76 std::string testName = "EventLoggerTest_002";
77 std::shared_ptr<SysEvent> sysEvent = std::make_shared<SysEvent>(testName,
78 nullptr, jsonStr);
79 sysEvent->SetEventValue("EVENTNAME", testName);
80 sysEvent->SetEventValue("MODULE_NAME", testName);
81 sysEvent->SetEventValue("PACKAGE_NAME", testName);
82 sysEvent->SetEventValue("PROCESS_NAME", testName);
83 sysEvent->SetEventValue("eventLog_action", "pb:1");
84 sysEvent->SetEventValue("eventLog_interval", 1);
85 sysEvent->SetEventValue("STACK", "TEST\\nTEST\\nTEST");
86 sysEvent->SetEventValue("MSG", "TEST\\nTEST\\nTEST");
87 EXPECT_EQ(eventLogger->WriteCommonHead(1, sysEvent), true);
88 sysEvent->eventName_ = "UI_BLOCK_6S";
89 sysEvent->SetEventValue("BINDER_INFO", "async\\nEventLoggerTest");
90 EXPECT_EQ(eventLogger->WriteFreezeJsonInfo(1, 1, sysEvent), true);
91 sysEvent->SetEventValue("BINDER_INFO", "context");
92 EXPECT_EQ(eventLogger->WriteFreezeJsonInfo(1, 1, sysEvent), true);
93 std::string binderInfo = "1:1\\n1:1\\n" + std::to_string(getpid()) +
94 ":1\\n1:1\\n1:1\\n1:1\\n1:1";
95 sysEvent->SetEventValue("BINDER_INFO", binderInfo);
96 EXPECT_EQ(eventLogger->WriteFreezeJsonInfo(1, 1, sysEvent), true);
97 }
98
99 /**
100 * @tc.name: EventLoggerTest_003
101 * @tc.desc: add testcase coverage
102 * @tc.type: FUNC
103 */
104 static HWTEST_F(EventLoggerTest, EventLoggerTest_003, TestSize.Level3)
105 {
106 auto jsonStr = "{\"domain_\":\"RELIABILITY\"}";
107 std::shared_ptr<SysEvent> sysEvent = std::make_shared<SysEvent>("EventLoggerTest_003",
108 nullptr, jsonStr);
109 sysEvent->SetEventValue("eventLog_interval", 1);
110 sysEvent->SetEventValue("PID", getpid());
111 sysEvent->SetEventValue("NAME", "EventLoggerTest_003");
112 auto eventLogger = std::make_shared<EventLogger>();
113 eventLogger->eventTagTime_["NAME"] = 100;
114 eventLogger->eventTagTime_["EventLoggerTest_003"] = 100;
115 bool ret = eventLogger->JudgmentRateLimiting(sysEvent);
116 EXPECT_EQ(ret, true);
117 ret = eventLogger->UpdateDB(sysEvent, "nolog");
118 EXPECT_EQ(ret, true);
119 eventLogger->OnLoad();
120 eventLogger->OnUnload();
121 }
122
123 /**
124 * @tc.name: EventLoggerTest_004
125 * @tc.desc: add testcase coverage
126 * @tc.type: FUNC
127 */
128 static HWTEST_F(EventLoggerTest, EventLoggerTest_004, TestSize.Level3)
129 {
130 auto eventLogger = std::make_shared<EventLogger>();
131 eventLogger->cmdlineContent_ = "reboot_reason = EventLoggerTest "
132 "normal_reset_type = EventLoggerTest\\n";
133 eventLogger->rebootReasons_.push_back("EventLoggerTest");
134 std::string ret = eventLogger->GetRebootReason();
135 EXPECT_EQ(ret, "LONG_PRESS");
136 eventLogger->ProcessRebootEvent();
137 eventLogger->cmdlineContent_ = "reboot_reason";
138 ret = eventLogger->GetRebootReason();
139 EXPECT_EQ(ret, "");
140 eventLogger->ProcessRebootEvent();
141 EXPECT_EQ(eventLogger->GetListenerName(), "EventLogger");
142 }
143
144 /**
145 * @tc.name: EventLoggerTest_005
146 * @tc.desc: add testcase coverage
147 * @tc.type: FUNC
148 */
149 static HWTEST_F(EventLoggerTest, EventLoggerTest_005, TestSize.Level3)
150 {
151 auto eventLogger = std::make_shared<EventLogger>();
152 eventLogger->GetCmdlineContent();
153 eventLogger->GetRebootReasonConfig();
154 auto event = std::make_shared<Event>("sender", "event");
155 event->messageType_ = Event::MessageType::PLUGIN_MAINTENANCE;
156 bool ret = eventLogger->CanProcessRebootEvent(*(event.get()));
157 EXPECT_EQ(ret, true);
158 }
159 } // namesapce HiviewDFX
160 } // namespace OHOS
161