* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
jest.mock('../../../../src/trace/component/SpSystemTrace', () => {
return {};
});
import { SpLtpoChart } from '../../../../src/trace/component/chart/SpLTPO';
import { LtpoStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerLTPO';
import { Rect } from '../../../../src/trace/database/ui-worker/ProcedureWorkerCommon';
jest.mock('../../../../src/js-heap/model/DatabaseStruct');
jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => {
return {};
});
jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => {
return {};
});
const intersectionObserverMock = () => ({
observe: () => null,
});
window.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock);
window.ResizeObserver =
window.ResizeObserver ||
jest.fn().mockImplementation(() => ({
disconnect: jest.fn(),
observe: jest.fn(),
unobserve: jest.fn(),
}));
const sqlit = require('../../../../src/trace/database/sql/Ltpo.sql');
jest.mock('../../../../src/trace/database/sql/Ltpo.sql');
describe('SpLtpoChart Test', () => {
let htmlElement: any = document.createElement('sp-system-trace');
let ltPoChart = new SpLtpoChart(htmlElement);
let fanceNameList = sqlit.queryFanceNameList;
fanceNameList.mockResolvedValue([
{
ts: 122,
dur: 245,
name: 'Present Fence',
},
]);
let fpsNameList = sqlit.queryFpsNameList;
fpsNameList.mockResolvedValue([
{
ts: 1224,
dur: 2445,
name: 'Layers,ra:te',
},
]);
let realFpsList = sqlit.queryRealFpsList;
realFpsList.mockResolvedValue([
{
ts: 124,
dur: 445,
name: 'CommitAndReleaseLayers SetScreenRefreshRate',
},
]);
let presentInfo = sqlit.queryPresentInfo;
presentInfo.mockResolvedValue([
{
ts: 124,
dur: 445,
name: 'Present Fence',
},
]);
let rSNowTimeListInfo = sqlit.queryRSNowTimeList;
rSNowTimeListInfo.mockResolvedValue([
{
ts: 124,
dur: 445,
name: 'Present Fence ffdf',
},
]);
let signaledListInfo = sqlit.querySignaledList;
signaledListInfo.mockResolvedValue([
{
ts: 124,
dur: 445,
name: 'Present Fence ffdf',
},
]);
let skipDataListInfo = sqlit.querySkipDataList;
skipDataListInfo.mockResolvedValue([
{
ts: 124,
dur: 445,
name: 'Present Fence ffdf',
},
]);
SpLtpoChart.fanceNameList = [
{
ts: 122,
dur: 245,
name: 'Present Fence signaled',
presentId: 10,
fanceId: 10,
fps: 10,
startTs: 10,
nextStartTs: '20',
nextDur: 10,
value: 10,
pid: 10,
itid: 10,
startTime: 10,
signaled: 10,
nowTime: 10,
cutTime: 10,
cutSendDur: 10,
translateY: 10,
frame: undefined,
isHover: true,
},
{
ts: 122,
dur: 245,
name: 'Present Fence',
presentId: 10,
fanceId: 10,
fps: 10,
startTs: 10,
nextStartTs: '20',
nextDur: 10,
value: 10,
pid: 10,
itid: 10,
startTime: 10,
signaled: 10,
nowTime: 10,
cutTime: 10,
cutSendDur: 10,
translateY: 10,
frame: undefined,
isHover: true,
},
];
SpLtpoChart.fpsnameList = [
{
ts: 122,
dur: 245,
name: 'Present = Fence = signaled',
presentId: 10,
fanceId: 10,
fps: 10,
startTs: 10,
nextStartTs: '20',
nextDur: 10,
value: 10,
pid: 10,
itid: 10,
startTime: 10,
signaled: 10,
nowTime: 10,
cutTime: 10,
cutSendDur: 10,
translateY: 10,
frame: undefined,
isHover: true,
},
{
ts: 122,
dur: 245,
name: 'Present fps: 10 Fence , fps: 20',
presentId: 10,
fanceId: 10,
fps: 10,
startTs: 10,
nextStartTs: '20',
nextDur: 10,
value: 10,
pid: 10,
itid: 10,
startTime: 10,
signaled: 10,
nowTime: 10,
cutTime: 10,
cutSendDur: 10,
translateY: 10,
frame: undefined,
isHover: true,
},
];
SpLtpoChart.realFpsList = [
{
ts: 122,
dur: 245,
name: 'Present Fence signaled',
presentId: 10,
fanceId: 10,
fps: 10,
startTs: 10,
nextStartTs: '20',
nextDur: 10,
value: 10,
pid: 10,
itid: 10,
startTime: 10,
signaled: 10,
nowTime: 10,
cutTime: 10,
cutSendDur: 10,
translateY: 10,
frame: undefined,
isHover: true,
},
{
ts: 122,
dur: 245,
name: 'Present Fence',
presentId: 10,
fanceId: 10,
fps: 10,
startTs: 10,
nextStartTs: '20',
nextDur: 10,
value: 10,
pid: 10,
itid: 10,
startTime: 10,
signaled: 10,
nowTime: 10,
cutTime: 10,
cutSendDur: 10,
translateY: 10,
frame: undefined,
isHover: true,
},
];
SpLtpoChart.rsNowTimeList = [
{
ts: 122,
dur: 245,
name: 'Present Fence fps: 10',
presentId: 10,
fanceId: 10,
fps: 10,
startTs: 10,
nextStartTs: '20',
nextDur: 10,
value: 10,
pid: 10,
itid: 10,
startTime: 10,
signaled: 10,
nowTime: 10,
cutTime: 10,
cutSendDur: 10,
translateY: 10,
frame: undefined,
isHover: true,
},
{
ts: 122,
dur: 245,
name: 'Present Fence',
presentId: 10,
fanceId: 10,
fps: 10,
startTs: 10,
nextStartTs: '20',
nextDur: 10,
value: 10,
pid: 10,
itid: 10,
startTime: 10,
signaled: 10,
nowTime: 10,
cutTime: 10,
cutSendDur: 10,
translateY: 10,
frame: undefined,
isHover: true,
},
];
it('SpLtpoChartTest01', function () {
ltPoChart.init();
expect(SpLtpoChart.ltpoDataArr).toEqual([]);
});
it('SpLtpoChartTest02', function () {
expect(ltPoChart.setRealFps()).toBeUndefined();
});
it('SpLtpoChartTest3', function () {
expect(ltPoChart.deleteUselessFence(SpLtpoChart.fpsnameList, SpLtpoChart.fpsnameList)).toBeUndefined();
});
it('SpLtpoChartTest04', function () {
expect(SpLtpoChart.presentArr).toEqual([]);
});
it('SpLtpoChartTest05', function () {
expect(ltPoChart.initFenceName()).toBeUndefined();
});
it('SpLtpoChartTest06', function () {
expect(ltPoChart.initFpsName()).toBeUndefined();
});
it('SpLtpoChartTest07', function () {
expect(ltPoChart.initRealFps()).toBeUndefined();
});
it('SpLtpoChartTest08', function () {
expect(ltPoChart.setRealFps()).toBeUndefined();
});
it('SpLtpoChartTest09', function () {
let lptoArr = [];
let fanceId = 10;
let fps = 10;
let signaled = 10;
let startTs = 0;
let dur = 10;
let nextStartTs = 10;
let nextDur = 10;
expect(ltPoChart.pushLtpoData(lptoArr, fanceId, fps, signaled, startTs, dur, nextStartTs, nextDur)).toBeUndefined();
});
it('SpLtpoChartTest10', function () {
expect(ltPoChart.specialValue(0.2)).toBe(0);
expect(ltPoChart.specialValue(0.5)).toBe(0);
expect(ltPoChart.specialValue(0.7)).toBe(1);
expect(ltPoChart.specialValue(1.8)).toBe(2);
});
});