• Thomas Richter's avatar
    perf test: Fix "perf stat CSV output linter" test on s390 · ec906102
    Thomas Richter authored
    perf test -F 83 ("perf stat CSV output linter") fails on s390.
    
    Reason is the wrong number of fields for certain CPU core/die/socket
    related output.
    
    On x84_64 the output of command:
    
      # ./perf stat -x, -A -a --no-merge true
      CPU0,1.50,msec,cpu-clock,1502781,100.00,1.052,CPUs utilized
      CPU1,1.48,msec,cpu-clock,1476113,100.00,1.034,CPUs utilized
      ...
    
    results in 8 fields with 7 comma separators.
    
    On s390 the output of command:
    
      #  ./perf stat -x, -A -a --no-merge -- true
      0.95,msec,cpu-clock,949800,100.00,1.060,CPUs utilized
      ...
    
    results in 7 fields with 6 comma separators. Therefore this tests
    fails on s390. Similar issues exist for per-die and per-socket output
    which is not supported on s390.
    
    I have rewritten the python program to count commas in each output line
    into a bash function to achieve the same result. I hope this makes it a
    bit easier.
    
    Output before:
    
      # ./perf test -F 83
      83: perf stat CSV output linter  :
      Checking CSV output: no args [Success]
      Checking CSV output: system wide [Success]
      Checking CSV output: system wide Checking CSV output: \
    	  system wide no aggregation 6.92,msec,cpu-clock,\
    	  6918131,100.00,6.972,CPUs utilized
      ...
      RuntimeError: wrong number of fields. expected 7 in \
    	  6.92,msec,cpu-clock,6918131,100.00,6.972,CPUs utilized
    
      FAILED!
      #
    
    Output after:
    
      # ./perf test -F 83
      83: perf stat CSV output linter             :
      Checking CSV output: no args [Success]
      Checking CSV output: system wide [Success]
      Checking CSV output: system wide Checking CSV output:\
    	  system wide no aggregation [Success]
      Checking CSV output: interval [Success]
      Checking CSV output: event [Success]
      Checking CSV output: per core [Success]
      Checking CSV output: per thread [Success]
      Checking CSV output: per die [Success]
      Checking CSV output: per node [Success]
      Checking CSV output: per socket [Success]
      Ok
      #
    
    Committer notes:
    
    Continues to work on x86_64
    
      $ perf test lint
       89: perf stat CSV output linter                                     : Ok
      $ perf test -v lint
      Couldn't bump rlimit(MEMLOCK), failures may take place when creating BPF maps, etc
       89: perf stat CSV output linter                                     :
      --- start ---
      test child forked, pid 53133
      Checking CSV output: no args [Success]
      Checking CSV output: system wide [Skip] paranoid and not root
      Checking CSV output: system wide [Skip] paranoid and not root
      Checking CSV output: interval [Success]
      Checking CSV output: event [Success]
      Checking CSV output: per core [Skip] paranoid and not root
      Checking CSV output: per thread [Skip] paranoid and not root
      Checking CSV output: per die [Skip] paranoid and not root
      Checking CSV output: per node [Skip] paranoid and not root
      Checking CSV output: per socket [Skip] paranoid and not root
      test child finished with 0
      ---- end ----
      perf stat CSV output linter: Ok
      $
    Signed-off-by: default avatarThomas Richter <tmricht@linux.ibm.com>
    Acked-by: default avatarIan Rogers <irogers@google.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Claire Jensen <cjense@google.com>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Sven Schnelle <svens@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: linux390-list@tuxmaker.boeblingen.de.ibm.com
    Link: https://lore.kernel.org/r/20220603113034.2009728-1-tmricht@linux.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    ec906102
stat+csv_output.sh 3.3 KB