github.com/pyroscope-io/pyroscope@v0.37.3-0.20230725203016-5f6947968bd0/packages/pyroscope-flamegraph/src/convert/sandwichViewProfiles.spec.ts (about) 1 import { treeToFlamebearer, calleesFlamebearer } from './sandwichViewProfiles'; 2 import { flamebearersToTree } from './flamebearersToTree'; 3 4 import { tree, singleAppearanceTrees } from './testData'; 5 import { Flamebearer } from '@pyroscope/models/src'; 6 7 const flamebearersProps = { 8 spyName: 'gospy', 9 units: 'samples', 10 format: 'single', 11 numTicks: 400, 12 maxSelf: 150, 13 sampleRate: 100, 14 }; 15 16 describe('Sandwich view profiles', () => { 17 describe('when target function has single tree appearance', () => { 18 it('return correct flamebearer with 0 callees', () => { 19 const f = treeToFlamebearer(tree); 20 21 const resultCalleesFlamebearer = calleesFlamebearer( 22 { ...f, ...flamebearersProps } as Flamebearer, 23 'name-5-2' 24 ); 25 26 const treeToMatchOriginalTree = flamebearersToTree( 27 resultCalleesFlamebearer 28 ); 29 30 expect(treeToMatchOriginalTree).toMatchObject(singleAppearanceTrees.zero); 31 }); 32 it('return correct flamebearer with 1 callee', () => { 33 const f = treeToFlamebearer(tree); 34 35 const resultCalleesFlamebearer = calleesFlamebearer( 36 { ...f, ...flamebearersProps } as Flamebearer, 37 'wwwwwww' 38 ); 39 40 const treeToMatchOriginalTree = flamebearersToTree( 41 resultCalleesFlamebearer 42 ); 43 44 expect(treeToMatchOriginalTree).toMatchObject(singleAppearanceTrees.one); 45 }); 46 it('return correct flamebearer with multiple callees', () => { 47 const f = treeToFlamebearer(tree); 48 49 const resultCalleesFlamebearer = calleesFlamebearer( 50 { ...f, ...flamebearersProps } as Flamebearer, 51 'name-2-2' 52 ); 53 54 const treeToMatchOriginalTree = flamebearersToTree( 55 resultCalleesFlamebearer 56 ); 57 58 expect(treeToMatchOriginalTree).toMatchObject( 59 singleAppearanceTrees.multiple 60 ); 61 }); 62 }); 63 64 // todo(dogfrogfog): add tests for callers flamegraph when remove top lvl empty node 65 });