diff options
-rw-r--r-- | scripts/mysql_fix_privilege_tables.sh | 2 | ||||
-rwxr-xr-x | storage/maria/unittest/ma_test_all-t | 479 | ||||
-rw-r--r-- | unittest/Makefile.am | 4 |
3 files changed, 297 insertions, 188 deletions
diff --git a/scripts/mysql_fix_privilege_tables.sh b/scripts/mysql_fix_privilege_tables.sh index 3b179957932..3f3dbd9306a 100644 --- a/scripts/mysql_fix_privilege_tables.sh +++ b/scripts/mysql_fix_privilege_tables.sh @@ -149,7 +149,7 @@ then fi # Find where first mysql_fix_privilege_tables.sql is located -for i in $basedir/support-files $basedir/share $basedir/share/mysql \ +for i in scripts $basedir/support-files $basedir/share $basedir/share/mysql \ $basedir/scripts $pkgdatadir . "$dirname" do if test -f $i/$file diff --git a/storage/maria/unittest/ma_test_all-t b/storage/maria/unittest/ma_test_all-t index 7a778aa998a..b062c056424 100755 --- a/storage/maria/unittest/ma_test_all-t +++ b/storage/maria/unittest/ma_test_all-t @@ -3,8 +3,25 @@ # Run various unit tests. # +use Getopt::Long; + +$|= 1; +$VER= "1.1"; + +$opt_version= 0; +$opt_help= 0; +$opt_verbose= 0; +$opt_maria_path= undef(); +$opt_valgrind= "valgrind --alignment=8 --leak-check=yes"; +$opt_suffix= ""; +$opt_silent= "-s"; my $maria_path= $ENV{'maria_path'}; +my $my_progname= $0; +$my_progname=~ s/.*[\/]//; +my $runtime_error= 0; # Return 1 if error(s) occur during run +my $NEW_TEST= 0; # Test group separator in an array of tests + run_tests(); #### @@ -13,16 +30,34 @@ run_tests(); sub run_tests { - my $valgrind_opt= "valgrind --alignment=8 --leak-check=yes"; - my $silent_opt= "-s"; - my $suffix= ""; my $nr_tests= 0; + my $flag_exit= 0; + + if (!GetOptions("help", "version", "verbose", "maria-path=s", + "valgrind=s", "suffix=s", "silent=s")) + { + $flag_exit= 1; + } + if ($opt_version) + { + print "$my_progname version $VER\n"; + exit(0); + } + if (defined($opt_maria_path)) + { + $maria_path= $opt_maria_path; + } + if (!defined($maria_path) || !length($maria_path)) + { + $maria_path= "."; + } + + usage() if ($opt_help || $flag_exit); # - # initialisations and previous run clean-ups + # clean-up # - $maria_path= "." if (!defined($maria_path) || !length($maria_path)); unlink <*.TMD maria_log*>; # Delete temporary files # @@ -49,33 +84,52 @@ sub run_tests # Run tests # - print "1..$nr_tests\n"; + if (!$opt_verbose) + { + print "1..$nr_tests\n"; + } + else + { + print "Total tests: $nr_tests\n"; + } - print "Running tests with dynamic row format\n"; - run_check_tests($suffix, $silent_opt, "", 0, 0); - run_repair_tests($suffix, $silent_opt, "", 0, 0); - run_pack_tests($suffix, $silent_opt, "", 0, 0); + if ($opt_verbose) + { + print "Running tests with dynamic row format\n" + } + run_check_tests($opt_suffix, $opt_silent, "", $opt_verbose, 0); + run_repair_tests($opt_suffix, $opt_silent, "", $opt_verbose, 0); + run_pack_tests($opt_suffix, $opt_silent, "", $opt_verbose, 0); - print "Running tests with static row format\n"; - run_check_tests($suffix, $silent_opt, "-S", 0, 0); - run_repair_tests($suffix, $silent_opt, "-S", 0, 0); - run_pack_tests($suffix, $silent_opt, "-S", 0, 0); + if ($opt_verbose) + { + print "\nRunning tests with static row format\n"; + } + run_check_tests($opt_suffix, $opt_silent, "-S", $opt_verbose, 0); + run_repair_tests($opt_suffix, $opt_silent, "-S", $opt_verbose, 0); + run_pack_tests($opt_suffix, $opt_silent, "-S", $opt_verbose, 0); - print "Running tests with block row format\n"; - run_check_tests($suffix, $silent_opt, "-M", 0, 0); - run_repair_tests($suffix, $silent_opt, "-M", 0, 0); - run_pack_tests($suffix, $silent_opt, "-M", 0, 0); + if ($opt_verbose) + { + print "\nRunning tests with block row format\n"; + } + run_check_tests($opt_suffix, $opt_silent, "-M", $opt_verbose, 0); + run_repair_tests($opt_suffix, $opt_silent, "-M", $opt_verbose, 0); + run_pack_tests($opt_suffix, $opt_silent, "-M", $opt_verbose, 0); - print "Running tests with block row format and transactions\n"; - run_check_tests($suffix, $silent_opt, "-M -T", 0, 0); - run_repair_tests($suffix, $silent_opt, "-M -T", 0, 0); - run_pack_tests($suffix, $silent_opt, "-M -T", 0, 0); + if ($opt_verbose) + { + print "\nRunning tests with block row format and transactions\n"; + } + run_check_tests($opt_suffix, $opt_silent, "-M -T", $opt_verbose, 0); + run_repair_tests($opt_suffix, $opt_silent, "-M -T", $opt_verbose, 0); + run_pack_tests($opt_suffix, $opt_silent, "-M -T", $opt_verbose, 0); - run_tests_on_warnings_and_errors($suffix, $silent_opt, 0, 0); - run_ma_test_recovery(0, 0); - run_tests_on_clrs(0, 0); + run_tests_on_warnings_and_errors($opt_suffix, $opt_silent, $opt_verbose, 0); + run_ma_test_recovery($opt_verbose, 0); + run_tests_on_clrs($opt_verbose, 0); - return; + exit($runtime_error); } #### @@ -161,7 +215,7 @@ sub run_check_tests ok("$maria_path/maria_chk$suffix $ma_test2_opt[$i][1] test2", $verbose, $i + 1); } - unlink <rm -f maria_log_control maria_log.*>; + unlink <maria_log_control maria_log.*>; return 0; } @@ -173,48 +227,42 @@ sub run_check_tests sub run_repair_tests() { my ($suffix, $silent, $row_type, $verbose, $count)= @_; - my ($i, $nr_tests); - my @t1= ("$maria_path/ma_test1$suffix $silent --checksum $row_type", - "$maria_path/maria_chk$suffix -se test1", - "$maria_path/maria_chk$suffix --silent -re --transaction-log test1", - "$maria_path/maria_chk$suffix -rs test1", - "$maria_path/maria_chk$suffix -se test1", - "$maria_path/maria_chk$suffix -rqs test1", - "$maria_path/maria_chk$suffix -se test1", - "$maria_path/maria_chk$suffix -rs --correct-checksum test1", - "$maria_path/maria_chk$suffix -se test1", - "$maria_path/maria_chk$suffix -rqs --correct-checksum test1", - "$maria_path/maria_chk$suffix -se test1", - "$maria_path/maria_chk$suffix -ros --correct-checksum test1", - "$maria_path/maria_chk$suffix -se test1", - "$maria_path/maria_chk$suffix -rqos --correct-checksum test1", - "$maria_path/maria_chk$suffix -se test1", - "$maria_path/maria_chk$suffix -sz test1", - "$maria_path/maria_chk$suffix -se test1", - "$maria_path/ma_test2$suffix $silent -c -d1 $row_type", - "$maria_path/maria_chk$suffix -s --parallel-recover test2", - "$maria_path/maria_chk$suffix -se test2", - "$maria_path/maria_chk$suffix -s --parallel-recover --quick test2", - "$maria_path/maria_chk$suffix -se test2", - "$maria_path/ma_test2$suffix $silent -c $row_type", - "$maria_path/maria_chk$suffix -se test2", - "$maria_path/maria_chk$suffix -sr test2", - "$maria_path/maria_chk$suffix -se test2", - "$maria_path/ma_test2$suffix $silent -c -t4 $row_type", - "$maria_path/maria_chk$suffix -sz test1", - "$maria_path/maria_chk$suffix -se test1" - ); - - if ($count) - { - $nr_tests= 0; - for ($i= 0; defined($t1[$i]); $i++) { $nr_tests++; } - return $nr_tests; - } - for ($i= 0; defined($t1[$i]); $i++) - { - ok($t1[$i], $verbose, $i + 1); - } + my ($i); + + my @t= ($NEW_TEST, + "$maria_path/ma_test1$suffix $silent --checksum $row_type", + "$maria_path/maria_chk$suffix -se test1", + "$maria_path/maria_chk$suffix --silent -re --transaction-log test1", + "$maria_path/maria_chk$suffix -rs test1", + "$maria_path/maria_chk$suffix -se test1", + "$maria_path/maria_chk$suffix -rqs test1", + "$maria_path/maria_chk$suffix -se test1", + "$maria_path/maria_chk$suffix -rs --correct-checksum test1", + "$maria_path/maria_chk$suffix -se test1", + "$maria_path/maria_chk$suffix -rqs --correct-checksum test1", + "$maria_path/maria_chk$suffix -se test1", + "$maria_path/maria_chk$suffix -ros --correct-checksum test1", + "$maria_path/maria_chk$suffix -se test1", + "$maria_path/maria_chk$suffix -rqos --correct-checksum test1", + "$maria_path/maria_chk$suffix -se test1", + "$maria_path/maria_chk$suffix -sz test1", + "$maria_path/maria_chk$suffix -se test1", + "$maria_path/ma_test2$suffix $silent -c -d1 $row_type", + "$maria_path/maria_chk$suffix -s --parallel-recover test2", + "$maria_path/maria_chk$suffix -se test2", + "$maria_path/maria_chk$suffix -s --parallel-recover --quick test2", + "$maria_path/maria_chk$suffix -se test2", + "$maria_path/ma_test2$suffix $silent -c $row_type", + "$maria_path/maria_chk$suffix -se test2", + "$maria_path/maria_chk$suffix -sr test2", + "$maria_path/maria_chk$suffix -se test2", + "$maria_path/ma_test2$suffix $silent -c -t4 $row_type", + "$maria_path/maria_chk$suffix -sz test1", + "$maria_path/maria_chk$suffix -se test1" + ); + + return &count_tests(\@t) if ($count); + &run_test_bunch(\@t, $verbose, 0); return 0; } @@ -225,55 +273,48 @@ sub run_repair_tests() sub run_pack_tests() { my ($suffix, $silent, $row_type, $verbose, $count)= @_; - my ($i, $nr_tests); - - my @t1= ("$maria_path/ma_test1$suffix $silent --checksum $row_type", - "$maria_path/maria_pack$suffix --force -s test1", - "$maria_path/maria_chk$suffix -ess test1", - "$maria_path/maria_chk$suffix -rqs test1", - "$maria_path/maria_chk$suffix -es test1", - "$maria_path/maria_chk$suffix -rs test1", - "$maria_path/maria_chk$suffix -es test1", - "$maria_path/maria_chk$suffix -rus test1", - "$maria_path/maria_chk$suffix -es test1", - - "$maria_path/ma_test1$suffix $silent --checksum $row_type", - "$maria_path/maria_pack$suffix --force -s test1", - "$maria_path/maria_chk$suffix -rus --safe-recover test1", - "$maria_path/maria_chk$suffix -es test1", - - "$maria_path/ma_test1$suffix $silent --checksum -S $row_type", - "$maria_path/maria_chk$suffix -se test1", - "$maria_path/maria_chk$suffix -ros test1", - "$maria_path/maria_chk$suffix -rqs test1", - "$maria_path/maria_chk$suffix -se test1", - - "$maria_path/maria_pack$suffix --force -s test1", - "$maria_path/maria_chk$suffix -rqs test1", - "$maria_path/maria_chk$suffix -es test1", - "$maria_path/maria_chk$suffix -rus test1", - "$maria_path/maria_chk$suffix -es test1", - - "$maria_path/ma_test2$suffix $silent -c -d1 $row_type", - "$maria_path/maria_chk$suffix -s --parallel-recover test2", - "$maria_path/maria_chk$suffix -se test2", - "$maria_path/maria_chk$suffix -s --unpack --parallel-recover test2", - "$maria_path/maria_chk$suffix -se test2", - "$maria_path/maria_pack$suffix --force -s test1", - "$maria_path/maria_chk$suffix -s --unpack --parallel-recover test2", - "$maria_path/maria_chk$suffix -se test2" - ); - - if ($count) - { - $nr_tests= 0; - for ($i= 0; defined($t1[$i]); $i++) { $nr_tests++; } - return $nr_tests; - } - for ($i= 0; defined($t1[$i]); $i++) - { - ok($t1[$i], $verbose, $i + 1); - } + my ($i); + + my @t= ($NEW_TEST, + "$maria_path/ma_test1$suffix $silent --checksum $row_type", + "$maria_path/maria_pack$suffix --force -s test1", + "$maria_path/maria_chk$suffix -ess test1", + "$maria_path/maria_chk$suffix -rqs test1", + "$maria_path/maria_chk$suffix -es test1", + "$maria_path/maria_chk$suffix -rs test1", + "$maria_path/maria_chk$suffix -es test1", + "$maria_path/maria_chk$suffix -rus test1", + "$maria_path/maria_chk$suffix -es test1", + $NEW_TEST, + "$maria_path/ma_test1$suffix $silent --checksum $row_type", + "$maria_path/maria_pack$suffix --force -s test1", + "$maria_path/maria_chk$suffix -rus --safe-recover test1", + "$maria_path/maria_chk$suffix -es test1", + $NEW_TEST, + "$maria_path/ma_test1$suffix $silent --checksum -S $row_type", + "$maria_path/maria_chk$suffix -se test1", + "$maria_path/maria_chk$suffix -ros test1", + "$maria_path/maria_chk$suffix -rqs test1", + "$maria_path/maria_chk$suffix -se test1", + $NEW_TEST, + "$maria_path/maria_pack$suffix --force -s test1", + "$maria_path/maria_chk$suffix -rqs test1", + "$maria_path/maria_chk$suffix -es test1", + "$maria_path/maria_chk$suffix -rus test1", + "$maria_path/maria_chk$suffix -es test1", + $NEW_TEST, + "$maria_path/ma_test2$suffix $silent -c -d1 $row_type", + "$maria_path/maria_chk$suffix -s --parallel-recover test2", + "$maria_path/maria_chk$suffix -se test2", + "$maria_path/maria_chk$suffix -s --unpack --parallel-recover test2", + "$maria_path/maria_chk$suffix -se test2", + "$maria_path/maria_pack$suffix --force -s test1", + "$maria_path/maria_chk$suffix -s --unpack --parallel-recover test2", + "$maria_path/maria_chk$suffix -se test2" + ); + + return &count_tests(\@t) if ($count); + &run_test_bunch(\@t, $verbose, 0); return 0; } @@ -286,7 +327,7 @@ sub run_tests_on_warnings_and_errors my ($suffix, $silent, $verbose, $count)= @_; my ($com); - return 9 if ($count); # Number of tests in this function, e.g. calls to ok() + return 9 if ($count); # Number of tests in this function, e.g. calls to ok() ok("$maria_path/ma_test2$suffix $silent -L -K -W -P -S -R1 -m500", $verbose, 0); @@ -305,7 +346,7 @@ sub run_tests_on_warnings_and_errors ok("cat ma_test2_message.txt", $verbose, 0); ok("grep \"warning: Datafile is almost full\" ma_test2_message.txt>/dev/null", $verbose, 0); - unlink <rm -f ma_test2_message.txt>; + unlink <ma_test2_message.txt>; ok("$maria_path/maria_chk$suffix -ssm test2", $verbose, 0); return 0; @@ -331,64 +372,40 @@ sub run_ma_test_recovery sub run_tests_on_clrs { my ($verbose, $count)= @_; - my ($i, $nr_tests); - - my @t1= ("$maria_path/ma_test2 -s -L -K -W -P -M -T -c -b -t2 -A1", - "cp maria_log_control tmp", - "$maria_path/maria_read_log -a -s", - "$maria_path/maria_chk -s -e test2", - "cp tmp/maria_log_control .", - "rm test2.MA?", - "$maria_path/maria_read_log -a -s", - "$maria_path/maria_chk -s -e test2", - "rm test2.MA?" - ); - my @t2= ("$maria_path/ma_test2 -s -L -K -W -P -M -T -c -b -t2 -A1", - "$maria_path/maria_read_log -a -s", - "$maria_path/maria_chk -s -e test2", - "rm test2.MA?", - "$maria_path/maria_read_log -a -s", - "$maria_path/maria_chk -e -s test2", - "rm test2.MA?" - ); - - my @t3= ("$maria_path/ma_test2 -s -L -K -W -P -M -T -c -b32768 -t4 -A1", - "$maria_path/maria_read_log -a -s", - "$maria_path/maria_chk -es test2", - "$maria_path/maria_read_log -a -s", - "$maria_path/maria_chk -es test2", - "rm test2.MA?", - "$maria_path/maria_read_log -a -s", - "$maria_path/maria_chk -es test2", - "rm test2.MA?" - ); - - if ($count) - { - $nr_tests= 0; - for ($i= 0; defined($t1[$i]); $i++) { $nr_tests++; } - for ($i= 0; defined($t2[$i]); $i++) { $nr_tests++; } - for ($i= 0; defined($t3[$i]); $i++) { $nr_tests++; } - return $nr_tests; - } - - unlink <maria_log.* maria_log_control>; - for ($i= 0; defined($t1[$i]); $i++) - { - ok($t1[$i], $verbose, $i + 1); - } - - unlink <maria_log.* maria_log_control>; - for ($i= 0; defined($t2[$i]); $i++) - { - ok($t2[$i], $verbose, $i + 1); - } - - unlink <maria_log.* maria_log_control>; - for ($i= 0; defined($t3[$i]); $i++) - { - ok($t3[$i], $verbose, $i + 1); - } + my ($i); + + my @t= ($NEW_TEST, + "$maria_path/ma_test2 -s -L -K -W -P -M -T -c -b -t2 -A1", + "cp maria_log_control tmp", + "$maria_path/maria_read_log -a -s", + "$maria_path/maria_chk -s -e test2", + "cp tmp/maria_log_control .", + "rm test2.MA?", + "$maria_path/maria_read_log -a -s", + "$maria_path/maria_chk -s -e test2", + "rm test2.MA?", + $NEW_TEST, + "$maria_path/ma_test2 -s -L -K -W -P -M -T -c -b -t2 -A1", + "$maria_path/maria_read_log -a -s", + "$maria_path/maria_chk -s -e test2", + "rm test2.MA?", + "$maria_path/maria_read_log -a -s", + "$maria_path/maria_chk -e -s test2", + "rm test2.MA?", + $NEW_TEST, + "$maria_path/ma_test2 -s -L -K -W -P -M -T -c -b32768 -t4 -A1", + "$maria_path/maria_read_log -a -s", + "$maria_path/maria_chk -es test2", + "$maria_path/maria_read_log -a -s", + "$maria_path/maria_chk -es test2", + "rm test2.MA?", + "$maria_path/maria_read_log -a -s", + "$maria_path/maria_chk -es test2", + "rm test2.MA?" + ); + + return &count_tests(\@t) if ($count); + &run_test_bunch(\@t, $verbose, 1); return 0; } @@ -412,27 +429,44 @@ sub run_tests_on_clrs sub ok { my ($com, $verbose, $iteration, $expected_error)= @_; - my ($msg, $output, $err); + my ($msg, $output, $err, $len); + $msg= ""; $expected_error= 0 if (!defined($expected_error)); if ($verbose) { - print "Running: '$com'\n"; + print "$com "; } $output= `$com 2>&1`; - $err= $? >> 8; + $len= length($com); if ($verbose) { - print "$output\n"; + print " " x (65 - $len); + print " "; } + $err= $? >> 8; if ($err == $expected_error) { - print "ok\n"; + print "[ " if ($verbose); + print "ok"; + print " ]" if ($verbose); + print "\n"; return 1; } - print "not ok\n"; - $msg= "\nFailed test '$com' "; + print "[ " if ($verbose); + print "not ok"; + print " ]" if ($verbose); + print "\n"; + if ($verbose && length($output)) + { + print "$output\n"; + } + if (!$verbose) + { + $msg= "\n"; # Get a nicer output in perl unit test mode + } + $msg.= "Failed test '$com' "; if ($iteration) { $msg.= "(loop iteration $iteration.) "; @@ -445,6 +479,81 @@ sub ok $msg.= "Was expecting errcode: $expected_error\n"; } warn $msg; + $runtime_error= 1; return 0; } + +#### +#### Count tests +#### Arguments: $t: an array of the tests +#### + +sub count_tests +{ + my ($t)= @_; + my ($i, $nr_tests); + + $nr_tests= 0; + for ($i= 0; defined(@$t[$i]); $i++) { $nr_tests++ if (@$t[$i]); } + return $nr_tests; +} + +#### +#### Run a bunch of tests +#### Arguments: $t: an array of the tests +#### $verbose: to be passed to ok() +#### $clear: clear log files if set +#### + +sub run_test_bunch +{ + my ($t, $verbose, $clear)= @_; + my ($i); + + for ($i= 0; defined(@$t[$i]); $i++) + { + if ($clear && @$t[$i] eq $NEW_TEST) + { + unlink <maria_log.* maria_log_control>; + } + if (@$t[$i] ne $NEW_TEST) + { + ok(@$t[$i], $verbose, $i + 1); + } + } +} + +#### +#### usage +#### + +sub usage +{ + print <<EOF; +$my_progname version $VER + +Description: + +Run various Maria related tests. Typically used via make test as a unittest. +Please set environment variable maria_path before executing, if you +are not starting the program where ma_test1, ma_test2, ma_test3, +ma_test_recovery etc. files are. + +Options +--help Show this help and exit. +--version Show version number and exit. +--verbose Be more verbose. Will print each unittest on a line + and result after. This mode cannot be used with unit.pl + when running in normal unit test mode. +--maria-path=... Path to maria test files. You can set this as an + environment variable 'maria_path' also. + (maria_path: '$maria_path') +--valgrind=... Options for valgrind. + ('$opt_valgrind') +--suffix=... Suffix for test files (ma_test1, ma_test2 etc.), + if they have one ('$opt_suffix') +--silent=... Silent option passed to ma_test* tests ('$opt_silent') +EOF + exit(0); +} diff --git a/unittest/Makefile.am b/unittest/Makefile.am index 8684fd3fc7d..e9eb6737ce5 100644 --- a/unittest/Makefile.am +++ b/unittest/Makefile.am @@ -21,10 +21,10 @@ CLEANFILES = unit unittests = mytap mysys @mysql_se_unittest_dirs@ @mysql_pg_unittest_dirs@ test: - perl unit.pl run $(unittests) + maria_path=../storage/maria perl unit.pl run $(unittests) test-verbose: - HARNESS_VERBOSE=1 perl unit.pl run $(unittests) + HARNESS_VERBOSE=1 maria_path=../storage/maria perl unit.pl run $(unittests) # Don't update the files from bitkeeper %::SCCS/s.% |