• 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
16jest.mock('../../../../dist/trace/component/trace/base/TraceRow.js', () => {
17  return {};
18});
19
20// @ts-ignore
21import {
22  HiPerfReport,
23  HiPerfReportStruct,
24  HiperfReportRender,
25} from '../../../../dist/trace/database/ui-worker/ProcedureWorkerHiPerfReport.js';
26// @ts-ignore
27import { Rect } from '../../../../dist/trace/database/ui-worker/ProcedureWorkerCommon';
28import { TraceRow } from '../../../../dist/trace/component/trace/base/TraceRow.js';
29
30describe('ProcedureWorkerHiPerfReport Test', () => {
31  it('ProcedureWorkerHiPerfReportTest01', () => {
32    let frame = {
33      x: 5,
34      y: 95,
35      width: 50,
36      height: 10,
37    };
38    let dataList = new Array();
39    dataList.push({
40      startTime: 50,
41      dur: 50,
42      frame: { x: 50, y: 9, width: 105, height: 150 },
43    });
44    dataList.push({ startTime: 51, dur: 511 });
45    let dataList2 = new Array();
46    dataList2.push({
47      startTime: 50,
48      dur: 190,
49      frame: { x: 60, y: 99, width: 610, height: 16 },
50    });
51    dataList2.push({ startTime: 61, dur: 691 });
52    let rect = new Rect(0, 10, 60, 10);
53    HiPerfReport(dataList, dataList2, '', [{ length: 1 }], 1, 1024, 1024, frame, true, 1, true);
54  });
55
56  it('ProcedureWorkerHiPerfReportTest02', () => {
57    let frame = {
58      x: 33,
59      y: 39,
60      width: 130,
61      height: 130,
62    };
63    let hiPerfReportDataList = new Array();
64    hiPerfReportDataList.push({
65      startTime: 1,
66      dur: 11,
67      frame: { x: 10, y: 91, width: 110, height: 310 },
68    });
69    hiPerfReportDataList.push({
70      startTime: 31,
71      dur: 131,
72      frame: { x: 30, y: 4, width: 130, height: 103 },
73    });
74    let rect = new Rect(0, 30, 13, 13);
75    let dataList2 = new Array();
76    dataList2.push({
77      startTime: 3,
78      dur: 132,
79      frame: { x: 23, y: 32, width: 130, height: 32 },
80    });
81    dataList2.push({ startTime: 21, dur: 133 });
82    HiPerfReport(hiPerfReportDataList, dataList2, '', [{ length: 0 }], 1, 1024, 1024, frame, true, 1, false);
83  });
84
85  it('ProcedureWorkerHiPerfReportTest07', () => {
86    let frame = {
87      x: 70,
88      y: 97,
89      width: 60,
90      height: 170,
91    };
92    let hiPerfReportDataList = new Array();
93    hiPerfReportDataList.push({
94      startTime: 5,
95      dur: 5,
96      frame: { x: 4, y: 93, width: 350, height: 130 },
97    });
98    hiPerfReportDataList.push({
99      startTime: 12,
100      dur: 21,
101      frame: { x: 50, y: 95, width: 50, height: 640 },
102    });
103    let rect = new Rect(0, 60, 60, 60);
104    let dataList2 = new Array();
105    dataList2.push({
106      startTime: 60,
107      dur: 40,
108      frame: { x: 40, y: 49, width: 40, height: 14 },
109    });
110    dataList2.push({ startTime: 17, dur: 16 });
111    HiPerfReport(hiPerfReportDataList, dataList2, '', [{ length: 0 }], 1, 1024, 1024, frame, false, 1, false);
112  });
113
114  it('ProcedureWorkerHiPerfReportTest03', () => {
115    const data = {
116      frame: {
117        x: 15,
118        y: 8,
119        width: 98,
120        height: 80,
121      },
122      cpu: 1,
123      startNs: 13,
124      value: 198,
125    };
126    const canvas = document.createElement('canvas');
127    canvas.width = 1;
128    canvas.height = 1;
129    const ctx = canvas.getContext('2d');
130    expect(HiPerfReportStruct.drawRoundRectPath(ctx, 1, 0, 10, 10, 12)).toBeUndefined();
131  });
132
133  it('ProcedureWorkerHiPerfReportTest04', function () {
134    let node = {
135      frame: {
136        x: 29,
137        y: 27,
138        width: 107,
139        height: 170,
140      },
141      startNS: 70,
142      value: 57,
143      startTs: 34,
144      dur: 121,
145      height: 22,
146    };
147    let frame = {
148      x: 30,
149      y: 690,
150      width: 199,
151      height: 109,
152    };
153    expect(HiPerfReportStruct.setFrame(node, 2, 1, 2, frame)).toBeUndefined();
154  });
155
156  it('ProcedureWorkerHiPerfReportTest05', function () {
157    let node = {
158      frame: {
159        x: 30,
160        y: 90,
161        width: 220,
162        height: 1520,
163      },
164      startNS: 55,
165      value: 522,
166      startTs: 19,
167      dur: 98,
168      height: 8
169    };
170    let frame = {
171      x: 150,
172      y: 20,
173      width: 400,
174      height: 400,
175    };
176    expect(HiPerfReportStruct.setFrame(node, 2, 1, 2, frame)).toBeUndefined();
177  });
178
179  it('ProcedureWorkerHiPerfReportTest06', function () {
180    expect(HiPerfReportStruct.reportGroupBy10MS([{ ps: 1 }, { coX: '1' }], 10)).toEqual([
181      { dur: 10000000, height: NaN, startNS: NaN, sum: NaN },
182    ]);
183  });
184  it('ProcedureWorkerHiPerfProcessTest05', function () {
185    let hiperfReportRender = new HiperfReportRender();
186    let req = {
187      lazyRefresh: true,
188      type: '',
189      startNS: 1,
190      endNS: 1,
191      totalNS: 1,
192      frame: {
193        x: 210,
194        y: 120,
195        width: 100,
196        height: 100,
197      },
198      useCache: false,
199      range: {
200        refresh: '',
201      },
202      canvas: 'a',
203      context: {
204        font: '11px sans-serif',
205        fillStyle: '#ec407a',
206        globalAlpha: 0.6,
207        clearRect: jest.fn(() => true),
208        beginPath: jest.fn(() => true),
209        fillRect: jest.fn(() => true),
210        fillText: jest.fn(() => true),
211        fill: jest.fn(() => true),
212        stroke: jest.fn(() => true),
213        closePath: jest.fn(() => true),
214        measureText: jest.fn(() => true),
215      },
216      lineColor: '',
217      isHover: '',
218      hoverX: 1,
219      params: '',
220      wakeupBean: undefined,
221      flagMoveInfo: '',
222      flagSelectedInfo: '',
223      slicesTime: 3,
224      id: 1,
225      x: 20,
226      y: 20,
227      width: 100,
228      height: 100,
229      scale: 100_000_001,
230    };
231    window.postMessage = jest.fn(() => true);
232    expect(hiperfReportRender.render(req, [], [], [])).toBeUndefined();
233  });
234});
235