123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- import {
- makeSpan,
- makeTraceError,
- makeTracePerformanceIssue,
- makeTransaction,
- } from 'sentry/views/performance/newTraceDetails/traceModels/traceTreeTestUtils';
- import type {TraceTree} from '../traceModels/traceTree';
- import {TraceTreeNode} from './traceTreeNode';
- const metadata: TraceTree.Metadata = {
- event_id: '1',
- project_slug: 'node',
- };
- describe('TraceTreeNode', () => {
- it('infers space from timestamp and start_timestamp', () => {
- const node = new TraceTreeNode(null, makeTraceError({timestamp: 1}), metadata);
- expect(node.space).toEqual([1 * 1e3, 0]);
- });
- it('infers start_timestamp and timestamp when not provided', () => {
- const node = new TraceTreeNode(
- null,
- makeSpan({start_timestamp: 1, timestamp: 3}),
- metadata
- );
- expect(node.space).toEqual([1 * 1e3, 2 * 1e3]);
- });
- it('stores performance issue on node', () => {
- const issue = makeTracePerformanceIssue({issue_short_id: 'issue1'});
- const node = new TraceTreeNode(
- null,
- makeTransaction({
- start_timestamp: 1,
- timestamp: 3,
- performance_issues: [issue],
- }),
- metadata
- );
- expect(node.performance_issues.has(issue)).toBe(true);
- });
- it('stores error on node', () => {
- const issue = makeTraceError();
- const node = new TraceTreeNode(
- null,
- makeTransaction({
- start_timestamp: 1,
- timestamp: 3,
- errors: [issue],
- }),
- metadata
- );
- expect(node.errors.has(issue)).toBe(true);
- });
- it('a trace error is stored on node', () => {
- const node = new TraceTreeNode(null, makeTraceError(), metadata);
- expect(node.errors.size).toBe(1);
- });
- it('stores profile on node', () => {
- const node = new TraceTreeNode(
- null,
- makeTransaction({
- start_timestamp: 1,
- timestamp: 3,
- profile_id: 'profile',
- }),
- metadata
- );
- const profile = node.profiles[0] as {profile_id: string};
- expect(profile.profile_id).toBe('profile');
- });
- it('stores profiler_id on node', () => {
- const node = new TraceTreeNode(
- null,
- makeTransaction({
- start_timestamp: 1,
- timestamp: 3,
- profiler_id: 'profile',
- }),
- metadata
- );
- const profile = node.profiles[0] as {profiler_id: string};
- expect(profile.profiler_id).toBe('profile');
- });
- it('stores parent reference', () => {
- const parent = new TraceTreeNode(null, makeTransaction(), metadata);
- const child = new TraceTreeNode(parent, makeTransaction(), metadata);
- expect(child.parent).toBe(parent);
- });
- describe('maxSeverity', () => {
- it('fatal > info', () => {
- const node = new TraceTreeNode(
- null,
- makeTransaction({
- errors: [makeTraceError({level: 'fatal'})],
- performance_issues: [makeTracePerformanceIssue({level: 'info'})],
- }),
- metadata
- );
- expect(node.maxIssueSeverity).toBe('fatal');
- });
- });
- describe('expanding and collapsing', () => {
- it('default is expanded', () => {
- const node = new TraceTreeNode(null, makeTransaction(), metadata);
- expect(node.expanded).toBe(true);
- });
- it('android tcp connections are not expanded by default', () => {
- const node = new TraceTreeNode(
- null,
- makeSpan({op: 'http.client', origin: 'auto.http.okhttp'}),
- metadata
- );
- expect(node.expanded).toBe(false);
- });
- });
- });
|