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 { TraficEnum } from '../../../../../src/trace/database/data-trafic/utils/QueryEnum';
17import {
18  chartHiperfThreadData10MSProtoSql, chartHiperfThreadDataProtoSql, hiperfThreadDataReceiver
19} from '../../../../../src/trace/database/data-trafic/hiperf/HiperfThreadDataReceiver';
20
21describe('HiperfThread Test', () => {
22  let data1;
23  let data2;
24  let proc1;
25  let proc2;
26
27  beforeEach(() => {
28    data1 = {
29      params: {
30        trafic: TraficEnum.ProtoBuffer,
31        sharedArrayBuffers: {},
32        drawType: -2,
33        endNS: 49171193732,
34        intervalPerf: 1,
35        maxCpuCount: -1,
36        recordEndNS: 30418971157414,
37        recordStartNS: 30369799963682,
38        scale: 2000000000,
39        startNS: 0,
40        tid: 28917,
41        width: 841,
42      },
43    };
44    data2 = {
45      params: {
46        trafic: TraficEnum.ProtoBuffer,
47        sharedArrayBuffers: {},
48        drawType: -2,
49        endNS: 38843292896.21842,
50        intervalPerf: 1,
51        maxCpuCount: -1,
52        recordEndNS: 30418971157414,
53        recordStartNS: 30369799963682,
54        scale: 20000000,
55        startNS: 38410507602.73825,
56        tid: 28917,
57        width: 841,
58      },
59    };
60    proc1 = jest.fn((sql) => [
61      { hiperfData: { callchainId: 12, eventCount: 3603585, sampleCount: 11, startNs: 0 } },
62      { hiperfData: { callchainId: 128, eventCount: 728632, sampleCount: 1, startNs: 70000000 } },
63    ]);
64    proc2 = jest.fn((sql) => [
65      { hiperfData: { callchainId: 1114, eventCount: 106450, sampleCount: 1, startNs: 38427936069 } },
66      { hiperfData: { callchainId: 94, eventCount: 140815, sampleCount: 1, startNs: 38428328069 } },
67    ]);
68  });
69  it('HiperfThreadReceiverTest01', () => {
70    expect(chartHiperfThreadData10MSProtoSql(data1.params)).toBeTruthy();
71    expect(chartHiperfThreadDataProtoSql(data2.params)).toBeTruthy();
72  });
73  it('HiperfThreadReceiverTest02', () => {
74    let mockPostMessage = jest.fn();
75    global.postMessage = mockPostMessage;
76    hiperfThreadDataReceiver(data1, proc1);
77    expect(mockPostMessage).toHaveBeenCalledTimes(1);
78  });
79  it('HiperfThreadReceiverTest03', () => {
80    let mockPostMessage = jest.fn();
81    global.postMessage = mockPostMessage;
82    hiperfThreadDataReceiver(data2, proc2);
83    expect(mockPostMessage).toHaveBeenCalledTimes(1);
84  });
85});
86