• 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 {
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