• 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
16import '../../../../src/trace/component/chart/SpHangChart';
17import { SpHangChart } from '../../../../src/trace/component/chart/SpHangChart';
18import { SpSystemTrace } from '../../../../src/trace/component/SpSystemTrace';
19import { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow';
20import { HangStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerHang';
21jest.mock('../../../../src/trace/component/SpSystemTrace', () => {
22  return {};
23});
24jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => {
25  return {};
26});
27jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => {
28  return {};
29});
30jest.mock('../../../../src/js-heap/model/DatabaseStruct', () => {});
31
32const sqlite = require('../../../../src/trace/database/sql/SqlLite.sql');
33jest.mock('../../../../src/trace/database/sql/SqlLite.sql');
34
35const intersectionObserverMock = () => ({
36  observe: () => null,
37});
38window.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock);
39window.ResizeObserver =
40  window.ResizeObserver ||
41  jest.fn().mockImplementation(() => ({
42    disconnect: jest.fn(),
43    observe: jest.fn(),
44    unobserve: jest.fn(),
45  }));
46describe('SpHangChart Test', () => {
47  global.Worker = jest.fn();
48  let rangeTimeData = sqlite.queryRangeTime;
49  let mockRangeTime = [
50    {
51      start_ts: 10,
52      end_ts: 20,
53    },
54  ];
55  rangeTimeData.mockResolvedValue([]);
56  rangeTimeData.mockResolvedValue(mockRangeTime);
57  let htmlElement: SpSystemTrace = document.createElement('sp-system-trace') as SpSystemTrace;
58  let chart = new SpHangChart(htmlElement);
59  let traceRow = TraceRow.skeleton<HangStruct>();
60  it('SpHangChart Test01 ', function () {
61    expect(SpHangChart.calculateHangType(30000000)).toBe('');
62    expect(SpHangChart.calculateHangType(50000000)).toBe('Instant');
63    expect(SpHangChart.calculateHangType(110000000)).toBe('Circumstantial');
64    expect(SpHangChart.calculateHangType(260000000)).toBe('Micro');
65    expect(SpHangChart.calculateHangType(510000000)).toBe('Severe');
66  });
67
68  it('SpHangChart Test02', function () {
69    let it = {
70      id: 0,
71      name: 'name',
72      num: 10,
73    };
74    expect(chart.hangSupplierFrame(traceRow, it)).toBeUndefined();
75  });
76  it('SpHangChart Test02', function () {
77    let it = {
78      id: 0,
79      name: 'name',
80      num: 10,
81    };
82    expect(chart.hangThreadHandler(traceRow, it, 0)).toBeUndefined();
83  });
84});
85