1c29fa5a6Sopenharmony_ci/*
2c29fa5a6Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License.
5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at
6c29fa5a6Sopenharmony_ci *
7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
8c29fa5a6Sopenharmony_ci *
9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and
13c29fa5a6Sopenharmony_ci * limitations under the License.
14c29fa5a6Sopenharmony_ci */
15c29fa5a6Sopenharmony_ci
16c29fa5a6Sopenharmony_ci#include <gtest/gtest.h>
17c29fa5a6Sopenharmony_ci#include <libinput.h>
18c29fa5a6Sopenharmony_ci
19c29fa5a6Sopenharmony_ci#include "anr_manager.h"
20c29fa5a6Sopenharmony_ci#include "dfx_hisysevent.h"
21c29fa5a6Sopenharmony_ci#include "input_event_handler.h"
22c29fa5a6Sopenharmony_ci#include "i_input_windows_manager.h"
23c29fa5a6Sopenharmony_ci#include "mmi_log.h"
24c29fa5a6Sopenharmony_ci#include "napi_constants.h"
25c29fa5a6Sopenharmony_ci#include "proto.h"
26c29fa5a6Sopenharmony_ci#include "timer_manager.h"
27c29fa5a6Sopenharmony_ci#include "window_manager.h"
28c29fa5a6Sopenharmony_ci
29c29fa5a6Sopenharmony_cinamespace OHOS {
30c29fa5a6Sopenharmony_cinamespace MMI {
31c29fa5a6Sopenharmony_cinamespace {
32c29fa5a6Sopenharmony_ciusing namespace testing::ext;
33c29fa5a6Sopenharmony_ciconst std::string PROGRAM_NAME = "uds_session_test";
34c29fa5a6Sopenharmony_ciconstexpr int32_t MODULE_TYPE = 1;
35c29fa5a6Sopenharmony_ciconstexpr int32_t UDS_FD = 1;
36c29fa5a6Sopenharmony_ciconstexpr int32_t UDS_UID = 100;
37c29fa5a6Sopenharmony_ciconstexpr int32_t UDS_PID = 100;
38c29fa5a6Sopenharmony_ci} // namespace
39c29fa5a6Sopenharmony_ci
40c29fa5a6Sopenharmony_ciclass AnrManagerTest : public testing::Test {
41c29fa5a6Sopenharmony_cipublic:
42c29fa5a6Sopenharmony_ci    static void SetUpTestCase(void) {}
43c29fa5a6Sopenharmony_ci    static void TearDownTestCase(void) {}
44c29fa5a6Sopenharmony_ci};
45c29fa5a6Sopenharmony_ci
46c29fa5a6Sopenharmony_ci/**
47c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_MarkProcessed_001
48c29fa5a6Sopenharmony_ci * @tc.desc: Features of the mark processed function
49c29fa5a6Sopenharmony_ci * @tc.type: FUNC
50c29fa5a6Sopenharmony_ci * @tc.require:SR000HQ0RR
51c29fa5a6Sopenharmony_ci */
52c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_MarkProcessed_001, TestSize.Level1)
53c29fa5a6Sopenharmony_ci{
54c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
55c29fa5a6Sopenharmony_ci    UDSServer udsServer;
56c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->Init(udsServer));
57c29fa5a6Sopenharmony_ci    int32_t pid = 123;
58c29fa5a6Sopenharmony_ci    int32_t eventType = 1;
59c29fa5a6Sopenharmony_ci    int32_t eventId = 456;
60c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->MarkProcessed(pid, eventType, eventId));
61c29fa5a6Sopenharmony_ci}
62c29fa5a6Sopenharmony_ci
63c29fa5a6Sopenharmony_ci/**
64c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_RemoveTimers_001
65c29fa5a6Sopenharmony_ci * @tc.desc: Features of the remove timers function
66c29fa5a6Sopenharmony_ci * @tc.type: FUNC
67c29fa5a6Sopenharmony_ci * @tc.require:SR000HQ0RR
68c29fa5a6Sopenharmony_ci */
69c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_RemoveTimers_001, TestSize.Level1)
70c29fa5a6Sopenharmony_ci{
71c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
72c29fa5a6Sopenharmony_ci    UDSServer udsServer;
73c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->Init(udsServer));
74c29fa5a6Sopenharmony_ci    SessionPtr sess;
75c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->RemoveTimers(sess));
76c29fa5a6Sopenharmony_ci}
77c29fa5a6Sopenharmony_ci
78c29fa5a6Sopenharmony_ci/**
79c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_RemoveTimersByType_001
80c29fa5a6Sopenharmony_ci * @tc.desc: Remove timers by type abnormal
81c29fa5a6Sopenharmony_ci * @tc.type: FUNC
82c29fa5a6Sopenharmony_ci * @tc.require:SR000HQ0RR
83c29fa5a6Sopenharmony_ci */
84c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_RemoveTimersByType_001, TestSize.Level1)
85c29fa5a6Sopenharmony_ci{
86c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
87c29fa5a6Sopenharmony_ci    UDSServer udsServer;
88c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->Init(udsServer));
89c29fa5a6Sopenharmony_ci    SessionPtr session;
90c29fa5a6Sopenharmony_ci    int32_t dispatchType = -1;
91c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->RemoveTimersByType(session, dispatchType));
92c29fa5a6Sopenharmony_ci}
93c29fa5a6Sopenharmony_ci
94c29fa5a6Sopenharmony_ci/**
95c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_RemoveTimersByType_002
96c29fa5a6Sopenharmony_ci * @tc.desc: Remove timers by type abnormal
97c29fa5a6Sopenharmony_ci * @tc.type: FUNC
98c29fa5a6Sopenharmony_ci * @tc.require:SR000HQ0RR
99c29fa5a6Sopenharmony_ci */
100c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_RemoveTimersByType_002, TestSize.Level1)
101c29fa5a6Sopenharmony_ci{
102c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
103c29fa5a6Sopenharmony_ci    UDSServer udsServer;
104c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->Init(udsServer));
105c29fa5a6Sopenharmony_ci    SessionPtr session;
106c29fa5a6Sopenharmony_ci    int32_t monitorType = 0;
107c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->RemoveTimersByType(session, monitorType));
108c29fa5a6Sopenharmony_ci}
109c29fa5a6Sopenharmony_ci
110c29fa5a6Sopenharmony_ci/**
111c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_RemoveTimersByType_003
112c29fa5a6Sopenharmony_ci * @tc.desc: Remove timers by type normal
113c29fa5a6Sopenharmony_ci * @tc.type: FUNC
114c29fa5a6Sopenharmony_ci * @tc.require:SR000HQ0RR
115c29fa5a6Sopenharmony_ci */
116c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_RemoveTimersByType_003, TestSize.Level1)
117c29fa5a6Sopenharmony_ci{
118c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
119c29fa5a6Sopenharmony_ci    UDSServer udsServer;
120c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->Init(udsServer));
121c29fa5a6Sopenharmony_ci    SessionPtr session;
122c29fa5a6Sopenharmony_ci    int32_t illegalType = 123;
123c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->RemoveTimersByType(session, illegalType));
124c29fa5a6Sopenharmony_ci}
125c29fa5a6Sopenharmony_ci
126c29fa5a6Sopenharmony_ci/**
127c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_SetANRNoticedPid_001
128c29fa5a6Sopenharmony_ci * @tc.desc: Set noticed pid normal
129c29fa5a6Sopenharmony_ci * @tc.type: FUNC
130c29fa5a6Sopenharmony_ci * @tc.require:SR000HQ0RR
131c29fa5a6Sopenharmony_ci */
132c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_SetANRNoticedPid_003, TestSize.Level1)
133c29fa5a6Sopenharmony_ci{
134c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
135c29fa5a6Sopenharmony_ci    UDSServer udsServer;
136c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->Init(udsServer));
137c29fa5a6Sopenharmony_ci    int32_t pid = 1234;
138c29fa5a6Sopenharmony_ci    int32_t ret = ANRMgr->SetANRNoticedPid(pid);
139c29fa5a6Sopenharmony_ci    ASSERT_EQ(ret, RET_OK);
140c29fa5a6Sopenharmony_ci}
141c29fa5a6Sopenharmony_ci
142c29fa5a6Sopenharmony_ci/**
143c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_SetANRNoticedPid_002
144c29fa5a6Sopenharmony_ci * @tc.desc: Set noticed pid abnormal
145c29fa5a6Sopenharmony_ci * @tc.type: FUNC
146c29fa5a6Sopenharmony_ci * @tc.require:SR000HQ0RR
147c29fa5a6Sopenharmony_ci */
148c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_SetANRNoticedPid_002, TestSize.Level1)
149c29fa5a6Sopenharmony_ci{
150c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
151c29fa5a6Sopenharmony_ci    UDSServer udsServer;
152c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->Init(udsServer));
153c29fa5a6Sopenharmony_ci    int32_t pid = -1;
154c29fa5a6Sopenharmony_ci    int32_t ret = ANRMgr->SetANRNoticedPid(pid);
155c29fa5a6Sopenharmony_ci    ASSERT_EQ(ret, RET_OK);
156c29fa5a6Sopenharmony_ci}
157c29fa5a6Sopenharmony_ci
158c29fa5a6Sopenharmony_ci/**
159c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_AddTimer_001
160c29fa5a6Sopenharmony_ci * @tc.desc: Add timer function normal
161c29fa5a6Sopenharmony_ci * @tc.type: FUNC
162c29fa5a6Sopenharmony_ci * @tc.require:SR000HQ0RR
163c29fa5a6Sopenharmony_ci */
164c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_AddTimer_001, TestSize.Level1)
165c29fa5a6Sopenharmony_ci{
166c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
167c29fa5a6Sopenharmony_ci    int32_t type = 1;
168c29fa5a6Sopenharmony_ci    int32_t id = 1001;
169c29fa5a6Sopenharmony_ci    int64_t currentTime = 123456789;
170c29fa5a6Sopenharmony_ci    SessionPtr sess = std::shared_ptr<OHOS::MMI::UDSSession>();
171c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->AddTimer(type, id, currentTime, sess));
172c29fa5a6Sopenharmony_ci}
173c29fa5a6Sopenharmony_ci
174c29fa5a6Sopenharmony_ci/**
175c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_AddTimer_002
176c29fa5a6Sopenharmony_ci * @tc.desc: Add timer function abnormal
177c29fa5a6Sopenharmony_ci * @tc.type: FUNC
178c29fa5a6Sopenharmony_ci * @tc.require:SR000HQ0RR
179c29fa5a6Sopenharmony_ci */
180c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_AddTimer_002, TestSize.Level1)
181c29fa5a6Sopenharmony_ci{
182c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
183c29fa5a6Sopenharmony_ci    int32_t type = -1;
184c29fa5a6Sopenharmony_ci    int32_t id = -2;
185c29fa5a6Sopenharmony_ci    int64_t currentTime = 123456789;
186c29fa5a6Sopenharmony_ci    SessionPtr sess = std::shared_ptr<OHOS::MMI::UDSSession>();
187c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(ANRMgr->AddTimer(type, id, currentTime, sess));
188c29fa5a6Sopenharmony_ci}
189c29fa5a6Sopenharmony_ci
190c29fa5a6Sopenharmony_ci/**
191c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_TriggerANR_001
192c29fa5a6Sopenharmony_ci * @tc.desc: Trigger function normal
193c29fa5a6Sopenharmony_ci * @tc.type: FUNC
194c29fa5a6Sopenharmony_ci * @tc.require:SR000HQ0RR
195c29fa5a6Sopenharmony_ci */
196c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_TriggerANR_001, TestSize.Level1)
197c29fa5a6Sopenharmony_ci{
198c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
199c29fa5a6Sopenharmony_ci    int32_t type = 1;
200c29fa5a6Sopenharmony_ci    int64_t time = 123456789;
201c29fa5a6Sopenharmony_ci    SessionPtr sess = std::shared_ptr<OHOS::MMI::UDSSession>();
202c29fa5a6Sopenharmony_ci    bool result = ANRMgr->TriggerANR(type, time, sess);
203c29fa5a6Sopenharmony_ci    EXPECT_FALSE(result);
204c29fa5a6Sopenharmony_ci}
205c29fa5a6Sopenharmony_ci
206c29fa5a6Sopenharmony_ci/**
207c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_MarkProcessed_002
208c29fa5a6Sopenharmony_ci * @tc.desc: Cover the else branch of the if (pid_ != pid)
209c29fa5a6Sopenharmony_ci * @tc.type: FUNC
210c29fa5a6Sopenharmony_ci * @tc.require:
211c29fa5a6Sopenharmony_ci */
212c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_MarkProcessed_002, TestSize.Level1)
213c29fa5a6Sopenharmony_ci{
214c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
215c29fa5a6Sopenharmony_ci    ANRManager anrMgr;
216c29fa5a6Sopenharmony_ci    UDSServer udsServer;
217c29fa5a6Sopenharmony_ci    int32_t pid = 10;
218c29fa5a6Sopenharmony_ci    int32_t eventType = 1;
219c29fa5a6Sopenharmony_ci    int32_t eventId = 100;
220c29fa5a6Sopenharmony_ci    udsServer.pid_ = 20;
221c29fa5a6Sopenharmony_ci    anrMgr.pid_ = 10;
222c29fa5a6Sopenharmony_ci    anrMgr.udsServer_ = &udsServer;
223c29fa5a6Sopenharmony_ci    ASSERT_EQ(anrMgr.MarkProcessed(pid, eventType, eventId), RET_ERR);
224c29fa5a6Sopenharmony_ci}
225c29fa5a6Sopenharmony_ci
226c29fa5a6Sopenharmony_ci/**
227c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_AddTimer_003
228c29fa5a6Sopenharmony_ci * @tc.desc: Cover the else branch of the
229c29fa5a6Sopenharmony_ci * <br> if (sess->GetTokenType() != TokenType::TOKEN_HAP || sess->GetProgramName() == FOUNDATION)
230c29fa5a6Sopenharmony_ci * @tc.type: FUNC
231c29fa5a6Sopenharmony_ci * @tc.require:
232c29fa5a6Sopenharmony_ci */
233c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_AddTimer_003, TestSize.Level1)
234c29fa5a6Sopenharmony_ci{
235c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
236c29fa5a6Sopenharmony_ci    ANRManager anrMgr;
237c29fa5a6Sopenharmony_ci    int32_t type = ANR_MONITOR;
238c29fa5a6Sopenharmony_ci    int32_t id = 1;
239c29fa5a6Sopenharmony_ci    int64_t currentTime = 100;
240c29fa5a6Sopenharmony_ci    std::string programName = "foundation";
241c29fa5a6Sopenharmony_ci    SessionPtr sess = std::make_shared<UDSSession>(programName, MODULE_TYPE, UDS_FD, UDS_UID, UDS_PID);
242c29fa5a6Sopenharmony_ci    sess->SetTokenType(TokenType::TOKEN_NATIVE);
243c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(anrMgr.AddTimer(type, id, currentTime, sess));
244c29fa5a6Sopenharmony_ci
245c29fa5a6Sopenharmony_ci    sess->SetTokenType(TokenType::TOKEN_HAP);
246c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(anrMgr.AddTimer(type, id, currentTime, sess));
247c29fa5a6Sopenharmony_ci}
248c29fa5a6Sopenharmony_ci
249c29fa5a6Sopenharmony_ci/**
250c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_AddTimer_004
251c29fa5a6Sopenharmony_ci * @tc.desc:Cover the else branch of the if (anrTimerCount_ >= MAX_TIMER_COUNT)
252c29fa5a6Sopenharmony_ci * @tc.type: FUNC
253c29fa5a6Sopenharmony_ci * @tc.require:
254c29fa5a6Sopenharmony_ci */
255c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_AddTimer_004, TestSize.Level1)
256c29fa5a6Sopenharmony_ci{
257c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
258c29fa5a6Sopenharmony_ci    ANRManager anrMgr;
259c29fa5a6Sopenharmony_ci    int32_t type = ANR_MONITOR;
260c29fa5a6Sopenharmony_ci    int32_t id = 1;
261c29fa5a6Sopenharmony_ci    int64_t currentTime = 100;
262c29fa5a6Sopenharmony_ci    SessionPtr sess = std::make_shared<UDSSession>(PROGRAM_NAME, MODULE_TYPE, UDS_FD, UDS_UID, UDS_PID);
263c29fa5a6Sopenharmony_ci    sess->SetTokenType(TokenType::TOKEN_HAP);
264c29fa5a6Sopenharmony_ci    anrMgr.anrTimerCount_ = 51;
265c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(anrMgr.AddTimer(type, id, currentTime, sess));
266c29fa5a6Sopenharmony_ci
267c29fa5a6Sopenharmony_ci    anrMgr.anrTimerCount_ = 49;
268c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(anrMgr.AddTimer(type, id, currentTime, sess));
269c29fa5a6Sopenharmony_ci}
270c29fa5a6Sopenharmony_ci
271c29fa5a6Sopenharmony_ci/**
272c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_RemoveTimers_002
273c29fa5a6Sopenharmony_ci * @tc.desc: Cover the RemoveTimers function branch
274c29fa5a6Sopenharmony_ci * @tc.type: FUNC
275c29fa5a6Sopenharmony_ci * @tc.require:
276c29fa5a6Sopenharmony_ci */
277c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_RemoveTimers_002, TestSize.Level1)
278c29fa5a6Sopenharmony_ci{
279c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
280c29fa5a6Sopenharmony_ci    ANRManager anrMgr;
281c29fa5a6Sopenharmony_ci    SessionPtr sess = std::make_shared<UDSSession>(PROGRAM_NAME, MODULE_TYPE, UDS_FD, UDS_UID, UDS_PID);
282c29fa5a6Sopenharmony_ci    std::vector<UDSSession::EventTime> events { { 0, 0, -1 }, { 1, 1, 10 } };
283c29fa5a6Sopenharmony_ci    sess->events_[ANR_DISPATCH] = events;
284c29fa5a6Sopenharmony_ci    sess->events_[ANR_MONITOR] = events;
285c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(anrMgr.RemoveTimers(sess));
286c29fa5a6Sopenharmony_ci}
287c29fa5a6Sopenharmony_ci
288c29fa5a6Sopenharmony_ci/**
289c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_RemoveTimersByType_004
290c29fa5a6Sopenharmony_ci * @tc.desc: Cover the RemoveTimersByType function branch
291c29fa5a6Sopenharmony_ci * @tc.type: FUNC
292c29fa5a6Sopenharmony_ci * @tc.require:
293c29fa5a6Sopenharmony_ci */
294c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_RemoveTimersByType_004, TestSize.Level1)
295c29fa5a6Sopenharmony_ci{
296c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
297c29fa5a6Sopenharmony_ci    ANRManager anrMgr;
298c29fa5a6Sopenharmony_ci    SessionPtr sess = std::make_shared<UDSSession>(PROGRAM_NAME, MODULE_TYPE, UDS_FD, UDS_UID, UDS_PID);
299c29fa5a6Sopenharmony_ci    int32_t type = 5;
300c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(anrMgr.RemoveTimersByType(sess, type));
301c29fa5a6Sopenharmony_ci
302c29fa5a6Sopenharmony_ci    type = ANR_DISPATCH;
303c29fa5a6Sopenharmony_ci    std::vector<UDSSession::EventTime> events { { 0, 0, -1 }, { 1, 1, 10 } };
304c29fa5a6Sopenharmony_ci    sess->events_[ANR_MONITOR] = events;
305c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(anrMgr.RemoveTimersByType(sess, type));
306c29fa5a6Sopenharmony_ci}
307c29fa5a6Sopenharmony_ci
308c29fa5a6Sopenharmony_ci/**
309c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_TriggerANR_002
310c29fa5a6Sopenharmony_ci * @tc.desc: Cover the TriggerANR function branch
311c29fa5a6Sopenharmony_ci * @tc.type: FUNC
312c29fa5a6Sopenharmony_ci * @tc.require:
313c29fa5a6Sopenharmony_ci */
314c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_TriggerANR_002, TestSize.Level1)
315c29fa5a6Sopenharmony_ci{
316c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
317c29fa5a6Sopenharmony_ci    ANRManager anrMgr;
318c29fa5a6Sopenharmony_ci    int32_t type = ANR_MONITOR;
319c29fa5a6Sopenharmony_ci    int64_t time = 1;
320c29fa5a6Sopenharmony_ci    std::string programName = "foundation";
321c29fa5a6Sopenharmony_ci    SessionPtr sess = std::make_shared<UDSSession>(programName, MODULE_TYPE, UDS_FD, UDS_UID, UDS_PID);
322c29fa5a6Sopenharmony_ci    UDSServer udsServer;
323c29fa5a6Sopenharmony_ci    anrMgr.udsServer_ = &udsServer;
324c29fa5a6Sopenharmony_ci    sess->SetTokenType(TokenType::TOKEN_NATIVE);
325c29fa5a6Sopenharmony_ci    EXPECT_FALSE(anrMgr.TriggerANR(type, time, sess));
326c29fa5a6Sopenharmony_ci
327c29fa5a6Sopenharmony_ci    sess->SetTokenType(TokenType::TOKEN_HAP);
328c29fa5a6Sopenharmony_ci    EXPECT_FALSE(anrMgr.TriggerANR(type, time, sess));
329c29fa5a6Sopenharmony_ci
330c29fa5a6Sopenharmony_ci    bool status = true;
331c29fa5a6Sopenharmony_ci    SessionPtr session = std::make_shared<UDSSession>(PROGRAM_NAME, MODULE_TYPE, UDS_FD, UDS_UID, UDS_PID);
332c29fa5a6Sopenharmony_ci    session->SetTokenType(TokenType::TOKEN_HAP);
333c29fa5a6Sopenharmony_ci    session->SetAnrStatus(type, status);
334c29fa5a6Sopenharmony_ci    EXPECT_TRUE(anrMgr.TriggerANR(type, time, session));
335c29fa5a6Sopenharmony_ci
336c29fa5a6Sopenharmony_ci    type = ANR_DISPATCH;
337c29fa5a6Sopenharmony_ci    status = false;
338c29fa5a6Sopenharmony_ci    EXPECT_FALSE(anrMgr.TriggerANR(type, time, session));
339c29fa5a6Sopenharmony_ci}
340c29fa5a6Sopenharmony_ci
341c29fa5a6Sopenharmony_ci/**
342c29fa5a6Sopenharmony_ci * @tc.name: AnrManagerTest_OnSessionLost
343c29fa5a6Sopenharmony_ci * @tc.desc: Cover the OnSessionLost function branch
344c29fa5a6Sopenharmony_ci * @tc.type: FUNC
345c29fa5a6Sopenharmony_ci * @tc.require:
346c29fa5a6Sopenharmony_ci */
347c29fa5a6Sopenharmony_ciHWTEST_F(AnrManagerTest, AnrManagerTest_OnSessionLost, TestSize.Level1)
348c29fa5a6Sopenharmony_ci{
349c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
350c29fa5a6Sopenharmony_ci    ANRManager anrMgr;
351c29fa5a6Sopenharmony_ci    SessionPtr sess = std::make_shared<UDSSession>(PROGRAM_NAME, MODULE_TYPE, UDS_FD, UDS_UID, UDS_PID);
352c29fa5a6Sopenharmony_ci    anrMgr.anrNoticedPid_ = UDS_PID;
353c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(anrMgr.OnSessionLost(sess));
354c29fa5a6Sopenharmony_ci
355c29fa5a6Sopenharmony_ci    anrMgr.anrNoticedPid_ = 200;
356c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(anrMgr.OnSessionLost(sess));
357c29fa5a6Sopenharmony_ci}
358c29fa5a6Sopenharmony_ci} // namespace MMI
359c29fa5a6Sopenharmony_ci} // namespace OHOS