diff options
author | unknown <kent@mysql.com> | 2004-12-30 16:34:01 +0100 |
---|---|---|
committer | unknown <kent@mysql.com> | 2004-12-30 16:34:01 +0100 |
commit | 4ad77748b3ad558d4807d9aa31174eb8f72b90be (patch) | |
tree | 65585f5960d98e1389fb5a92970f63f36688e09c /mysql-test/lib/mtr_report.pl | |
parent | 49501611aa534efcd18d3ee3bf94ec1ba13aa6f2 (diff) | |
download | mariadb-git-4ad77748b3ad558d4807d9aa31174eb8f72b90be.tar.gz |
Many files:
Perl version of mysql-test-run
new file
mysql-test/lib/init_db.sql:
Perl version of mysql-test-run
mysql-test/lib/mtr_gcov.pl:
Perl version of mysql-test-run
mysql-test/lib/mtr_gprof.pl:
Perl version of mysql-test-run
mysql-test/lib/mtr_io.pl:
Perl version of mysql-test-run
mysql-test/lib/mtr_match.pl:
Perl version of mysql-test-run
mysql-test/lib/mtr_misc.pl:
Perl version of mysql-test-run
mysql-test/lib/mtr_process.pl:
Perl version of mysql-test-run
mysql-test/lib/mtr_report.pl:
Perl version of mysql-test-run
mysql-test/mysql-test-run.pl:
Perl version of mysql-test-run
Diffstat (limited to 'mysql-test/lib/mtr_report.pl')
-rw-r--r-- | mysql-test/lib/mtr_report.pl | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl new file mode 100644 index 00000000000..350cd993f19 --- /dev/null +++ b/mysql-test/lib/mtr_report.pl @@ -0,0 +1,257 @@ +# -*- cperl -*- + +# This is a library file used by the Perl version of mysql-test-run, +# and is part of the translation of the Bourne shell script with the +# same name. + +use strict; + +sub mtr_report_test_name($); +sub mtr_report_test_passed($); +sub mtr_report_test_failed($); +sub mtr_report_test_skipped($); + +sub mtr_show_failed_diff ($); +sub mtr_report_stats ($); +sub mtr_print_line (); +sub mtr_print_header (); +sub mtr_report (@); +sub mtr_warning (@); +sub mtr_error (@); +sub mtr_debug (@); + + +############################################################################## +# +# +# +############################################################################## + +# We can't use diff -u or diff -a as these are not portable + +sub mtr_show_failed_diff ($) { + my $tname= shift; + + my $reject_file= "r/$tname.reject"; + my $result_file= "r/$tname.result"; + my $eval_file= "r/$tname.eval"; + + if ( -f $eval_file ) + { + $result_file= $eval_file; + } + elsif ( $::opt_result_ext and + ( $::opt_record or -f "$result_file$::opt_result_ext" )) + { + # If we have an special externsion for result files we use it if we are + # recording or a result file with that extension exists. + $result_file= "$result_file$::opt_result_ext"; + } + + if ( -f $reject_file ) + { + print "Below are the diffs between actual and expected results:\n"; + print "-------------------------------------------------------\n"; + # FIXME check result code?! + mtr_run("diff",["-c",$result_file,$reject_file], "", "", "", ""); + print "-------------------------------------------------------\n"; + print "Please follow the instructions outlined at\n"; + print "http://www.mysql.com/doc/en/Reporting_mysqltest_bugs.html\n"; + print "to find the reason to this problem and how to report this.\n\n"; + } +} + +sub mtr_report_test_name ($) { + my $tinfo= shift; + + printf "%-31s ", $tinfo->{'name'}; +} + +sub mtr_report_test_skipped ($) { + my $tinfo= shift; + + $tinfo->{'result'}= 'MTR_RES_SKIPPED'; + print "[ skipped ]\n"; +} + +sub mtr_report_test_passed ($) { + my $tinfo= shift; + + my $timer= ""; +# FIXME +# if ( $::opt_timer and -f "$::glob_mysql_test_dir/var/log/timer" ) +# { +# $timer= `cat var/log/timer`; +# $timer= sprintf "%13s", $timer; +# } + $tinfo->{'result'}= 'MTR_RES_PASSED'; + print "[ pass ] $timer\n"; +} + +sub mtr_report_test_failed ($) { + my $tinfo= shift; + + $tinfo->{'result'}= 'MTR_RES_FAILED'; + print "[ fail ]\n"; + + print "Errors are (from $::path_timefile) :\n"; + print mtr_fromfile($::path_timefile); # FIXME print_file() instead + print "\n(the last lines may be the most important ones)\n"; +} + +sub mtr_report_stats ($) { + my $tests= shift; + + # ---------------------------------------------------------------------- + # Find out how we where doing + # ---------------------------------------------------------------------- + + my $tot_skiped= 0; + my $tot_passed= 0; + my $tot_failed= 0; + my $tot_tests= 0; + + foreach my $tinfo (@$tests) + { + if ( $tinfo->{'result'} eq 'MTR_RES_SKIPPED' ) + { + $tot_skiped++; + } + elsif ( $tinfo->{'result'} eq 'MTR_RES_PASSED' ) + { + $tot_tests++; + $tot_passed++; + } + elsif ( $tinfo->{'result'} eq 'MTR_RES_FAILED' ) + { + $tot_tests++; + $tot_failed++; + } + } + + # ---------------------------------------------------------------------- + # Print out a summary report to screen + # ---------------------------------------------------------------------- + + if ( ! $tot_failed ) + { + print "All $tot_tests tests were successful.\n"; + } + else + { + my $ratio= $tot_passed * 100 / $tot_tests; + printf "Failed $tot_failed/$tot_tests tests, " . + "%.2f\% successful.\n\n", $ratio; + print + "The log files in var/log may give you some hint\n", + "of what when wrong.\n", + "If you want to report this error, please read first ", + "the documentation at\n", + "http://www.mysql.com/doc/en/MySQL_test_suite.html\n"; + } + + # ---------------------------------------------------------------------- + # ---------------------------------------------------------------------- + + if ( ! $::glob_use_running_server ) + { + + # Report if there was any fatal warnings/errors in the log files + # + unlink("$::glob_mysql_test_dir/var/log/warnings"); + unlink("$::glob_mysql_test_dir/var/log/warnings.tmp"); + # Remove some non fatal warnings from the log files + +# FIXME what is going on ????? ;-) +# sed -e 's!Warning: Table:.* on delete!!g' -e 's!Warning: Setting lower_case_table_names=2!!g' -e 's!Warning: One can only use the --user.*root!!g' \ +# var/log/*.err \ +# | sed -e 's!Warning: Table:.* on rename!!g' \ +# > var/log/warnings.tmp; +# +# found_error=0; +# # Find errors +# for i in "^Warning:" "^Error:" "^==.* at 0x" +# do +# if ( $GREP "$i" var/log/warnings.tmp >> var/log/warnings ) +# { +# found_error=1 +# } +# done +# unlink("$::glob_mysql_test_dir/var/log/warnings.tmp"); +# if ( $found_error= "1" ) +# { +# print "WARNING: Got errors/warnings while running tests. Please examine\n" +# print "$::glob_mysql_test_dir/var/log/warnings for details.\n" +# } +# } + } + + print "\n"; + + if ( $tot_failed != 0 ) + { + print "mysql-test-run: *** Failing the test(s):"; + + foreach my $tinfo (@$tests) + { + if ( $tinfo->{'result'} eq 'MTR_RES_FAILED' ) + { + print " $tinfo->{'name'}"; + } + } + print "\n"; + mtr_error("there where failing test cases"); + } +} + +############################################################################## +# +# Text formatting +# +############################################################################## + +sub mtr_print_line () { + print '-' x 55, "\n"; +} + +sub mtr_print_header () { + print "\n"; + if ( $::opt_timer ) + { + print "TEST RESULT TIME (ms)\n"; + } + else + { + print "TEST RESULT\n"; + } + mtr_print_line(); + print "\n"; +} + + +############################################################################## +# +# Misc +# +############################################################################## + +sub mtr_report (@) { + print join(" ", @_),"\n"; +} + +sub mtr_warning (@) { + print STDERR "mysql-test-run: WARNING: ",join(" ", @_),"\n"; +} + +sub mtr_error (@) { + die "mysql-test-run: *** ERROR: ",join(" ", @_),"\n"; +} + +sub mtr_debug (@) { + if ( $::opt_script_debug ) + { + print "mysql-test-run: DEBUG: ",join(" ", @_),"\n"; + } +} + +1; |