/* * 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. */ import { TabPaneSdkSlice } from '../../../../../../src/trace/component/trace/sheet/sdk/TabPaneSdkSlice'; import { LitTable } from '../../../../../../src/base-ui/table/lit-table'; import { SpSystemTrace } from '../../../../../../src/trace/component/SpSystemTrace'; import { TabUtil } from '../../../../../../src/trace/component/trace/sheet/sdk/TabUtil'; jest.mock('../../../../../../src/js-heap/model/DatabaseStruct', () => {}); window.ResizeObserver = window.ResizeObserver || jest.fn().mockImplementation(() => ({ disconnect: jest.fn(), observe: jest.fn(), unobserve: jest.fn(), })); const sqlite = require('../../../../../../src/trace/database/sql/SqlLite.sql'); jest.mock('../../../../../../src/trace/database/sql/SqlLite.sql'); const sdkSqlite = require('../../../../../../src/trace/database/sql/Sdk.sql'); jest.mock('../../../../../../src/trace/database/sql/Sdk.sql'); describe('TabPaneSdkSlice Test', () => { let tabPaneSdkSlice = new TabPaneSdkSlice(); document.body.innerHTML = ``; let litTable = document.querySelector('#tb-counter') as LitTable; it('TabPaneSdkSliceTest00', () => { let mockStartTime = sqlite.queryStartTime; let startTime: Array = [ { start_ts: 1000, }, ]; mockStartTime.mockResolvedValue(startTime); let totalTime = sqlite.queryTotalTime; let totalData: Array = [ { recordStartNS: 1000, recordEndNS: 3000, total: 2000, }, ]; totalTime.mockResolvedValue(totalData); let mockSdkSliceData = sdkSqlite.getTabSdkSliceData; let sliceData = [ { start_ts: 1000, end_ts: 1500, type: 0, value: 100, }, { start_ts: 2000, end_ts: 2500, type: 0, value: 100, }, { start_ts: 3000, end_ts: 3500, type: 0, value: 100, }, { start_ts: 4000, end_ts: 4500, type: 0, value: 100, }, { start_ts: 5000, end_ts: 5500, type: 0, value: 100, }, ]; mockSdkSliceData.mockResolvedValue(sliceData); let slice = new TabPaneSdkSlice(); slice.tblSdkSlice = jest.fn(() => litTable); slice.tblSdkSlice.appendChild = jest.fn(() => true); let map = new Map(); let sdkSliceJsonCofigStr = '{"settingConfig":{"configuration":{"counters":{"enum":["ARM_Mali-TTRx_JS1_ACTIVE","ARM_Mali-TTRx_JS0_ACTIVE","ARM_Mali-TTRx_GPU_ACTIVE","ARM_Mali-TTRx_FRAG_ACTIVE"],\n' + ' "type":"string"},"stop_gator":{"default":"true","description":"stop_gator","type":"boolean"},"version":{"default":"1","description":"gatordversion","type":"number"}},"name":"mailG77"},\n' + ' "tableConfig":{"showType":[{"columns":[{"column":"ts","displayName":"TimeStamp","showType":[2,1,3],"type":"INTEGER"},{"column":"counter_id","displayName":"MonitorValue","showType":[1,96,3],"type":"INTEGER"},\n' + ' {"column":"value","displayName":"Value","showType":[0,1,3],"type":"INTEGER"}],"inner":{"columns":[{"column":"counter_name","displayName":"","showType":[63],"type":"STRING"},\n' + ' {"column":"counter_id","displayName":"","showType":[0,2],"type":"INTEGER"}],"tableName":"mock_plugin_counterobj_table"},"tableName":"mock_plugin_counter_table"},\n' + ' {"columns":[{"column":"start_ts","displayName":"startts","showType":[2,3],"type":"INTEGER"},{"column":"end_ts","displayName":"endts","showType":[2,10,3],"type":"INTEGER"},\n' + ' {"column":"slice_id","displayName":"slice_id","showType":[2,4,3],"type":"INTEGER"},{"column":"value","displayName":"Value","showType":[2,3],"type":"INTEGER"}],\n' + ' "inner":{"columns":[{"column":"slice_name","displayName":"","showType":[6],"type":"STRING"},{"column":"slice_id","displayName":"","showType":[12,0],"type":"INTEGER"}],\n' + ' "tableName":"mock_plugin_sliceobj_table"},"tableName":"mock_plugin_slice_table"}]}}'; let dataSliceMap = { jsonConfig: sdkSliceJsonCofigStr, }; let datamap = { disPlayName: 'common_mock', pluginName: 'mock-plugin', jsonConfig: sdkSliceJsonCofigStr, }; map.set('1', dataSliceMap); SpSystemTrace.SDK_CONFIG_MAP = map; let data = { cpus: [], threadIds: [12, 787, 56, 11], trackIds: [52, 652, 23, 2], funTids: [4, 45, 9], heapIds: [95, 4], nativeMemory: [], cpuAbilityIds: [120, 41, 2], memoryAbilityIds: [63, 1], diskAbilityIds: [56, 1], networkAbilityIds: [36, 11], leftNs: 1236461, rightNs: 96641021, hasFps: false, statisticsSelectData: [], perfSampleIds: [12, 15, 112], perfCpus: [0, 1], perfProcess: [], perfThread: [], perfAll: false, sdkSliceIds: ['a-b', 'd-e', 'a'], }; map.set('1', datamap); SpSystemTrace.SDK_CONFIG_MAP = map; slice.tblSdkSlice.recycleDataSource = jest.fn(() => data); slice.data = data; expect(slice.data).toBeUndefined(); }); it('TabPaneSdkSliceTest01', () => { expect(tabPaneSdkSlice.parseJson([])).toBe(''); }); it('TabPaneSdkSliceTest02', () => { let type = { columns: [{ showType: 'slice' }], }; expect(TabUtil.getTableType(type)).toBe(''); }); it('TabPaneSdkSliceTest03', () => { expect(tabPaneSdkSlice.initDataElement()).toBeUndefined(); }); it('TabPaneSdkSliceTest04', function () { tabPaneSdkSlice.tblSdkSlice = jest.fn(() => true); tabPaneSdkSlice.tblSdkSlice!.recycleDataSource = jest.fn(() => true); expect( tabPaneSdkSlice.sortByColumn({ key: '', sort: '', }) ).toBeUndefined(); }); it('TabPaneSdkSliceTest06', () => { expect(tabPaneSdkSlice.isDateIntersection(5, 5, 1, 6)).toBeTruthy(); }); it('TabPaneSdkSliceTest07', () => { expect(tabPaneSdkSlice.isDateIntersection(5, 5, 1, 6)).toBeTruthy(); }); it('TabPaneSdkSliceTest08', () => { expect(tabPaneSdkSlice.isDateIntersection(1, 5, 5, 3)).toBeTruthy(); }); });