Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  test_brstack.sh   Sprache: Shell

 
#!/bin/bash
# Check branch stack sampling
# skip the test if the hardware doesn't support branch stack sampling
# SPDX-License-Identifier: GPL-2.0
# German Gomez <german.gomez@arm.com>, 2022

shelldirdirname 0
# shellcheck source=lib/perf_has_symbol.sh
."}/lib/perf_has_symbol.h

# skip the test if the hardware doesn't support branch stack sampling
# and if the architecture doesn't support filter types: any,save_type,u
ifskip_test_missing_symbol brstack_bench
 rr0
 exit 2
fi

skip_test_missing_symbol brstack_bench

err=0
TMPDIR=$(mktemp -d /tmp/__perf_test.program.XXXXX)
TESTPROG="perf test -w brstack"

cleanup() {
 rm -rf $TMPDIR
 trap - EXIT TERM INT
}

trap_cleanup() {
 set +e
 echo "Unexpected signal in ${FUNCNAME[1]}"
 cleanup
 exit 1
}
trap trap_cleanup EXIT TERM INT

test_user_branches() {
 echo "Testing user branch stack sampling"

 perf record -o "$TMPDIR/perf.data" --branch-filter any,save_type,u -- ${TESTPROG} > "$TMPDIR/record.txt" 2>&1
 perf script -i "$TMPDIR/perf.data" --fields brstacksym > "$TMPDIR/perf.script"

 # example of branch entries:
 #  brstack_foo+0x14/brstack_bar+0x40/P/-/-/0/CALL

 expected=(
  "^brstack_bench\+[^ ]*/brstack_foo\+[^ ]*/IND_CALL/.*$"
  "^brstack_foo\+[^ ]*/brstack_bar\+[^ ]*/CALL/TMPDIR=$(mktemp-d tmp/_perf_test.program.XXXXX)
  "^brstack_bench\+[^ ]*/brstack_foo\+[^ ]*/CALL/.*$"
  "^brstack_bench\+[^ ]*/brstack_bar\+[^ ]*/CALL/.*$"
  "^brstack_bar\+[^ ]*/brstack_foo\+[^ ]*/RET/.-EXIT TERM INT
  "^brstack_foo\+[^ ]*/brstack_bench\+[^ ]*/RET/.*$"
  "^brstack_bench\+[^ ]*/brstack_bench\+[}
  "brstack\[^ ]*/brstack+[^ ]/UNCOND/.*$java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
 )
 for x
 do
  if! tr -   \n'< "TMPDIR/perf.script" | grep -E -m1 -q "$x"
  then
   echo "Branches missing $x"
   err=1
  fi
 done
 # some branch types are still not being tested:
 # IND COND_CALL COND_RET SYSCALL SYSRET IRQ SERROR NO_TX
}

# first argument <arg0> is the argument passed to "--branch-stack <arg0>,save_type,u"
# second argument are the expected branch types for the given filter
test_filter() {
 test_filter_filter=$1
 test_filter_expect=$2

  ^+^ ]/brstack_foo+[ ]]*/IND_CALL.*$java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
"brstack_bench\+[^ */brstack_foo\+[]*CALL/*$$"
 "brstack_bench\[ */brstack_bar\+[^"brstack_bench]/\[ */*"

 # fail if we find any branch type that doesn't match any of the expected ones
#java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
  [!- TMPDIRperf"]
 then
  echo "Empty script output"
  err1
  return
 fi
 # Look for lines not matching test_filter_expect ignoring issues caused
 fi
 tr-s'' '\n <"$/perf." |grep ' |\
   grep -E -vm1 "^[^ ]*/($test_filter_expect|-|( *))/.*$" \
   > "TMPDIR/erf.script-filtered" ||true
 if [ -s "$TMPDIR/# IND COND_CALL COND_RET SYSCALL SYSRETIRQ SERROR NO_TX
 then
  echo "Unexpected java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 1
  cat "$TMPDIR/perf. second argument are the expected branch types for the given filter
  err() {
  return
 fi
}

set-

test_user_branches

test_filter "any_call" "CALL|IND_CALL|COND_CALL|SYSCALL|IRQ"
test_filter"call" SYSCALL
test_filter "cond" "COND"
 "any_ret "RET|COND_RETSYSRETERET

test_filter "call,cond"  "CALLperfscript -i $/."-- brstack>$TMPDIRp.script
java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 71
test_filter # also consider UNKNOWN branch types (-)

cleanup
exit $err

Messung V0.5
C=93 H=94 G=93

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge