| #1/bin/env bash |
| set -e |
| |
| usage() { |
| cat << EOF |
| usage: $0 OPTIONS RESULTS_DIR | TRACE_JSON |
| |
| Convert telemetry json trace result to callstats.html compatible |
| versions ot ./out.json |
| |
| OPTIONS: |
| -h Show this message. |
| RESULTS_DIR tools/perf/artifacts/run_XXX |
| TRACE_JSON .json trace files |
| EOF |
| } |
| |
| |
| while getopts ":h" OPTION ; do |
| case $OPTION in |
| h) usage |
| exit 0 |
| ;; |
| ?) echo "Illegal option: -$OPTARG" |
| usage |
| exit 1 |
| ;; |
| esac |
| done |
| |
| # ======================================================================= |
| |
| if [[ "$1" == *.json ]]; then |
| echo "Converting json files" |
| JSON=$1 |
| elif [[ -e "$1" ]]; then |
| echo "Converting reults dir" |
| RESULTS_DIR=$1 |
| else |
| echo "RESULTS_DIR '$RESULTS_DIR' not found"; |
| usage; |
| exit 1; |
| fi |
| |
| |
| OUT=out.json |
| if [[ -e $OUT ]]; then |
| echo "# Creating backup for $OUT" |
| cp $OUT $OUT.bak |
| fi |
| echo "# Writing to $OUT" |
| |
| |
| function convert { |
| NAME=$1 |
| JSON=$2 |
| # Check if any json file exists: |
| if ls $JSON 1> /dev/null 2>&1; then |
| du -sh $JSON; |
| echo "Converting NAME=$NAME"; |
| echo "," >> $OUT; |
| echo "\"$NAME\": " >> $OUT; |
| jq '[.traceEvents[].args | select(."runtime-call-stats" != null) | ."runtime-call-stats"]' $JSON >> $OUT; |
| fi |
| } |
| |
| |
| echo '{ "telemetry-results": { "placeholder":{}' > $OUT |
| if [[ $RESULTS_DIR ]]; then |
| for PAGE_DIR in $RESULTS_DIR/*_1; do |
| NAME=`basename $PAGE_DIR`; |
| JSON="$PAGE_DIR/trace/traceEvents/*_converted.json"; |
| convert $NAME $JSON |
| done |
| else |
| for JSON in $@; do |
| convert $JSON $JSON |
| done |
| fi |
| echo '}}' >> $OUT |