Loading ndb/test/run-test/make-html-reports.sh +79 −327 Original line number Diff line number Diff line #!/bin/sh # NAME # make-html-reports.sh # # SYNOPSIS # make-html-reports.sh [-q] [ -R <YYYY-MM-DD> ] [ -s <src dir> ] [ -d <dst dir> ] [ -c <conf dir> ] # # DESCRIPTION # # OPTIONS # # EXAMPLES # # # ENVIRONMENT # NDB_PROJ_HOME Home dir for ndb # # FILES # $NDB_PROJ_HOME/lib/funcs.sh general shell script functions # # # SEE ALSO # # DIAGNOSTICTS # # VERSION # 1.0 # # AUTHOR # Jonas Oreland # progname=`basename $0` synopsis="make-html-reports.sh [ -R <YYYY-MM-DD> ] [ -s <src dir> ] [ -d <dst dir> ] [ -c <conf dir> ]" : ${NDB_PROJ_HOME:?} # If undefined, exit with error message : ${NDB_LOCAL_BUILD_OPTIONS:=--} # If undef, set to --. Keeps getopts happy. # You may have to experiment a bit # to get quoting right (if you need it). . $NDB_PROJ_HOME/lib/funcs.sh # Load some good stuff # defaults for options related variables # src_dir=`pwd` dst_dir=`pwd` conf_dir=`pwd` report_date=`date '+%Y-%m-%d'` uniq_id=$$.$$ verbose=yes # used if error when parsing the options environment variable # env_opterr="options environment variable: <<$options>>" # Option parsing, for the options variable as well as the command line. # # We want to be able to set options in an environment variable, # as well as on the command line. In order not to have to repeat # the same getopts information twice, we loop two times over the # getopts while loop. The first time, we process options from # the options environment variable, the second time we process # options from the command line. # # The things to change are the actual options and what they do. # # for optstring in "$options" "" # 1. options variable 2. cmd line do while getopts q:s:R:d:c: i $optstring # optstring empty => no arg => cmd line do case $i in q) verbose="";; # echo important things d) dst_dir=$OPTARG;; # Destination directory s) src_dir=$OPTARG;; # Destination directory c) conf_dir=$OPTARG;; # R) report_date=$OPTARG;; # \?) syndie $env_opterr;; # print synopsis and exit src_dir=$1 run=$2 date=$3 src_file=$src_dir/report.txt esac done [ -n "$optstring" ] && OPTIND=1 # Reset for round 2, cmdline options env_opterr= # Round 2 should not use the value done shift `expr $OPTIND - 1` src_dir=`abspath $src_dir` dst_dir=`abspath $dst_dir` conf_dir=`abspath $conf_dir` if [ ! -f $src_dir/report.txt ] then echo "$src_dir/report.txt is missing" exit 1 fi ### # # General html functions trim(){ echo $* } header(){ cat <<EOF <html><head><title>$*</title></head> Loading Loading @@ -166,64 +83,7 @@ hr(){ EOF } # --- option parsing done --- # -- Verify trace "Verifying arguments" summary_file=$src_dir/reports/summary.$report_date if [ ! -r $summary_file ] then syndie "Invalid src directory or report date: $summary_file not found" fi if [ ! -d $conf_dir/configurations ] then syndie "Invalid src directory: $conf_dir/configurations not found" fi if [ ! -d $conf_dir/testcases ] then syndie "Invalid src directory: $conf_dir/testcases not found" fi if [ ! -d $dst_dir ] then syndie "Invalid dst dir..." fi # --- option verifying done --- trace "src_dir: $src_dir" trace "dst_dir: $dst_dir" trace "conf_dir: $conf_dir" trace "report date: $report_date" ### config_spec(){ cat <<EOF <a href=#$1>$1</a> EOF } config_spec_include(){ # Print the $1 file to the file we are generating cat <<EOF <a name=$1><pre> EOF if [ -r $conf_dir/configurations/$1 ] then cat -E $conf_dir/configurations/$1 | sed 's/\$/<BR>/g' else cat <<EOF Config spec $1 not found EOF fi cat <<EOF </pre></a> EOF } time_spec(){ # $1 - secs _ts_tmp=$1 Loading @@ -232,8 +92,14 @@ time_spec(){ _ts_tmp=`expr $_ts_tmp / 60` _ts_m=`expr $_ts_tmp % 60` if [ $_ts_tmp -ge 60 ] then _ts_tmp=`expr $_ts_tmp / 60` else _ts_tmp=0 fi a=3 _ts_h=$_ts_tmp if [ $_ts_h -gt 0 ] Loading @@ -247,191 +113,77 @@ time_spec(){ echo $ret } log_spec(){ _ff_=$src_dir/log/$report_date/$1.$2/test.$3.out if [ -r $_ff_ ] && [ -s $_ff_ ] then _f2_=$dst_dir/log.$report_date.$1.$2.$3.out.gz if [ -r $_f2_ ] then rm $_f2_ fi cp $_ff_ $dst_dir/log.$report_date.$1.$2.$3.out gzip $dst_dir/log.$report_date.$1.$2.$3.out rm -f $dst_dir/log.$report_date.$1.$2.$3.out echo "<a href=log.$report_date.$1.$2.$3.out.gz>Log file</a>" else echo "-" fi } ### Main err_spec(){ _ff_=$src_dir/log/$report_date/$1.$2/test.$3.err.tar if [ -r $_ff_ ] && [ -s $_ff_ ] then cp $_ff_ $dst_dir/err.$report_date.$1.$2.$3.err.tar gzip $dst_dir/err.$report_date.$1.$2.$3.err.tar rm -f $dst_dir/err.$report_date.$1.$2.$3.err.tar echo "<a href=err.$report_date.$1.$2.$3.err.tar.gz>Error tarball</a>" else echo "-" fi } report_file=$src_dir/report.html summary_file=$src_dir/summary.html command_spec(){ echo $* | sed 's/;/<BR>/g' } passed=0 failed=0 total=0 ### Main pass(){ passed=`expr $passed + 1` } html_summary_file=$dst_dir/summary.$report_date.html fail(){ failed=`expr $failed + 1` } trace "Creating summary" ( eval `grep "TOTAL" $summary_file | awk -F";" '{ printf("test_file=\"%s\"; elapsed=\"%s\"; started=\"%s\"; stopped=\"%s\"", $2, $3, $4, $5); }'` header "Autotest summary $report_date" heading 1 "Autotest summary $report_date" table row ; column `bold test file: `; column $test_file ; end_row row ; column `bold Started:` ; column "$started "; end_row row ; column `bold Stopped:` ; column "$stopped "; end_row row ; column `bold Elapsed:` ; column "`time_spec $elapsed secs`" ; end_row end_table hr header Report $run $date table "border=1" row c_column `bold Report` c_column `bold Tag` c_column `bold Version` c_column `bold Distr-Config` c_column `bold Db-Config` c_column `bold Type` c_column `bold Test file` c_column `bold Make` c_column `bold Config` c_column `bold Test time` c_column `bold Passed` c_column `bold Failed` end_row grep -v "^#" $summary_file | grep -v TOTAL | sed 's/;/ /g' | \ while read tag version config template type test_file make_res make_time conf_res conf_time test_time passed failed do row if [ -r $src_dir/reports/report.$tag.$version.$config.$template.$type.$test_file.$report_date ] then column "<a href=\"report.$tag.$version.$config.$template.$type.$test_file.$report_date.html\">report</a>" else column "-" fi column $tag column $version column $config column $template column $type column $test_file column "$make_res(`time_spec $make_time`)" column "$conf_res(`time_spec $conf_time`)" c_column "`time_spec $test_time`" c_column `bold $passed` c_column `bold $failed` column `bold Test case` column `bold Result` column `bold Elapsed` column `bold Log` end_row done end_table footer ) > $html_summary_file ) > $report_file for i in $src_dir/reports/report.*.$report_date cat $src_file | while read line do f=`basename $i` trace "Creating report: $f" eval `echo $f | awk -F"." '{printf("tag=%s;version=%s;config=%s;template=%s;type=%s;test_file=%s", $2, $3, $4, $5, $6, $7);}'` eval `echo $line | awk -F";" '{ printf("prg=\"%s\"; no=\"%s\"; res=\"%s\"; time=\"%s\"", $1, $2, $3, $4); }'` prg=`trim $prg` no=`trim $no` res=`trim $res` time=`trim $time` res_dir="<a href=\"result-$run/$date/result.$no/\">log</a>" ts=`time_spec $time` res_txt="" case $res in 0) pass; res_txt="PASSED"; res_dir=" ";; *) fail; res_txt="FAILED";; esac total=`expr $total + $time` ( header "Autotest report $report_date" heading 1 "Autotest report $report_date" table #"border=1" row ; column `bold Tag:`; column $tag ; end_row row ; column `bold Version:` ; column $version ; end_row row ; column `bold Configuration:` ; column `config_spec $config`; end_row row ; column `bold Template:` ; column `config_spec $template`; end_row row ; column `bold Type:` ; column $type ; end_row row ; column `bold Test file:` ; column $test_file; end_row end_table hr table "border=1" row c_column `bold Test case` c_column `bold Result` c_column `bold Test time` c_column `bold Logfile` c_column `bold Error tarfile` column $prg column $res_txt column $ts column $res_dir end_row ) >> $report_file grep -v "^#" $i | sed 's/;/ /g' | \ while read test_no test_res test_time cmd do ( row column "`command_spec $cmd`" case "$test_res" in 0) column "PASSED";; 1001) column "API error";; 1002) column "Max time expired";; 1003) column "Mgm port busy";; *) column "Unknown: $test_res";; esac column "`time_spec $test_time`" column "`log_spec $tag $version $test_no`" column "`err_spec $tag $version $test_no`" column $run column $date column $passed column $failed column `time_spec $total` column "<a href=\"result-$run/$date/report.html\">report</a>" column "<a href=\"result-$run/$date/log.txt\">log.txt</a>" end_row done end_table # Last on page we include spec # of used machines and template for config # for future reference hr table "border=1" row; column `bold Configuration:` $config; end_row row; column `config_spec_include $config`; end_row end_table hr table "border=1" row; column `bold Template:` $template; end_row row; column `config_spec_include $template`; end_row end_table footer ) > $dst_dir/$f.html ) > $summary_file done # Re creating index trace "Recreating index" ( header "Autotest super-duper index" heading 1 "<center>Autotest super-duper index</center>" hr for i in `ls $dst_dir/summary.*.html | sort -r -n` do f=`basename $i` cat <<EOF <p><a href=$f>$f</a></p> EOF done end_table footer ) > $dst_dir/index.html ) >> $report_file exit 0 Loading
ndb/test/run-test/make-html-reports.sh +79 −327 Original line number Diff line number Diff line #!/bin/sh # NAME # make-html-reports.sh # # SYNOPSIS # make-html-reports.sh [-q] [ -R <YYYY-MM-DD> ] [ -s <src dir> ] [ -d <dst dir> ] [ -c <conf dir> ] # # DESCRIPTION # # OPTIONS # # EXAMPLES # # # ENVIRONMENT # NDB_PROJ_HOME Home dir for ndb # # FILES # $NDB_PROJ_HOME/lib/funcs.sh general shell script functions # # # SEE ALSO # # DIAGNOSTICTS # # VERSION # 1.0 # # AUTHOR # Jonas Oreland # progname=`basename $0` synopsis="make-html-reports.sh [ -R <YYYY-MM-DD> ] [ -s <src dir> ] [ -d <dst dir> ] [ -c <conf dir> ]" : ${NDB_PROJ_HOME:?} # If undefined, exit with error message : ${NDB_LOCAL_BUILD_OPTIONS:=--} # If undef, set to --. Keeps getopts happy. # You may have to experiment a bit # to get quoting right (if you need it). . $NDB_PROJ_HOME/lib/funcs.sh # Load some good stuff # defaults for options related variables # src_dir=`pwd` dst_dir=`pwd` conf_dir=`pwd` report_date=`date '+%Y-%m-%d'` uniq_id=$$.$$ verbose=yes # used if error when parsing the options environment variable # env_opterr="options environment variable: <<$options>>" # Option parsing, for the options variable as well as the command line. # # We want to be able to set options in an environment variable, # as well as on the command line. In order not to have to repeat # the same getopts information twice, we loop two times over the # getopts while loop. The first time, we process options from # the options environment variable, the second time we process # options from the command line. # # The things to change are the actual options and what they do. # # for optstring in "$options" "" # 1. options variable 2. cmd line do while getopts q:s:R:d:c: i $optstring # optstring empty => no arg => cmd line do case $i in q) verbose="";; # echo important things d) dst_dir=$OPTARG;; # Destination directory s) src_dir=$OPTARG;; # Destination directory c) conf_dir=$OPTARG;; # R) report_date=$OPTARG;; # \?) syndie $env_opterr;; # print synopsis and exit src_dir=$1 run=$2 date=$3 src_file=$src_dir/report.txt esac done [ -n "$optstring" ] && OPTIND=1 # Reset for round 2, cmdline options env_opterr= # Round 2 should not use the value done shift `expr $OPTIND - 1` src_dir=`abspath $src_dir` dst_dir=`abspath $dst_dir` conf_dir=`abspath $conf_dir` if [ ! -f $src_dir/report.txt ] then echo "$src_dir/report.txt is missing" exit 1 fi ### # # General html functions trim(){ echo $* } header(){ cat <<EOF <html><head><title>$*</title></head> Loading Loading @@ -166,64 +83,7 @@ hr(){ EOF } # --- option parsing done --- # -- Verify trace "Verifying arguments" summary_file=$src_dir/reports/summary.$report_date if [ ! -r $summary_file ] then syndie "Invalid src directory or report date: $summary_file not found" fi if [ ! -d $conf_dir/configurations ] then syndie "Invalid src directory: $conf_dir/configurations not found" fi if [ ! -d $conf_dir/testcases ] then syndie "Invalid src directory: $conf_dir/testcases not found" fi if [ ! -d $dst_dir ] then syndie "Invalid dst dir..." fi # --- option verifying done --- trace "src_dir: $src_dir" trace "dst_dir: $dst_dir" trace "conf_dir: $conf_dir" trace "report date: $report_date" ### config_spec(){ cat <<EOF <a href=#$1>$1</a> EOF } config_spec_include(){ # Print the $1 file to the file we are generating cat <<EOF <a name=$1><pre> EOF if [ -r $conf_dir/configurations/$1 ] then cat -E $conf_dir/configurations/$1 | sed 's/\$/<BR>/g' else cat <<EOF Config spec $1 not found EOF fi cat <<EOF </pre></a> EOF } time_spec(){ # $1 - secs _ts_tmp=$1 Loading @@ -232,8 +92,14 @@ time_spec(){ _ts_tmp=`expr $_ts_tmp / 60` _ts_m=`expr $_ts_tmp % 60` if [ $_ts_tmp -ge 60 ] then _ts_tmp=`expr $_ts_tmp / 60` else _ts_tmp=0 fi a=3 _ts_h=$_ts_tmp if [ $_ts_h -gt 0 ] Loading @@ -247,191 +113,77 @@ time_spec(){ echo $ret } log_spec(){ _ff_=$src_dir/log/$report_date/$1.$2/test.$3.out if [ -r $_ff_ ] && [ -s $_ff_ ] then _f2_=$dst_dir/log.$report_date.$1.$2.$3.out.gz if [ -r $_f2_ ] then rm $_f2_ fi cp $_ff_ $dst_dir/log.$report_date.$1.$2.$3.out gzip $dst_dir/log.$report_date.$1.$2.$3.out rm -f $dst_dir/log.$report_date.$1.$2.$3.out echo "<a href=log.$report_date.$1.$2.$3.out.gz>Log file</a>" else echo "-" fi } ### Main err_spec(){ _ff_=$src_dir/log/$report_date/$1.$2/test.$3.err.tar if [ -r $_ff_ ] && [ -s $_ff_ ] then cp $_ff_ $dst_dir/err.$report_date.$1.$2.$3.err.tar gzip $dst_dir/err.$report_date.$1.$2.$3.err.tar rm -f $dst_dir/err.$report_date.$1.$2.$3.err.tar echo "<a href=err.$report_date.$1.$2.$3.err.tar.gz>Error tarball</a>" else echo "-" fi } report_file=$src_dir/report.html summary_file=$src_dir/summary.html command_spec(){ echo $* | sed 's/;/<BR>/g' } passed=0 failed=0 total=0 ### Main pass(){ passed=`expr $passed + 1` } html_summary_file=$dst_dir/summary.$report_date.html fail(){ failed=`expr $failed + 1` } trace "Creating summary" ( eval `grep "TOTAL" $summary_file | awk -F";" '{ printf("test_file=\"%s\"; elapsed=\"%s\"; started=\"%s\"; stopped=\"%s\"", $2, $3, $4, $5); }'` header "Autotest summary $report_date" heading 1 "Autotest summary $report_date" table row ; column `bold test file: `; column $test_file ; end_row row ; column `bold Started:` ; column "$started "; end_row row ; column `bold Stopped:` ; column "$stopped "; end_row row ; column `bold Elapsed:` ; column "`time_spec $elapsed secs`" ; end_row end_table hr header Report $run $date table "border=1" row c_column `bold Report` c_column `bold Tag` c_column `bold Version` c_column `bold Distr-Config` c_column `bold Db-Config` c_column `bold Type` c_column `bold Test file` c_column `bold Make` c_column `bold Config` c_column `bold Test time` c_column `bold Passed` c_column `bold Failed` end_row grep -v "^#" $summary_file | grep -v TOTAL | sed 's/;/ /g' | \ while read tag version config template type test_file make_res make_time conf_res conf_time test_time passed failed do row if [ -r $src_dir/reports/report.$tag.$version.$config.$template.$type.$test_file.$report_date ] then column "<a href=\"report.$tag.$version.$config.$template.$type.$test_file.$report_date.html\">report</a>" else column "-" fi column $tag column $version column $config column $template column $type column $test_file column "$make_res(`time_spec $make_time`)" column "$conf_res(`time_spec $conf_time`)" c_column "`time_spec $test_time`" c_column `bold $passed` c_column `bold $failed` column `bold Test case` column `bold Result` column `bold Elapsed` column `bold Log` end_row done end_table footer ) > $html_summary_file ) > $report_file for i in $src_dir/reports/report.*.$report_date cat $src_file | while read line do f=`basename $i` trace "Creating report: $f" eval `echo $f | awk -F"." '{printf("tag=%s;version=%s;config=%s;template=%s;type=%s;test_file=%s", $2, $3, $4, $5, $6, $7);}'` eval `echo $line | awk -F";" '{ printf("prg=\"%s\"; no=\"%s\"; res=\"%s\"; time=\"%s\"", $1, $2, $3, $4); }'` prg=`trim $prg` no=`trim $no` res=`trim $res` time=`trim $time` res_dir="<a href=\"result-$run/$date/result.$no/\">log</a>" ts=`time_spec $time` res_txt="" case $res in 0) pass; res_txt="PASSED"; res_dir=" ";; *) fail; res_txt="FAILED";; esac total=`expr $total + $time` ( header "Autotest report $report_date" heading 1 "Autotest report $report_date" table #"border=1" row ; column `bold Tag:`; column $tag ; end_row row ; column `bold Version:` ; column $version ; end_row row ; column `bold Configuration:` ; column `config_spec $config`; end_row row ; column `bold Template:` ; column `config_spec $template`; end_row row ; column `bold Type:` ; column $type ; end_row row ; column `bold Test file:` ; column $test_file; end_row end_table hr table "border=1" row c_column `bold Test case` c_column `bold Result` c_column `bold Test time` c_column `bold Logfile` c_column `bold Error tarfile` column $prg column $res_txt column $ts column $res_dir end_row ) >> $report_file grep -v "^#" $i | sed 's/;/ /g' | \ while read test_no test_res test_time cmd do ( row column "`command_spec $cmd`" case "$test_res" in 0) column "PASSED";; 1001) column "API error";; 1002) column "Max time expired";; 1003) column "Mgm port busy";; *) column "Unknown: $test_res";; esac column "`time_spec $test_time`" column "`log_spec $tag $version $test_no`" column "`err_spec $tag $version $test_no`" column $run column $date column $passed column $failed column `time_spec $total` column "<a href=\"result-$run/$date/report.html\">report</a>" column "<a href=\"result-$run/$date/log.txt\">log.txt</a>" end_row done end_table # Last on page we include spec # of used machines and template for config # for future reference hr table "border=1" row; column `bold Configuration:` $config; end_row row; column `config_spec_include $config`; end_row end_table hr table "border=1" row; column `bold Template:` $template; end_row row; column `config_spec_include $template`; end_row end_table footer ) > $dst_dir/$f.html ) > $summary_file done # Re creating index trace "Recreating index" ( header "Autotest super-duper index" heading 1 "<center>Autotest super-duper index</center>" hr for i in `ls $dst_dir/summary.*.html | sort -r -n` do f=`basename $i` cat <<EOF <p><a href=$f>$f</a></p> EOF done end_table footer ) > $dst_dir/index.html ) >> $report_file exit 0