1#1/bin/env bash 2set -e 3 4usage() { 5cat << EOF 6usage: $0 OPTIONS RESULTS_DIR | TRACE_JSON 7 8Convert telemetry json trace result to callstats.html compatible 9versions ot ./out.json 10 11OPTIONS: 12 -h Show this message. 13 RESULTS_DIR tools/perf/artifacts/run_XXX 14 TRACE_JSON .json trace files 15EOF 16} 17 18 19while getopts ":h" OPTION ; do 20 case $OPTION in 21 h) usage 22 exit 0 23 ;; 24 ?) echo "Illegal option: -$OPTARG" 25 usage 26 exit 1 27 ;; 28 esac 29done 30 31# ======================================================================= 32 33if [[ "$1" == *.json ]]; then 34 echo "Converting json files" 35 JSON=$1 36elif [[ -e "$1" ]]; then 37 echo "Converting reults dir" 38 RESULTS_DIR=$1 39else 40 echo "RESULTS_DIR '$RESULTS_DIR' not found"; 41 usage; 42 exit 1; 43fi 44 45 46OUT=out.json 47if [[ -e $OUT ]]; then 48 echo "# Creating backup for $OUT" 49 cp $OUT $OUT.bak 50fi 51echo "# Writing to $OUT" 52 53 54function convert { 55 NAME=$1 56 JSON=$2 57 # Check if any json file exists: 58 if ls $JSON 1> /dev/null 2>&1; then 59 du -sh $JSON; 60 echo "Converting NAME=$NAME"; 61 echo "," >> $OUT; 62 echo "\"$NAME\": " >> $OUT; 63 jq '[.traceEvents[].args | select(."runtime-call-stats" != null) | ."runtime-call-stats"]' $JSON >> $OUT; 64 fi 65} 66 67 68echo '{ "telemetry-results": { "placeholder":{}' > $OUT 69if [[ $RESULTS_DIR ]]; then 70 for PAGE_DIR in $RESULTS_DIR/*_1; do 71 NAME=`basename $PAGE_DIR`; 72 JSON="$PAGE_DIR/trace/traceEvents/*_converted.json"; 73 convert $NAME $JSON 74 done 75else 76 for JSON in $@; do 77 convert $JSON $JSON 78 done 79fi 80echo '}}' >> $OUT 81