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 {
17  abilityBytesInTraceDataProtoSql, abilityBytesInTraceDataReceiver,
18  abilityBytesOutTraceDataProtoSql, abilityBytesOutTraceDataReceiver,
19  abilityBytesReadDataProtoSql, abilityBytesReadDataReceiver,
20  abilityBytesWrittenDataProtoSql, abilityBytesWrittenDataReceiver,
21  abilityMemoryDataProtoSql, abilityMemoryUsedDataReceiver,
22  abilityPacketInDataProtoSql, abilityPacketInTraceDataReceiver,
23  abilityPacketsOutDataProtoSql, abilityPacketsOutTraceDataReceiver,
24  abilityReadOpsDataProtoSql, abilityReadOpsDataReceiver,
25  abilityWrittenOpsDataProtoSql, abilityWrittenOpsDataReceiver,
26  cpuAbilityMonitorDataProtoSql, cpuAbilityMonitorDataReceiver,
27  cpuAbilitySystemDataProtoSql, cpuAbilitySystemDataReceiver,
28  cpuAbilityUserDataProtoSql, cpuAbilityUserDataReceiver
29} from '../../../../src/trace/database/data-trafic/AbilityMonitorReceiver';
30import { TraficEnum } from '../../../../src/trace/database/data-trafic/utils/QueryEnum';
31
32describe('AbilityMonitorReceiver Test', () => {
33  let data;
34  let proc;
35
36  beforeEach(() => {
37    data = {
38      params: {
39        trafic: TraficEnum.ProtoBuffer,
40        sharedArrayBuffers: {
41          id: new Uint16Array([1, 2, 3]),
42        },
43      },
44    };
45    proc = jest.fn((sql) => [
46      {abilityData: {id: 4, startNs: 4.4, pid: 40, tid: 400, dur: 40000, depth: 4}},
47      {abilityData: {id: 5, startNs: 5.5, pid: 50, tid: 500, dur: 50000, depth: 5}},
48    ]);
49  });
50  it('AbilityMonitorReceiverTest01', () => {
51    const args = {
52      recordStartNS: 1000,
53      endNS: 3000,
54      startNS: 2000,
55      width: 10
56    };
57    expect(cpuAbilityMonitorDataProtoSql(args)).toBeTruthy();
58    expect(cpuAbilityUserDataProtoSql(args)).toBeTruthy();
59    expect(cpuAbilitySystemDataProtoSql(args)).toBeTruthy();
60    expect(abilityMemoryDataProtoSql(args)).toBeTruthy();
61    expect(abilityBytesReadDataProtoSql(args)).toBeTruthy();
62    expect(abilityBytesWrittenDataProtoSql(args)).toBeTruthy();
63    expect(abilityReadOpsDataProtoSql(args)).toBeTruthy();
64    expect(abilityWrittenOpsDataProtoSql(args)).toBeTruthy();
65    expect(abilityBytesInTraceDataProtoSql(args)).toBeTruthy();
66    expect(abilityBytesOutTraceDataProtoSql(args)).toBeTruthy();
67    expect(abilityPacketInDataProtoSql(args)).toBeTruthy();
68    expect(abilityPacketsOutDataProtoSql(args)).toBeTruthy();
69  });
70  it('AbilityMonitorReceiverTest02', () => {
71    let mockPostMessage = jest.fn();
72    global.postMessage = mockPostMessage;
73    abilityMemoryUsedDataReceiver(data, proc);
74    abilityBytesReadDataReceiver(data, proc);
75    abilityBytesWrittenDataReceiver(data, proc);
76    abilityReadOpsDataReceiver(data, proc);
77    abilityWrittenOpsDataReceiver(data, proc);
78    abilityBytesInTraceDataReceiver(data, proc);
79    abilityBytesOutTraceDataReceiver(data, proc);
80    abilityPacketInTraceDataReceiver(data, proc);
81    abilityPacketsOutTraceDataReceiver(data, proc);
82
83    expect(mockPostMessage).toHaveBeenCalledTimes(9);
84  });
85  it('AbilityMonitorReceiverTest03', () => {
86    let cpuAbilityData = {
87      params: {
88        trafic: TraficEnum.ProtoBuffer,
89        sharedArrayBuffers: {
90          id: new Uint16Array([1, 2, 3]),
91        },
92      },
93    };
94    let cpuAbilityProc = jest.fn((sql) => [
95      {cpuAbilityData: {id: 4, startNs: 4.4, pid: 40, tid: 400, dur: 40000, depth: 4}},
96      {cpuAbilityData: {id: 5, startNs: 5.5, pid: 50, tid: 500, dur: 50000, depth: 5}},
97    ]);
98    let mockPostMessage = jest.fn();
99    global.postMessage = mockPostMessage;
100    cpuAbilityMonitorDataReceiver(cpuAbilityData, cpuAbilityProc);
101    cpuAbilityUserDataReceiver(cpuAbilityData, cpuAbilityProc);
102    cpuAbilitySystemDataReceiver(cpuAbilityData, cpuAbilityProc);
103    expect(mockPostMessage).toHaveBeenCalledTimes(3);
104  });
105});