1fb726d48Sopenharmony_ci/*
2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd.
3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License.
5fb726d48Sopenharmony_ci * You may obtain a copy of the License at
6fb726d48Sopenharmony_ci *
7fb726d48Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8fb726d48Sopenharmony_ci *
9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and
13fb726d48Sopenharmony_ci * limitations under the License.
14fb726d48Sopenharmony_ci */
15fb726d48Sopenharmony_ci
16fb726d48Sopenharmony_ciimport { SpHiPerf } from '../../../../src/trace/component/chart/SpHiPerf';
17fb726d48Sopenharmony_cijest.mock('../../../../src/trace/component/SpSystemTrace', () => {
18fb726d48Sopenharmony_ci  return {};
19fb726d48Sopenharmony_ci});
20fb726d48Sopenharmony_ciimport { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow';
21fb726d48Sopenharmony_cijest.mock('../../../../src/js-heap/model/DatabaseStruct');
22fb726d48Sopenharmony_ciconst sqlit = require('../../../../src/trace/database/sql/Perf.sql');
23fb726d48Sopenharmony_cijest.mock('../../../../src/trace/database/sql/Perf.sql');
24fb726d48Sopenharmony_cijest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => {
25fb726d48Sopenharmony_ci  return {};
26fb726d48Sopenharmony_ci});
27fb726d48Sopenharmony_cijest.mock('../../../../src/trace/component/chart/PerfDataQuery',()=>{
28fb726d48Sopenharmony_ci  return {}
29fb726d48Sopenharmony_ci})
30fb726d48Sopenharmony_ciconst intersectionObserverMock = () => ({
31fb726d48Sopenharmony_ci  observe: () => null,
32fb726d48Sopenharmony_ci});
33fb726d48Sopenharmony_ciwindow.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock);
34fb726d48Sopenharmony_ci
35fb726d48Sopenharmony_ciwindow.ResizeObserver =
36fb726d48Sopenharmony_ci  window.ResizeObserver ||
37fb726d48Sopenharmony_ci  jest.fn().mockImplementation(() => ({
38fb726d48Sopenharmony_ci    disconnect: jest.fn(),
39fb726d48Sopenharmony_ci    observe: jest.fn(),
40fb726d48Sopenharmony_ci    unobserve: jest.fn(),
41fb726d48Sopenharmony_ci  }));
42fb726d48Sopenharmony_ci
43fb726d48Sopenharmony_cidescribe('SpHiPerf Test', () => {
44fb726d48Sopenharmony_ci  let perfDataQuery = sqlit.perfDataQuery
45fb726d48Sopenharmony_ci  let queryPerfCmdline = sqlit.queryPerfCmdline;
46fb726d48Sopenharmony_ci  queryPerfCmdline.mockResolvedValue([
47fb726d48Sopenharmony_ci    {
48fb726d48Sopenharmony_ci      report_value:
49fb726d48Sopenharmony_ci        'hiperf record --control prepare -o /data/local/tmp…e sched:sched_waking -a -s dwarf -f 1000 --offcpu',
50fb726d48Sopenharmony_ci    },
51fb726d48Sopenharmony_ci  ]);
52fb726d48Sopenharmony_ci
53fb726d48Sopenharmony_ci  let queryPerfThread = sqlit.queryPerfThread;
54fb726d48Sopenharmony_ci  queryPerfThread.mockResolvedValue([
55fb726d48Sopenharmony_ci    {
56fb726d48Sopenharmony_ci      tid: 11,
57fb726d48Sopenharmony_ci      threadName: "ksoftirqd/0",
58fb726d48Sopenharmony_ci      pid: 11,
59fb726d48Sopenharmony_ci      processName: "ksoftirqd/0"
60fb726d48Sopenharmony_ci    },
61fb726d48Sopenharmony_ci    {
62fb726d48Sopenharmony_ci      tid: 1,
63fb726d48Sopenharmony_ci      threadName: 'threadName111',
64fb726d48Sopenharmony_ci      pid: 1,
65fb726d48Sopenharmony_ci      processName: 'processNam111e',
66fb726d48Sopenharmony_ci    },
67fb726d48Sopenharmony_ci  ]);
68fb726d48Sopenharmony_ci
69fb726d48Sopenharmony_ci  let queryHiPerfEventList = sqlit.queryHiPerfEventList;
70fb726d48Sopenharmony_ci  queryHiPerfEventList.mockResolvedValue([
71fb726d48Sopenharmony_ci    {
72fb726d48Sopenharmony_ci      id: 0,
73fb726d48Sopenharmony_ci      report_value: 'sched:sched_waking',
74fb726d48Sopenharmony_ci    },
75fb726d48Sopenharmony_ci    {
76fb726d48Sopenharmony_ci      id: 1,
77fb726d48Sopenharmony_ci      report_value: 'sched:sched_switch',
78fb726d48Sopenharmony_ci    },
79fb726d48Sopenharmony_ci  ]);
80fb726d48Sopenharmony_ci
81fb726d48Sopenharmony_ci  let queryHiPerfCpuMergeData2 = sqlit.queryHiPerfCpuMergeData2;
82fb726d48Sopenharmony_ci  queryHiPerfCpuMergeData2.mockResolvedValue([
83fb726d48Sopenharmony_ci    {
84fb726d48Sopenharmony_ci      id: 0,
85fb726d48Sopenharmony_ci      callchain_id: 1,
86fb726d48Sopenharmony_ci      timestamp: 3468360924674,
87fb726d48Sopenharmony_ci      thread_id: 2469,
88fb726d48Sopenharmony_ci      event_count: 1,
89fb726d48Sopenharmony_ci      event_type_id: 0,
90fb726d48Sopenharmony_ci      timestamp_trace: 3468360965799,
91fb726d48Sopenharmony_ci      cpu_id: 2,
92fb726d48Sopenharmony_ci      thread_state: 'Running',
93fb726d48Sopenharmony_ci      startNS: 0,
94fb726d48Sopenharmony_ci    },
95fb726d48Sopenharmony_ci    {
96fb726d48Sopenharmony_ci      id: 4,
97fb726d48Sopenharmony_ci      callchain_id: 1,
98fb726d48Sopenharmony_ci      timestamp: 3468361000799,
99fb726d48Sopenharmony_ci      thread_id: 2469,
100fb726d48Sopenharmony_ci      event_count: 1,
101fb726d48Sopenharmony_ci      event_type_id: 0,
102fb726d48Sopenharmony_ci      timestamp_trace: 3468361041924,
103fb726d48Sopenharmony_ci      cpu_id: 2,
104fb726d48Sopenharmony_ci      thread_state: 'Running',
105fb726d48Sopenharmony_ci      startNS: 76125,
106fb726d48Sopenharmony_ci    },
107fb726d48Sopenharmony_ci    {
108fb726d48Sopenharmony_ci      id: 8,
109fb726d48Sopenharmony_ci      callchain_id: 1,
110fb726d48Sopenharmony_ci      timestamp: 3468361045716,
111fb726d48Sopenharmony_ci      thread_id: 2469,
112fb726d48Sopenharmony_ci      event_count: 1,
113fb726d48Sopenharmony_ci      event_type_id: 0,
114fb726d48Sopenharmony_ci      timestamp_trace: 3468361086841,
115fb726d48Sopenharmony_ci      cpu_id: 2,
116fb726d48Sopenharmony_ci      thread_state: 'Running',
117fb726d48Sopenharmony_ci      startNS: 121042,
118fb726d48Sopenharmony_ci    },
119fb726d48Sopenharmony_ci    {
120fb726d48Sopenharmony_ci      id: 9,
121fb726d48Sopenharmony_ci      callchain_id: 4,
122fb726d48Sopenharmony_ci      timestamp: 3468361054466,
123fb726d48Sopenharmony_ci      thread_id: 1336,
124fb726d48Sopenharmony_ci      event_count: 1,
125fb726d48Sopenharmony_ci      event_type_id: 1,
126fb726d48Sopenharmony_ci      timestamp_trace: 3468361095591,
127fb726d48Sopenharmony_ci      cpu_id: 3,
128fb726d48Sopenharmony_ci      thread_state: 'Suspend',
129fb726d48Sopenharmony_ci      startNS: 129792,
130fb726d48Sopenharmony_ci    },
131fb726d48Sopenharmony_ci  ]);
132fb726d48Sopenharmony_ci  let getPerfEventType = sqlit.queryPerfEventType;
133fb726d48Sopenharmony_ci  getPerfEventType.mockResolvedValue([{
134fb726d48Sopenharmony_ci    id:1,
135fb726d48Sopenharmony_ci    report_value:'sched:sched_waking',
136fb726d48Sopenharmony_ci  }])
137fb726d48Sopenharmony_ci  let htmlElement: any = document.createElement('sp-system-trace');
138fb726d48Sopenharmony_ci  let spHiPerf = new SpHiPerf(htmlElement);
139fb726d48Sopenharmony_ci  it('SpHiPerf01', function () {
140fb726d48Sopenharmony_ci    spHiPerf.init();
141fb726d48Sopenharmony_ci    expect(spHiPerf).toBeDefined();
142fb726d48Sopenharmony_ci  });
143fb726d48Sopenharmony_ci  it('SpHiPerf02', function () {
144fb726d48Sopenharmony_ci    let cpuData = [
145fb726d48Sopenharmony_ci      {
146fb726d48Sopenharmony_ci        cpu_id: 0
147fb726d48Sopenharmony_ci      }
148fb726d48Sopenharmony_ci    ]
149fb726d48Sopenharmony_ci    let threadData = [
150fb726d48Sopenharmony_ci      {
151fb726d48Sopenharmony_ci        tid: 11,
152fb726d48Sopenharmony_ci        threadName: "ksoftirqd/0",
153fb726d48Sopenharmony_ci        pid: 11,
154fb726d48Sopenharmony_ci        processName: "ksoftirqd/0"
155fb726d48Sopenharmony_ci      }
156fb726d48Sopenharmony_ci    ]
157fb726d48Sopenharmony_ci    expect(spHiPerf.setCallTotalRow(new TraceRow<any>(),cpuData,threadData)).not.toBeUndefined()
158fb726d48Sopenharmony_ci  });
159fb726d48Sopenharmony_ci});
160