From: Bjorn Munch Date: April 7 2011 8:39am Subject: bzr commit into mysql-trunk-mtr branch (bjorn.munch:3060) List-Archive: http://lists.mysql.com/commits/134897 Message-Id: <201104070839.p378diI6027908@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #At file:///home/bm136801/my/mtr-tr/ based on revid:bjorn.munch@stripped 3060 Bjorn Munch 2011-04-07 [merge] upmerge 11760361,12316050 modified: mysql-test/lib/mtr_misc.pl mysql-test/mysql-test-run.pl === modified file 'mysql-test/lib/mtr_misc.pl' --- a/mysql-test/lib/mtr_misc.pl 2011-01-18 11:09:49 +0000 +++ b/mysql-test/lib/mtr_misc.pl 2011-04-07 08:39:10 +0000 @@ -1,5 +1,5 @@ # -*- cperl -*- -# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public @@ -36,6 +36,7 @@ sub start_timer($); sub has_expired($); sub init_timers(); sub mark_time_used($); +sub mark_time_idle(); sub add_total_times($); sub print_times_used($$); sub print_total_times($); @@ -224,6 +225,7 @@ my %time_used= ( 'ch-warn' => 0, 'test' => 0, 'init' => 0, + 'admin' => 0, ); my %time_text= ( @@ -232,7 +234,8 @@ my %time_text= ( 'check' => "Check-testcase", 'ch-warn' => "Check for warnings", 'test' => "Test execution", - 'init' => "Initialization etc.", + 'init' => "Initialization/cleanup", + 'admin' => "Test administration", ); # Counts number of reports from workers @@ -255,6 +258,10 @@ sub mark_time_used($) { $last_timer_set= $curr_time; } +sub mark_time_idle() { + $last_timer_set= gettimeofday() if $opt_report_times; +} + sub add_total_times($) { my ($dummy, $num, @line)= split (" ", $_[0]); === modified file 'mysql-test/mysql-test-run.pl' --- a/mysql-test/mysql-test-run.pl 2011-03-23 11:37:04 +0000 +++ b/mysql-test/mysql-test-run.pl 2011-04-07 08:39:10 +0000 @@ -220,9 +220,12 @@ our %gprof_dirs; our $glob_debugger= 0; our $opt_gdb; our $opt_client_gdb; +our $opt_dbx; +our $opt_client_dbx; our $opt_ddd; our $opt_client_ddd; our $opt_manual_gdb; +our $opt_manual_dbx; our $opt_manual_ddd; our $opt_manual_debug; our $opt_debugger; @@ -547,7 +550,9 @@ sub run_test_server ($$$) { my $s= IO::Select->new(); $s->add($server); while (1) { + mark_time_used('admin'); my @ready = $s->can_read(1); # Wake up once every second + mark_time_idle(); foreach my $sock (@ready) { if ($sock == $server) { # New client connected @@ -889,7 +894,7 @@ sub run_worker ($) { if ( $opt_gprof ) { gprof_collect (find_mysqld($basedir), keys %gprof_dirs); } - mark_time_used('init'); + mark_time_used('admin'); print_times_used($server, $thread_num); exit($valgrind_reports); } @@ -1003,6 +1008,9 @@ sub command_line_setup { 'ddd' => \$opt_ddd, 'client-ddd' => \$opt_client_ddd, 'manual-ddd' => \$opt_manual_ddd, + 'dbx' => \$opt_dbx, + 'client-dbx' => \$opt_client_dbx, + 'manual-dbx' => \$opt_manual_dbx, 'debugger=s' => \$opt_debugger, 'client-debugger=s' => \$opt_client_debugger, 'strace-client:s' => \$opt_strace_client, @@ -1428,6 +1436,12 @@ sub command_line_setup { $opt_ddd= undef; } + if ($opt_dbx) { + mtr_warning("Silently converting --dbx to --client-dbx in embedded mode"); + $opt_client_dbx= $opt_dbx; + $opt_dbx= undef; + } + if ($opt_debugger) { mtr_warning("Silently converting --debugger to --client-debugger in embedded mode"); @@ -1436,7 +1450,7 @@ sub command_line_setup { } if ( $opt_gdb || $opt_ddd || $opt_manual_gdb || $opt_manual_ddd || - $opt_manual_debug || $opt_debugger ) + $opt_manual_debug || $opt_debugger || $opt_dbx || $opt_manual_dbx) { mtr_error("You need to use the client debug options for the", "embedded server. Ex: --client-gdb"); @@ -1464,6 +1478,7 @@ sub command_line_setup { # -------------------------------------------------------------------------- if ( $opt_gdb || $opt_client_gdb || $opt_ddd || $opt_client_ddd || $opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug || + $opt_dbx || $opt_client_dbx || $opt_manual_dbx || $opt_debugger || $opt_client_debugger ) { # Indicate that we are using debugger @@ -3764,7 +3779,7 @@ sub run_testcase ($) { do_before_run_mysqltest($tinfo); - mark_time_used('init'); + mark_time_used('admin'); if ( $opt_check_testcases and check_testcase($tinfo, "before") ){ # Failed to record state of server or server crashed @@ -4706,6 +4721,9 @@ sub mysqld_start ($$) { { ddd_arguments(\$args, \$exe, $mysqld->name()); } + if ( $opt_dbx || $opt_manual_dbx ) { + dbx_arguments(\$args, \$exe, $mysqld->name()); + } elsif ( $opt_debugger ) { debugger_arguments(\$args, \$exe, $mysqld->name()); @@ -5257,7 +5275,7 @@ sub start_mysqltest ($) { my $exe= $exe_mysqltest; my $args; - mark_time_used('init'); + mark_time_used('admin'); mtr_init_args(\$args); @@ -5404,6 +5422,9 @@ sub start_mysqltest ($) { { ddd_arguments(\$args, \$exe, "client"); } + if ( $opt_client_dbx ) { + dbx_arguments(\$args, \$exe, "client"); + } elsif ( $opt_client_debugger ) { debugger_arguments(\$args, \$exe, "client"); @@ -5438,23 +5459,11 @@ sub gdb_arguments { # Remove the old gdbinit file unlink($gdb_init_file); - if ( $type eq "client" ) - { - # write init file for client - mtr_tofile($gdb_init_file, - "set args $str\n" . - "break main\n"); - } - else - { - # write init file for mysqld - mtr_tofile($gdb_init_file, - "set args $str\n" . - "break mysql_parse\n" . - "commands 1\n" . - "disable 1\n" . - "end\n"); - } + # write init file for mysqld or client + mtr_tofile($gdb_init_file, + "set args $str\n" . + "break main\n" . + "run"); if ( $opt_manual_gdb ) { @@ -5501,24 +5510,12 @@ sub ddd_arguments { # Remove the old gdbinit file unlink($gdb_init_file); - if ( $type eq "client" ) - { - # write init file for client - mtr_tofile($gdb_init_file, - "set args $str\n" . - "break main\n"); - } - else - { - # write init file for mysqld - mtr_tofile($gdb_init_file, - "file ../sql/mysqld\n" . - "set args $str\n" . - "break mysql_parse\n" . - "commands 1\n" . - "disable 1\n" . - "end"); - } + # write init file for mysqld or client + mtr_tofile($gdb_init_file, + "file $$exe\n" . + "set args $str\n" . + "break main\n" . + "run"); if ( $opt_manual_ddd ) { @@ -5548,6 +5545,46 @@ sub ddd_arguments { # +# Modify the exe and args so that program is run in dbx in xterm +# +sub dbx_arguments { + my $args= shift; + my $exe= shift; + my $type= shift; + + # Put $args into a single string + my $str= join " ", @$$args; + + if ( $opt_manual_dbx ) { + print "\nTo start dbx for $type, type in another window:\n"; + print "cd $glob_mysql_test_dir; dbx -c \"stop in main; " . + "run $str\" $$exe\n"; + + # Indicate the exe should not be started + $$exe= undef; + return; + } + + $$args= []; + mtr_add_arg($$args, "-title"); + mtr_add_arg($$args, "$type"); + mtr_add_arg($$args, "-e"); + + if ( $exe_libtool ) { + mtr_add_arg($$args, $exe_libtool); + mtr_add_arg($$args, "--mode=execute"); + } + + mtr_add_arg($$args, "dbx"); + mtr_add_arg($$args, "-c"); + mtr_add_arg($$args, "stop in main; run $str"); + mtr_add_arg($$args, "$$exe"); + + $$exe= "xterm"; +} + + +# # Modify the exe and args so that program is run in the selected debugger # sub debugger_arguments { @@ -5578,18 +5615,6 @@ sub debugger_arguments { $$exe= $debugger; } - elsif ( $debugger eq "dbx" ) - { - # xterm -e dbx -r exe arg1 .. argn - - unshift(@$$args, $$exe); - unshift(@$$args, "-r"); - unshift(@$$args, $debugger); - unshift(@$$args, "-e"); - - $$exe= "xterm"; - - } else { mtr_error("Unknown argument \"$debugger\" passed to --debugger"); @@ -5891,6 +5916,7 @@ Options for debugging the product client-ddd Start mysqltest client in ddd client-debugger=NAME Start mysqltest in the selected debugger client-gdb Start mysqltest client in gdb + client-dbx Start mysqltest client in dbx ddd Start mysqld in ddd debug Dump trace output for all servers and client programs debug-common Same as debug, but sets 'd' debug flags to @@ -5899,12 +5925,15 @@ Options for debugging the product tracing debugger=NAME Start mysqld in the selected debugger gdb Start the mysqld(s) in gdb + dbx Start the mysqld(s) in dbx manual-debug Let user manually start mysqld in debugger, before running test(s) manual-gdb Let user manually start mysqld in gdb, before running test(s) manual-ddd Let user manually start mysqld in ddd, before running test(s) + manual-dbx Let user manually start mysqld in dbx, before running + test(s) strace-client[=path] Create strace output for mysqltest client, optionally specifying name and path to the trace program to use. Example: $0 --strace-client=ktrace No bundle (reason: revision is a merge).