3 # Scrub the variable fields from the perf trace2 output to
9 my $qpath = '\'[^\']*\'|[^ ]*';
20 # This code assumes that the trace2 data was written with bare
21 # turned on (which omits the "<clock> <file>:<line> | <parents>"
25 my @tokens = split /\|/;
27 foreach my $col (@tokens) { $col =~ s/^\s+|\s+$//g; }
29 if ($tokens[$col_event] =~ m/^start/) {
30 # The 'start' message lists the contents of argv in $col_rest.
31 # On some platforms (Windows), argv[0] is *sometimes* a canonical
32 # absolute path to the EXE rather than the value passed in the
33 # shell script. Replace it with a placeholder to simplify our
34 # HEREDOC in the test script.
37 $tokens[$col_rest] =~ s/^($qpath)\W*(.*)/_EXE_ $2/;
39 elsif ($tokens[$col_event] =~ m/cmd_path/) {
40 # Likewise, the 'cmd_path' message breaks out argv[0].
42 # This line is only emitted when RUNTIME_PREFIX is defined,
43 # so just omit it for testing purposes.
44 # $tokens[$col_rest] = "_EXE_";
47 elsif ($tokens[$col_event] =~ m/cmd_ancestry/) {
48 # 'cmd_ancestry' is platform-specific and not implemented everywhere,
52 elsif ($tokens[$col_event] =~ m/child_exit/) {
53 $tokens[$col_rest] =~ s/ pid:\d* / pid:_PID_ /;
55 elsif ($tokens[$col_event] =~ m/data/) {
56 if ($tokens[$col_category] =~ m/process/) {
57 # 'data' and 'data_json' events containing 'process'
58 # category data are assumed to be platform-specific
59 # and highly variable. Just omit them.
62 if ($tokens[$col_category] =~ m/fsync/) {
63 # fsync events aren't interesting for the test
67 elsif ($tokens[$col_event] =~ m/timer/) {
68 # This also captures "th_timer" events
69 $tokens[$col_rest] =~ s/ total:\d+\.\d*/ total:_T_TOTAL_/;
70 $tokens[$col_rest] =~ s/ min:\d+\.\d*/ min:_T_MIN_/;
71 $tokens[$col_rest] =~ s/ max:\d+\.\d*/ max:_T_MAX_/;
74 # t_abs and t_rel are either blank or a float. Replace the float
75 # with a constant for matching the HEREDOC in the test script.
76 if ($tokens[$col_t_abs] =~ m/\d/) {
77 $tokens[$col_t_abs] = "_T_ABS_";
79 if ($tokens[$col_t_rel] =~ m/\d/) {
80 $tokens[$col_t_rel] = "_T_REL_";
85 $out = join('|', @tokens);