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 16//@ts-ignore 17import { 18 HeapStruct, 19 NativeEvent, 20 NativeHookCallInfo, 21 NativeHookStatistics, 22 NativeMemory, 23 ProcedureLogicWorkerNativeMemory, 24 StatisticsSelection, 25 //@ts-ignore 26} from '../../../../dist/trace/database/logic-worker/ProcedureLogicWorkerNativeNemory.js'; 27 28//@ts-ignore 29import { 30 HeapTreeDataBean, 31 //@ts-ignore 32} from '../../../../dist/trace/database/logic-worker/ProcedureLogicWorkerCommon.js'; 33 34describe('ProcedureLogicWorkerNativeNemory Test', () => { 35 let procedureLogicWorkerNativeMemory = new ProcedureLogicWorkerNativeMemory(); 36 procedureLogicWorkerNativeMemory.resolvingActionCallInfo = jest.fn(() => true); 37 procedureLogicWorkerNativeMemory.resolvingActionCallInfo.dataSource = jest.fn(() => true); 38 procedureLogicWorkerNativeMemory.resolvingActionCallInfo.dataSource.map = jest.fn(() => true); 39 it('ProcedureLogicWorkerNativeNemoryTest01', function () { 40 expect(procedureLogicWorkerNativeMemory).not.toBeUndefined(); 41 }); 42 43 it('ProcedureLogicWorkerNativeNemoryTest02', function () { 44 let nativeHookStatistics = new NativeHookStatistics(); 45 nativeHookStatistics = { 46 eventId: 0, 47 eventType: '', 48 subType: '', 49 subTypeId: 0, 50 heapSize: 0, 51 addr: '', 52 startTs: 0, 53 endTs: 0, 54 sumHeapSize: 0, 55 max: 0, 56 count: 0, 57 tid: 0, 58 threadName: '', 59 sSelected: false, 60 }; 61 expect(nativeHookStatistics).not.toBeUndefined(); 62 }); 63 64 it('ProcedureLogicWorkerNativeNemoryTest03', function () { 65 let nativeHookCallInfo = new NativeHookCallInfo(); 66 expect(nativeHookCallInfo).not.toBeUndefined(); 67 }); 68 69 it('ProcedureLogicWorkerNativeNemoryTest04', function () { 70 let heapTreeDataBean = new HeapTreeDataBean(); 71 heapTreeDataBean = { 72 symbolId: 0, 73 fileId: 0, 74 startTs: 0, 75 endTs: 0, 76 depth: 0, 77 heapSize: 0, 78 eventId: '', 79 }; 80 expect(heapTreeDataBean).not.toBeUndefined(); 81 }); 82 83 it('ProcedureLogicWorkerNativeNemoryTest05', function () { 84 let nativeMemory = new NativeMemory(); 85 nativeMemory = { 86 index: 0, 87 eventId: 0, 88 eventType: '', 89 subType: '', 90 addr: '', 91 startTs: 0, 92 endTs: 0, 93 timestamp: '', 94 heapSize: 0, 95 heapSizeUnit: '', 96 symbol: '', 97 library: '', 98 isSelected: false, 99 state: '', 100 threadId: 0, 101 threadName: '', 102 }; 103 expect(nativeMemory).not.toBeUndefined(); 104 }); 105 106 it('ProcedureLogicWorkerNativeNemoryTest06', function () { 107 let heapStruct = new HeapStruct(); 108 expect(heapStruct).not.toBeUndefined(); 109 }); 110 111 it('ProcedureLogicWorkerNativeNemoryTest07', function () { 112 let nativeEvent = new NativeEvent(); 113 expect(nativeEvent).not.toBeUndefined(); 114 }); 115 116 it('ProcedureLogicWorkerNativeNemoryTest08', function () { 117 let statisticsSelection = new StatisticsSelection(); 118 expect(statisticsSelection).not.toBeUndefined(); 119 }); 120 121 it('ProcedureLogicWorkerNativeNemoryTest09', function () { 122 expect(procedureLogicWorkerNativeMemory.clearAll()).toBeUndefined(); 123 }); 124 125 it('ProcedureLogicWorkerNativeNemoryTest11', function () { 126 expect(procedureLogicWorkerNativeMemory.getTypeFromIndex(-1, '', '')).toBeFalsy(); 127 }); 128 129 it('ProcedureLogicWorkerNativeNemoryTest12', function () { 130 expect(procedureLogicWorkerNativeMemory.getTypeFromIndex(0, '', '')).toBeTruthy(); 131 }); 132 133 it('ProcedureLogicWorkerNativeNemoryTest13', function () { 134 let item = { 135 eventType: 'AllocEvent', 136 }; 137 expect(procedureLogicWorkerNativeMemory.getTypeFromIndex(1, item, '')).toBeTruthy(); 138 }); 139 140 it('ProcedureLogicWorkerNativeNemoryTest14', function () { 141 let item = { 142 eventType: 'MmapEvent', 143 }; 144 expect(procedureLogicWorkerNativeMemory.getTypeFromIndex(2, item, '')).toBeTruthy(); 145 }); 146 147 it('ProcedureLogicWorkerNativeNemoryTest15', function () { 148 let stack = { 149 children: [], 150 count: 123, 151 countValue: '', 152 countPercent: '69%', 153 size: 32, 154 threadId: 3221, 155 threadName: 'AsyncTask', 156 heapSizeStr: '', 157 heapPercent: '56%', 158 tsArray: [], 159 }; 160 expect(procedureLogicWorkerNativeMemory.traverseTree(stack, 1)).toBeUndefined(); 161 }); 162 163 it('ProcedureLogicWorkerNativeNemoryTest16', function () { 164 let stack = { 165 children: [], 166 count: 32, 167 countValue: '', 168 countPercent: '87%', 169 size: 23, 170 threadId: 332, 171 threadName: 'ssioncontroller', 172 heapSizeStr: '', 173 heapPercent: '12%', 174 tsArray: [], 175 }; 176 expect(procedureLogicWorkerNativeMemory.traverseSampleTree(stack, 1)).toBeUndefined(); 177 }); 178 179 it('procedureLogicWorkerFileSystemTest18', function () { 180 window.postMessage = jest.fn(() => true); 181 let data = { 182 params: [ 183 { 184 list: '', 185 }, 186 ], 187 action: '', 188 id: 2, 189 type: 'native-memory-init', 190 }; 191 procedureLogicWorkerNativeMemory.clearAll = jest.fn(() => true); 192 procedureLogicWorkerNativeMemory.initDataDict = jest.fn(() => true); 193 expect(procedureLogicWorkerNativeMemory.handle(data)).toBeUndefined(); 194 }); 195 196 it('procedureLogicWorkerFileSystemTest19', function () { 197 let data = { 198 params: [ 199 { 200 list: '', 201 }, 202 ], 203 action: '', 204 type: 'native-memory-queryDataDICT', 205 id: 1, 206 }; 207 procedureLogicWorkerNativeMemory.initNMChartData = jest.fn(() => true); 208 expect(procedureLogicWorkerNativeMemory.handle(data)).toBeUndefined(); 209 }); 210 211 it('procedureLogicWorkerFileSystemTest20', function () { 212 let data = { 213 id: 1, 214 params: [ 215 { 216 list: '', 217 }, 218 ], 219 action: '', 220 type: 'native-memory-queryNMChartData', 221 }; 222 procedureLogicWorkerNativeMemory.initNMFrameData = jest.fn(() => true); 223 expect(procedureLogicWorkerNativeMemory.handle(data)).toBeUndefined(); 224 }); 225 226 it('procedureLogicWorkerFileSystemTest21', function () { 227 let data = { 228 id: 3, 229 params: [ 230 { 231 list: '', 232 }, 233 ], 234 action: 'a', 235 type: 'native-memory-queryNMFrameData', 236 }; 237 window.postMessage = jest.fn(() => true); 238 procedureLogicWorkerNativeMemory.initNMStack = jest.fn(() => true); 239 expect(procedureLogicWorkerNativeMemory.handle(data)).toBeUndefined(); 240 }); 241 242 it('procedureLogicWorkerFileSystemTest22', function () { 243 let data = { 244 id: 4, 245 params: [ 246 { 247 list: '', 248 }, 249 ], 250 action: '', 251 type: 'native-memory-action', 252 }; 253 window.postMessage = jest.fn(() => true); 254 procedureLogicWorkerNativeMemory.resolvingAction = jest.fn(() => true); 255 expect(procedureLogicWorkerNativeMemory.handle(data)).toBeUndefined(); 256 }); 257 it('procedureLogicWorkerFileSystemTest23', function () { 258 window.postMessage = jest.fn(() => true); 259 expect(procedureLogicWorkerNativeMemory.queryData()).toBeUndefined(); 260 }); 261 262 it('procedureLogicWorkerFileSystemTest25', function () { 263 window.postMessage = jest.fn(() => true); 264 expect(procedureLogicWorkerNativeMemory.initNMChartData()).toBeTruthy(); 265 }); 266 it('procedureLogicWorkerFileSystemTest26', function () { 267 window.postMessage = jest.fn(() => true); 268 expect(procedureLogicWorkerNativeMemory.initNMFrameData()).toBeTruthy(); 269 }); 270 it('procedureLogicWorkerFileSystemTest27', function () { 271 window.postMessage = jest.fn(() => true); 272 let frameArr = { 273 map: jest.fn(() => true), 274 }; 275 expect(procedureLogicWorkerNativeMemory.initNMStack(frameArr)).toBeTruthy(); 276 }); 277 it('procedureLogicWorkerFileSystemTest28', function () { 278 let paramMap = { 279 get: jest.fn(() => 'call-info'), 280 }; 281 expect(procedureLogicWorkerNativeMemory.resolvingAction(paramMap)).toBeTruthy(); 282 }); 283 it('procedureLogicWorkerFileSystemTest29', function () { 284 let paramMap = new Map(); 285 paramMap.set('actionType', 'info'); 286 expect(procedureLogicWorkerNativeMemory.resolvingAction(paramMap)).toBeTruthy(); 287 }); 288 it('procedureLogicWorkerFileSystemTest30', function () { 289 let paramMap = { 290 get: jest.fn(() => 'memory-stack'), 291 }; 292 expect(procedureLogicWorkerNativeMemory.resolvingAction(paramMap)).toBeTruthy(); 293 }); 294 it('procedureLogicWorkerFileSystemTest31', function () { 295 let paramMap = { 296 get: jest.fn(() => 'memory-chart'), 297 }; 298 expect(procedureLogicWorkerNativeMemory.resolvingAction(paramMap)).toBeTruthy(); 299 }); 300 it('procedureLogicWorkerFileSystemTest32', function () { 301 let paramMap = { 302 get: jest.fn(() => true), 303 }; 304 expect(procedureLogicWorkerNativeMemory.resolvingAction(paramMap)).toBeTruthy(); 305 }); 306 it('procedureLogicWorkerFileSystemTest33', function () { 307 let paramMap = { 308 get: jest.fn(() => 0), 309 }; 310 expect(procedureLogicWorkerNativeMemory.resolvingActionNativeMemoryChartData(paramMap)).toBeTruthy(); 311 }); 312 it('procedureLogicWorkerFileSystemTest34', function () { 313 let paramMap = { 314 get: jest.fn(() => 1), 315 }; 316 expect(procedureLogicWorkerNativeMemory.resolvingActionNativeMemoryChartData(paramMap)).toBeTruthy(); 317 }); 318 it('procedureLogicWorkerFileSystemTest35', function () { 319 window.postMessage = jest.fn(() => true); 320 expect(procedureLogicWorkerNativeMemory.queryCallchainsSamples('', 1, 1, [''])).toBeUndefined(); 321 }); 322 323 it('procedureLogicWorkerFileSystemTest37', function () { 324 window.postMessage = jest.fn(() => true); 325 expect(procedureLogicWorkerNativeMemory.queryStatisticCallchainsSamples('', 1, 1, [''])).toBeUndefined(); 326 }); 327 it('procedureLogicWorkerFileSystemTest38', function () { 328 window.postMessage = jest.fn(() => true); 329 expect(procedureLogicWorkerNativeMemory.getFilterLevel(1000001)).toBe(100000); 330 }); 331 it('procedureLogicWorkerFileSystemTest39', function () { 332 window.postMessage = jest.fn(() => true); 333 expect(procedureLogicWorkerNativeMemory.getFilterLevel(5000001)).toBe(500000); 334 }); 335 it('procedureLogicWorkerFileSystemTest40', function () { 336 window.postMessage = jest.fn(() => true); 337 expect(procedureLogicWorkerNativeMemory.getFilterLevel(3000001)).toBe(500000); 338 }); 339 it('procedureLogicWorkerFileSystemTest41', function () { 340 window.postMessage = jest.fn(() => true); 341 expect(procedureLogicWorkerNativeMemory.getFilterLevel(150000)).toBe(0); 342 }); 343 it('procedureLogicWorkerFileSystemTest42', function () { 344 window.postMessage = jest.fn(() => true); 345 let params = [ 346 { 347 length: 1, 348 }, 349 ]; 350 expect(procedureLogicWorkerNativeMemory.resolvingNMCallAction(params)).toStrictEqual([]); 351 }); 352 it('procedureLogicWorkerFileSystemTest43', function () { 353 window.postMessage = jest.fn(() => true); 354 let params = { 355 symbol: '', 356 path: '', 357 symbolId: 1, 358 fileId: 1, 359 lib: '', 360 symbolName: '', 361 type: 0, 362 }; 363 procedureLogicWorkerNativeMemory.dataCache.dataDict = new Map(); 364 procedureLogicWorkerNativeMemory.dataCache.dataDict.set(0, ''); 365 procedureLogicWorkerNativeMemory.dataCache.dataDict.set(1, 'H:RSMainThread::DoComposition'); 366 procedureLogicWorkerNativeMemory.dataCache.dataDict.set(2, 'H:RSUniRender::Process:[EntryView]'); 367 procedureLogicWorkerNativeMemory.dataCache.dataDict.set(3, 'iowait'); 368 expect(procedureLogicWorkerNativeMemory.setMerageName(params)).toBeUndefined(); 369 }); 370 it('procedureLogicWorkerFileSystemTest44', function () { 371 window.postMessage = jest.fn(() => true); 372 expect(procedureLogicWorkerNativeMemory.clearSplitMapData('')).toBeUndefined(); 373 }); 374 it('procedureLogicWorkerFileSystemTest49', function () { 375 let data = { 376 id: 1, 377 params: [ 378 { 379 list: '', 380 }, 381 ], 382 action: '', 383 type: 'native-memory-calltree-action', 384 }; 385 window.postMessage = jest.fn(() => true); 386 procedureLogicWorkerNativeMemory.initNMStack = jest.fn(() => true); 387 expect(procedureLogicWorkerNativeMemory.handle(data)).toBeUndefined(); 388 }); 389 it('procedureLogicWorkerFileSystemTest50', function () { 390 let data = { 391 id: 2, 392 params: [ 393 { 394 list: '', 395 }, 396 ], 397 action: '', 398 type: 'native-memory-init-responseType', 399 }; 400 procedureLogicWorkerNativeMemory.initNMStack = jest.fn(() => true); 401 window.postMessage = jest.fn(() => true); 402 expect(procedureLogicWorkerNativeMemory.handle(data)).toBeUndefined(); 403 }); 404 it('procedureLogicWorkerFileSystemTest51', function () { 405 let data = { 406 id: 1, 407 params: [ 408 { 409 list: '', 410 }, 411 ], 412 action: 'a', 413 type: 'native-memory-get-responseType', 414 }; 415 window.postMessage = jest.fn(() => true); 416 procedureLogicWorkerNativeMemory.initNMStack = jest.fn(() => true); 417 expect(procedureLogicWorkerNativeMemory.handle(data)).toBeUndefined(); 418 }); 419 it('procedureLogicWorkerFileSystemTest52', function () { 420 let data = { 421 id: 1, 422 params: [ 423 { 424 list: '', 425 }, 426 ], 427 action: 'b', 428 type: 'native-memory-queryNativeHookStatistic', 429 }; 430 window.postMessage = jest.fn(() => true); 431 procedureLogicWorkerNativeMemory.initNMStack = jest.fn(() => true); 432 expect(procedureLogicWorkerNativeMemory.handle(data)).toBeUndefined(); 433 }); 434 it('procedureLogicWorkerFileSystemTest53', function () { 435 window.postMessage = jest.fn(() => true); 436 expect(procedureLogicWorkerNativeMemory.queryNativeHookStatistic(1)).toBeUndefined(); 437 }); 438 439 it('procedureLogicWorkerFileSystemTest54', function () { 440 expect( 441 procedureLogicWorkerNativeMemory.statisticDataHandler([ 442 { 443 callchainId: 4, 444 ts: 0, 445 applyCount: 1, 446 applySize: 24, 447 releaseCount: 0, 448 releaseSize: 0, 449 }, 450 { 451 callchainId: 3, 452 ts: 0, 453 applyCount: 1, 454 applySize: 64, 455 releaseCount: 0, 456 releaseSize: 0, 457 }, 458 { 459 callchainId: 2, 460 ts: 0, 461 applyCount: 1, 462 applySize: 32, 463 releaseCount: 1, 464 releaseSize: 32, 465 }, 466 { 467 callchainId: 1, 468 ts: 0, 469 applyCount: 1, 470 applySize: 32, 471 releaseCount: 0, 472 releaseSize: 0, 473 }, 474 ]) 475 ).toStrictEqual([{ density: 3, dur: 0, heapsize: 120, startTime: 0 }]); 476 }); 477 478 it('procedureLogicWorkerFileSystemTest55', function () { 479 expect( 480 procedureLogicWorkerNativeMemory.handleNativeHookStatisticData([ 481 { density: 3, dur: 0, heapsize: 120, startTime: 0 }, 482 ]) 483 ).toStrictEqual([ 484 { 485 density: 3, 486 dur: NaN, 487 heapsize: 120, 488 maxDensity: 3, 489 maxHeapSize: 120, 490 minDensity: 0, 491 minHeapSize: 0, 492 startTime: 0, 493 }, 494 ]); 495 }); 496}); 497