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
16jest.mock('../../../../src/trace/component/SpSystemTrace', () => {
17  return {};
18});
19import { VmTrackerChart } from '../../../../src/trace/component/chart/SpVmTrackerChart';
20import { SpChartManager } from '../../../../src/trace/component/chart/SpChartManager';
21
22jest.mock('../../../../src/js-heap/model/DatabaseStruct');
23const sqlite = require('../../../../src/trace/database/sql/Dma.sql');
24jest.mock('../../../../src/trace/database/sql/Dma.sql');
25const memorySqlite = require('../../../../src/trace/database/sql/Memory.sql');
26jest.mock('../../../../src/trace/database/sql/Memory.sql');
27const smapsSql = require('../../../../src/trace/database/sql/Smaps.sql');
28jest.mock('../../../../src/trace/database/sql/Smaps.sql');
29const gpuSql = require('../../../../src/trace/database/sql/Gpu.sql');
30jest.mock('../../../../src/trace/database/sql/Gpu.sql');
31jest.mock('../../../../src/trace/component/chart/SpHiPerf');
32
33
34// @ts-ignore
35window.ResizeObserver =
36  window.ResizeObserver ||
37  jest.fn().mockImplementation(() => ({
38    disconnect: jest.fn(),
39    observe: jest.fn(),
40    unobserve: jest.fn(),
41  }));
42
43describe('SpVmTrackerChart Test', () => {
44  let dmaSmapsData = sqlite.queryDmaSampsData;
45  let smapsDmaData = [
46    {
47      startNs: 0,
48      value: 1024,
49      flag: 1,
50      ipid: 1,
51      expTaskComm: 'delay',
52    },
53  ];
54  dmaSmapsData.mockResolvedValue(smapsDmaData);
55  let gpuMemoryData = memorySqlite.queryGpuMemoryData;
56  let gpuData = [
57    {
58      startNs: 0,
59      value: 1024,
60      ipid: 1,
61    },
62  ];
63  gpuMemoryData.mockResolvedValue(gpuData);
64  let smapsExits = smapsSql.querySmapsExits;
65  let exits = [
66    {
67      event_name: 'trace_smaps',
68    },
69  ];
70  smapsExits.mockResolvedValue(exits);
71  let vmTrackerShmData = memorySqlite.queryVmTrackerShmData;
72  let shmData = [
73    {
74      startNs: 0,
75      value: 1024,
76    },
77  ];
78  vmTrackerShmData.mockResolvedValue(shmData);
79  let purgeableProcessData = memorySqlite.queryPurgeableProcessData;
80  let processData = [
81    {
82      startNs: 0,
83      value: 1024,
84    },
85  ];
86  purgeableProcessData.mockResolvedValue(processData);
87  let gpuGlData = gpuSql.queryGpuData;
88  let glData = [
89    {
90      startNs: 0,
91      value: 1024,
92    },
93  ];
94  gpuGlData.mockResolvedValue(glData);
95  let gpuTotalData = gpuSql.queryGpuTotalData;
96  let totalData = [
97    {
98      startNs: 0,
99      value: 1024,
100    },
101  ];
102  gpuTotalData.mockResolvedValue(totalData);
103  let gpuTotalType = gpuSql.queryGpuTotalType;
104  let totalType = [
105    {
106      id: 1,
107      data: 'delay',
108    },
109  ];
110  gpuTotalType.mockResolvedValue(totalType);
111  let gpuWindowData = gpuSql.queryGpuWindowData;
112  let windowsData = [
113    {
114      startNs: 0,
115      value: 1024,
116    },
117  ];
118  gpuWindowData.mockResolvedValue(windowsData);
119  let gpuWindowType = gpuSql.queryGpuWindowType;
120  let windowsType = [
121    {
122      id: 1,
123      data: 'delay',
124      pid: 1,
125    },
126  ];
127  gpuWindowType.mockResolvedValue(windowsType);
128  let htmlElement: any = document.createElement('sp-system-trace');
129  let manager = new SpChartManager(htmlElement);
130  let spVmTrackerChart = new VmTrackerChart(htmlElement);
131  let memoryData = [
132    {
133      startNs: 0,
134      endNs: 0,
135      dur: 0,
136      name: '',
137      textWidth: 0,
138      value: 0,
139      type: '',
140    },
141  ];
142  it('SpVmTrackerChart01', function () {
143    spVmTrackerChart.initVmTrackerFolder();
144    expect(spVmTrackerChart).toBeDefined();
145  });
146  it('SpVmTrackerChart02', function () {
147    expect(spVmTrackerChart.getSmapsKeyName('USS')).toBeDefined();
148  });
149  it('SpVmTrackerChart07', function () {
150    expect(spVmTrackerChart.getSmapsKeyName('RSS')).toBeDefined();
151  });
152  it('SpVmTrackerChart08', function () {
153    expect(spVmTrackerChart.getSmapsKeyName('')).toBeDefined();
154  });
155  it('SpVmTrackerChart03', function () {
156    expect(spVmTrackerChart.initTraceRow('dirty', 'smaps', 'VmTracker')).toBeDefined();
157  });
158  it('SpVmTrackerChart04', function () {
159    expect(spVmTrackerChart.initPurgeablePin()).toBeDefined();
160  });
161  it('SpVmTrackerChart05', function () {
162    expect(spVmTrackerChart.initPurgeableTotal()).toBeDefined();
163  });
164  it('SpVmTrackerChart06', function () {
165    expect(spVmTrackerChart.showTip).toBeDefined();
166  });
167  it('SpVmTrackerChart09', function () {
168    expect(spVmTrackerChart.initGpuFolder()).toBeDefined();
169  });
170  it('SpVmTrackerChart09', function () {
171    expect(spVmTrackerChart.initSMapsFolder()).toBeDefined();
172  });
173  it('SpVmTrackerChart10', function () {
174    expect(spVmTrackerChart.initVmTrackerFolder()).toBeDefined();
175  });
176  it('SpVmTrackerChart11', function () {
177    expect(spVmTrackerChart.initDmaRow()).toBeDefined();
178  });
179  it('SpVmTrackerChart12', function () {
180    expect(spVmTrackerChart.initSmapsRows('Swapped')).toBeDefined();
181  });
182  it('SpVmTrackerChart13', function () {
183    expect(spVmTrackerChart.initShmRows()).toBeDefined();
184  });
185  it('SpVmTrackerChart14', function () {
186    expect(spVmTrackerChart.initGpuMemoryRow(memoryData)).toBeDefined();
187  });
188  it('SpVmTrackerChart15', function () {
189    expect(spVmTrackerChart.addGpuGLRow(memoryData)).toBeDefined();
190  });
191  it('SpVmTrackerChart16', function () {
192    expect(spVmTrackerChart.addGpuTotalRow()).toBeDefined();
193  });
194});
195