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