1/* 2 * Copyright (C) 2021 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 */ 15import hiTraceChain from '@ohos.hiTraceChain' 16import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from '@ohos/hypium' 17import hilog from '@ohos.hilog' 18 19export default function HiTraceJsTest() { 20describe('HiTraceJsTest', function () { 21 22 /** 23 * run before testClass 24 */ 25 beforeAll(function () { 26 console.info('beforeAll called'); 27 }) 28 29 /** 30 * run after testClass 31 */ 32 afterAll(function () { 33 console.info('afterAll called'); 34 }) 35 36 /** 37 * @tc.number DFX_DFT_Hitrace_JS_001 38 * @tc.name hitrace interface test 39 * @tc.desc hitrace begin interface test. 40 */ 41 it('testHitraceApi01', 1, async function (done) { 42 console.info('testHitraceApi01 start'); 43 try{ 44 let traceId = hiTraceChain.begin("hitrace01"); 45 let traceIdIsvalid = hiTraceChain.isValid(traceId); 46 if(!traceIdIsvalid){ 47 expect().assertFail(); 48 console.log(`testHitraceApi01 got an error: ${JSON.stringify(error)}`); 49 } 50 hiTraceChain.end(traceId); 51 } catch (error){ 52 console.log(`testHitraceApi01 got an error: ${JSON.stringify(error)}`); 53 expect().assertFail(); 54 done(); 55 } 56 console.info('testHitraceApi01 end'); 57 done(); 58 }) 59 60 /** 61 * @tc.number DFX_DFT_Hitrace_JS_002 62 * @tc.name hitrace interface test 63 * @tc.desc hitrace begin interface test. 64 */ 65 it('testHitraceApi02', 1, async function (done) { 66 console.info('testHitraceApi02 start'); 67 try{ 68 let traceId = hiTraceChain.begin("hitrace02", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | 69 hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN); 70 let traceIdIsvalid = hiTraceChain.isValid(traceId); 71 if(!traceIdIsvalid){ 72 expect().assertFail(); 73 console.log(`testHitraceApi02 got an error: ${JSON.stringify(error)}`); 74 } 75 hiTraceChain.end(traceId); 76 } catch (error){ 77 console.log(`testHitraceApi02 got an error: ${JSON.stringify(error)}`); 78 expect().assertFail(); 79 done(); 80 } 81 console.info('testHitraceApi02 end'); 82 done(); 83 }) 84 85 /** 86 * @tc.number DFX_DFT_Hitrace_JS_003 87 * @tc.name hitrace interface test 88 * @tc.desc hitrace begin interface test. 89 */ 90 it('testHitraceApi03', 1, async function (done) { 91 console.info('testHitraceApi03 start'); 92 try{ 93 let traceId = hiTraceChain.begin("hitrace03", hiTraceChain.HiTraceFlag.TP_INFO); 94 let curTraceId = hiTraceChain.getId(); 95 if(traceId.chainId != curTraceId.chainId){ 96 expect().assertFail(); 97 console.log(`testHitraceApi03 got an error: ${JSON.stringify(error)}`); 98 } 99 hiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.THREAD, 100 hiTraceChain.HiTraceTracepointType.SS, traceId, "hitrace api test."); 101 hiTraceChain.end(traceId); 102 } catch (error){ 103 console.log(`testHitraceApi03 got an error: ${JSON.stringify(error)}`); 104 expect().assertFail(); 105 done(); 106 } 107 console.info('testHitraceApi03 end'); 108 done(); 109 }) 110 111 /** 112 * @tc.number DFX_DFT_Hitrace_JS_004 113 * @tc.name hitrace interface test 114 * @tc.desc hitrace begin interface test. 115 */ 116 it('testHitraceApi04', 1, async function (done) { 117 console.info('testHitraceApi04 start'); 118 try{ 119 let traceId = hiTraceChain.begin("hitrace04", hiTraceChain.HiTraceFlag.NO_BE_INFO); 120 let spanTraceId = hiTraceChain.createSpan(); 121 let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(traceId, hiTraceChain.HiTraceFlag.NO_BE_INFO); 122 if(!enabledDoNotCreateSpanFlag){ 123 expect().assertFail(); 124 console.log(`testHitraceApi04 got an error: ${JSON.stringify(error)}`); 125 } 126 hiTraceChain.end(traceId); 127 } catch (error){ 128 console.log(`testHitraceApi04 got an error: ${JSON.stringify(error)}`); 129 expect().assertFail(); 130 done(); 131 } 132 console.info('testHitraceApi04 end'); 133 done(); 134 }) 135 136 /** 137 * @tc.number DFX_DFT_Hitrace_JS_005 138 * @tc.name hitrace interface test 139 * @tc.desc hitrace begin interface test. 140 */ 141 it('testHitraceApi05', 1, async function (done) { 142 console.info('testHitraceApi05 start'); 143 try{ 144 let traceId = hiTraceChain.begin("hitrace05"); 145 hiTraceChain.enableFlag(traceId, hiTraceChain.HiTraceFlag.DISABLE_LOG); 146 let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(traceId, hiTraceChain.HiTraceFlag.DISABLE_LOG); 147 if(!enabledDoNotCreateSpanFlag){ 148 expect().assertFail(); 149 console.log(`testHitraceApi05 got an error: ${JSON.stringify(error)}`); 150 } 151 hiTraceChain.end(traceId); 152 } catch (error){ 153 console.log(`testHitraceApi05 got an error: ${JSON.stringify(error)}`); 154 expect().assertFail(); 155 done(); 156 } 157 console.info('testHitraceApi05 end'); 158 done(); 159 }) 160 161 /** 162 * @tc.number DFX_DFT_Hitrace_JS_006 163 * @tc.name hitrace interface test 164 * @tc.desc hitrace begin interface test. 165 */ 166 it('testHitraceApi06', 1, async function (done) { 167 console.info('testHitraceApi06 start'); 168 try{ 169 let traceId = hiTraceChain.begin("hitrace06"); 170 hiTraceChain.enableFlag(traceId, hiTraceChain.HiTraceFlag.FAILURE_TRIGGER); 171 let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(traceId, 172 hiTraceChain.HiTraceFlag.FAILURE_TRIGGER); 173 if(!enabledDoNotCreateSpanFlag){ 174 expect().assertFail(); 175 console.log(`testHitraceApi06 got an error: ${JSON.stringify(error)}`); 176 } 177 hiTraceChain.end(traceId); 178 } catch (error){ 179 console.log(`testHitraceApi06 got an error: ${JSON.stringify(error)}`); 180 expect().assertFail(); 181 done(); 182 } 183 console.info('testHitraceApi06 end'); 184 done(); 185 }) 186 187 /** 188 * @tc.number DFX_DFT_Hitrace_JS_007 189 * @tc.name hitrace interface test 190 * @tc.desc hitrace begin interface test. 191 */ 192 it('testHitraceApi07', 1, async function (done) { 193 console.info('testHitraceApi07 start'); 194 try{ 195 let traceId = hiTraceChain.begin("hitrace07", hiTraceChain.HiTraceFlag.D2D_TP_INFO); 196 let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(traceId, hiTraceChain.HiTraceFlag.D2D_TP_INFO) 197 if(!enabledDoNotCreateSpanFlag){ 198 expect().assertFail(); 199 console.log(`testHitraceApi07 got an error: ${JSON.stringify(error)}`); 200 } 201 hiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.PROCESS, 202 hiTraceChain.HiTraceTracepointType.CS, traceId, "hitrace test"); 203 hiTraceChain.end(traceId); 204 } catch (error){ 205 console.log(`testHitraceApi07 got an error: ${JSON.stringify(error)}`); 206 expect().assertFail(); 207 done(); 208 } 209 console.info('testHitraceApi07 end'); 210 done(); 211 }) 212 213 /** 214 * @tc.number DFX_DFT_Hitrace_JS_008 215 * @tc.name hitrace interface test 216 * @tc.desc hitrace begin interface test. 217 */ 218 it('testHitraceApi08', 1, async function (done) { 219 console.info('testHitraceApi08 start'); 220 hiTraceChain.clearId(); 221 let traceId = hiTraceChain.begin("testHitraceApi08", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC); 222 let curChainId = traceId.chainId; 223 new Promise(function(resolve, reject){ 224 resolve() 225 }).then(() => { 226 console.info('in testHitraceApi08 then callback') 227 console.info(`testHitraceApi08 ${hiTraceChain.getId().chainId} <> ${curChainId}`) 228 expect(hiTraceChain.getId().chainId == curChainId).assertTrue() 229 done() 230 }) 231 hiTraceChain.end(traceId); 232 done() 233 console.info('testHitraceApi08 end'); 234 235 }) 236 237 /** 238 * @tc.number DFX_DFT_Hitrace_JS_009 239 * @tc.name hitrace interface test 240 * @tc.desc hitrace begin interface test. 241 */ 242 it('testHitraceApi09', 1, async function (done) { 243 console.info('testHitraceApi09 start'); 244 hiTraceChain.clearId(); 245 let traceId = hiTraceChain.begin("hitrace09", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC); 246 let curChainId = traceId.chainId; 247 async function asyncTask() { 248 } 249 asyncTask().then(() => { 250 console.info('in testhiTraceApi09 then callback') 251 console.info(`testHitraceApi09 ${hiTraceChain.getId().chainId} <> ${curChainId}`) 252 expect(hiTraceChain.getId().chainId == curChainId).assertTrue() 253 done() 254 }) 255 hiTraceChain.end(traceId); 256 done() 257 console.info('testHitraceApi09 end'); 258 }) 259 260 /** 261 * @tc.name: 接口测试-hitrace接口支持跨设备跟踪 262 * @tc.number DFX_DFT_Hitrace_JS_010 263 * @tc.function A01010 264 * @tc.feature DFX_DFT_Hitrace 265 * @tc.level Level3 266 * @tc.type FUNC 267 */ 268 it('testHitraceApi10', 0, async function (done) { 269 console.info('testHitraceApi10 start') 270 hiTraceChain.clearId(); 271 try { 272 let traceId = hiTraceChain.begin("hitrace10", hiTraceChain.HiTraceFlag.D2D_TP_INFO); 273 let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(traceId, hiTraceChain.HiTraceFlag.D2D_TP_INFO); 274 if(!enabledDoNotCreateSpanFlag){ 275 expect().assertFail(); 276 console.log(`testHitraceApi10 got an error: ${JSON.stringify(error)}`); 277 } 278 hiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.DEVICE, 279 hiTraceChain.HiTraceTracepointType.CR,traceId, "hitrace test"); 280 hiTraceChain.end(traceId); 281 } catch (error) { 282 console.log(`testHitraceApi10 got an error: ${JSON.stringify(error)}`); 283 expect().assertFail(); 284 done() 285 } 286 console.info('testHitraceApi10 end') 287 done() 288 }); 289 290 /** 291 * @tc.name: 接口测试-hitrace接口支持跨设备跟踪 292 * @tc.number DFX_DFT_Hitrace_JS_011 293 * @tc.function A01011 294 * @tc.feature DFX_DFT_Hitrace 295 * @tc.level Level3 296 * @tc.type FUNC 297 */ 298 it('testHitraceApi11', 0, async function (done) { 299 console.info('testHitraceApi11 start') 300 hiTraceChain.setId(12345678); 301 hiTraceChain.clearId(); 302 try { 303 let traceId = hiTraceChain.begin("hitrace11", hiTraceChain.HiTraceFlag.D2D_TP_INFO); 304 let flags = traceId.flags 305 let parentSpanId = traceId.parentSpanId 306 let spanId = traceId.spanId 307 let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(traceId, hiTraceChain.HiTraceFlag.D2D_TP_INFO); 308 if(!enabledDoNotCreateSpanFlag){ 309 expect().assertFail(); 310 console.log(`testHitraceApi11 got an error: ${JSON.stringify(error)}`); 311 } 312 hiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.DEFAULT, 313 hiTraceChain.HiTraceTracepointType.SR, traceId, "hitrace test"); 314 hiTraceChain.end(traceId); 315 } catch (error) { 316 console.log(`testHitraceApi11 got an error: ${JSON.stringify(error)}`); 317 expect().assertFail(); 318 done() 319 } 320 console.info('testHitraceApi11 end') 321 done() 322 }); 323 324 /** 325 * @tc.name: 接口测试-hitrace接口支持跨设备跟踪 326 * @tc.number DFX_DFT_Hitrace_JS_012 327 * @tc.function A01010 328 * @tc.feature DFX_DFT_Hitrace 329 * @tc.level Level3 330 * @tc.type FUNC 331 */ 332 it('testHitraceApi12', 0, async function (done) { 333 console.info('testHitraceApi12 start') 334 try { 335 let traceId = hiTraceChain.begin("hitrace12", hiTraceChain.HiTraceFlag.D2D_TP_INFO); 336 let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(traceId, hiTraceChain.HiTraceFlag.D2D_TP_INFO); 337 if(!enabledDoNotCreateSpanFlag){ 338 expect().assertFail(); 339 console.log(`testHitraceApi12 got an error: ${JSON.stringify(error)}`); 340 } 341 hiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.DEVICE, 342 hiTraceChain.HiTraceTracepointType.GENERAL, traceId, "hitrace test"); 343 hiTraceChain.end(traceId); 344 } catch (error) { 345 console.log(`testHitraceApi12 got an error: ${JSON.stringify(error)}`); 346 expect().assertFail(); 347 done() 348 } 349 console.info('testHitraceApi12 end') 350 done() 351 }); 352 353}) 354} 355