1c29fa5a6Sopenharmony_ci/* 2c29fa5a6Sopenharmony_ci * Copyright (c) 2023-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 <fcntl.h> 17c29fa5a6Sopenharmony_ci#include <gtest/gtest.h> 18c29fa5a6Sopenharmony_ci 19c29fa5a6Sopenharmony_ci#include <cerrno> 20c29fa5a6Sopenharmony_ci#include <cstdio> 21c29fa5a6Sopenharmony_ci 22c29fa5a6Sopenharmony_ci#include "event_dump.h" 23c29fa5a6Sopenharmony_ci#include "event_log_helper.h" 24c29fa5a6Sopenharmony_ci#include "i_input_windows_manager.h" 25c29fa5a6Sopenharmony_ci#include "input_device_manager.h" 26c29fa5a6Sopenharmony_ci#include "input_event_handler.h" 27c29fa5a6Sopenharmony_ci#include "input_manager.h" 28c29fa5a6Sopenharmony_ci#include "input_manager_util.h" 29c29fa5a6Sopenharmony_ci#include "mouse_event_normalize.h" 30c29fa5a6Sopenharmony_ci#include "multimodal_event_handler.h" 31c29fa5a6Sopenharmony_ci#include "system_info.h" 32c29fa5a6Sopenharmony_ci 33c29fa5a6Sopenharmony_ci#undef MMI_LOG_TAG 34c29fa5a6Sopenharmony_ci#define MMI_LOG_TAG "EventDumpTest" 35c29fa5a6Sopenharmony_ci 36c29fa5a6Sopenharmony_cinamespace OHOS { 37c29fa5a6Sopenharmony_cinamespace MMI { 38c29fa5a6Sopenharmony_cinamespace { 39c29fa5a6Sopenharmony_ciusing namespace testing::ext; 40c29fa5a6Sopenharmony_ciconst std::string TEST_FILE_NAME = "/data/log.log"; 41c29fa5a6Sopenharmony_ci} // namespace 42c29fa5a6Sopenharmony_ci 43c29fa5a6Sopenharmony_ciclass EventDumpTest : public testing::Test { 44c29fa5a6Sopenharmony_cipublic: 45c29fa5a6Sopenharmony_ci void SetUp() override 46c29fa5a6Sopenharmony_ci { 47c29fa5a6Sopenharmony_ci fd_ = open(TEST_FILE_NAME.c_str(), O_WRONLY); 48c29fa5a6Sopenharmony_ci } 49c29fa5a6Sopenharmony_ci 50c29fa5a6Sopenharmony_ci void TearDown() override 51c29fa5a6Sopenharmony_ci { 52c29fa5a6Sopenharmony_ci close(fd_); 53c29fa5a6Sopenharmony_ci fd_ = -1; 54c29fa5a6Sopenharmony_ci } 55c29fa5a6Sopenharmony_ci 56c29fa5a6Sopenharmony_ci int32_t fd_; 57c29fa5a6Sopenharmony_ci}; 58c29fa5a6Sopenharmony_ci 59c29fa5a6Sopenharmony_ci/** 60c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_CheckCount_001 61c29fa5a6Sopenharmony_ci * @tc.desc: Event dump CheckCount 62c29fa5a6Sopenharmony_ci * @tc.type: FUNC 63c29fa5a6Sopenharmony_ci * @tc.require: 64c29fa5a6Sopenharmony_ci */ 65c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest001, TestSize.Level1) 66c29fa5a6Sopenharmony_ci{ 67c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 68c29fa5a6Sopenharmony_ci std::vector<std::string> args; 69c29fa5a6Sopenharmony_ci int32_t count = 0; 70c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 71c29fa5a6Sopenharmony_ci EXPECT_EQ(count, 0); 72c29fa5a6Sopenharmony_ci} 73c29fa5a6Sopenharmony_ci 74c29fa5a6Sopenharmony_ci/** 75c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_CheckCount_002 76c29fa5a6Sopenharmony_ci * @tc.desc: Event dump CheckCount 77c29fa5a6Sopenharmony_ci * @tc.type: FUNC 78c29fa5a6Sopenharmony_ci * @tc.require: 79c29fa5a6Sopenharmony_ci */ 80c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest002, TestSize.Level1) 81c29fa5a6Sopenharmony_ci{ 82c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 83c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"--help"}; 84c29fa5a6Sopenharmony_ci int32_t count = 0; 85c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 86c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 87c29fa5a6Sopenharmony_ci EXPECT_EQ(count, 1); 88c29fa5a6Sopenharmony_ci} 89c29fa5a6Sopenharmony_ci 90c29fa5a6Sopenharmony_ci/** 91c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_CheckCount_003 92c29fa5a6Sopenharmony_ci * @tc.desc: Event dump CheckCount 93c29fa5a6Sopenharmony_ci * @tc.type: FUNC 94c29fa5a6Sopenharmony_ci * @tc.require: 95c29fa5a6Sopenharmony_ci */ 96c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest003, TestSize.Level1) 97c29fa5a6Sopenharmony_ci{ 98c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 99c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-h"}; 100c29fa5a6Sopenharmony_ci int32_t count = 0; 101c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 102c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 103c29fa5a6Sopenharmony_ci EXPECT_EQ(count, 1); 104c29fa5a6Sopenharmony_ci} 105c29fa5a6Sopenharmony_ci 106c29fa5a6Sopenharmony_ci/** 107c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_CheckCount_004 108c29fa5a6Sopenharmony_ci * @tc.desc: Event dump CheckCount 109c29fa5a6Sopenharmony_ci * @tc.type: FUNC 110c29fa5a6Sopenharmony_ci * @tc.require: 111c29fa5a6Sopenharmony_ci */ 112c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest004, TestSize.Level1) 113c29fa5a6Sopenharmony_ci{ 114c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 115c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-abc"}; 116c29fa5a6Sopenharmony_ci int32_t count = 0; 117c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 118c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 119c29fa5a6Sopenharmony_ci EXPECT_EQ(count, 3); 120c29fa5a6Sopenharmony_ci} 121c29fa5a6Sopenharmony_ci 122c29fa5a6Sopenharmony_ci/** 123c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_CheckCount_005 124c29fa5a6Sopenharmony_ci * @tc.desc: Event dump CheckCount 125c29fa5a6Sopenharmony_ci * @tc.type: FUNC 126c29fa5a6Sopenharmony_ci * @tc.require: 127c29fa5a6Sopenharmony_ci */ 128c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest005, TestSize.Level1) 129c29fa5a6Sopenharmony_ci{ 130c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 131c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-a", "--help", "foo", "-bc", "bar"}; 132c29fa5a6Sopenharmony_ci int32_t count = 0; 133c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 134c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 135c29fa5a6Sopenharmony_ci MMIEventDump->DumpEventHelp(fd_, args); 136c29fa5a6Sopenharmony_ci EXPECT_EQ(count, 4); 137c29fa5a6Sopenharmony_ci} 138c29fa5a6Sopenharmony_ci 139c29fa5a6Sopenharmony_ci/** 140c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_006 141c29fa5a6Sopenharmony_ci * @tc.desc: Event dump InputDeviceManager 142c29fa5a6Sopenharmony_ci * @tc.type: FUNC 143c29fa5a6Sopenharmony_ci * @tc.require: 144c29fa5a6Sopenharmony_ci */ 145c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest006, TestSize.Level1) 146c29fa5a6Sopenharmony_ci{ 147c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 148c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-d"}; 149c29fa5a6Sopenharmony_ci int32_t count = 0; 150c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 151c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 152c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(INPUT_DEV_MGR->Dump(fd_, args)); 153c29fa5a6Sopenharmony_ci} 154c29fa5a6Sopenharmony_ci 155c29fa5a6Sopenharmony_ci/** 156c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_007 157c29fa5a6Sopenharmony_ci * @tc.desc: Event dump DeviceList 158c29fa5a6Sopenharmony_ci * @tc.type: FUNC 159c29fa5a6Sopenharmony_ci * @tc.require: 160c29fa5a6Sopenharmony_ci */ 161c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest007, TestSize.Level1) 162c29fa5a6Sopenharmony_ci{ 163c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 164c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-l"}; 165c29fa5a6Sopenharmony_ci int32_t count = 0; 166c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 167c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 168c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(INPUT_DEV_MGR->DumpDeviceList(fd_, args)); 169c29fa5a6Sopenharmony_ci} 170c29fa5a6Sopenharmony_ci 171c29fa5a6Sopenharmony_ci/** 172c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_008 173c29fa5a6Sopenharmony_ci * @tc.desc: Event dump WindowsManager 174c29fa5a6Sopenharmony_ci * @tc.type: FUNC 175c29fa5a6Sopenharmony_ci * @tc.require: 176c29fa5a6Sopenharmony_ci */ 177c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest008, TestSize.Level1) 178c29fa5a6Sopenharmony_ci{ 179c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 180c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-w"}; 181c29fa5a6Sopenharmony_ci int32_t count = 0; 182c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 183c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 184c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(WIN_MGR->Dump(fd_, args)); 185c29fa5a6Sopenharmony_ci} 186c29fa5a6Sopenharmony_ci 187c29fa5a6Sopenharmony_ci/** 188c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_009 189c29fa5a6Sopenharmony_ci * @tc.desc: Event dump UDSServer 190c29fa5a6Sopenharmony_ci * @tc.type: FUNC 191c29fa5a6Sopenharmony_ci * @tc.require: 192c29fa5a6Sopenharmony_ci */ 193c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest009, TestSize.Level1) 194c29fa5a6Sopenharmony_ci{ 195c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 196c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-u"}; 197c29fa5a6Sopenharmony_ci int32_t count = 0; 198c29fa5a6Sopenharmony_ci auto udsServer = InputHandler->GetUDSServer(); 199c29fa5a6Sopenharmony_ci CHKPV(udsServer); 200c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 201c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 202c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(udsServer->Dump(fd_, args)); 203c29fa5a6Sopenharmony_ci} 204c29fa5a6Sopenharmony_ci 205c29fa5a6Sopenharmony_ci/** 206c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_010 207c29fa5a6Sopenharmony_ci * @tc.desc: Event dump SubscriberHandler 208c29fa5a6Sopenharmony_ci * @tc.type: FUNC 209c29fa5a6Sopenharmony_ci * @tc.require: 210c29fa5a6Sopenharmony_ci */ 211c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest010, TestSize.Level1) 212c29fa5a6Sopenharmony_ci{ 213c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 214c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-s"}; 215c29fa5a6Sopenharmony_ci int32_t count = 0; 216c29fa5a6Sopenharmony_ci auto subscriberHandler = InputHandler->GetSubscriberHandler(); 217c29fa5a6Sopenharmony_ci CHKPV(subscriberHandler); 218c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 219c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 220c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(subscriberHandler->Dump(fd_, args)); 221c29fa5a6Sopenharmony_ci} 222c29fa5a6Sopenharmony_ci 223c29fa5a6Sopenharmony_ci/** 224c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_011 225c29fa5a6Sopenharmony_ci * @tc.desc: Event dump MonitorHandler 226c29fa5a6Sopenharmony_ci * @tc.type: FUNC 227c29fa5a6Sopenharmony_ci * @tc.require: 228c29fa5a6Sopenharmony_ci */ 229c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest011, TestSize.Level1) 230c29fa5a6Sopenharmony_ci{ 231c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 232c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-o"}; 233c29fa5a6Sopenharmony_ci int32_t count = 0; 234c29fa5a6Sopenharmony_ci auto monitorHandler = InputHandler->GetMonitorHandler(); 235c29fa5a6Sopenharmony_ci CHKPV(monitorHandler); 236c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 237c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 238c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(monitorHandler->Dump(fd_, args)); 239c29fa5a6Sopenharmony_ci} 240c29fa5a6Sopenharmony_ci 241c29fa5a6Sopenharmony_ci/** 242c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_012 243c29fa5a6Sopenharmony_ci * @tc.desc: Event dump InterceptorHandler 244c29fa5a6Sopenharmony_ci * @tc.type: FUNC 245c29fa5a6Sopenharmony_ci * @tc.require: 246c29fa5a6Sopenharmony_ci */ 247c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest012, TestSize.Level1) 248c29fa5a6Sopenharmony_ci{ 249c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 250c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-i"}; 251c29fa5a6Sopenharmony_ci int32_t count = 0; 252c29fa5a6Sopenharmony_ci auto interceptorHandler = InputHandler->GetInterceptorHandler(); 253c29fa5a6Sopenharmony_ci CHKPV(interceptorHandler); 254c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 255c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 256c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(interceptorHandler->Dump(fd_, args)); 257c29fa5a6Sopenharmony_ci} 258c29fa5a6Sopenharmony_ci 259c29fa5a6Sopenharmony_ci/** 260c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_013 261c29fa5a6Sopenharmony_ci * @tc.desc: Event dump FilterHandler 262c29fa5a6Sopenharmony_ci * @tc.type: FUNC 263c29fa5a6Sopenharmony_ci * @tc.require: 264c29fa5a6Sopenharmony_ci */ 265c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest013, TestSize.Level1) 266c29fa5a6Sopenharmony_ci{ 267c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 268c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-f"}; 269c29fa5a6Sopenharmony_ci int32_t count = 0; 270c29fa5a6Sopenharmony_ci auto filterHandler = InputHandler->GetFilterHandler(); 271c29fa5a6Sopenharmony_ci CHKPV(filterHandler); 272c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 273c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 274c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(filterHandler->Dump(fd_, args)); 275c29fa5a6Sopenharmony_ci} 276c29fa5a6Sopenharmony_ci 277c29fa5a6Sopenharmony_ci/** 278c29fa5a6Sopenharmony_ci * @tc.name: EventDumpTest_014 279c29fa5a6Sopenharmony_ci * @tc.desc: Event dump MouseEventHandler 280c29fa5a6Sopenharmony_ci * @tc.type: FUNC 281c29fa5a6Sopenharmony_ci * @tc.require: 282c29fa5a6Sopenharmony_ci */ 283c29fa5a6Sopenharmony_ciHWTEST_F(EventDumpTest, EventDumpTest014, TestSize.Level1) 284c29fa5a6Sopenharmony_ci{ 285c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 286c29fa5a6Sopenharmony_ci std::vector<std::string> args = {"-m"}; 287c29fa5a6Sopenharmony_ci int32_t count = 0; 288c29fa5a6Sopenharmony_ci MMIEventDump->CheckCount(fd_, args, count); 289c29fa5a6Sopenharmony_ci MMIEventDump->ParseCommand(fd_, args); 290c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(MouseEventHdr->Dump(fd_, args)); 291c29fa5a6Sopenharmony_ci} 292c29fa5a6Sopenharmony_ci} // namespace MMI 293c29fa5a6Sopenharmony_ci} // namespace OHOS