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  });