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