1/* 2 * Copyright (C) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import { TabPaneSdkSlice } from '../../../../../../src/trace/component/trace/sheet/sdk/TabPaneSdkSlice'; 17import { LitTable } from '../../../../../../src/base-ui/table/lit-table'; 18import { SpSystemTrace } from '../../../../../../src/trace/component/SpSystemTrace'; 19 20import { TabUtil } from '../../../../../../src/trace/component/trace/sheet/sdk/TabUtil'; 21jest.mock('../../../../../../src/js-heap/model/DatabaseStruct', () => {}); 22 23window.ResizeObserver = 24 window.ResizeObserver || 25 jest.fn().mockImplementation(() => ({ 26 disconnect: jest.fn(), 27 observe: jest.fn(), 28 unobserve: jest.fn(), 29 })); 30 31const sqlite = require('../../../../../../src/trace/database/sql/SqlLite.sql'); 32jest.mock('../../../../../../src/trace/database/sql/SqlLite.sql'); 33const sdkSqlite = require('../../../../../../src/trace/database/sql/Sdk.sql'); 34jest.mock('../../../../../../src/trace/database/sql/Sdk.sql'); 35 36describe('TabPaneSdkSlice Test', () => { 37 let tabPaneSdkSlice = new TabPaneSdkSlice(); 38 document.body.innerHTML = `<lit-table id="tb-counter"></lit-table>`; 39 let litTable = document.querySelector('#tb-counter') as LitTable; 40 it('TabPaneSdkSliceTest00', () => { 41 let mockStartTime = sqlite.queryStartTime; 42 let startTime: Array<any> = [ 43 { 44 start_ts: 1000, 45 }, 46 ]; 47 mockStartTime.mockResolvedValue(startTime); 48 let totalTime = sqlite.queryTotalTime; 49 let totalData: Array<any> = [ 50 { 51 recordStartNS: 1000, 52 recordEndNS: 3000, 53 total: 2000, 54 }, 55 ]; 56 totalTime.mockResolvedValue(totalData); 57 let mockSdkSliceData = sdkSqlite.getTabSdkSliceData; 58 let sliceData = [ 59 { 60 start_ts: 1000, 61 end_ts: 1500, 62 type: 0, 63 value: 100, 64 }, 65 { 66 start_ts: 2000, 67 end_ts: 2500, 68 type: 0, 69 value: 100, 70 }, 71 { 72 start_ts: 3000, 73 end_ts: 3500, 74 type: 0, 75 value: 100, 76 }, 77 { 78 start_ts: 4000, 79 end_ts: 4500, 80 type: 0, 81 value: 100, 82 }, 83 { 84 start_ts: 5000, 85 end_ts: 5500, 86 type: 0, 87 value: 100, 88 }, 89 ]; 90 mockSdkSliceData.mockResolvedValue(sliceData); 91 let slice = new TabPaneSdkSlice(); 92 slice.tblSdkSlice = jest.fn(() => litTable); 93 slice.tblSdkSlice.appendChild = jest.fn(() => true); 94 let map = new Map(); 95 let sdkSliceJsonCofigStr = 96 '{"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' + 97 ' "type":"string"},"stop_gator":{"default":"true","description":"stop_gator","type":"boolean"},"version":{"default":"1","description":"gatordversion","type":"number"}},"name":"mailG77"},\n' + 98 ' "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' + 99 ' {"column":"value","displayName":"Value","showType":[0,1,3],"type":"INTEGER"}],"inner":{"columns":[{"column":"counter_name","displayName":"","showType":[63],"type":"STRING"},\n' + 100 ' {"column":"counter_id","displayName":"","showType":[0,2],"type":"INTEGER"}],"tableName":"mock_plugin_counterobj_table"},"tableName":"mock_plugin_counter_table"},\n' + 101 ' {"columns":[{"column":"start_ts","displayName":"startts","showType":[2,3],"type":"INTEGER"},{"column":"end_ts","displayName":"endts","showType":[2,10,3],"type":"INTEGER"},\n' + 102 ' {"column":"slice_id","displayName":"slice_id","showType":[2,4,3],"type":"INTEGER"},{"column":"value","displayName":"Value","showType":[2,3],"type":"INTEGER"}],\n' + 103 ' "inner":{"columns":[{"column":"slice_name","displayName":"","showType":[6],"type":"STRING"},{"column":"slice_id","displayName":"","showType":[12,0],"type":"INTEGER"}],\n' + 104 ' "tableName":"mock_plugin_sliceobj_table"},"tableName":"mock_plugin_slice_table"}]}}'; 105 let dataSliceMap = { 106 jsonConfig: sdkSliceJsonCofigStr, 107 }; 108 let datamap = { 109 disPlayName: 'common_mock', 110 pluginName: 'mock-plugin', 111 jsonConfig: sdkSliceJsonCofigStr, 112 }; 113 map.set('1', dataSliceMap); 114 SpSystemTrace.SDK_CONFIG_MAP = map; 115 let data = { 116 cpus: [], 117 threadIds: [12, 787, 56, 11], 118 trackIds: [52, 652, 23, 2], 119 funTids: [4, 45, 9], 120 heapIds: [95, 4], 121 nativeMemory: [], 122 cpuAbilityIds: [120, 41, 2], 123 memoryAbilityIds: [63, 1], 124 diskAbilityIds: [56, 1], 125 networkAbilityIds: [36, 11], 126 leftNs: 1236461, 127 rightNs: 96641021, 128 hasFps: false, 129 statisticsSelectData: [], 130 perfSampleIds: [12, 15, 112], 131 perfCpus: [0, 1], 132 perfProcess: [], 133 perfThread: [], 134 perfAll: false, 135 sdkSliceIds: ['a-b', 'd-e', 'a'], 136 }; 137 map.set('1', datamap); 138 SpSystemTrace.SDK_CONFIG_MAP = map; 139 slice.tblSdkSlice.recycleDataSource = jest.fn(() => data); 140 slice.data = data; 141 expect(slice.data).toBeUndefined(); 142 }); 143 144 it('TabPaneSdkSliceTest01', () => { 145 expect(tabPaneSdkSlice.parseJson([])).toBe(''); 146 }); 147 148 it('TabPaneSdkSliceTest02', () => { 149 let type = { 150 columns: [{ showType: 'slice' }], 151 }; 152 expect(TabUtil.getTableType(type)).toBe(''); 153 }); 154 155 it('TabPaneSdkSliceTest03', () => { 156 expect(tabPaneSdkSlice.initDataElement()).toBeUndefined(); 157 }); 158 159 it('TabPaneSdkSliceTest04', function () { 160 tabPaneSdkSlice.tblSdkSlice = jest.fn(() => true); 161 tabPaneSdkSlice.tblSdkSlice!.recycleDataSource = jest.fn(() => true); 162 expect( 163 tabPaneSdkSlice.sortByColumn({ 164 key: '', 165 sort: '', 166 }) 167 ).toBeUndefined(); 168 }); 169 170 it('TabPaneSdkSliceTest06', () => { 171 expect(tabPaneSdkSlice.isDateIntersection(5, 5, 1, 6)).toBeTruthy(); 172 }); 173 it('TabPaneSdkSliceTest07', () => { 174 expect(tabPaneSdkSlice.isDateIntersection(5, 5, 1, 6)).toBeTruthy(); 175 }); 176 it('TabPaneSdkSliceTest08', () => { 177 expect(tabPaneSdkSlice.isDateIntersection(1, 5, 5, 3)).toBeTruthy(); 178 }); 179}); 180