1fb726d48Sopenharmony_ci/* 2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License. 5fb726d48Sopenharmony_ci * You may obtain a copy of the License at 6fb726d48Sopenharmony_ci * 7fb726d48Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8fb726d48Sopenharmony_ci * 9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and 13fb726d48Sopenharmony_ci * limitations under the License. 14fb726d48Sopenharmony_ci */ 15fb726d48Sopenharmony_ci 16fb726d48Sopenharmony_ciimport { SpHiPerf } from '../../../../src/trace/component/chart/SpHiPerf'; 17fb726d48Sopenharmony_cijest.mock('../../../../src/trace/component/SpSystemTrace', () => { 18fb726d48Sopenharmony_ci return {}; 19fb726d48Sopenharmony_ci}); 20fb726d48Sopenharmony_ciimport { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow'; 21fb726d48Sopenharmony_cijest.mock('../../../../src/js-heap/model/DatabaseStruct'); 22fb726d48Sopenharmony_ciconst sqlit = require('../../../../src/trace/database/sql/Perf.sql'); 23fb726d48Sopenharmony_cijest.mock('../../../../src/trace/database/sql/Perf.sql'); 24fb726d48Sopenharmony_cijest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { 25fb726d48Sopenharmony_ci return {}; 26fb726d48Sopenharmony_ci}); 27fb726d48Sopenharmony_cijest.mock('../../../../src/trace/component/chart/PerfDataQuery',()=>{ 28fb726d48Sopenharmony_ci return {} 29fb726d48Sopenharmony_ci}) 30fb726d48Sopenharmony_ciconst intersectionObserverMock = () => ({ 31fb726d48Sopenharmony_ci observe: () => null, 32fb726d48Sopenharmony_ci}); 33fb726d48Sopenharmony_ciwindow.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock); 34fb726d48Sopenharmony_ci 35fb726d48Sopenharmony_ciwindow.ResizeObserver = 36fb726d48Sopenharmony_ci window.ResizeObserver || 37fb726d48Sopenharmony_ci jest.fn().mockImplementation(() => ({ 38fb726d48Sopenharmony_ci disconnect: jest.fn(), 39fb726d48Sopenharmony_ci observe: jest.fn(), 40fb726d48Sopenharmony_ci unobserve: jest.fn(), 41fb726d48Sopenharmony_ci })); 42fb726d48Sopenharmony_ci 43fb726d48Sopenharmony_cidescribe('SpHiPerf Test', () => { 44fb726d48Sopenharmony_ci let perfDataQuery = sqlit.perfDataQuery 45fb726d48Sopenharmony_ci let queryPerfCmdline = sqlit.queryPerfCmdline; 46fb726d48Sopenharmony_ci queryPerfCmdline.mockResolvedValue([ 47fb726d48Sopenharmony_ci { 48fb726d48Sopenharmony_ci report_value: 49fb726d48Sopenharmony_ci 'hiperf record --control prepare -o /data/local/tmp…e sched:sched_waking -a -s dwarf -f 1000 --offcpu', 50fb726d48Sopenharmony_ci }, 51fb726d48Sopenharmony_ci ]); 52fb726d48Sopenharmony_ci 53fb726d48Sopenharmony_ci let queryPerfThread = sqlit.queryPerfThread; 54fb726d48Sopenharmony_ci queryPerfThread.mockResolvedValue([ 55fb726d48Sopenharmony_ci { 56fb726d48Sopenharmony_ci tid: 11, 57fb726d48Sopenharmony_ci threadName: "ksoftirqd/0", 58fb726d48Sopenharmony_ci pid: 11, 59fb726d48Sopenharmony_ci processName: "ksoftirqd/0" 60fb726d48Sopenharmony_ci }, 61fb726d48Sopenharmony_ci { 62fb726d48Sopenharmony_ci tid: 1, 63fb726d48Sopenharmony_ci threadName: 'threadName111', 64fb726d48Sopenharmony_ci pid: 1, 65fb726d48Sopenharmony_ci processName: 'processNam111e', 66fb726d48Sopenharmony_ci }, 67fb726d48Sopenharmony_ci ]); 68fb726d48Sopenharmony_ci 69fb726d48Sopenharmony_ci let queryHiPerfEventList = sqlit.queryHiPerfEventList; 70fb726d48Sopenharmony_ci queryHiPerfEventList.mockResolvedValue([ 71fb726d48Sopenharmony_ci { 72fb726d48Sopenharmony_ci id: 0, 73fb726d48Sopenharmony_ci report_value: 'sched:sched_waking', 74fb726d48Sopenharmony_ci }, 75fb726d48Sopenharmony_ci { 76fb726d48Sopenharmony_ci id: 1, 77fb726d48Sopenharmony_ci report_value: 'sched:sched_switch', 78fb726d48Sopenharmony_ci }, 79fb726d48Sopenharmony_ci ]); 80fb726d48Sopenharmony_ci 81fb726d48Sopenharmony_ci let queryHiPerfCpuMergeData2 = sqlit.queryHiPerfCpuMergeData2; 82fb726d48Sopenharmony_ci queryHiPerfCpuMergeData2.mockResolvedValue([ 83fb726d48Sopenharmony_ci { 84fb726d48Sopenharmony_ci id: 0, 85fb726d48Sopenharmony_ci callchain_id: 1, 86fb726d48Sopenharmony_ci timestamp: 3468360924674, 87fb726d48Sopenharmony_ci thread_id: 2469, 88fb726d48Sopenharmony_ci event_count: 1, 89fb726d48Sopenharmony_ci event_type_id: 0, 90fb726d48Sopenharmony_ci timestamp_trace: 3468360965799, 91fb726d48Sopenharmony_ci cpu_id: 2, 92fb726d48Sopenharmony_ci thread_state: 'Running', 93fb726d48Sopenharmony_ci startNS: 0, 94fb726d48Sopenharmony_ci }, 95fb726d48Sopenharmony_ci { 96fb726d48Sopenharmony_ci id: 4, 97fb726d48Sopenharmony_ci callchain_id: 1, 98fb726d48Sopenharmony_ci timestamp: 3468361000799, 99fb726d48Sopenharmony_ci thread_id: 2469, 100fb726d48Sopenharmony_ci event_count: 1, 101fb726d48Sopenharmony_ci event_type_id: 0, 102fb726d48Sopenharmony_ci timestamp_trace: 3468361041924, 103fb726d48Sopenharmony_ci cpu_id: 2, 104fb726d48Sopenharmony_ci thread_state: 'Running', 105fb726d48Sopenharmony_ci startNS: 76125, 106fb726d48Sopenharmony_ci }, 107fb726d48Sopenharmony_ci { 108fb726d48Sopenharmony_ci id: 8, 109fb726d48Sopenharmony_ci callchain_id: 1, 110fb726d48Sopenharmony_ci timestamp: 3468361045716, 111fb726d48Sopenharmony_ci thread_id: 2469, 112fb726d48Sopenharmony_ci event_count: 1, 113fb726d48Sopenharmony_ci event_type_id: 0, 114fb726d48Sopenharmony_ci timestamp_trace: 3468361086841, 115fb726d48Sopenharmony_ci cpu_id: 2, 116fb726d48Sopenharmony_ci thread_state: 'Running', 117fb726d48Sopenharmony_ci startNS: 121042, 118fb726d48Sopenharmony_ci }, 119fb726d48Sopenharmony_ci { 120fb726d48Sopenharmony_ci id: 9, 121fb726d48Sopenharmony_ci callchain_id: 4, 122fb726d48Sopenharmony_ci timestamp: 3468361054466, 123fb726d48Sopenharmony_ci thread_id: 1336, 124fb726d48Sopenharmony_ci event_count: 1, 125fb726d48Sopenharmony_ci event_type_id: 1, 126fb726d48Sopenharmony_ci timestamp_trace: 3468361095591, 127fb726d48Sopenharmony_ci cpu_id: 3, 128fb726d48Sopenharmony_ci thread_state: 'Suspend', 129fb726d48Sopenharmony_ci startNS: 129792, 130fb726d48Sopenharmony_ci }, 131fb726d48Sopenharmony_ci ]); 132fb726d48Sopenharmony_ci let getPerfEventType = sqlit.queryPerfEventType; 133fb726d48Sopenharmony_ci getPerfEventType.mockResolvedValue([{ 134fb726d48Sopenharmony_ci id:1, 135fb726d48Sopenharmony_ci report_value:'sched:sched_waking', 136fb726d48Sopenharmony_ci }]) 137fb726d48Sopenharmony_ci let htmlElement: any = document.createElement('sp-system-trace'); 138fb726d48Sopenharmony_ci let spHiPerf = new SpHiPerf(htmlElement); 139fb726d48Sopenharmony_ci it('SpHiPerf01', function () { 140fb726d48Sopenharmony_ci spHiPerf.init(); 141fb726d48Sopenharmony_ci expect(spHiPerf).toBeDefined(); 142fb726d48Sopenharmony_ci }); 143fb726d48Sopenharmony_ci it('SpHiPerf02', function () { 144fb726d48Sopenharmony_ci let cpuData = [ 145fb726d48Sopenharmony_ci { 146fb726d48Sopenharmony_ci cpu_id: 0 147fb726d48Sopenharmony_ci } 148fb726d48Sopenharmony_ci ] 149fb726d48Sopenharmony_ci let threadData = [ 150fb726d48Sopenharmony_ci { 151fb726d48Sopenharmony_ci tid: 11, 152fb726d48Sopenharmony_ci threadName: "ksoftirqd/0", 153fb726d48Sopenharmony_ci pid: 11, 154fb726d48Sopenharmony_ci processName: "ksoftirqd/0" 155fb726d48Sopenharmony_ci } 156fb726d48Sopenharmony_ci ] 157fb726d48Sopenharmony_ci expect(spHiPerf.setCallTotalRow(new TraceRow<any>(),cpuData,threadData)).not.toBeUndefined() 158fb726d48Sopenharmony_ci }); 159fb726d48Sopenharmony_ci}); 160