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 { SpFrameTimeChart } from '../../../../src/trace/component/chart/SpFrameTimeChart'; 17fb726d48Sopenharmony_cijest.mock('../../../../src/trace/component/SpSystemTrace', () => { 18fb726d48Sopenharmony_ci return {}; 19fb726d48Sopenharmony_ci}); 20fb726d48Sopenharmony_ciimport { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow'; 21fb726d48Sopenharmony_ciimport { FlagsConfig } from '../../../../src/trace/component/SpFlags'; 22fb726d48Sopenharmony_ci 23fb726d48Sopenharmony_ciconst intersectionObserverMock = () => ({ 24fb726d48Sopenharmony_ci observe: () => null, 25fb726d48Sopenharmony_ci}); 26fb726d48Sopenharmony_ciwindow.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock); 27fb726d48Sopenharmony_cijest.mock('../../../../src/js-heap/model/DatabaseStruct'); 28fb726d48Sopenharmony_ciconst sqlite = require('../../../../src/trace/database/sql/SqlLite.sql'); 29fb726d48Sopenharmony_cijest.mock('../../../../src/trace/database/sql/SqlLite.sql'); 30fb726d48Sopenharmony_cijest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { 31fb726d48Sopenharmony_ci return {}; 32fb726d48Sopenharmony_ci}); 33fb726d48Sopenharmony_ciconst jankSqlite = require('../../../../src/trace/database/sql/Janks.sql'); 34fb726d48Sopenharmony_cijest.mock('../../../../src/trace/database/sql/Janks.sql'); 35fb726d48Sopenharmony_ciconst processSqlite = require('../../../../src/trace/database/sql/ProcessThread.sql'); 36fb726d48Sopenharmony_cijest.mock('../../../../src/trace/database/sql/ProcessThread.sql'); 37fb726d48Sopenharmony_cijest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => { 38fb726d48Sopenharmony_ci return {}; 39fb726d48Sopenharmony_ci}); 40fb726d48Sopenharmony_ciwindow.ResizeObserver = 41fb726d48Sopenharmony_ci window.ResizeObserver || 42fb726d48Sopenharmony_ci jest.fn().mockImplementation(() => ({ 43fb726d48Sopenharmony_ci disconnect: jest.fn(), 44fb726d48Sopenharmony_ci observe: jest.fn(), 45fb726d48Sopenharmony_ci unobserve: jest.fn(), 46fb726d48Sopenharmony_ci })); 47fb726d48Sopenharmony_ci 48fb726d48Sopenharmony_cidescribe('SpFrameTimeChart Test', () => { 49fb726d48Sopenharmony_ci let htmlElement: any = document.createElement('sp-system-trace'); 50fb726d48Sopenharmony_ci let spFrameTimeChart = new SpFrameTimeChart(htmlElement); 51fb726d48Sopenharmony_ci let queryFrameTime = sqlite.queryFrameTimeData; 52fb726d48Sopenharmony_ci let queryFrameTimeData = [ 53fb726d48Sopenharmony_ci { 54fb726d48Sopenharmony_ci pid: 256, 55fb726d48Sopenharmony_ci }, 56fb726d48Sopenharmony_ci ]; 57fb726d48Sopenharmony_ci queryFrameTime.mockResolvedValue(queryFrameTimeData); 58fb726d48Sopenharmony_ci 59fb726d48Sopenharmony_ci let queryExpectedFrame = jankSqlite.queryExpectedFrameDate; 60fb726d48Sopenharmony_ci let queryExpectedFrameDate = [ 61fb726d48Sopenharmony_ci { 62fb726d48Sopenharmony_ci dur: 2585, 63fb726d48Sopenharmony_ci depth: 1, 64fb726d48Sopenharmony_ci }, 65fb726d48Sopenharmony_ci { 66fb726d48Sopenharmony_ci dur: 6688, 67fb726d48Sopenharmony_ci depth: 1, 68fb726d48Sopenharmony_ci }, 69fb726d48Sopenharmony_ci ]; 70fb726d48Sopenharmony_ci queryExpectedFrame.mockResolvedValue(queryExpectedFrameDate); 71fb726d48Sopenharmony_ci 72fb726d48Sopenharmony_ci let queryActualFrame = jankSqlite.queryActualFrameDate; 73fb726d48Sopenharmony_ci let queryActualFrameDate = [ 74fb726d48Sopenharmony_ci { 75fb726d48Sopenharmony_ci dur: 6878, 76fb726d48Sopenharmony_ci depth: 1, 77fb726d48Sopenharmony_ci }, 78fb726d48Sopenharmony_ci { 79fb726d48Sopenharmony_ci dur: 6238, 80fb726d48Sopenharmony_ci depth: 1, 81fb726d48Sopenharmony_ci }, 82fb726d48Sopenharmony_ci ]; 83fb726d48Sopenharmony_ci queryActualFrame.mockResolvedValue(queryActualFrameDate); 84fb726d48Sopenharmony_ci 85fb726d48Sopenharmony_ci let frameApp = sqlite.queryFrameApp; 86fb726d48Sopenharmony_ci let frameAppData = [ 87fb726d48Sopenharmony_ci { 88fb726d48Sopenharmony_ci appName: 'test0', 89fb726d48Sopenharmony_ci }, 90fb726d48Sopenharmony_ci { 91fb726d48Sopenharmony_ci appName: 'test1', 92fb726d48Sopenharmony_ci }, 93fb726d48Sopenharmony_ci { 94fb726d48Sopenharmony_ci appName: 'test2', 95fb726d48Sopenharmony_ci }, 96fb726d48Sopenharmony_ci ]; 97fb726d48Sopenharmony_ci frameApp.mockResolvedValue(frameAppData); 98fb726d48Sopenharmony_ci 99fb726d48Sopenharmony_ci let frameAnimation = sqlite.queryFrameAnimationData; 100fb726d48Sopenharmony_ci let frameAnimationData = [ 101fb726d48Sopenharmony_ci {animationId: 1, dynamicEndTs: 4774481414, dynamicStartTs: 4091445476, ts: 4091445476}, 102fb726d48Sopenharmony_ci { 103fb726d48Sopenharmony_ci animationId: 2, 104fb726d48Sopenharmony_ci dynamicEndTs: 8325095997, 105fb726d48Sopenharmony_ci dynamicStartTs: 7652588184, 106fb726d48Sopenharmony_ci ts: 7652588184, 107fb726d48Sopenharmony_ci }, 108fb726d48Sopenharmony_ci ]; 109fb726d48Sopenharmony_ci frameAnimation.mockResolvedValue(frameAnimationData); 110fb726d48Sopenharmony_ci 111fb726d48Sopenharmony_ci let allProcessNames = processSqlite.queryAllProcessNames; 112fb726d48Sopenharmony_ci let allProcessNameData = [ 113fb726d48Sopenharmony_ci { 114fb726d48Sopenharmony_ci id: 12, 115fb726d48Sopenharmony_ci name: 'test name', 116fb726d48Sopenharmony_ci pid: 255 117fb726d48Sopenharmony_ci } 118fb726d48Sopenharmony_ci ]; 119fb726d48Sopenharmony_ci allProcessNames.mockResolvedValue(allProcessNameData); 120fb726d48Sopenharmony_ci 121fb726d48Sopenharmony_ci let dynamicIdAndName = sqlite.queryDynamicIdAndNameData; 122fb726d48Sopenharmony_ci let data = [ 123fb726d48Sopenharmony_ci { 124fb726d48Sopenharmony_ci id: 12, 125fb726d48Sopenharmony_ci appName: 'name' 126fb726d48Sopenharmony_ci } 127fb726d48Sopenharmony_ci ]; 128fb726d48Sopenharmony_ci dynamicIdAndName.mockResolvedValue(data); 129fb726d48Sopenharmony_ci 130fb726d48Sopenharmony_ci let animationTimeRange = sqlite.queryAnimationTimeRangeData; 131fb726d48Sopenharmony_ci let rangeData = [ 132fb726d48Sopenharmony_ci { 133fb726d48Sopenharmony_ci status: 'Response delay', 134fb726d48Sopenharmony_ci startTs: 225, 135fb726d48Sopenharmony_ci endTs: 6355 136fb726d48Sopenharmony_ci } 137fb726d48Sopenharmony_ci ]; 138fb726d48Sopenharmony_ci animationTimeRange.mockResolvedValue(rangeData); 139fb726d48Sopenharmony_ci 140fb726d48Sopenharmony_ci 141fb726d48Sopenharmony_ci let animationIdAndName = sqlite.queryAnimationIdAndNameData; 142fb726d48Sopenharmony_ci let animationIdAndNameData = [ 143fb726d48Sopenharmony_ci { 144fb726d48Sopenharmony_ci id: 12, 145fb726d48Sopenharmony_ci name: 'test', 146fb726d48Sopenharmony_ci info: '{}' 147fb726d48Sopenharmony_ci } 148fb726d48Sopenharmony_ci ]; 149fb726d48Sopenharmony_ci animationIdAndName.mockResolvedValue(animationIdAndNameData); 150fb726d48Sopenharmony_ci 151fb726d48Sopenharmony_ci let frameDynamic = sqlite.queryFrameDynamicData; 152fb726d48Sopenharmony_ci let frameDynamicData = [ 153fb726d48Sopenharmony_ci {alpha: '1.00', appName: 'test0', height: 2772, id: 74, ts: 28565790, width: 1344, x: 0, y: 0}, 154fb726d48Sopenharmony_ci { 155fb726d48Sopenharmony_ci alpha: '1.00', 156fb726d48Sopenharmony_ci appName: 'test0', 157fb726d48Sopenharmony_ci height: 2772, 158fb726d48Sopenharmony_ci id: 75, 159fb726d48Sopenharmony_ci ts: 42341310, 160fb726d48Sopenharmony_ci width: 1344, 161fb726d48Sopenharmony_ci x: 0, 162fb726d48Sopenharmony_ci y: 0, 163fb726d48Sopenharmony_ci }, 164fb726d48Sopenharmony_ci ]; 165fb726d48Sopenharmony_ci frameDynamic.mockResolvedValue(frameDynamicData); 166fb726d48Sopenharmony_ci 167fb726d48Sopenharmony_ci let frameSpacing = sqlite.queryFrameSpacing; 168fb726d48Sopenharmony_ci let frameSpacingData = [ 169fb726d48Sopenharmony_ci { 170fb726d48Sopenharmony_ci currentFrameHeight: 2768, 171fb726d48Sopenharmony_ci currentFrameWidth: 1344, 172fb726d48Sopenharmony_ci currentTs: 17535295995, 173fb726d48Sopenharmony_ci frameSpacingResult: 0.1, 174fb726d48Sopenharmony_ci id: 1216, 175fb726d48Sopenharmony_ci nameId: 'test0', 176fb726d48Sopenharmony_ci preFrameHeight: 2767, 177fb726d48Sopenharmony_ci preFrameWidth: 1343, 178fb726d48Sopenharmony_ci preTs: 17523356412, 179fb726d48Sopenharmony_ci x: 0, 180fb726d48Sopenharmony_ci y: 1, 181fb726d48Sopenharmony_ci }, 182fb726d48Sopenharmony_ci { 183fb726d48Sopenharmony_ci currentFrameHeight: 2768, 184fb726d48Sopenharmony_ci currentFrameWidth: 1344, 185fb726d48Sopenharmony_ci currentTs: 17546478287, 186fb726d48Sopenharmony_ci frameSpacingResult: 0, 187fb726d48Sopenharmony_ci id: 1217, 188fb726d48Sopenharmony_ci nameId: 'test0', 189fb726d48Sopenharmony_ci preFrameHeight: 2768, 190fb726d48Sopenharmony_ci preFrameWidth: 1344, 191fb726d48Sopenharmony_ci preTs: 17535295995, 192fb726d48Sopenharmony_ci x: 0, 193fb726d48Sopenharmony_ci y: 1, 194fb726d48Sopenharmony_ci }, 195fb726d48Sopenharmony_ci ]; 196fb726d48Sopenharmony_ci frameSpacing.mockResolvedValue(frameSpacingData); 197fb726d48Sopenharmony_ci 198fb726d48Sopenharmony_ci let physical = sqlite.queryPhysicalData; 199fb726d48Sopenharmony_ci let physicalData = [{physicalFrameRate: 90, physicalHeight: 2772, physicalWidth: 1344}]; 200fb726d48Sopenharmony_ci physical.mockResolvedValue(physicalData); 201fb726d48Sopenharmony_ci 202fb726d48Sopenharmony_ci it('TabPaneFramesTest01', function () { 203fb726d48Sopenharmony_ci expect(spFrameTimeChart.init()).toBeTruthy(); 204fb726d48Sopenharmony_ci }); 205fb726d48Sopenharmony_ci 206fb726d48Sopenharmony_ci it('TabPaneFramesTest02', function () { 207fb726d48Sopenharmony_ci FlagsConfig.updateFlagsConfig('AnimationAnalysis', 'Enabled'); 208fb726d48Sopenharmony_ci spFrameTimeChart.initAnimatedScenesChart( 209fb726d48Sopenharmony_ci TraceRow.skeleton(), 210fb726d48Sopenharmony_ci { 211fb726d48Sopenharmony_ci pid: 1, 212fb726d48Sopenharmony_ci processName: 'render_service', 213fb726d48Sopenharmony_ci }, 214fb726d48Sopenharmony_ci TraceRow.skeleton() 215fb726d48Sopenharmony_ci ); 216fb726d48Sopenharmony_ci }); 217fb726d48Sopenharmony_ci it('TabPaneFramesTest03', function () { 218fb726d48Sopenharmony_ci expect(spFrameTimeChart.frameNoExpandTimeOut()).toBeTruthy(); 219fb726d48Sopenharmony_ci }); 220fb726d48Sopenharmony_ci it('TabPaneFramesTest04', function () { 221fb726d48Sopenharmony_ci expect(spFrameTimeChart.frameExpandTimeOut()).toBeTruthy(); 222fb726d48Sopenharmony_ci }); 223fb726d48Sopenharmony_ci}); 224