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