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 */ 15import { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow'; 16import { Rect } from '../../../../src/trace/component/trace/timer-shaft/Rect'; 17import { 18 jsCpuProfiler, 19 JsCpuProfilerRender, 20 JsCpuProfilerStruct, 21} from '../../../../src/trace/database/ui-worker/ProcedureWorkerCpuProfiler'; 22 23jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { 24 return {}; 25}); 26jest.mock('../../../../src/trace/component/SpSystemTrace', () => { 27 return {}; 28}); 29describe('ProcedureWorkerCpuProfiler Test', () => { 30 let jsCpuProfilerRender = new JsCpuProfilerRender(); 31 let traceRow = new TraceRow(); 32 traceRow.frame = {height: 40, width: 1407, x: 0, y: 0}; 33 it('jsCpuProfilerTest', () => { 34 const canvas = document.createElement('canvas'); 35 canvas.width = 1; 36 canvas.height = 1; 37 const ctx = canvas.getContext('2d'); 38 let traceRow = new TraceRow(); 39 traceRow.frame = {height: 40, width: 1407, x: 0, y: 0}; 40 let rect = new Rect(0, 10, 10, 10); 41 let filter = [ 42 { 43 startTime: 50, 44 endTime: 1520000, 45 name: 'Snapshot2', 46 frame: {x: 0, y: 0, width: 25, height: 40}, 47 id: 0, 48 depth: 1, 49 selfTime: 0, 50 url: '', 51 totalTime: 83321693463, 52 parentId: 123, 53 children: [], 54 isSelect: true, 55 }, 56 ]; 57 let list = [ 58 { 59 startTime: 250, 60 endTime: 2333333, 61 name: 'Snapshot0', 62 frame: {x: 0, y: 0, width: 25, height: 20}, 63 id: 32, 64 depth: 21, 65 selfTime: 34, 66 url: '', 67 totalTime: 32155693464, 68 parentId: 32, 69 children: [], 70 isSelect: true, 71 }, 72 ]; 73 jsCpuProfiler(list, filter, 100254, 100254, rect, traceRow.frame, true); 74 }); 75 76 it('JsCpuProfilerStructTest01', () => { 77 const data = { 78 frame: { 79 x: 20, 80 y: 20, 81 width: 101, 82 height: 101, 83 }, 84 filterID: 2, 85 startNs: 1, 86 value: 1, 87 maxValue: undefined, 88 startTime: 1, 89 size: 102, 90 cpu: 1, 91 }; 92 const canvas = document.createElement('canvas'); 93 canvas.width = 1; 94 canvas.height = 1; 95 const ctx = canvas.getContext('2d'); 96 expect(JsCpuProfilerStruct.draw(ctx, data)).toBeUndefined(); 97 }); 98 99 it('JsCpuProfilerStructTest02', () => { 100 let node = { 101 startTime: 150, 102 endTime: 122000, 103 name: 'Snapshot1', 104 frame: {x: 1, y: 2, width: 25, height: 40}, 105 id: 12, 106 depth: 1, 107 selfTime: 1243, 108 url: '', 109 totalTime: 882141164, 110 parentId: 1213, 111 children: [], 112 isSelect: true, 113 }; 114 expect(JsCpuProfilerStruct.setJsCpuProfilerFrame(node, 0, 1, 2, traceRow.frame)).toBeUndefined(); 115 }); 116 it('JsCpuProfilerStructTest04', () => { 117 expect(JsCpuProfilerStruct).not.toBeUndefined(); 118 }); 119 it('JsCpuProfilerStructTest05 ', function () { 120 let jsCpuProfilerRender = new JsCpuProfilerRender(); 121 let canvas = document.createElement('canvas') as HTMLCanvasElement; 122 let context = canvas.getContext('2d'); 123 const data = { 124 context: context!, 125 useCache: true, 126 type: '', 127 traceRange: [], 128 }; 129 window.postMessage = jest.fn(() => true); 130 TraceRow.range = jest.fn(() => true); 131 TraceRow.range.startNS = jest.fn(() => 1); 132 expect(jsCpuProfilerRender.renderMainThread(data, new TraceRow<JsCpuProfilerStruct>())).toBeUndefined(); 133 }); 134}); 135