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 { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow'; 17jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { 18 return {}; 19}); 20import { 21 HiPerfProcessStruct, 22 HiperfProcessRender2, 23} from '../../../../src/trace/database/ui-worker/hiperf/ProcedureWorkerHiPerfProcess2'; 24import { hiPerf } from '../../../../src/trace/database/ui-worker/ProcedureWorkerCommon'; 25jest.mock('../../../../src/trace/component/SpSystemTrace', () => { 26 return {}; 27}); 28describe('ProcedureWorkerHiPerfProcess Test', () => { 29 it('ProcedureWorkerHiPerfProcessTest01', () => { 30 const data = { 31 frame: undefined, 32 cpu: 1, 33 startNs: 41, 34 value: 41, 35 }; 36 const canvas = document.createElement('canvas'); 37 canvas.width = 1; 38 canvas.height = 2; 39 const ctx = canvas.getContext('2d'); 40 expect(HiPerfProcessStruct.draw(ctx, '', data, true)).toBeUndefined(); 41 }); 42 43 it('ProcedureWorkerHiPerfProcessTest02', function () { 44 let dataList = new Array(); 45 dataList.push({ 46 startNS: 0, 47 dur: 10, 48 length: 1, 49 frame: { x: 0, y: 9, width: 10, height: 10 }, 50 }); 51 dataList.push({ startNS: 1, dur: 2, length: 1 }); 52 hiPerf(dataList, [{ length: 0 }], dataList, 8, 3, '', true, 1, true); 53 }); 54 55 it('ProcedureWorkerHiPerfProcessTest03', function () { 56 let dataList = new Array(); 57 dataList.push({ 58 startNS: 0, 59 dur: 10, 60 length: 1, 61 frame: { x: 0, y: 9, width: 10, height: 10 }, 62 }); 63 dataList.push({ startNS: 1, dur: 2, length: 1 }); 64 hiPerf(dataList, [{ length: 0 }], dataList, 8, 3, '', false, 1, false); 65 }); 66 67 it('ProcedureWorkerHiPerfProcessTest04', function () { 68 expect(HiPerfProcessStruct.groupBy10MS([{ a: '1', b: 2, c: 3 }], 10)).toEqual([ 69 { dur: 10000000, height: NaN, eventCount: undefined, startNS: NaN, sampleCount : undefined}, 70 { dur: 10000000, height: NaN, eventCount: undefined, startNS: NaN, sampleCount : 1}, 71 ]); 72 }); 73 74 it('ProcedureWorkerHiPerfProcessTest05', function () { 75 let hiperfProcessRender = new HiperfProcessRender2(); 76 let hiperfProcessReq = { 77 lazyRefresh: true, 78 type: '', 79 startNS: 1, 80 endNS: 12, 81 totalNS: 11, 82 frame: { 83 x: 145, 84 y: 202, 85 width: 110, 86 height: 101, 87 }, 88 useCache: false, 89 range: { 90 refresh: '', 91 }, 92 canvas: 's', 93 context: { 94 font: '11px sans-serif', 95 fillStyle: '#ec407a', 96 globalAlpha: 0.3, 97 clearRect: jest.fn(() => true), 98 beginPath: jest.fn(() => true), 99 fillText: jest.fn(() => true), 100 fill: jest.fn(() => false), 101 stroke: jest.fn(() => true), 102 closePath: jest.fn(() => true), 103 measureText: jest.fn(() => ''), 104 fillRect: jest.fn(() => true), 105 }, 106 lineColor: '', 107 isHover: '', 108 hoverX: 1, 109 params: 'q', 110 wakeupBean: undefined, 111 flagMoveInfo: '', 112 flagSelectedInfo: '', 113 slicesTime: 7, 114 id: 1, 115 x: 27, 116 y: 27, 117 width: 100, 118 height: 100, 119 scale: 100_070_001, 120 }; 121 window.postMessage = jest.fn(() => true); 122 expect(hiperfProcessRender.render(hiperfProcessReq, [], [], [])).toBeUndefined(); 123 }); 124 it('ProcedureWorkerHiPerfProcessTest06', function () { 125 let hiperfProcessRender = new HiperfProcessRender2(); 126 let canvas = document.createElement('canvas') as HTMLCanvasElement; 127 let context = canvas.getContext('2d'); 128 const data = { 129 context: context!, 130 useCache: true, 131 type: '', 132 traceRange: [], 133 }; 134 window.postMessage = jest.fn(() => true); 135 expect(hiperfProcessRender.renderMainThread(data, new TraceRow())).toBeUndefined(); 136 }); 137}); 138