1 /*
2 * Copyright (c) 2022 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
16 #include "auto_test_manager.h"
17
18 #include <iostream>
19 #include <memory>
20
21 #include "dfx/event_injector.h"
22
23 namespace OHOS {
AutoTestManager()24 AutoTestManager::AutoTestManager()
25 {
26 SetUpTestCase();
27 }
28
~AutoTestManager()29 AutoTestManager::~AutoTestManager()
30 {
31 TearDownTestCase();
32 }
33
GetInstance()34 AutoTestManager* AutoTestManager::GetInstance()
35 {
36 static AutoTestManager instance;
37 return &instance;
38 }
39
SetUpTestCase()40 void AutoTestManager::SetUpTestCase()
41 {
42 autoTest_ = std::make_shared<UIAutoTest>();
43
44 #ifdef _WIN32
45 const char logPath[] = ".\\auto_test_log.txt";
46 CompareTools::SetLogPath(logPath, sizeof(logPath));
47 #else
48 const char logPath[] = "./auto_test_log.txt";
49 CompareTools::SetLogPath(logPath, sizeof(logPath));
50 #endif
51 EventInjector::GetInstance()->RegisterEventInjector(EventDataType::POINT_TYPE);
52 EventInjector::GetInstance()->RegisterEventInjector(EventDataType::KEY_TYPE);
53 #if defined(ENABLE_WINDOW) && ENABLE_WINDOW
54 Window* window = RootView::GetInstance()->GetBoundWindow();
55 if (window != nullptr) {
56 EventInjector::GetInstance()->SetWindowId(window->GetWindowId());
57 }
58 #endif
59 }
60
TearDownTestCase()61 void AutoTestManager::TearDownTestCase()
62 {
63 if (EventInjector::GetInstance()->IsEventInjectorRegistered(EventDataType::POINT_TYPE)) {
64 EventInjector::GetInstance()->UnregisterEventInjector(EventDataType::POINT_TYPE);
65 }
66 if (EventInjector::GetInstance()->IsEventInjectorRegistered(EventDataType::KEY_TYPE)) {
67 EventInjector::GetInstance()->UnregisterEventInjector(EventDataType::KEY_TYPE);
68 }
69 }
70
SendMsg(size_t mainID)71 void AutoTestManager::SendMsg(size_t mainID)
72 {
73 sendMsgFunc_(mainID);
74 }
75
SetSendMsgFuncCallBack(SendMsgFunc sendMsgFunc)76 void AutoTestManager::SetSendMsgFuncCallBack(SendMsgFunc sendMsgFunc)
77 {
78 sendMsgFunc_ = sendMsgFunc;
79 }
80
StartTest(std::vector<std::shared_ptr<TestMsgInfo>> msgInfo)81 void AutoTestManager::StartTest(std::vector<std::shared_ptr<TestMsgInfo>> msgInfo)
82 {
83 printf("AutoTestManager::StartTest----msgInfo.size=[%d]\n", msgInfo.size());
84 fflush(stdout);
85 if (!autoTest_) {
86 return;
87 }
88
89 autoTest_->RunTest(msgInfo);
90 }
91
TestComplete()92 void AutoTestManager::TestComplete()
93 {
94 if (!autoTest_) {
95 return;
96 }
97
98 autoTest_->TestComplete();
99 }
100
SetConfigInfo(const std::shared_ptr<TestConfigInfo> configInfo)101 void AutoTestManager::SetConfigInfo(const std::shared_ptr<TestConfigInfo> configInfo)
102 {
103 configInfo_ = configInfo;
104 printf("AutoTestManager::SetConfigInfo--testMode=[%zu], baseDir=[%s], runDir=[%s], logDir=[%s]\n",
105 configInfo_->testMode, configInfo_->baseDir.c_str(), configInfo_->runDir.c_str(),
106 configInfo_->logDir.c_str());
107 fflush(stdout);
108 SendMsg(C_S_MAIN_ID_REQUEST_TEST_INFO);
109 }
110
GetConfigInfo()111 std::shared_ptr<TestConfigInfo> AutoTestManager::GetConfigInfo()
112 {
113 return configInfo_;
114 }
115 }
116