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 { TabPaneGpufreqDataCut } from '../../../../../../src/trace/component/trace/sheet/gpufreq/tabPaneGpufreqDataCut'; 17import '../../../../../../src/trace/component/trace/sheet/gpufreq/tabPaneGpufreqDataCut'; 18import { LitTable } from '../../../../../../src/base-ui/table/lit-table'; 19import '../../../../../../src/base-ui/table/lit-table'; 20import { SpSegmentationChart } from '../../../../../../src/trace/component/chart/SpSegmentationChart'; 21import { TraceRow } from "../../../../../../src/trace/component/trace/base/TraceRow"; 22import { CpuFreqExtendStruct } from "../../../../../../src/trace/database/ui-worker/ProcedureWorkerFreqExtend"; 23 24jest.mock('../../../../../../src/trace/database/ui-worker/cpu/ProcedureWorkerCPU', () => { 25 return {}; 26}); 27jest.mock('../../../../../../src/trace/database/ui-worker/ProcedureWorker', () => { 28 return {}; 29}); 30jest.mock('../../../../../../src/trace/component/trace/timer-shaft/RangeRuler', () => { 31 return {}; 32}); 33const intersectionObserverMock = () => ({ 34 observe: () => null, 35}); 36window.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock); 37window.ResizeObserver = 38 window.ResizeObserver || 39 jest.fn().mockImplementation(() => ({ 40 disconnect: jest.fn(), 41 observe: jest.fn(), 42 unobserve: jest.fn(), 43 })); 44 45const sqlite = require('../../../../../../src/trace/database/sql/Perf.sql'); 46jest.mock('../../../../../../src/trace/database/sql/Perf.sql'); 47 48describe('TabPaneGpufreqDataCut.test Test', () => { 49 let threadStatesParam = { 50 cpus: [], 51 threadIds: [1, 2, 3], 52 trackIds: [23, 56, 77], 53 funTids: [675, 75], 54 heapIds: [11, 223], 55 processIds: [114, 23], 56 nativeMemory: [], 57 leftNs: 12222, 58 rightNs: 654233, 59 hasFps: false, 60 statisticsSelectData: undefined, 61 } 62 63 let dataCut = [{ 64 funName: 'funName', 65 startTime: 0, 66 dur: 2155, 67 endTime: 0, 68 depth: 2, 69 threadName: '', 70 pid: 5256 71 }] 72 73 let initData = [{ 74 filterId: '12', 75 freq: 'freq', 76 count: '4', 77 value: '45', 78 ts: '2255', 79 startNS: '4455', 80 dur: '58547', 81 endTime: '1255858', 82 thread: 'thread', 83 parentIndex: 0, 84 leve: 0, 85 name: 'name' 86 }] 87 88 let gpufreq = sqlite.getGpufreqData; 89 let gpufreqData = [{ 90 filterId: '12', 91 freq: 'freq', 92 count: '4', 93 value: '45', 94 ts: '2255', 95 startNS: '4455', 96 dur: '58547', 97 endTime: '1255858', 98 thread: 'thread', 99 parentIndex: 0, 100 leve: 0, 101 name: 'name' 102 }]; 103 gpufreq.mockResolvedValue(gpufreqData); 104 105 let dataFreqCut = sqlite.getGpufreqDataCut; 106 let gpufreqCut = [{ 107 funName: 'funName', 108 startTime: 0, 109 dur: 2155, 110 endTime: 0, 111 depth: 2, 112 threadName: '', 113 pid: 5256 114 }]; 115 dataFreqCut.mockResolvedValue(gpufreqCut); 116 SpSegmentationChart.trace = jest.fn(()=>{}); 117 SpSegmentationChart.trace.refreshCanvas = jest.fn(()=>{}); 118 let gpufreqDataCut = new TabPaneGpufreqDataCut(); 119 gpufreqDataCut.threadStatesTbl = jest.fn(() => { 120 return new LitTable(); 121 }); 122 it('TabPaneSchedSwitchTest01', function () { 123 SpSegmentationChart.GpuRow = new TraceRow<CpuFreqExtendStruct>; 124 gpufreqDataCut.data = threadStatesParam; 125 126 expect(gpufreqDataCut.threadStatesTbl.loading).toBeTruthy(); 127 }); 128 129 it('TabPaneSchedSwitchTest02', function () { 130 gpufreqDataCut.data = threadStatesParam; 131 gpufreqDataCut.validationFun('', '', '', '', '', '', ''); 132 expect(gpufreqDataCut._threadId.getAttribute('placeholder')).toEqual('Please input thread id'); 133 }); 134 135 it('TabPaneSchedSwitchTest03', function () { 136 gpufreqDataCut.data = threadStatesParam; 137 gpufreqDataCut.validationFun('1', 'name', '1px solid red', '1px solid green', 'placeholder', 'placeholder', 'single'); 138 expect(gpufreqDataCut._threadId.getAttribute('placeholder')).toEqual('Please input thread id'); 139 }); 140 141 it('TabPaneSchedSwitchTest04', function () { 142 gpufreqDataCut.data = threadStatesParam; 143 gpufreqDataCut.validationFun('1', 'name', '1px solid red', '1px solid green', 'placeholder', 'thread function placeholder', 'loop'); 144 expect(gpufreqDataCut._threadFunc.getAttribute('placeholder')).toEqual('Please input function name'); 145 }); 146 147 it('TabPaneSchedSwitchTest05', function () { 148 expect(gpufreqDataCut.segmentationData(initData[0], dataCut,1).length).toBe(0); 149 }); 150 151 it('TabPaneSchedSwitchTest06', function () { 152 gpufreqDataCut.RetainDecimals = jest.fn(() => true); 153 expect(gpufreqDataCut.createTree(initData)).not.toBeUndefined(); 154 }); 155 156 it('TabPaneSchedSwitchTest07', function () { 157 expect(gpufreqDataCut.updateValueMap(initData[0], 0, '', {}, 1)).toBeUndefined(); 158 }); 159}); 160