• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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