• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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