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 { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow';
17import { threadPool } from '../../../../src/trace/database/SqlLite';
18import {
19  abilityDmaDataSender,
20  abilityGpuMemoryDataSender,
21  abilityPurgeableDataSender,
22  dmaDataSender,
23  gpuGpuDataSender,
24  gpuMemoryDataSender,
25  gpuResourceDataSender,
26  gpuTotalDataSender,
27  gpuWindowDataSender,
28  purgeableDataSender,
29  shmDataSender,
30  sMapsDataSender
31} from '../../../../src/trace/database/data-trafic/VmTrackerDataSender';
32import { SnapshotStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot';
33jest.mock('../../../../src/js-heap/model/DatabaseStruct', () => {});
34jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => {
35  return {};
36});
37jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => {
38  return {};
39});
40describe('VmTrackerDataSender Test', () => {
41  let data = {
42    dur: 1000,
43    endNs: 576258,
44    frame: {x: 61, y: 3, width: 13, height: 33},
45    name: "SnapShot 1",
46    startNs: 476258,
47    textWidth: 54.6826,
48    value: 21313
49  }
50  it('VmTrackerDataSenderTest01', () => {
51    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
52      callback(data, 1, true);
53    });
54    let sMapsTraceRow = TraceRow.skeleton<SnapshotStruct>();
55    sMapsDataSender('dirty', sMapsTraceRow).then(result => {
56      expect(result).toHaveLength(1);
57      expect(threadPool.submitProto).toHaveBeenCalled();
58    });
59  });
60
61  it('VmTrackerDataSenderTest02', () => {
62    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
63      callback(data, 1, true);
64    });
65    let dmaTraceRow = TraceRow.skeleton<SnapshotStruct>();
66    dmaDataSender(1, dmaTraceRow).then(result => {
67      expect(result).toHaveLength(1);
68      expect(threadPool.submitProto).toHaveBeenCalled();
69    });
70  });
71
72  it('VmTrackerDataSenderTest03', () => {
73    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
74      callback(data, 1, true);
75    });
76    let gpuMemoryTraceRow = TraceRow.skeleton<SnapshotStruct>();
77    gpuMemoryDataSender(1, gpuMemoryTraceRow).then(result => {
78      expect(result).toHaveLength(1);
79      expect(threadPool.submitProto).toHaveBeenCalled();
80    });
81  });
82
83  it('VmTrackerDataSenderTest04', () => {
84    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
85      callback(data, 1, true);
86    });
87    let gpuResourceTraceRow = TraceRow.skeleton<SnapshotStruct>();
88    gpuResourceDataSender(13, gpuResourceTraceRow).then(result => {
89      expect(result).toHaveLength(1);
90      expect(threadPool.submitProto).toHaveBeenCalled();
91    });
92  });
93
94  it('VmTrackerDataSenderTest05', () => {
95    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
96      callback(data, 1, true);
97    });
98    let gpuGpuTraceRow = TraceRow.skeleton<SnapshotStruct>();
99    gpuGpuDataSender(13, "'mem.graph_pss'", gpuGpuTraceRow).then(result => {
100      expect(result).toHaveLength(1);
101      expect(threadPool.submitProto).toHaveBeenCalled();
102    });
103  });
104
105  it('VmTrackerDataSenderTest06', () => {
106    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
107      callback(data, 1, true);
108    });
109    let gpuTotalTraceRow = TraceRow.skeleton<SnapshotStruct>();
110    gpuTotalDataSender(13, gpuTotalTraceRow).then(result => {
111      expect(result).toHaveLength(1);
112      expect(threadPool.submitProto).toHaveBeenCalled();
113    });
114  });
115
116  it('VmTrackerDataSenderTest07', () => {
117    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
118      callback(data, 1, true);
119    });
120    let gpuWindowTraceRow = TraceRow.skeleton<SnapshotStruct>();
121    gpuWindowDataSender(13, 15, gpuWindowTraceRow).then(result => {
122      expect(result).toHaveLength(1);
123      expect(threadPool.submitProto).toHaveBeenCalled();
124    });
125  });
126
127  it('VmTrackerDataSenderTest08', () => {
128    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
129      callback(data, 1, true);
130    });
131    let shmTraceRow = TraceRow.skeleton<SnapshotStruct>();
132    shmDataSender(13, shmTraceRow).then(result => {
133      expect(result).toHaveLength(1);
134      expect(threadPool.submitProto).toHaveBeenCalled();
135    });
136  });
137
138  it('VmTrackerDataSenderTest09', () => {
139    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
140      callback(data, 1, true);
141    });
142    let purgeableTraceRow = TraceRow.skeleton<SnapshotStruct>();
143    purgeableDataSender(13, purgeableTraceRow).then(result => {
144      expect(result).toHaveLength(1);
145      expect(threadPool.submitProto).toHaveBeenCalled();
146    });
147  });
148
149  it('VmTrackerDataSenderTest10', () => {
150    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
151      callback(data, 1, true);
152    });
153    let abilityPurgeablTraceRow = TraceRow.skeleton<SnapshotStruct>();
154    abilityPurgeableDataSender(abilityPurgeablTraceRow, 1000000000, false).then(result => {
155      expect(result).toHaveLength(1);
156      expect(threadPool.submitProto).toHaveBeenCalled();
157    });
158  });
159
160  it('VmTrackerDataSenderTest11', () => {
161    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
162      callback(data, 1, true);
163    });
164    let abilityDmaTraceRow = TraceRow.skeleton<SnapshotStruct>();
165    abilityDmaDataSender(abilityDmaTraceRow, 1000000000).then(result => {
166      expect(result).toHaveLength(1);
167      expect(threadPool.submitProto).toHaveBeenCalled();
168    });
169  });
170
171  it('VmTrackerDataSenderTest12', () => {
172    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
173      callback(data, 1, true);
174    });
175    let abilityGpuMemoryTraceRow = TraceRow.skeleton<SnapshotStruct>();
176    abilityGpuMemoryDataSender(abilityGpuMemoryTraceRow, 1000000000).then(result => {
177      expect(result).toHaveLength(1);
178      expect(threadPool.submitProto).toHaveBeenCalled();
179    });
180  });
181});