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'; 21 22window.ResizeObserver = 23 window.ResizeObserver || 24 jest.fn().mockImplementation(() => ({ 25 disconnect: jest.fn(), 26 observe: jest.fn(), 27 unobserve: jest.fn(), 28 })); 29 30const sqlite = require('../../../../../../src/trace/database/SqlLite'); 31jest.mock('../../../../../../src/trace/database/SqlLite'); 32 33describe('TabPaneSdkSlice Test', () => { 34 let tabPaneSdkSlice = new TabPaneSdkSlice(); 35 document.body.innerHTML = `<lit-table id="tb-counter"></lit-table>`; 36 let litTable = document.querySelector('#tb-counter') as LitTable; 37 it('TabPaneSdkSliceTest00', () => { 38 let mockStartTime = sqlite.queryStartTime; 39 let startTime: Array<any> = [ 40 { 41 start_ts: 1000, 42 }, 43 ]; 44 mockStartTime.mockResolvedValue(startTime); 45 let totalTime = sqlite.queryTotalTime; 46 let totalData: Array<any> = [ 47 { 48 recordStartNS: 1000, 49 recordEndNS: 3000, 50 total: 2000, 51 }, 52 ]; 53 totalTime.mockResolvedValue(totalData); 54 let mockSdkSliceData = sqlite.getTabSdkSliceData; 55 let sliceData = [ 56 { 57 start_ts: 1000, 58 end_ts: 1500, 59 type: 0, 60 value: 100, 61 }, 62 { 63 start_ts: 2000, 64 end_ts: 2500, 65 type: 0, 66 value: 100, 67 }, 68 { 69 start_ts: 3000, 70 end_ts: 3500, 71 type: 0, 72 value: 100, 73 }, 74 { 75 start_ts: 4000, 76 end_ts: 4500, 77 type: 0, 78 value: 100, 79 }, 80 { 81 start_ts: 5000, 82 end_ts: 5500, 83 type: 0, 84 value: 100, 85 }, 86 ]; 87 mockSdkSliceData.mockResolvedValue(sliceData); 88 let slice = new TabPaneSdkSlice(); 89 slice.tblSdkSlice = jest.fn(() => litTable); 90 slice.tblSdkSlice.appendChild = jest.fn(() => true); 91 let map = new Map(); 92 let sdkSliceJsonCofigStr = 93 '{"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' + 94 ' "type":"string"},"stop_gator":{"default":"true","description":"stop_gator","type":"boolean"},"version":{"default":"1","description":"gatordversion","type":"number"}},"name":"mailG77"},\n' + 95 ' "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' + 96 ' {"column":"value","displayName":"Value","showType":[0,1,3],"type":"INTEGER"}],"inner":{"columns":[{"column":"counter_name","displayName":"","showType":[63],"type":"STRING"},\n' + 97 ' {"column":"counter_id","displayName":"","showType":[0,2],"type":"INTEGER"}],"tableName":"mock_plugin_counterobj_table"},"tableName":"mock_plugin_counter_table"},\n' + 98 ' {"columns":[{"column":"start_ts","displayName":"startts","showType":[2,3],"type":"INTEGER"},{"column":"end_ts","displayName":"endts","showType":[2,10,3],"type":"INTEGER"},\n' + 99 ' {"column":"slice_id","displayName":"slice_id","showType":[2,4,3],"type":"INTEGER"},{"column":"value","displayName":"Value","showType":[2,3],"type":"INTEGER"}],\n' + 100 ' "inner":{"columns":[{"column":"slice_name","displayName":"","showType":[6],"type":"STRING"},{"column":"slice_id","displayName":"","showType":[12,0],"type":"INTEGER"}],\n' + 101 ' "tableName":"mock_plugin_sliceobj_table"},"tableName":"mock_plugin_slice_table"}]}}'; 102 let dataSliceMap = { 103 jsonConfig: sdkSliceJsonCofigStr, 104 }; 105 let datamap = { 106 disPlayName: 'common_mock', 107 pluginName: 'mock-plugin', 108 jsonConfig: sdkSliceJsonCofigStr, 109 }; 110 map.set('1', dataSliceMap); 111 SpSystemTrace.SDK_CONFIG_MAP = map; 112 let data = { 113 cpus: [], 114 threadIds: [12, 787, 56, 11], 115 trackIds: [52, 652, 23, 2], 116 funTids: [4, 45, 9], 117 heapIds: [95, 4], 118 nativeMemory: [], 119 cpuAbilityIds: [120, 41, 2], 120 memoryAbilityIds: [63, 1], 121 diskAbilityIds: [56, 1], 122 networkAbilityIds: [36, 11], 123 leftNs: 1236461, 124 rightNs: 96641021, 125 hasFps: false, 126 statisticsSelectData: [], 127 perfSampleIds: [12, 15, 112], 128 perfCpus: [0, 1], 129 perfProcess: [], 130 perfThread: [], 131 perfAll: false, 132 sdkSliceIds: ['a-b', 'd-e', 'a'], 133 }; 134 map.set('1', datamap); 135 SpSystemTrace.SDK_CONFIG_MAP = map; 136 slice.tblSdkSlice.recycleDataSource = jest.fn(() => data); 137 slice.data = data; 138 expect(slice.data).toBeUndefined(); 139 }); 140 141 it('TabPaneSdkSliceTest01', () => { 142 expect(tabPaneSdkSlice.parseJson([])).toBe(''); 143 }); 144 145 it('TabPaneSdkSliceTest02', () => { 146 let type = { 147 columns: [{ showType: 'slice' }], 148 }; 149 expect(TabUtil.getTableType(type)).toBe(''); 150 }); 151 152 it('TabPaneSdkSliceTest03', () => { 153 expect(tabPaneSdkSlice.initDataElement()).toBeUndefined(); 154 }); 155 156 it('TabPaneSdkSliceTest04', function () { 157 tabPaneSdkSlice.tblSdkSlice = jest.fn(() => true); 158 tabPaneSdkSlice.tblSdkSlice!.recycleDataSource = jest.fn(() => true); 159 expect( 160 tabPaneSdkSlice.sortByColumn({ 161 key: '', 162 sort: '', 163 }) 164 ).toBeUndefined(); 165 }); 166 167 it('TabPaneSdkSliceTest06', () => { 168 expect(tabPaneSdkSlice.isDateIntersection(5, 5, 1, 6)).toBeTruthy(); 169 }); 170 it('TabPaneSdkSliceTest07', () => { 171 expect(tabPaneSdkSlice.isDateIntersection(5, 5, 1, 6)).toBeTruthy(); 172 }); 173 it('TabPaneSdkSliceTest08', () => { 174 expect(tabPaneSdkSlice.isDateIntersection(1, 5, 5, 3)).toBeTruthy(); 175 }); 176}); 177