1
2/*
3 * Copyright (C) 2022 Huawei Device Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16import '../../../../src/trace/component/trace/base/TraceRow';
17import { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow';
18import {
19    cpuAbilityUserDataSender,
20    abilityMemoryUsedDataSender,
21    abilityBytesReadDataSender,
22    abilityBytesInTraceDataSender
23} from '../../../../src/trace/database/data-trafic/AbilityMonitorSender';
24import { threadPool } from '../../../../src/trace/database/SqlLite';
25import { DiskAbilityMonitorStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerDiskIoAbility';
26import { NetworkAbilityMonitorStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerNetworkAbility';
27import { CpuAbilityMonitorStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerCpuAbility';
28import { MemoryAbilityMonitorStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerMemoryAbility';
29jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => {
30  return {};
31});
32jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => {
33  return {};
34});
35jest.mock('../../../../src/js-heap/model/DatabaseStruct', () => {});
36describe('AbilityMonitorSender Test', () => {
37  let traceRowData = {
38    dur: 9928,
39    frame:
40      {x: 16, y: 5, width: 17, height: 30},
41    startNS: 9928,
42    value: 6
43  }
44  let useTraceRowData = {
45    dur: 9928,
46    frame:
47      {x: 16, y: 5, width: 17, height: 30},
48    startNS: 9928,
49    value: 2.62424
50  }
51  let sysTraceRowData = {
52    dur: 92876,
53    frame:
54      {x: 16, y: 5, width: 17, height: 30},
55    startNS: 6648,
56    value: 3.474
57  }
58  let memoryUsedData = {
59    dur: 877,
60    frame:
61      {x: 68, y: 5, width: 83, height: 30},
62    startNS: 2089,
63    value: 2012
64  }
65  let bytesReadData = {
66    dur: 9961,
67    frame:
68      {x: 16, y: 5, width: 17, height: 30},
69    startNS: 147,
70    value: 4
71  }
72  let bytesInTraceRowData = {
73    dur: 1768,
74    frame:
75      {x: 16, y: 5, width: 18, height: 30},
76    startNS: 21817,
77    value: 24
78  }
79  it('AbilityMonitorSenderTest01', () => {
80    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
81      callback(traceRowData, 1, true);
82    });
83    let traceRow = TraceRow.skeleton<CpuAbilityMonitorStruct>();
84    cpuAbilityUserDataSender(traceRow,'CpuAbilityMonitorData').then(res => {
85      expect(res).toHaveLength(1);
86    });
87  });
88  it('AbilityMonitorSenderTest02', () => {
89    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
90      callback(useTraceRowData, 1, true);
91    });
92    let traceRow = TraceRow.skeleton<CpuAbilityMonitorStruct>();
93    cpuAbilityUserDataSender(traceRow,'CpuAbilityUserData').then(res => {
94      expect(res).toHaveLength(1);
95    });
96  });
97  it('AbilityMonitorSenderTest03', () => {
98    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
99      callback(sysTraceRowData, 1, true);
100    });
101    let traceRow = TraceRow.skeleton<CpuAbilityMonitorStruct>();
102    cpuAbilityUserDataSender(traceRow,'CpuAbilitySystemData').then(res => {
103      expect(res).toHaveLength(1);
104    });
105  });
106  it('AbilityMonitorSenderTest04', () => {
107    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
108      callback(memoryUsedData, 1, true);
109    });
110    let memoryUsedTraceRow = TraceRow.skeleton<MemoryAbilityMonitorStruct>();
111    abilityMemoryUsedDataSender('2241',memoryUsedTraceRow).then(res => {
112      expect(res).toHaveLength(1);
113    });
114  });
115  it('AbilityMonitorSenderTest05', () => {
116    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
117      callback(memoryUsedData, 1, true);
118    });
119    let memoryUsedTraceRow = TraceRow.skeleton<MemoryAbilityMonitorStruct>();
120    abilityMemoryUsedDataSender('2241',memoryUsedTraceRow).then(res => {
121      expect(res).toHaveLength(1);
122    });
123  });
124  it('AbilityMonitorSenderTest06', () => {
125    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
126      callback(bytesReadData, 1 , true);
127    });
128    let traceRow = TraceRow.skeleton<DiskAbilityMonitorStruct>();
129    abilityBytesReadDataSender(traceRow,'AbilityBytesReadData').then(res => {
130      expect(Array.isArray(res)).toBe(true);
131    });
132  });
133  it('AbilityMonitorSenderTest07', () => {
134    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
135      callback(bytesReadData, 1, true);
136    });
137    let traceRow = TraceRow.skeleton<DiskAbilityMonitorStruct>();
138    abilityBytesReadDataSender(traceRow,'AbilityBytesWrittenData').then(res => {
139      expect(Array.isArray(res)).toBe(true);
140    });
141  });
142  it('AbilityMonitorSenderTest08', () => {
143    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
144      callback(bytesReadData, 1, true);
145    });
146    let traceRow = TraceRow.skeleton<DiskAbilityMonitorStruct>();
147    abilityBytesReadDataSender(traceRow,'AbilityReadOpsData').then(res => {
148      expect(Array.isArray(res)).toBe(true);
149    });
150  });
151  it('AbilityMonitorSenderTest08', () => {
152    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
153      callback(bytesReadData, 1, true);
154    });
155    let traceRow = TraceRow.skeleton<DiskAbilityMonitorStruct>();
156    abilityBytesReadDataSender(traceRow,'AbilityWrittenOpsData').then(res => {
157      expect(Array.isArray(res)).toBe(true);
158    });
159  });
160  it('AbilityMonitorSenderTest09', () => {
161    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
162      callback(bytesInTraceRowData, 1, true);
163    });
164    let traceRow = TraceRow.skeleton<NetworkAbilityMonitorStruct>();
165    abilityBytesInTraceDataSender(traceRow, 'AbilityBytesInTraceData').then(res => {
166      expect(res).toHaveLength(1);
167    });
168  });
169  it('AbilityMonitorSenderTest10', () => {
170    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
171      callback(bytesInTraceRowData, 1, true);
172    });
173    let traceRow = TraceRow.skeleton<NetworkAbilityMonitorStruct>();
174    abilityBytesInTraceDataSender(traceRow, 'AbilityBytesOutTraceData').then(res => {
175      expect(res).toHaveLength(1);
176    });
177  });
178  it('AbilityMonitorSenderTest11', () => {
179    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
180      callback(bytesInTraceRowData, 1, true);
181    });
182    let traceRow = TraceRow.skeleton<NetworkAbilityMonitorStruct>();
183    abilityBytesInTraceDataSender(traceRow, 'AbilityPacketInTraceData').then(res => {
184      expect(res).toHaveLength(1);
185    });
186  });
187  it('AbilityMonitorSenderTest12', () => {
188    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
189      callback(bytesInTraceRowData, 1, true);
190    });
191    let traceRow = TraceRow.skeleton<NetworkAbilityMonitorStruct>();
192    abilityBytesInTraceDataSender(traceRow, 'AbilityPacketsOutTraceData').then(res => {
193      expect(res).toHaveLength(1);
194    });
195  });
196});