• 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 
16 #include "gtest/gtest.h"
17 #include "hilog_adapter.h"
18 #include "ohos_adapter_helper.h"
19 #include "hitrace_adapter_impl.h"
20 #include "application_context.h"
21 #include "parameters.h"
22 using namespace OHOS;
23 
24 using testing::ext::TestSize;
25 
26 namespace OHOS::NWeb {
27 /**
28  * @tc.name: NormalScene.
29  * @tc.desc: test normal scene of HiViewDFXAdapter.
30  * @tc.type: FUNC.
31  * @tc.require:
32  */
33 HWTEST(HiViewDFXAdapterTest, NormalScene, TestSize.Level1)
34 {
35     HiLogAdapter::PrintLog(LogLevelAdapter::INFO, "nwebTest", "nweb hilogAdapter PrintLog Test");
36 
37     HiLogAdapter::PrintConsoleLog(LogLevelAdapter::INFO, "ARKWEB-CONSOLE", "nwe console log test");
38 
39     int ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
40         "testEvent", HiSysEventAdapter::EventType::STATISTIC, { "testkey1", "0"});
41     EXPECT_EQ(ret, 0);
42 
43     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
44         "testEvent", HiSysEventAdapter::EventType::STATISTIC, { "testkey1", "0", "testkey2", "0"});
45     EXPECT_EQ(ret, 0);
46 
47     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
48         "testEvent", HiSysEventAdapter::EventType::STATISTIC, { "testkey1", "0", "testkey2", "0", "testkey3", "0" });
49     EXPECT_EQ(ret, 0);
50 
51     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write("testEvent",
52         HiSysEventAdapter::EventType::STATISTIC,
53         { "testkey1", "0", "testkey2", "testvalue2", "testkey3", "0", "testkey4", "testvalue4" });
54     EXPECT_EQ(ret, 0);
55 
56     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write("testEvent",
57         HiSysEventAdapter::EventType::STATISTIC,
58         { "testkey1", "0", "testkey2", "0", "testkey3", "0", "testkey4", "0", "testkey5", "0.0" });
59     EXPECT_EQ(ret, 0);
60 
61     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write("testEvent",
62         HiSysEventAdapter::EventType::STATISTIC,
63         { "testkey1", "0", "testkey2", "0", "testkey3", "0", "testkey4", "0", "testkey5", "0.0", "testkey6", "0.0" });
64     EXPECT_EQ(ret, 0);
65 
66     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write("testEvent",
67         HiSysEventAdapter::EventType::STATISTIC,
68         { "testkey1", "0", "testkey2", "0", "testkey3", "0", "testkey4", "0", "testkey5", "0.0", "testkey6", "0.0",
69           "testkey7", "0.0" });
70     EXPECT_EQ(ret, 0);
71 
72     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write("testEvent",
73         HiSysEventAdapter::EventType::STATISTIC,
74         { "testkey1", "0", "testkey2", "0", "testkey3", "0", "testkey4", "0", "testkey5", "0.0", "testkey6", "0.0",
75           "testkey7", "0.0", "testkey8", "0.0" });
76     EXPECT_EQ(ret, 0);
77 
78     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().StartTrace("test");
79     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().StartAsyncTrace("test", 0);
80     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().CountTrace("test", 1);
81     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().FinishAsyncTrace("test", 0);
82     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().FinishTrace();
83     HiTraceAdapterImpl::GetInstance().IsHiTraceEnable();
84 }
85 
86 /**
87  * @tc.name: NormalScene_01.
88  * @tc.desc: test normal scene of HiViewDFXAdapter.
89  * @tc.type: FUNC 01.
90  * @tc.require:
91  */
92 HWTEST(HiViewDFXAdapterTest, NormalScene_01, TestSize.Level1)
93 {
94     uint64_t val = 0;
95     std::string value = std::to_string(val);
96     OHOS::system::SetParameter("debug.hitrace.tags.enableflags", value);
97     auto ret = HiTraceAdapterImpl::GetInstance().IsACETraceEnable();
98     EXPECT_EQ(ret, 0);
99 
100     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().StartOHOSTrace("test");
101     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().CountOHOSTrace("test", 1);
102     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().FinishOHOSTrace();
103     val = (1ULL << 24);
104     value = std::to_string(val);
105     OHOS::system::SetParameter("debug.hitrace.tags.enableflags", value);
106     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().StartOHOSTrace("test");
107     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().CountOHOSTrace("test", 1);
108     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().FinishOHOSTrace();
109     val = (1ULL << 39);
110     value = std::to_string(val);
111     OHOS::system::SetParameter("debug.hitrace.tags.enableflags", value);
112     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().StartOHOSTrace("test");
113     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().CountOHOSTrace("test", 1);
114     OhosAdapterHelper::GetInstance().GetHiTraceAdapterInstance().FinishOHOSTrace();
115     HiTraceAdapterImpl::GetInstance().IsACETraceEnable();
116 }
117 
118 /**
119  * @tc.name: NormalScene_02.
120  * @tc.desc: test normal scene of HiViewDFXAdapter.
121  * @tc.type: FUNC.
122  * @tc.require:
123  */
124 HWTEST(HiViewDFXAdapterTest, NormalScene_02, TestSize.Level1)
125 {
126     const std::tuple<const std::string, const int64_t, const std::string, const int,
127         const std::string, const std::vector<uint16_t>, const std::string,
128         const int> data ("testkey1", 0, "testkey2", 0, "testkey3", {0}, "testkey4", 0);
129     int ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
130         "testEvent", HiSysEventAdapter::EventType::STATISTIC, data);
131 
132     const std::tuple<const std::string, const int64_t, const std::string, const int64_t,
133     const std::string, const int, const std::string, const int,
134     const std::string, const int64_t, const std::string, const int> data1 (
135         "testkey1", 0, "testkey2", 0, "testkey3", 0, "testkey4", 0, "testkey5", 0, "testkey6", 0);
136     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
137         "testEvent", HiSysEventAdapter::EventType::STATISTIC, data1);
138 
139     const std::tuple<const std::string, const int64_t,
140     const std::string, const int64_t, const std::string, const uint32_t,
141     const std::string, const int64_t, const std::string, const int64_t,
142     const std::string, const int64_t, const std::string, const int64_t,
143     const std::string, const int64_t, const std::string, const int64_t,
144     const std::string, const int64_t, const std::string, const int64_t,
145     const std::string, const int64_t, const std::string, const int64_t,
146     const std::string, const int64_t, const std::string, const int64_t,
147     const std::string, const int64_t, const std::string, const int64_t,
148     const std::string, const int64_t, const std::string, const int64_t,
149     const std::string, const int64_t, const std::string, const int64_t,
150     const std::string, const int64_t, const std::string, const int64_t> data2 (
151     "testkey1", 0, "testkey2", 0, "testkey3", 0, "testkey4", 0, "testkey5", 0, "testkey6", 0,
152     "testkey7", 0, "testkey8", 0, "testkey9", 0, "testkey10", 0, "testkey11", 0, "testkey12", 0,
153     "testkey13", 0, "testkey14", 0, "testkey15", 0, "testkey16", 0, "testkey17", 0, "testkey18", 0,
154     "testkey19", 0, "testkey20", 0, "testkey21", 0, "testkey22", 0, "testkey23", 0);
155     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
156         "testEvent", HiSysEventAdapter::EventType::STATISTIC, data2);
157 
158     const std::tuple<const std::string, const uint32_t,
159         const std::string, const uint64_t> data3 ("testkey1", 0, "testkey2", 0);
160     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write("testEvent",
161         HiSysEventAdapter::EventType::STATISTIC, data3);
162 }
163 
164 /**
165  * @tc.name: NormalScene_03.
166  * @tc.desc: test normal scene of HiViewDFXAdapter.
167  * @tc.type: FUNC.
168  * @tc.require:
169  */
170 HWTEST(HiViewDFXAdapterTest, NormalScene_03, TestSize.Level1)
171 {
172     auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
173     auto applicationContext = AbilityRuntime::ApplicationContext::GetInstance();
174     std::shared_ptr<AppExecFwk::ApplicationInfo> info = std::make_shared<AppExecFwk::ApplicationInfo>();
175     std::string bundleName = "NormalScene_03";
176     info->bundleName = bundleName;
177     contextImpl->SetApplicationInfo(info);
178     applicationContext->AttachContextImpl(contextImpl);
179     std::shared_ptr<AppExecFwk::ApplicationInfo> ans = AbilityRuntime::ApplicationContext
180         ::GetInstance()->GetApplicationInfo();
181     EXPECT_NE(ans, nullptr);
182 
183     const std::tuple<const std::string, const int64_t, const std::string, const int,
184         const std::string, const std::vector<uint16_t>, const std::string,
185         const int> data ("testkey1", 0, "testkey2", 0, "testkey3", {0}, "testkey4", 0);
186     int ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
187         "testEvent", HiSysEventAdapter::EventType::STATISTIC, data);
188 
189     const std::tuple<const std::string, const int64_t, const std::string, const int64_t,
190     const std::string, const int, const std::string, const int,
191     const std::string, const int64_t, const std::string, const int> data1 (
192         "testkey1", 0, "testkey2", 0, "testkey3", 0, "testkey4", 0, "testkey5", 0, "testkey6", 0);
193     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
194         "testEvent", HiSysEventAdapter::EventType::STATISTIC, data1);
195 
196     const std::tuple<const std::string, const int64_t,
197     const std::string, const int64_t, const std::string, const uint32_t,
198     const std::string, const int64_t, const std::string, const int64_t,
199     const std::string, const int64_t, const std::string, const int64_t,
200     const std::string, const int64_t, const std::string, const int64_t,
201     const std::string, const int64_t, const std::string, const int64_t,
202     const std::string, const int64_t, const std::string, const int64_t,
203     const std::string, const int64_t, const std::string, const int64_t,
204     const std::string, const int64_t, const std::string, const int64_t,
205     const std::string, const int64_t, const std::string, const int64_t,
206     const std::string, const int64_t, const std::string, const int64_t,
207     const std::string, const int64_t, const std::string, const int64_t> data2 (
208     "testkey1", 0, "testkey2", 0, "testkey3", 0, "testkey4", 0, "testkey5", 0, "testkey6", 0,
209     "testkey7", 0, "testkey8", 0, "testkey9", 0, "testkey10", 0, "testkey11", 0, "testkey12", 0,
210     "testkey13", 0, "testkey14", 0, "testkey15", 0, "testkey16", 0, "testkey17", 0, "testkey18", 0,
211     "testkey19", 0, "testkey20", 0, "testkey21", 0, "testkey22", 0, "testkey23", 0);
212     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
213         "testEvent", HiSysEventAdapter::EventType::STATISTIC, data2);
214 
215     const std::tuple<const std::string, const uint32_t,
216         const std::string, const uint64_t> data3 ("testkey1", 0, "testkey2", 0);
217     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write("testEvent",
218         HiSysEventAdapter::EventType::STATISTIC, data3);
219 
220     applicationContext->AttachContextImpl(nullptr);
221     ans = AbilityRuntime::ApplicationContext::GetInstance()->GetApplicationInfo();
222     EXPECT_EQ(ans, nullptr);
223 }
224 
225 /**
226  * @tc.name: NormalScene_04.
227  * @tc.desc: test normal scene of HiViewDFXAdapter.
228  * @tc.type: FUNC.
229  * @tc.require:
230  */
231 HWTEST(HiViewDFXAdapterTest, NormalScene_04, TestSize.Level1)
232 {
233     auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
234     auto applicationContext = AbilityRuntime::ApplicationContext::GetInstance();
235     std::shared_ptr<AppExecFwk::ApplicationInfo> info = std::make_shared<AppExecFwk::ApplicationInfo>();
236     std::string bundleName = "NormalScene_04";
237     info->bundleName = bundleName;
238     contextImpl->SetApplicationInfo(info);
239     applicationContext->AttachContextImpl(contextImpl);
240     std::shared_ptr<AppExecFwk::ApplicationInfo> ans = AbilityRuntime::ApplicationContext
241         ::GetInstance()->GetApplicationInfo();
242     EXPECT_NE(ans, nullptr);
243 
244     const std::string input = "NAVIGATION_ID" + std::to_string(0) + "NAVIGATION_START" + std::to_string(0) +
245         "REDIRECT_COUNT" + std::to_string(0) + "INPUT_TIME" + std::to_string(0) +
246         "FIRST_PAINT" + std::to_string(0) + "FIRST_CONTENTFUL_PAINT" + std::to_string(0) +
247         "FIRST_MEANINGFUL_PAINT" + std::to_string(0) + "IS_PAINT_DONE" + std::to_string(0);
248     const std::tuple<const std::string, const std::string> data (input, "");
249     int ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
250         "FIRST_MEANINGFUL_PAINT_DONE", HiSysEventAdapter::EventType::STATISTIC, data);
251     EXPECT_EQ(ret, 0);
252 
253     const std::string input1 = "NAVIGATION_ID" + std::to_string(0) + "NAVIGATION_START" + std::to_string(0) +
254         "REDIRECT_COUNT" + std::to_string(0) + "REDIRECT_START" + std::to_string(0) +
255         "REDIRECT_END" + std::to_string(0) + "FETCH_START" + std::to_string(0) +
256         "WORKER_START" + std::to_string(0) + "DOMAIN_LOOKUP_START" + std::to_string(0) +
257         "DOMAIN_LOOKUP_END" + std::to_string(0) + "CONNECT_START" + std::to_string(0) +
258         "SECURE_CONNECT_START" + std::to_string(0) + "CONNECT_END" + std::to_string(0) +
259         "REQUEST_START" + std::to_string(0) + "RESPONSE_START" + std::to_string(0) +
260         "RESPONSE_END" + std::to_string(0) + "DOM_INTERACTIVE" + std::to_string(0) +
261         "DOM_CONTENT_LOADED_EVENT_START" + std::to_string(0) + "DOM_CONTENT_LOADED_EVENT_END" + std::to_string(0) +
262         "LOAD_EVENT_START" + std::to_string(0) + "LOAD_EVENT_END" + std::to_string(0) +
263         "FIRST_PAINT" + std::to_string(0) + "FIRST_CONTENTFUL_PAINT" + std::to_string(0) +
264         "LARGEST_CONTENTFUL_PAINT" + std::to_string(0) + "RENDER_INIT_BLOCK" + std::to_string(0);
265     const std::tuple<const std::string, const std::string> data1 (input1, "");
266     ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
267         "PAGE_LOAD_TIME", HiSysEventAdapter::EventType::STATISTIC, data1);
268     EXPECT_EQ(ret, 0);
269 
270     applicationContext->AttachContextImpl(nullptr);
271     ans = AbilityRuntime::ApplicationContext::GetInstance()->GetApplicationInfo();
272     EXPECT_EQ(ans, nullptr);
273 }
274 
275 /**
276  * @tc.name: NormalScene_05.
277  * @tc.desc: test normal scene of HiViewDFXAdapter.
278  * @tc.type: FUNC.
279  * @tc.require:
280  */
281 HWTEST(HiViewDFXAdapterTest, NormalScene_05, TestSize.Level1)
282 {
283     auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
284     auto applicationContext = AbilityRuntime::ApplicationContext::GetInstance();
285     std::shared_ptr<AppExecFwk::ApplicationInfo> info = std::make_shared<AppExecFwk::ApplicationInfo>();
286     std::string bundleName = "NormalScene_05";
287     info->bundleName = bundleName;
288     contextImpl->SetApplicationInfo(info);
289     applicationContext->AttachContextImpl(contextImpl);
290     std::shared_ptr<AppExecFwk::ApplicationInfo> ans = AbilityRuntime::ApplicationContext
291         ::GetInstance()->GetApplicationInfo();
292     EXPECT_NE(ans, nullptr);
293 
294     const std::string input = "NAVIGATION_ID" + std::to_string(0) + "NAVIGATION_START" + std::to_string(LLONG_MAX) +
295         "REDIRECT_COUNT" + std::to_string(0) + "INPUT_TIME" + std::to_string(0) +
296         "FIRST_PAINT" + std::to_string(0) + "FIRST_CONTENTFUL_PAINT" + std::to_string(0) +
297         "FIRST_MEANINGFUL_PAINT" + std::to_string(0) + "IS_PAINT_DONEA" + std::to_string(0);
298     const std::tuple<const std::string, const std::string> data (input, "");
299     int ret = OhosAdapterHelper::GetInstance().GetHiSysEventAdapterInstance().Write(
300         "FIRST_MEANINGFUL_PAINT_DONE", HiSysEventAdapter::EventType::STATISTIC, data);
301     EXPECT_EQ(ret, 0);
302 
303     applicationContext->AttachContextImpl(nullptr);
304     ans = AbilityRuntime::ApplicationContext::GetInstance()->GetApplicationInfo();
305     EXPECT_EQ(ans, nullptr);
306 }
307 } // namespace OHOS::NWeb
308