• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 { SpApplication } from '../../../../../src/trace/SpApplication';
17import { SpSystemTrace } from '../../../../../src/trace/component/SpSystemTrace';
18import {
19  getTimeString,
20  JankTreeNode,
21  TabPaneCurrentSelection,
22  ThreadTreeNode,
23} from '../../../../../src/trace/component/trace/sheet/TabPaneCurrentSelection';
24import { AllAppStartupStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerAllAppStartup';
25import { ClockStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerClock';
26import { DmaFenceStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerDmaFence';
27import { FuncStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerFunc';
28import { HangStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerHang';
29import { JankStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerJank';
30import { PerfToolStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerPerfTool';
31import { SoStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerSoInit';
32import { ThreadStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerThread';
33import { XpowerStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerXpower';
34import { XpowerAppDetailStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerXpowerAppDetail';
35import { XpowerWifiStruct } from '../../../../../src/trace/database/ui-worker/ProcedureWorkerXpowerWifi';
36import { CpuStruct, WakeupBean } from '../../../../../src/trace/database/ui-worker/cpu/ProcedureWorkerCPU';
37const processSqlite = require('../../../../../src/trace/database/sql/ProcessThread.sql');
38jest.mock('../../../../../src/trace/database/sql/ProcessThread.sql');
39const sqlite = require('../../../../../src/trace/database/sql/SqlLite.sql');
40jest.mock('../../../../../src/trace/database/sql/SqlLite.sql');
41const gpuSqlite = require('../../../../../src/trace/database/sql/Gpu.sql');
42jest.mock('../../../../../src/trace/database/sql/Gpu.sql');
43const clockSqlite = require('../../../../../src/trace/database/sql/Clock.sql');
44jest.mock('../../../../../src/trace/database/sql/Clock.sql');
45const cpuSqlite = require('../../../../../src/trace/database/sql/Cpu.sql');
46jest.mock('../../../../../src/trace/database/sql/Cpu.sql');
47jest.mock('../../../../../src/js-heap/model/DatabaseStruct', () => {
48  return {};
49});
50jest.mock('../../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => {
51  return {};
52});
53jest.mock('../../../../../src/trace/database/ui-worker/ProcedureWorker', () => {
54  return {};
55});
56global.caches = {
57  match: jest.fn(),
58} as any;
59describe('TabPaneCurrentSelection Test', () => {
60  let tabPaneCurrentSelection = new TabPaneCurrentSelection();
61  const canvas = document.createElement('canvas');
62  canvas.width = 1;
63  canvas.height = 1;
64  let context = canvas.getContext('2d');
65
66  it('TabPaneCurrentSelectionTest01', function () {
67    expect(tabPaneCurrentSelection.getDate(1732017213)).not.toBeUndefined;
68  });
69
70  it('TabPaneCurrentSelectionTest02', function () {
71    let memData = [
72      {
73        trackId: 100,
74        processName: 'processName',
75        pid: 11,
76        upid: 1,
77        trackName: 'trackName',
78        type: 'type',
79        track_id: 'track_id',
80        value: 111,
81        startTime: 0,
82        duration: 1000,
83        maxValue: 4000,
84        delta: 2,
85      },
86    ];
87    expect(tabPaneCurrentSelection.setMemData(memData)).toBeUndefined;
88  });
89
90  it('TabPaneCurrentSelectionTest03', function () {
91    let result = getTimeString(3600_000_000_002);
92    expect(result).toBe('1h 2ns ');
93  });
94
95  it('TabPaneCurrentSelectionTest04', function () {
96    let result = getTimeString(60000000001);
97    expect(result).toBe('1m 1ns ');
98  });
99
100  it('TabPaneCurrentSelectionTest05', function () {
101    let result = getTimeString(1000000001);
102    expect(result).toBe('1s 1ns ');
103  });
104
105  it('TabPaneCurrentSelectionTest06', function () {
106    let result = getTimeString(1000001);
107    expect(result).toBe('1ms 1ns ');
108  });
109
110  it('TabPaneCurrentSelectionTest07', function () {
111    let result = getTimeString(1001);
112    expect(result).toBe('1μs 1ns ');
113  });
114
115  it('TabPaneCurrentSelectionTest08', function () {
116    let result = getTimeString(101);
117    expect(result).toBe('101ns ');
118  });
119
120  let queryRunnableTimeByRunning = processSqlite.queryRunnableTimeByRunning;
121  let queryRunnableTimeByRunningData = [
122    {
123      ts: 5564,
124    },
125    {
126      ts: 764,
127    },
128  ];
129  queryRunnableTimeByRunning.mockResolvedValue(queryRunnableTimeByRunningData);
130
131  let queryThreadWakeUpFrom = processSqlite.queryThreadWakeUpFrom;
132  let queryThreadWakeUpFromData = [
133    {
134      ts: 5564,
135      tid: 88,
136      itid: 48,
137      pid: 756,
138      cpu: 4,
139      dur: 8456,
140      argSetID: 5,
141    },
142  ];
143  queryThreadWakeUpFrom.mockResolvedValue(queryThreadWakeUpFromData);
144
145  let queryRealTime = clockSqlite.queryRealTime;
146  let queryRealTimeData = [
147    {
148      ts: 5564,
149      name: 'ds5f',
150    },
151    {
152      ts: 5584,
153      name: 'ddsdd',
154    },
155  ];
156  queryRealTime.mockResolvedValue(queryRealTimeData);
157
158  let queryThreadStateArgs = processSqlite.queryThreadStateArgs;
159  let queryThreadStateArgsData = [
160    {
161      argset: 5,
162      keyName: 'f5',
163      id: 985,
164      desc: 'dg4d',
165      strValue: 'dsfsfdf',
166    },
167  ];
168  queryThreadStateArgs.mockResolvedValue(queryThreadStateArgsData);
169
170  it('TabPaneCurrentSelectionTest09', function () {
171    tabPaneCurrentSelection.setCpuData = jest.fn(() => true);
172    tabPaneCurrentSelection.data = jest.fn(() => true);
173    expect(tabPaneCurrentSelection.data).toBeUndefined();
174  });
175
176  it('TabPaneCurrentSelectionTest10', function () {
177    let cpuData = [
178      {
179        cpu: 2,
180        dur: 2,
181        end_state: 'string',
182        id: 14,
183        name: 'name',
184        priority: 11,
185        processCmdLine: 'processCmdLine',
186        processId: 1115,
187        processName: 'processName',
188        schedId: 221,
189        startTime: 5,
190        tid: 1081,
191        type: 'type',
192      },
193    ];
194    expect(tabPaneCurrentSelection.setCpuData(cpuData, undefined, 1)).toBeTruthy();
195  });
196
197  it('TabPaneCurrentSelectionTest11', function () {
198    expect(tabPaneCurrentSelection.initCanvas()).not.toBeUndefined();
199  });
200
201  it('TabPaneCurrentSelectionTest12', function () {
202    expect(tabPaneCurrentSelection.transferString('')).toBe('');
203  });
204
205  it('TabPaneCurrentSelectionTest13', function () {
206    expect(tabPaneCurrentSelection.drawRight(null, null)).toBeUndefined();
207  });
208
209  it('TabPaneCurrentSelectionTest14', function () {
210    let jankData = {
211      id: 10,
212      ts: 25415,
213      dur: 1200,
214      name: '1523',
215      depth: 1,
216      jank_tag: true,
217      cmdline: 'com.test',
218      type: '0',
219      pid: 20,
220      frame_type: 'app',
221      app_dur: 110,
222      dst_slice: 488,
223    };
224    let result = tabPaneCurrentSelection.setJankData(jankData, undefined, 1);
225    expect(result).toBeUndefined();
226  });
227
228  it('TabPaneCurrentSelectionTest15', function () {
229    let jankDataRender = {
230      id: 22,
231      ts: 254152,
232      dur: 1202,
233      name: '1583',
234      depth: 1,
235      jank_tag: true,
236      cmdline: 'render.test',
237      type: '0',
238      pid: 22,
239      frame_type: 'render_service',
240      src_slice: '525',
241      rs_ts: 2562,
242      rs_vsync: '2562',
243      rs_dur: 1528,
244      rs_pid: 1252,
245      rs_name: 'name',
246      gpu_dur: 2568,
247    };
248    let result = tabPaneCurrentSelection.setJankData(jankDataRender, undefined, 1);
249    expect(result).toBeUndefined();
250  });
251
252  let irqData = new SoStruct();
253  irqData.id = 25;
254  irqData.startTs = 1526;
255  irqData.soName = 'test';
256  irqData.dur = 125;
257  irqData.tid = 500;
258
259  it('TabPaneCurrentSelectionTest16', function () {
260    let argsetTest = processSqlite.queryBinderArgsByArgset;
261    let argsetData = [
262      {
263        argset: 12,
264        keyName: 'test',
265        id: 123,
266        desc: 'desc',
267        strValue: 'value',
268      },
269      {
270        argset: 11,
271        keyName: 'test',
272        id: 113,
273        desc: 'desc',
274        strValue: 'value',
275      },
276    ];
277    argsetTest.mockResolvedValue(argsetData);
278    let result = tabPaneCurrentSelection.setIrqData(irqData);
279    expect(result).toBeUndefined();
280  });
281
282  it('TabPaneCurrentSelectionTest17', function () {
283    let result = tabPaneCurrentSelection.setStartupData(irqData, 1, []);
284    expect(result).toBeUndefined();
285  });
286  it('TabPaneCurrentSelectionTest18', function () {
287    tabPaneCurrentSelection.startIconClickEvent = jest.fn();
288    let result = tabPaneCurrentSelection.setStaticInitData(irqData, () => {});
289    expect(result).toBeUndefined();
290  });
291  it('TabPaneCurrentSelectionTest19', function () {
292    let list: never[] = [];
293    let data = [
294      {
295        jank_tag: 1,
296        frame_type: 'render_service',
297      },
298    ];
299    let result = tabPaneCurrentSelection.setJankType(data, list);
300    expect(result).toBeUndefined();
301  });
302  it('TabPaneCurrentSelectionTest20', function () {
303    let queryFpsSourceList = sqlite.queryFpsSourceList;
304    let queryFpsSourceListData = [
305      {
306        tid: 5564,
307        dur: 854,
308        depth: 84,
309        ts: 998,
310        name: 'ds8f',
311      },
312    ];
313    queryFpsSourceList.mockResolvedValue(queryFpsSourceListData);
314
315    let data = [
316      {
317        startTime: 22,
318      },
319    ];
320    let result = tabPaneCurrentSelection.setFrameAnimationData(data);
321    expect(result).toBeTruthy();
322  });
323
324  it('TabPaneCurrentSelectionTest21', function () {
325    let data = new CpuStruct();
326    data.id = 555;
327    data.startTime = 84;
328    data.tid = 84;
329    let result = tabPaneCurrentSelection.queryCPUWakeUpFromData(data);
330    expect(result).toBeTruthy();
331  });
332
333  it('TabPaneCurrentSelectionTest22', function () {
334    let data = {
335      argsetid: 1,
336      depth: 2,
337      dur: 50,
338      funName: 'efs',
339      id: 8,
340      callid: 8,
341      is_main_thread: 74,
342    };
343    expect(tabPaneCurrentSelection.handleNonBinder(data, [], 'sfe', 'effe')).toBeUndefined();
344  });
345
346  it('TabPaneCurrentSelectionTest23', function () {
347    expect(tabPaneCurrentSelection.initElements()).toBeUndefined();
348  });
349
350  it('TabPaneCurrentSelectionTest24', function () {
351    let data = [
352      {
353        thread: 'fds',
354        wakeupTime: 54,
355        cpu: 85,
356        dur: 848,
357        process: 'fdsf',
358        pid: 847,
359        tid: 48,
360        schedulingDesc: 'sdf',
361        ts: 774,
362        itid: 87,
363        state: 'sfd',
364        argSetID: 48785,
365        schedulingLatency: 747,
366      },
367    ];
368    let queryWakeupListPriority = cpuSqlite.queryWakeupListPriority;
369    let queryWakeupListPriorityData = [
370      {
371        itid: 5564,
372        priority: 854,
373        dur: 84,
374        ts: 998,
375        cpu: 'ds8f',
376      },
377    ];
378    queryWakeupListPriority.mockResolvedValue(queryWakeupListPriorityData);
379    expect(tabPaneCurrentSelection.showWakeupListTableData(data)).toBeUndefined();
380  });
381
382  it('TabPaneCurrentSelectionTest24', function () {
383    expect(tabPaneCurrentSelection.getRealTimeStr(74512)).not.toBeUndefined();
384  });
385
386  it('TabPaneCurrentSelectionTest25', function () {
387    let data = new ClockStruct();
388    tabPaneCurrentSelection.initElements();
389    expect(tabPaneCurrentSelection.setClockData(data)).not.toBeUndefined();
390  });
391
392  it('TabPaneCurrentSelectionTest26', function () {
393    let data = new XpowerStruct();
394    tabPaneCurrentSelection.initElements();
395    expect(tabPaneCurrentSelection.setXpowerData(data)).not.toBeUndefined();
396  });
397
398  it('TabPaneCurrentSelectionTest27', function () {
399    let data = new XpowerAppDetailStruct();
400    tabPaneCurrentSelection.initElements();
401    expect(tabPaneCurrentSelection.setXpowerDisplayData(data)).not.toBeUndefined();
402  });
403
404  it('TabPaneCurrentSelectionTest28', function () {
405    let data = new XpowerWifiStruct();
406    tabPaneCurrentSelection.initElements();
407    expect(tabPaneCurrentSelection.setXpowerWifiBytesData(data)).not.toBeUndefined();
408  });
409
410  it('TabPaneCurrentSelectionTest29', function () {
411    let data = new XpowerWifiStruct();
412    tabPaneCurrentSelection.initElements();
413    expect(tabPaneCurrentSelection.setXpowerWifiPacketsData(data)).not.toBeUndefined();
414  });
415
416  it('TabPaneCurrentSelectionTest30', function () {
417    let data = new CpuStruct();
418    data.name = 'fd0';
419    data.pid = 9;
420    data.ts = 9366;
421    data.dur = 9366;
422    tabPaneCurrentSelection.initElements();
423    expect(
424      tabPaneCurrentSelection.setCpuData(
425        data,
426        (data: WakeupBean | null) => {}
427      )
428    ).not.toBeUndefined();
429  });
430
431  it('TabPaneCurrentSelectionTest31', function () {
432    let data = new PerfToolStruct();
433    tabPaneCurrentSelection.initElements();
434    expect(tabPaneCurrentSelection.setPerfToolsData(data)).toBeUndefined();
435  });
436
437  it('TabPaneCurrentSelectionTest32', function () {
438    let data = new ThreadStruct();
439    tabPaneCurrentSelection.initElements();
440    expect(
441      tabPaneCurrentSelection.setThreadData(
442        data,
443        () => {},
444        () => {},
445        () => {}
446      )
447    ).not.toBeUndefined();
448  });
449
450  it('TabPaneCurrentSelectionTest33', function () {
451    let data = new ThreadStruct();
452    tabPaneCurrentSelection.initElements();
453    expect(tabPaneCurrentSelection.sortByNearData([], data, [])).not.toBeUndefined();
454  });
455
456  it('TabPaneCurrentSelectionTest34', function () {
457    let fromBean = new WakeupBean();
458    let wakeUps = [fromBean];
459    tabPaneCurrentSelection.initElements();
460    expect(tabPaneCurrentSelection.setWakeupData(fromBean, wakeUps, [])).toBeUndefined();
461  });
462
463  it('TabPaneCurrentSelectionTest35', function () {
464    let data = new JankStruct();
465    data.rs_name = 'fd0';
466    data.rs_pid = 9;
467    data.rs_ts = 9366;
468    data.rs_dur = 9366;
469    let list = [];
470    tabPaneCurrentSelection.initElements();
471    expect(tabPaneCurrentSelection.addRenderServiceFrameDetails(data, list)).toBeUndefined();
472  });
473
474  it('TabPaneCurrentSelectionTest36', function () {
475    let data = new JankStruct();
476    data.name = 'fd0';
477    data.rs_pid = 9;
478    data.rs_ts = 9366;
479    data.rs_dur = 9366;
480    data.cmdline = 'ef';
481    let list = [];
482    tabPaneCurrentSelection.initElements();
483    expect(tabPaneCurrentSelection.addFollowingDetails(list, data)).toBeUndefined();
484  });
485
486  it('TabPaneCurrentSelectionTest37', function () {
487    let data = new JankStruct();
488    data.name = 'fd0';
489    data.pid = 9;
490    data.ts = 9366;
491    data.dur = 9366;
492    data.cmdline = 'ef';
493    let list = [];
494    tabPaneCurrentSelection.initElements();
495    expect(tabPaneCurrentSelection.addAppFrameDetails(data, list)).toBeUndefined();
496  });
497
498  it('TabPaneCurrentSelectionTest38', function () {
499    let data = new JankStruct();
500    data.name = 'fd0';
501    data.pid = 9;
502    data.ts = 9366;
503    data.dur = 9366;
504    data.cmdline = 'ef';
505    let list = [];
506    tabPaneCurrentSelection.initElements();
507    expect(tabPaneCurrentSelection.handleAppJank(list, data, [], () => {}, undefined)).toBeUndefined();
508  });
509
510  it('TabPaneCurrentSelectionTest39', function () {
511    let data = new AllAppStartupStruct();
512    data.dur = 9366;
513    tabPaneCurrentSelection.initElements();
514    expect(tabPaneCurrentSelection.setAllStartupData(data, () => {})).toBeUndefined();
515  });
516
517  it('TabPaneCurrentSelectionTest40', function () {
518    let data = new FuncStruct();
519    data.name = 'fd0';
520    data.pid = 9;
521    data.ts = 9366;
522    data.dur = 9366;
523    data.cmdline = 'ef';
524    let list = [];
525    tabPaneCurrentSelection.initElements();
526    expect(tabPaneCurrentSelection.handleBinder(data, list, [], 'dfs', () => {}, 'fds')).toBeUndefined();
527  });
528
529  it('TabPaneCurrentSelectionTest41', function () {
530    let data = new DmaFenceStruct();
531    data.dur = 9366;
532    let list = [];
533    tabPaneCurrentSelection.initElements();
534    expect(tabPaneCurrentSelection.setDmaFenceData(data, list)).toBeUndefined();
535  });
536
537  it('TabPaneCurrentSelectionTest42', function () {
538    let data = new JankStruct();
539    data.dur = 9366;
540    let list = [];
541    tabPaneCurrentSelection.initElements();
542    expect(tabPaneCurrentSelection.setJankType(data, list)).toBeUndefined();
543  });
544
545  it('TabPaneCurrentSelectionTest43', function () {
546    let data = new WakeupBean();
547    data.dur = 9566;
548    let wakeup = new WakeupBean();
549    tabPaneCurrentSelection.drawVerticalLine = jest.fn(() => {});
550    tabPaneCurrentSelection.initElements();
551    let canvas = tabPaneCurrentSelection.initCanvas();
552    expect(tabPaneCurrentSelection.drawRight(canvas, wakeup)).toBeUndefined();
553  });
554
555  it('TabPaneCurrentSelectionTest44', function () {
556    let data = new JankStruct();
557    data.dur = 9566;
558    let jankTreeNode = new JankTreeNode('fs', 5, 's');
559    tabPaneCurrentSelection.initElements();
560    expect(
561      tabPaneCurrentSelection.handleRenderServiceJank(
562        data,
563        [],
564        [jankTreeNode],
565        () => {},
566        () => {}
567      )
568    ).toBeUndefined();
569  });
570
571  it('TabPaneCurrentSelectionTest45', function () {
572    let data = new JankStruct();
573    data.dur = 9366;
574    data.jank_tag = 1;
575    data.frameType = 'render_service';
576    let list = [];
577    tabPaneCurrentSelection.initElements();
578    expect(tabPaneCurrentSelection.setJankType(data, list)).toBeUndefined();
579  });
580
581  it('TabPaneCurrentSelectionTest46', function () {
582    let data = new JankStruct();
583    data.dur = 9366;
584    data.jank_tag = 1;
585    data.frameType = 'app';
586    let list = [];
587    tabPaneCurrentSelection.initElements();
588    expect(tabPaneCurrentSelection.setJankType(data, list)).toBeUndefined();
589  });
590
591  it('TabPaneCurrentSelectionTest47', function () {
592    let data = new JankStruct();
593    data.dur = 9366;
594    data.jank_tag = 1;
595    data.frameType = 'frameTime';
596    let list = [];
597    tabPaneCurrentSelection.initElements();
598    expect(tabPaneCurrentSelection.setJankType(data, list)).toBeUndefined();
599  });
600
601  it('TabPaneCurrentSelectionTest48', function () {
602    let data = new JankStruct();
603    data.dur = 9366;
604    data.jank_tag = 3;
605    data.frameType = 'frameTime';
606    let list = [];
607    tabPaneCurrentSelection.initElements();
608    expect(tabPaneCurrentSelection.setJankType(data, list)).toBeUndefined();
609  });
610
611  it('TabPaneCurrentSelectionTest49', function () {
612    expect(tabPaneCurrentSelection.transferString('frrfsdsd')).not.toBeUndefined();
613  });
614
615  it('TabPaneCurrentSelectionTest50', function () {
616    let threadTreeNode = new ThreadTreeNode(5, 9, 1000);
617    expect(threadTreeNode.tid).toEqual(5);
618  });
619});
620