1c29fa5a6Sopenharmony_ci/*
2c29fa5a6Sopenharmony_ci * Copyright (c) 2021-2022 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 <sys/socket.h>
18c29fa5a6Sopenharmony_ci
19c29fa5a6Sopenharmony_ci#include "proto.h"
20c29fa5a6Sopenharmony_ci#include "uds_session.h"
21c29fa5a6Sopenharmony_ci
22c29fa5a6Sopenharmony_cinamespace OHOS {
23c29fa5a6Sopenharmony_cinamespace MMI {
24c29fa5a6Sopenharmony_cinamespace {
25c29fa5a6Sopenharmony_ciusing namespace testing::ext;
26c29fa5a6Sopenharmony_ciconstexpr int32_t UID_ROOT { 0 };
27c29fa5a6Sopenharmony_ci} // namespace
28c29fa5a6Sopenharmony_ci
29c29fa5a6Sopenharmony_ciclass UDSSessionTest : public testing::Test {
30c29fa5a6Sopenharmony_cipublic:
31c29fa5a6Sopenharmony_ci    static void SetUpTestCase(void) {}
32c29fa5a6Sopenharmony_ci    static void TearDownTestCase(void) {}
33c29fa5a6Sopenharmony_ci    static constexpr char PROGRAM_NAME[] = "uds_sesion_test";
34c29fa5a6Sopenharmony_ci    const int32_t moduleType_ = 3;
35c29fa5a6Sopenharmony_ci    static inline int32_t pid_ = 0;
36c29fa5a6Sopenharmony_ci    int32_t writeFd_ = -1;
37c29fa5a6Sopenharmony_ci    int32_t readFd_ = -1;
38c29fa5a6Sopenharmony_ci    void SetUp() override;
39c29fa5a6Sopenharmony_ci    void TearDown() override;
40c29fa5a6Sopenharmony_ci};
41c29fa5a6Sopenharmony_civoid UDSSessionTest::SetUp()
42c29fa5a6Sopenharmony_ci{
43c29fa5a6Sopenharmony_ci    UDSSessionTest::pid_ = getpid();
44c29fa5a6Sopenharmony_ci    int32_t sockFds[2] = {};
45c29fa5a6Sopenharmony_ci    auto ret = socketpair(AF_UNIX, SOCK_STREAM, 0, sockFds);
46c29fa5a6Sopenharmony_ci    ASSERT_EQ(ret, 0);
47c29fa5a6Sopenharmony_ci
48c29fa5a6Sopenharmony_ci    writeFd_ = sockFds[0];
49c29fa5a6Sopenharmony_ci    readFd_ = sockFds[1];
50c29fa5a6Sopenharmony_ci}
51c29fa5a6Sopenharmony_ci
52c29fa5a6Sopenharmony_civoid UDSSessionTest::TearDown()
53c29fa5a6Sopenharmony_ci{
54c29fa5a6Sopenharmony_ci    close(writeFd_);
55c29fa5a6Sopenharmony_ci    writeFd_ = -1;
56c29fa5a6Sopenharmony_ci    close(readFd_);
57c29fa5a6Sopenharmony_ci    readFd_ = -1;
58c29fa5a6Sopenharmony_ci}
59c29fa5a6Sopenharmony_ci
60c29fa5a6Sopenharmony_ci/**
61c29fa5a6Sopenharmony_ci * @tc.name: Construct
62c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function EventsIsEmpty
63c29fa5a6Sopenharmony_ci * @tc.type: FUNC
64c29fa5a6Sopenharmony_ci * @tc.require:
65c29fa5a6Sopenharmony_ci */
66c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, Construct, TestSize.Level1)
67c29fa5a6Sopenharmony_ci{
68c29fa5a6Sopenharmony_ci    UDSSession udsSession(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
69c29fa5a6Sopenharmony_ci    bool retResult = udsSession.IsEventQueueEmpty();
70c29fa5a6Sopenharmony_ci    EXPECT_TRUE(retResult);
71c29fa5a6Sopenharmony_ci}
72c29fa5a6Sopenharmony_ci
73c29fa5a6Sopenharmony_ci/**
74c29fa5a6Sopenharmony_ci * @tc.name: SendMsg_type1_001
75c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function sendMsg
76c29fa5a6Sopenharmony_ci * @tc.type: FUNC
77c29fa5a6Sopenharmony_ci * @tc.require:
78c29fa5a6Sopenharmony_ci */
79c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, SendMsg_type1_001, TestSize.Level1)
80c29fa5a6Sopenharmony_ci{
81c29fa5a6Sopenharmony_ci    const char *buf = "1234";
82c29fa5a6Sopenharmony_ci    size_t size = 4;
83c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
84c29fa5a6Sopenharmony_ci    bool retResult = sesObj.SendMsg(buf, size);
85c29fa5a6Sopenharmony_ci    EXPECT_TRUE(retResult);
86c29fa5a6Sopenharmony_ci}
87c29fa5a6Sopenharmony_ci
88c29fa5a6Sopenharmony_ci/**
89c29fa5a6Sopenharmony_ci * @tc.name: SendMsg_type1_002
90c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function SendMsg
91c29fa5a6Sopenharmony_ci * @tc.type: FUNC
92c29fa5a6Sopenharmony_ci * @tc.require:
93c29fa5a6Sopenharmony_ci */
94c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, SendMsg_type1_002, TestSize.Level1)
95c29fa5a6Sopenharmony_ci{
96c29fa5a6Sopenharmony_ci    const char *buf = nullptr;
97c29fa5a6Sopenharmony_ci    size_t size = 4;
98c29fa5a6Sopenharmony_ci
99c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
100c29fa5a6Sopenharmony_ci    bool retResult = sesObj.SendMsg(buf, size);
101c29fa5a6Sopenharmony_ci    EXPECT_FALSE(retResult);
102c29fa5a6Sopenharmony_ci}
103c29fa5a6Sopenharmony_ci
104c29fa5a6Sopenharmony_ci/**
105c29fa5a6Sopenharmony_ci * @tc.name: SendMsg_type1_003
106c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function SendMsg
107c29fa5a6Sopenharmony_ci * @tc.type: FUNC
108c29fa5a6Sopenharmony_ci * @tc.require:
109c29fa5a6Sopenharmony_ci */
110c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, SendMsg_type1_003, TestSize.Level1)
111c29fa5a6Sopenharmony_ci{
112c29fa5a6Sopenharmony_ci    const char *buf = nullptr;
113c29fa5a6Sopenharmony_ci    size_t size = 0;
114c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
115c29fa5a6Sopenharmony_ci    bool retResult = sesObj.SendMsg(buf, size);
116c29fa5a6Sopenharmony_ci    EXPECT_FALSE(retResult);
117c29fa5a6Sopenharmony_ci}
118c29fa5a6Sopenharmony_ci
119c29fa5a6Sopenharmony_ci/**
120c29fa5a6Sopenharmony_ci * @tc.name: SendMsg_type1_004
121c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function SendMsg
122c29fa5a6Sopenharmony_ci * @tc.type: FUNC
123c29fa5a6Sopenharmony_ci * @tc.require:
124c29fa5a6Sopenharmony_ci */
125c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, SendMsg_type1_004, TestSize.Level1)
126c29fa5a6Sopenharmony_ci{
127c29fa5a6Sopenharmony_ci    const char *buf = "this unit data";
128c29fa5a6Sopenharmony_ci    size_t size = 14;
129c29fa5a6Sopenharmony_ci
130c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
131c29fa5a6Sopenharmony_ci    bool retResult = sesObj.SendMsg(buf, size);
132c29fa5a6Sopenharmony_ci    EXPECT_TRUE(retResult);
133c29fa5a6Sopenharmony_ci}
134c29fa5a6Sopenharmony_ci
135c29fa5a6Sopenharmony_ci/**
136c29fa5a6Sopenharmony_ci * @tc.name: SendMsg_type1_005
137c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function SendMsg
138c29fa5a6Sopenharmony_ci * @tc.type: FUNC
139c29fa5a6Sopenharmony_ci * @tc.require:
140c29fa5a6Sopenharmony_ci */
141c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, SendMsg_type1_005, TestSize.Level1)
142c29fa5a6Sopenharmony_ci{
143c29fa5a6Sopenharmony_ci    const char *buf = "this unit data";
144c29fa5a6Sopenharmony_ci    size_t size = -1001;
145c29fa5a6Sopenharmony_ci
146c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
147c29fa5a6Sopenharmony_ci    bool retResult = sesObj.SendMsg(buf, size);
148c29fa5a6Sopenharmony_ci    EXPECT_FALSE(retResult);
149c29fa5a6Sopenharmony_ci}
150c29fa5a6Sopenharmony_ci
151c29fa5a6Sopenharmony_ci/**
152c29fa5a6Sopenharmony_ci * @tc.name: SendMsg_type2_001
153c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function SendMsg
154c29fa5a6Sopenharmony_ci * @tc.type: FUNC
155c29fa5a6Sopenharmony_ci * @tc.require:
156c29fa5a6Sopenharmony_ci */
157c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, SendMsg_type2_001, TestSize.Level1)
158c29fa5a6Sopenharmony_ci{
159c29fa5a6Sopenharmony_ci    int32_t fd = -1;
160c29fa5a6Sopenharmony_ci    NetPacket pkt(MmiMessageId::INVALID);
161c29fa5a6Sopenharmony_ci
162c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, fd, UID_ROOT, pid_);
163c29fa5a6Sopenharmony_ci    bool retResult = sesObj.SendMsg(pkt);
164c29fa5a6Sopenharmony_ci    EXPECT_FALSE(retResult);
165c29fa5a6Sopenharmony_ci}
166c29fa5a6Sopenharmony_ci
167c29fa5a6Sopenharmony_ci/**
168c29fa5a6Sopenharmony_ci * @tc.name: SendMsg_type2_002
169c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function SendMsg
170c29fa5a6Sopenharmony_ci * @tc.type: FUNC
171c29fa5a6Sopenharmony_ci * @tc.require:
172c29fa5a6Sopenharmony_ci */
173c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, SendMsg_type2_002, TestSize.Level1)
174c29fa5a6Sopenharmony_ci{
175c29fa5a6Sopenharmony_ci    NetPacket pkt(MmiMessageId::INVALID);
176c29fa5a6Sopenharmony_ci
177c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
178c29fa5a6Sopenharmony_ci    bool retResult = sesObj.SendMsg(pkt);
179c29fa5a6Sopenharmony_ci    EXPECT_TRUE(retResult);
180c29fa5a6Sopenharmony_ci}
181c29fa5a6Sopenharmony_ci
182c29fa5a6Sopenharmony_ci/**
183c29fa5a6Sopenharmony_ci * @tc.name: SendMsg_type2_003
184c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function SendMsg
185c29fa5a6Sopenharmony_ci * @tc.type: FUNC
186c29fa5a6Sopenharmony_ci * @tc.require:
187c29fa5a6Sopenharmony_ci */
188c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, SendMsg_type2_003, TestSize.Level1)
189c29fa5a6Sopenharmony_ci{
190c29fa5a6Sopenharmony_ci    int32_t fd = -65535;
191c29fa5a6Sopenharmony_ci    NetPacket pkt(MmiMessageId::INVALID);
192c29fa5a6Sopenharmony_ci
193c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, fd, UID_ROOT, pid_);
194c29fa5a6Sopenharmony_ci    bool retResult = sesObj.SendMsg(pkt);
195c29fa5a6Sopenharmony_ci    EXPECT_FALSE(retResult);
196c29fa5a6Sopenharmony_ci}
197c29fa5a6Sopenharmony_ci
198c29fa5a6Sopenharmony_ci/**
199c29fa5a6Sopenharmony_ci * @tc.name: GetTimerIds
200c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function GetTimerIds
201c29fa5a6Sopenharmony_ci * @tc.type: FUNC
202c29fa5a6Sopenharmony_ci * @tc.require:
203c29fa5a6Sopenharmony_ci */
204c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, GetTimerIds, TestSize.Level1)
205c29fa5a6Sopenharmony_ci{
206c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
207c29fa5a6Sopenharmony_ci
208c29fa5a6Sopenharmony_ci    auto currentTime = GetSysClockTime();
209c29fa5a6Sopenharmony_ci    int32_t type = ANR_DISPATCH;
210c29fa5a6Sopenharmony_ci    int32_t timerId = 1;
211c29fa5a6Sopenharmony_ci    sesObj.SaveANREvent(type, 1, currentTime, timerId);
212c29fa5a6Sopenharmony_ci
213c29fa5a6Sopenharmony_ci    std::vector<int32_t> ids = sesObj.GetTimerIds(type);
214c29fa5a6Sopenharmony_ci    if (ids.empty()) {
215c29fa5a6Sopenharmony_ci        ASSERT_FALSE(true);
216c29fa5a6Sopenharmony_ci    }
217c29fa5a6Sopenharmony_ci    EXPECT_EQ(ids[0], timerId);
218c29fa5a6Sopenharmony_ci}
219c29fa5a6Sopenharmony_ci
220c29fa5a6Sopenharmony_ci/**
221c29fa5a6Sopenharmony_ci * @tc.name: DelEvents
222c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function DelEvents
223c29fa5a6Sopenharmony_ci * @tc.type: FUNC
224c29fa5a6Sopenharmony_ci * @tc.require:
225c29fa5a6Sopenharmony_ci */
226c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, DelEvents, TestSize.Level1)
227c29fa5a6Sopenharmony_ci{
228c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
229c29fa5a6Sopenharmony_ci
230c29fa5a6Sopenharmony_ci    int32_t type = ANR_DISPATCH;
231c29fa5a6Sopenharmony_ci    int32_t timerId = 0;
232c29fa5a6Sopenharmony_ci    const int32_t idLen = 5;
233c29fa5a6Sopenharmony_ci    int32_t i = 0;
234c29fa5a6Sopenharmony_ci    for (; i < idLen; ++i) {
235c29fa5a6Sopenharmony_ci        auto currentTime = GetSysClockTime();
236c29fa5a6Sopenharmony_ci        sesObj.SaveANREvent(type, i, currentTime, timerId + i);
237c29fa5a6Sopenharmony_ci    }
238c29fa5a6Sopenharmony_ci
239c29fa5a6Sopenharmony_ci    std::list<int32_t> timerIds = sesObj.DelEvents(type, i - 2);
240c29fa5a6Sopenharmony_ci    EXPECT_EQ(timerIds.size(), idLen - 1);
241c29fa5a6Sopenharmony_ci}
242c29fa5a6Sopenharmony_ci
243c29fa5a6Sopenharmony_ci/**
244c29fa5a6Sopenharmony_ci * @tc.name: UDSSessionTest_DelEvents_01
245c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function DelEvents
246c29fa5a6Sopenharmony_ci * @tc.type: FUNC
247c29fa5a6Sopenharmony_ci * @tc.require:
248c29fa5a6Sopenharmony_ci */
249c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, UDSSessionTest_DelEvents_01, TestSize.Level1)
250c29fa5a6Sopenharmony_ci{
251c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
252c29fa5a6Sopenharmony_ci    int32_t type = 3;
253c29fa5a6Sopenharmony_ci    int32_t id = 2;
254c29fa5a6Sopenharmony_ci    UDSSession::EventTime event;
255c29fa5a6Sopenharmony_ci    event.id = 4;
256c29fa5a6Sopenharmony_ci    event.eventTime = 1000;
257c29fa5a6Sopenharmony_ci    event.timerId = 5;
258c29fa5a6Sopenharmony_ci
259c29fa5a6Sopenharmony_ci    int32_t key = 1;
260c29fa5a6Sopenharmony_ci    sesObj.events_[key].push_back(event);
261c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(sesObj.DelEvents(type, id));
262c29fa5a6Sopenharmony_ci}
263c29fa5a6Sopenharmony_ci
264c29fa5a6Sopenharmony_ci/**
265c29fa5a6Sopenharmony_ci * @tc.name: UDSSessionTest_DelEvents_02
266c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function DelEvents
267c29fa5a6Sopenharmony_ci * @tc.type: FUNC
268c29fa5a6Sopenharmony_ci * @tc.require:
269c29fa5a6Sopenharmony_ci */
270c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, UDSSessionTest_DelEvents_02, TestSize.Level1)
271c29fa5a6Sopenharmony_ci{
272c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
273c29fa5a6Sopenharmony_ci    int32_t type = 1;
274c29fa5a6Sopenharmony_ci    int32_t id = 2;
275c29fa5a6Sopenharmony_ci    UDSSession::EventTime event;
276c29fa5a6Sopenharmony_ci    event.id = 4;
277c29fa5a6Sopenharmony_ci    event.eventTime = 1000;
278c29fa5a6Sopenharmony_ci    event.timerId = 5;
279c29fa5a6Sopenharmony_ci
280c29fa5a6Sopenharmony_ci    int32_t key = 1;
281c29fa5a6Sopenharmony_ci    sesObj.events_[key].push_back(event);
282c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(sesObj.DelEvents(type, id));
283c29fa5a6Sopenharmony_ci
284c29fa5a6Sopenharmony_ci    id = 5;
285c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(sesObj.DelEvents(type, id));
286c29fa5a6Sopenharmony_ci}
287c29fa5a6Sopenharmony_ci
288c29fa5a6Sopenharmony_ci/**
289c29fa5a6Sopenharmony_ci * @tc.name: UDSSessionTest_GetEarliestEventTime_01
290c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function DelEvents
291c29fa5a6Sopenharmony_ci * @tc.type: FUNC
292c29fa5a6Sopenharmony_ci * @tc.require:
293c29fa5a6Sopenharmony_ci */
294c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, UDSSessionTest_GetEarliestEventTime_01, TestSize.Level1)
295c29fa5a6Sopenharmony_ci{
296c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
297c29fa5a6Sopenharmony_ci    int32_t type = 1;
298c29fa5a6Sopenharmony_ci    UDSSession::EventTime event;
299c29fa5a6Sopenharmony_ci    event.id = 4;
300c29fa5a6Sopenharmony_ci    event.eventTime = 1000;
301c29fa5a6Sopenharmony_ci    event.timerId = 5;
302c29fa5a6Sopenharmony_ci
303c29fa5a6Sopenharmony_ci    int32_t key = 1;
304c29fa5a6Sopenharmony_ci    sesObj.events_[key].push_back(event);
305c29fa5a6Sopenharmony_ci    int64_t ret = sesObj.GetEarliestEventTime(type);
306c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, 1000);
307c29fa5a6Sopenharmony_ci
308c29fa5a6Sopenharmony_ci    type = 2;
309c29fa5a6Sopenharmony_ci    int64_t ret2 = sesObj.GetEarliestEventTime(type);
310c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret2, 0);
311c29fa5a6Sopenharmony_ci}
312c29fa5a6Sopenharmony_ci
313c29fa5a6Sopenharmony_ci/**
314c29fa5a6Sopenharmony_ci * @tc.name: UDSSessionTest_SaveANREvent_01
315c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function SaveANREvent
316c29fa5a6Sopenharmony_ci * @tc.type: FUNC
317c29fa5a6Sopenharmony_ci * @tc.require:
318c29fa5a6Sopenharmony_ci */
319c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, UDSSessionTest_SaveANREvent_01, TestSize.Level1)
320c29fa5a6Sopenharmony_ci{
321c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
322c29fa5a6Sopenharmony_ci    int32_t type = 1;
323c29fa5a6Sopenharmony_ci    int32_t id = 2;
324c29fa5a6Sopenharmony_ci    int64_t time = 5;
325c29fa5a6Sopenharmony_ci    int32_t timerId = 6;
326c29fa5a6Sopenharmony_ci    UDSSession::EventTime event;
327c29fa5a6Sopenharmony_ci    event.id = 4;
328c29fa5a6Sopenharmony_ci    event.eventTime = 1000;
329c29fa5a6Sopenharmony_ci    event.timerId = 5;
330c29fa5a6Sopenharmony_ci
331c29fa5a6Sopenharmony_ci    int32_t key = 1;
332c29fa5a6Sopenharmony_ci    sesObj.events_[key].push_back(event);
333c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(sesObj.SaveANREvent(type, id, time, timerId));
334c29fa5a6Sopenharmony_ci
335c29fa5a6Sopenharmony_ci    type = 3;
336c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(sesObj.SaveANREvent(type, id, time, timerId));
337c29fa5a6Sopenharmony_ci}
338c29fa5a6Sopenharmony_ci
339c29fa5a6Sopenharmony_ci/**
340c29fa5a6Sopenharmony_ci * @tc.name: UDSSessionTest_GetTimerIds_01
341c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function GetTimerIds
342c29fa5a6Sopenharmony_ci * @tc.type: FUNC
343c29fa5a6Sopenharmony_ci * @tc.require:
344c29fa5a6Sopenharmony_ci */
345c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, UDSSessionTest_GetTimerIds_01, TestSize.Level1)
346c29fa5a6Sopenharmony_ci{
347c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
348c29fa5a6Sopenharmony_ci    int32_t type = 1;
349c29fa5a6Sopenharmony_ci    UDSSession::EventTime event;
350c29fa5a6Sopenharmony_ci    event.id = 4;
351c29fa5a6Sopenharmony_ci    event.eventTime = 1000;
352c29fa5a6Sopenharmony_ci    event.timerId = 5;
353c29fa5a6Sopenharmony_ci
354c29fa5a6Sopenharmony_ci    int32_t key = 1;
355c29fa5a6Sopenharmony_ci    sesObj.events_[key].push_back(event);
356c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(sesObj.GetTimerIds(type));
357c29fa5a6Sopenharmony_ci
358c29fa5a6Sopenharmony_ci    type = 2;
359c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(sesObj.GetTimerIds(type));
360c29fa5a6Sopenharmony_ci}
361c29fa5a6Sopenharmony_ci
362c29fa5a6Sopenharmony_ci/**
363c29fa5a6Sopenharmony_ci * @tc.name: UDSSessionTest_sendMsg_01
364c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function sendMsg
365c29fa5a6Sopenharmony_ci * @tc.type: FUNC
366c29fa5a6Sopenharmony_ci * @tc.require:
367c29fa5a6Sopenharmony_ci */
368c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, UDSSessionTest_sendMsg_01, TestSize.Level1)
369c29fa5a6Sopenharmony_ci{
370c29fa5a6Sopenharmony_ci    const char *buf = "123";
371c29fa5a6Sopenharmony_ci    size_t size = 0;
372c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
373c29fa5a6Sopenharmony_ci    bool retResult = sesObj.SendMsg(buf, size);
374c29fa5a6Sopenharmony_ci    EXPECT_FALSE(retResult);
375c29fa5a6Sopenharmony_ci}
376c29fa5a6Sopenharmony_ci
377c29fa5a6Sopenharmony_ci/**
378c29fa5a6Sopenharmony_ci * @tc.name: UDSSessionTest_Close_01
379c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function Close
380c29fa5a6Sopenharmony_ci * @tc.type: FUNC
381c29fa5a6Sopenharmony_ci * @tc.require:
382c29fa5a6Sopenharmony_ci */
383c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, UDSSessionTest_Close_01, TestSize.Level1)
384c29fa5a6Sopenharmony_ci{
385c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
386c29fa5a6Sopenharmony_ci    sesObj.fd_ = -1;
387c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(sesObj.Close());
388c29fa5a6Sopenharmony_ci}
389c29fa5a6Sopenharmony_ci
390c29fa5a6Sopenharmony_ci/**
391c29fa5a6Sopenharmony_ci * @tc.name: UDSSessionTest_ReportSocketBufferFull_01
392c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function ReportSocketBufferFull
393c29fa5a6Sopenharmony_ci * @tc.type: FUNC
394c29fa5a6Sopenharmony_ci * @tc.require:
395c29fa5a6Sopenharmony_ci */
396c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, UDSSessionTest_ReportSocketBufferFull_01, TestSize.Level1)
397c29fa5a6Sopenharmony_ci{
398c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
399c29fa5a6Sopenharmony_ci    ASSERT_NO_FATAL_FAILURE(sesObj.ReportSocketBufferFull());
400c29fa5a6Sopenharmony_ci}
401c29fa5a6Sopenharmony_ci
402c29fa5a6Sopenharmony_ci/**
403c29fa5a6Sopenharmony_ci * @tc.name: GetEarliestEventTime
404c29fa5a6Sopenharmony_ci * @tc.desc: Verify uds session function GetEarliestEventTime
405c29fa5a6Sopenharmony_ci * @tc.type: FUNC
406c29fa5a6Sopenharmony_ci * @tc.require:
407c29fa5a6Sopenharmony_ci */
408c29fa5a6Sopenharmony_ciHWTEST_F(UDSSessionTest, GetEarliestEventTime, TestSize.Level1)
409c29fa5a6Sopenharmony_ci{
410c29fa5a6Sopenharmony_ci    UDSSession sesObj(PROGRAM_NAME, moduleType_, writeFd_, UID_ROOT, pid_);
411c29fa5a6Sopenharmony_ci
412c29fa5a6Sopenharmony_ci    int32_t type = ANR_DISPATCH;
413c29fa5a6Sopenharmony_ci    int32_t timerId = 0;
414c29fa5a6Sopenharmony_ci    const int32_t idLen = 5;
415c29fa5a6Sopenharmony_ci    int64_t currentTime = GetSysClockTime();
416c29fa5a6Sopenharmony_ci    int64_t earliestEventTime = currentTime;
417c29fa5a6Sopenharmony_ci    sesObj.SaveANREvent(type, 0, currentTime, timerId);
418c29fa5a6Sopenharmony_ci    for (int32_t i = 1; i < idLen; ++i) {
419c29fa5a6Sopenharmony_ci        currentTime = GetSysClockTime();
420c29fa5a6Sopenharmony_ci        sesObj.SaveANREvent(type, i, currentTime, timerId + i);
421c29fa5a6Sopenharmony_ci    }
422c29fa5a6Sopenharmony_ci
423c29fa5a6Sopenharmony_ci    int64_t eventTime = sesObj.GetEarliestEventTime(type);
424c29fa5a6Sopenharmony_ci    EXPECT_EQ(eventTime, earliestEventTime);
425c29fa5a6Sopenharmony_ci}
426c29fa5a6Sopenharmony_ci} // namespace MMI
427c29fa5a6Sopenharmony_ci} // namespace OHOS
428