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 16import { 17 getTimeString, 18 TabPaneCurrentSelection, 19} from '../../../../../src/trace/component/trace/sheet/TabPaneCurrentSelection'; 20const sqlite = require('../../../../../src/trace/database/SqlLite'); 21jest.mock('../../../../../src/trace/database/SqlLite'); 22 23describe('TabPaneCurrentSelection Test', () => { 24 let tabPaneCurrentSelection = new TabPaneCurrentSelection(); 25 26 const canvas = document.createElement('canvas'); 27 canvas.width = 1; 28 canvas.height = 1; 29 let context = canvas.getContext('2d'); 30 31 let cpuData = [ 32 { 33 cpu: 1, 34 dur: 1, 35 end_state: 'string', 36 id: 12, 37 name: 'name', 38 priority: 11, 39 processCmdLine: 'processCmdLine', 40 processId: 1111, 41 processName: 'processName', 42 schedId: 221, 43 startTime: 0, 44 tid: 1001, 45 type: 'type', 46 }, 47 ]; 48 let functionData = [ 49 { 50 argsetid: 53161, 51 depth: 0, 52 dur: 570000, 53 funName: 'binder transaction', 54 id: 92749, 55 is_main_thread: 0, 56 parent_id: null, 57 startTs: 9729867000, 58 threadName: 'Thread-15', 59 tid: 2785, 60 }, 61 ]; 62 let memData = [ 63 { 64 trackId: 100, 65 processName: 'processName', 66 pid: 11, 67 upid: 1, 68 trackName: 'trackName', 69 type: 'type', 70 track_id: 'track_id', 71 value: 111, 72 startTime: 0, 73 duration: 1000, 74 maxValue: 4000, 75 delta: 2, 76 }, 77 ]; 78 let threadData = [ 79 { 80 hasSched: 14724852000, 81 pid: 2519, 82 processName: null, 83 threadName: 'ACCS0', 84 tid: 2716, 85 upid: 1, 86 utid: 1, 87 cpu: null, 88 dur: 405001, 89 end_ts: null, 90 id: 11, 91 is_main_thread: 0, 92 name: 'ACCS0', 93 startTime: 58001, 94 start_ts: null, 95 state: 'S', 96 type: 'thread', 97 }, 98 ]; 99 let wakeupBean = [ 100 { 101 wakeupTime: 0, 102 cpu: 1, 103 process: 'process', 104 pid: 11, 105 thread: 'thread', 106 tid: 22, 107 schedulingLatency: 33, 108 schedulingDesc: 'schedulingDesc', 109 }, 110 ]; 111 112 let queryData = [ 113 { 114 id: 1, 115 startTime: 0, 116 hasSched: 14724852000, 117 pid: 2519, 118 processName: null, 119 threadName: 'ACCS0', 120 tid: 2716, 121 upid: 1, 122 utid: 1, 123 cpu: null, 124 dur: 405002, 125 end_ts: null, 126 is_main_thread: 2, 127 name: 'ACCS0', 128 start_ts: null, 129 state: 'S', 130 type: 'thread', 131 }, 132 ]; 133 let scrollWakeUp = [ 134 { 135 startTime: 0, 136 pid: 11, 137 tid: 22, 138 }, 139 ]; 140 let data = [ 141 { 142 cpu: 1, 143 dur: 1, 144 end_state: 'string', 145 id: 12, 146 name: 'name', 147 priority: 11, 148 processCmdLine: 'processCmdLine', 149 processId: 1112, 150 processName: 'processName', 151 schedId: 222, 152 startTime: 0, 153 tid: 1002, 154 type: 'type', 155 }, 156 ]; 157 158 let jankData = { 159 id: 10, 160 ts: 25415, 161 dur: 1200, 162 name: '1523', 163 depth: 1, 164 jank_tag: true, 165 cmdline: 'com.test', 166 type: '0', 167 pid: 20, 168 frame_type: 'app', 169 app_dur: 110, 170 dst_slice: 488, 171 }; 172 173 let jankDataRender = { 174 id: 22, 175 ts: 254152, 176 dur: 1202, 177 name: '1583', 178 depth: 1, 179 jank_tag: true, 180 cmdline: 'render.test', 181 type: '0', 182 pid: 22, 183 frame_type: 'render_service', 184 src_slice: '525', 185 rs_ts: 2562, 186 rs_vsync: '2562', 187 rs_dur: 1528, 188 rs_pid: 1252, 189 rs_name: 'name', 190 gpu_dur: 2568, 191 }; 192 193 let irqData = [ 194 { 195 id: 25, 196 startNS: 1526, 197 name: 'test', 198 dur: 125, 199 argSetId: 526, 200 }, 201 ]; 202 203 let clockData = [ 204 { 205 filterId: 96, 206 value: 253, 207 startNS: 25852, 208 dur: 125, 209 delta: 2586, 210 }, 211 ]; 212 213 let functionDataTest = { 214 argsetid: 53161, 215 depth: 0, 216 dur: 570000, 217 funName: 'binder async', 218 id: 92749, 219 is_main_thread: 0, 220 parent_id: null, 221 startTs: 9729867000, 222 threadName: 'Thread-15', 223 tid: 2785, 224 }; 225 226 tabPaneCurrentSelection.queryWakeUpData = jest.fn(() => 'WakeUpData'); 227 tabPaneCurrentSelection.queryWakeUpData.wb = jest.fn(() => null); 228 tabPaneCurrentSelection.setCpuData(cpuData, undefined, 1); 229 let argsetTest = sqlite.queryBinderArgsByArgset; 230 let argsetIdTest = sqlite.queryBinderByArgsId; 231 let argsetData = [ 232 { 233 argset: 12, 234 keyName: 'test', 235 id: 123, 236 desc: 'desc', 237 strValue: 'value', 238 }, 239 { 240 argset: 11, 241 keyName: 'test', 242 id: 113, 243 desc: 'desc', 244 strValue: 'value', 245 }, 246 ]; 247 248 let argsetIdData = [ 249 { 250 type: 'func', 251 startTs: 1258, 252 dur: 25, 253 depth: 1, 254 argsetid: 258, 255 }, 256 ]; 257 argsetTest.mockResolvedValue(argsetData); 258 argsetIdTest.mockResolvedValue(argsetIdData); 259 260 let gpuDur = sqlite.queryGpuDur; 261 let gpuDurData = [ 262 { 263 gpu_dur: 1528, 264 }, 265 ]; 266 gpuDur.mockResolvedValue(gpuDurData); 267 268 let queryFlows = sqlite.queryFlowsData; 269 let queryFlowsData = [ 270 { 271 name: '25962', 272 pid: 1885, 273 cmdline: 'render Test', 274 type: 1, 275 }, 276 ]; 277 queryFlows.mockResolvedValue(queryFlowsData); 278 279 let queryPreceding = sqlite.queryPrecedingData; 280 let queryPrecedingData = [ 281 { 282 name: '2596562', 283 pid: 18854, 284 cmdline: 'app Test', 285 type: 0, 286 }, 287 ]; 288 queryPreceding.mockResolvedValue(queryPrecedingData); 289 290 tabPaneCurrentSelection.queryWakeUpData = jest.fn(() => 'WakeUpData'); 291 tabPaneCurrentSelection.queryWakeUpData.wb = jest.fn(() => null); 292 tabPaneCurrentSelection.setCpuData(cpuData, undefined, 1); 293 294 it('TabPaneCurrentSelectionTest01', function () { 295 let result = tabPaneCurrentSelection.setFunctionData(functionData); 296 expect(result).toBeUndefined(); 297 }); 298 299 it('TabPaneCurrentSelectionTest02', function () { 300 let result = tabPaneCurrentSelection.setMemData(memData); 301 expect(result).toBeUndefined(); 302 }); 303 304 it('TabPaneCurrentSelectionTest03', function () { 305 let result = getTimeString(3600_000_000_002); 306 expect(result).toBe('1h 2ns '); 307 }); 308 309 it('TabPaneCurrentSelectionTest04', function () { 310 let result = getTimeString(60000000001); 311 expect(result).toBe('1m 1ns '); 312 }); 313 314 it('TabPaneCurrentSelectionTest05', function () { 315 let result = getTimeString(1000000001); 316 expect(result).toBe('1s 1ns '); 317 }); 318 319 it('TabPaneCurrentSelectionTest06', function () { 320 let result = getTimeString(1000001); 321 expect(result).toBe('1ms 1ns '); 322 }); 323 324 it('TabPaneCurrentSelectionTest07', function () { 325 let result = getTimeString(1001); 326 expect(result).toBe('1μs 1ns '); 327 }); 328 329 it('TabPaneCurrentSelectionTest08', function () { 330 let result = getTimeString(101); 331 expect(result).toBe('101ns '); 332 }); 333 334 it('TabPaneCurrentSelectionTest09', function () { 335 tabPaneCurrentSelection.setCpuData = jest.fn(() => true); 336 tabPaneCurrentSelection.data = jest.fn(() => true); 337 expect(tabPaneCurrentSelection.data).toBeUndefined(); 338 }); 339 340 it('TabPaneCurrentSelectionTest10', function () { 341 expect(tabPaneCurrentSelection.setCpuData(cpuData, undefined, 1)).toBeTruthy(); 342 }); 343 344 it('TabPaneCurrentSelectionTest13', function () { 345 expect(tabPaneCurrentSelection.initCanvas()).not.toBeUndefined(); 346 }); 347 348 it('TabPaneCurrentSelectionTest14', function () { 349 let str = { 350 length: 0, 351 }; 352 expect(tabPaneCurrentSelection.transferString(str)).toBe(''); 353 }); 354 355 it('TabPaneCurrentSelectionTest16', function () { 356 expect(tabPaneCurrentSelection.drawRight(null)).toBeUndefined(); 357 }); 358 359 it('TabPaneCurrentSelectionTest01', function () { 360 let result = tabPaneCurrentSelection.setFunctionData(functionData); 361 expect(result).toBeUndefined(); 362 }); 363 364 it('TabPaneCurrentSelectionTest02', function () { 365 let result = tabPaneCurrentSelection.setMemData(memData); 366 expect(result).toBeUndefined(); 367 }); 368 369 it('TabPaneCurrentSelectionTest12', function () { 370 let result = tabPaneCurrentSelection.setJankData(jankData, undefined, 1); 371 expect(result).toBeUndefined(); 372 }); 373 374 it('TabPaneCurrentSelectionTest13', function () { 375 let result = tabPaneCurrentSelection.setJankData(jankDataRender, undefined, 1); 376 expect(result).toBeUndefined(); 377 }); 378 379 it('TabPaneCurrentSelectionTest14', function () { 380 let result = tabPaneCurrentSelection.setIrqData(irqData); 381 expect(result).toBeUndefined(); 382 }); 383 384 it('TabPaneCurrentSelectionTest16', function () { 385 let result = tabPaneCurrentSelection.setClockData(clockData); 386 expect(result).toBeUndefined(); 387 }); 388 389 it('TabPaneCurrentSelectionTest17', function () { 390 let result = tabPaneCurrentSelection.setFunctionData(functionDataTest); 391 expect(result).toBeUndefined(); 392 }); 393 it('TabPaneCurrentSelectionTest18', function () { 394 let result = tabPaneCurrentSelection.setStartupData(irqData, 1); 395 expect(result).toBeUndefined(); 396 }); 397 it('TabPaneCurrentSelectionTest19', function () { 398 let result = tabPaneCurrentSelection.setStaticInitData(irqData, 1); 399 expect(result).toBeUndefined(); 400 }); 401 it('TabPaneCurrentSelectionTest20', function () { 402 let list: never[] = []; 403 let data = [ 404 { 405 jank_tag: 1, 406 frame_type: 'render_service', 407 }, 408 ]; 409 let result = tabPaneCurrentSelection.setJankType(data, list); 410 expect(result).toBeUndefined(); 411 }); 412 it('TabPaneCurrentSelectionTest21', function () { 413 let data = [{ 414 startTime:22, 415 }] 416 let result = tabPaneCurrentSelection.setFrameAnimationData(data) 417 expect(result).toBeTruthy(); 418 }); 419 it('TabPaneCurrentSelectionTest22', function () { 420 let data = [{}] 421 let result = tabPaneCurrentSelection.queryCPUWakeUpFromData(data) 422 expect(result).toBeTruthy(); 423 }); 424}); 425