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 { threadPool } from '../../../../src/trace/database/SqlLite'; 17fb726d48Sopenharmony_ciimport { frameJanksSender } from '../../../../src/trace/database/data-trafic/FrameJanksSender'; 18fb726d48Sopenharmony_ciimport { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow'; 19fb726d48Sopenharmony_ciimport { JanksStruct } from '../../../../src/trace/bean/JanksStruct'; 20fb726d48Sopenharmony_ciimport { QueryEnum } from '../../../../src/trace/database/data-trafic/utils/QueryEnum'; 21fb726d48Sopenharmony_cijest.mock('../../../../src/js-heap/model/DatabaseStruct', () => {}); 22fb726d48Sopenharmony_cijest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => { 23fb726d48Sopenharmony_ci return {}; 24fb726d48Sopenharmony_ci}); 25fb726d48Sopenharmony_cijest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { 26fb726d48Sopenharmony_ci return {}; 27fb726d48Sopenharmony_ci}); 28fb726d48Sopenharmony_ci 29fb726d48Sopenharmony_cidescribe('FrameJanksSender Test', () => { 30fb726d48Sopenharmony_ci let expectedData = { 31fb726d48Sopenharmony_ci app_dur: 16603333, 32fb726d48Sopenharmony_ci cmdline: "com.ohos.launch", 33fb726d48Sopenharmony_ci depth: 0, 34fb726d48Sopenharmony_ci dur: 16603333, 35fb726d48Sopenharmony_ci frame: {x: 167, y: 0, width: 3, height: 20}, 36fb726d48Sopenharmony_ci frame_type: "frameTime", 37fb726d48Sopenharmony_ci id: 157, 38fb726d48Sopenharmony_ci ipid: 19, 39fb726d48Sopenharmony_ci jank_tag: 65535, 40fb726d48Sopenharmony_ci name: 2087, 41fb726d48Sopenharmony_ci pid: 2128, 42fb726d48Sopenharmony_ci rs_dur: 16603333, 43fb726d48Sopenharmony_ci rs_ipid: 15, 44fb726d48Sopenharmony_ci rs_name: "swapper", 45fb726d48Sopenharmony_ci rs_pid: 994, 46fb726d48Sopenharmony_ci rs_ts: 1038812, 47fb726d48Sopenharmony_ci rs_vsync: 1080, 48fb726d48Sopenharmony_ci ts: 1038812 49fb726d48Sopenharmony_ci } 50fb726d48Sopenharmony_ci 51fb726d48Sopenharmony_ci let actualData = { 52fb726d48Sopenharmony_ci app_dur: 3403000, 53fb726d48Sopenharmony_ci cmdline: "com.ohos.launch", 54fb726d48Sopenharmony_ci depth: 0, 55fb726d48Sopenharmony_ci dur: 17569000, 56fb726d48Sopenharmony_ci frame: {x: 739, y: 0, width: 3, height: 20}, 57fb726d48Sopenharmony_ci frame_type: "frameTime", 58fb726d48Sopenharmony_ci id: 898, 59fb726d48Sopenharmony_ci ipid: 19, 60fb726d48Sopenharmony_ci jank_tag: 0, 61fb726d48Sopenharmony_ci name: 2275, 62fb726d48Sopenharmony_ci pid: 2128, 63fb726d48Sopenharmony_ci rs_dur: 1192000, 64fb726d48Sopenharmony_ci rs_ipid: 15, 65fb726d48Sopenharmony_ci rs_name: "swapper", 66fb726d48Sopenharmony_ci rs_pid: 994, 67fb726d48Sopenharmony_ci rs_ts: 4598062, 68fb726d48Sopenharmony_ci rs_vsync: 1255, 69fb726d48Sopenharmony_ci ts: 4581685, 70fb726d48Sopenharmony_ci type: "0" 71fb726d48Sopenharmony_ci } 72fb726d48Sopenharmony_ci 73fb726d48Sopenharmony_ci it('FrameJanksSenderTest01', () => { 74fb726d48Sopenharmony_ci threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => { 75fb726d48Sopenharmony_ci callback(expectedData, 1, true); 76fb726d48Sopenharmony_ci }); 77fb726d48Sopenharmony_ci let expectedTraceRow = TraceRow.skeleton<JanksStruct>(); 78fb726d48Sopenharmony_ci frameJanksSender(QueryEnum.FrameExpectedData, expectedTraceRow).then(result => { 79fb726d48Sopenharmony_ci expect(result).toHaveLength(1); 80fb726d48Sopenharmony_ci }); 81fb726d48Sopenharmony_ci }); 82fb726d48Sopenharmony_ci 83fb726d48Sopenharmony_ci it('FrameJanksSenderTest02', () => { 84fb726d48Sopenharmony_ci threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => { 85fb726d48Sopenharmony_ci callback(actualData, 1, true); 86fb726d48Sopenharmony_ci }); 87fb726d48Sopenharmony_ci let actualTraceRow = TraceRow.skeleton<JanksStruct>(); 88fb726d48Sopenharmony_ci frameJanksSender(QueryEnum.FrameActualData, actualTraceRow).then(result => { 89fb726d48Sopenharmony_ci expect(result).toHaveLength(1); 90fb726d48Sopenharmony_ci expect(Array.isArray(result)).toBe(true); 91fb726d48Sopenharmony_ci }); 92fb726d48Sopenharmony_ci }); 93fb726d48Sopenharmony_ci});