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