MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Jim Winstead Date:April 21 2006 4:48pm
Subject:bk commit into 5.0 tree (jimw:1.2087) BUG#19083
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of jimw. When jimw does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2087 06/04/21 09:48:49 jimw@stripped +2 -0
  Bug #19083 ./mysql-test-run.pl starts NDB when it is not needed
  
    Now NDB is only initialized and started when the tests that are
    being run will make use of it. The same thing is also done for the
    slave databases and the instance manager.
  
    After review from Magnus: Only take a snapshot of the data directories
    that are in use.

  mysql-test/ndb/ndbcluster.sh
    1.44 06/04/21 09:48:45 jimw@stripped +2 -2
    Fix text message that has always annoyed me

  mysql-test/mysql-test-run.pl
    1.88 06/04/21 09:48:45 jimw@stripped +69 -38
    Only initialize (and start) NDB, the instance manager, and the slaves
    when we have tests that require them. Also, only snapshot the data
    directories that we are going to use.

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	jimw
# Host:	rama.(none)
# Root:	/home/jimw/my/mysql-5.0-19083

--- 1.87/mysql-test/mysql-test-run.pl	2006-04-11 00:09:15 -07:00
+++ 1.88/mysql-test/mysql-test-run.pl	2006-04-21 09:48:45 -07:00
@@ -333,6 +333,7 @@
 sub main ();
 sub initial_setup ();
 sub command_line_setup ();
+sub snapshot_setup ();
 sub executable_setup ();
 sub environment_setup ();
 sub kill_running_server ();
@@ -343,7 +344,7 @@
 sub ndbcluster_start ($);
 sub ndbcluster_stop ();
 sub run_benchmarks ($);
-sub run_tests ();
+sub initialize_servers ();
 sub mysql_install_db ();
 sub install_db ($$);
 sub run_testcase ($);
@@ -374,7 +375,7 @@
   command_line_setup();
   executable_setup();
 
-  check_ndbcluster_support();
+  check_ndbcluster_support(); # We check whether to actually use it later
   check_ssl_support();
 
   environment_setup();
@@ -389,24 +390,7 @@
   {
     gprof_prepare();
   }
-
-  if ( ! $glob_use_running_server )
-  {
-    if ( $opt_start_dirty )
-    {
-      kill_running_server();
-    }
-    else
-    {
-      kill_and_cleanup();
-      mysql_install_db();
-      if ( $opt_force )
-      {
-	save_installed_db();
-      }
-    }
-  }
-
+  
   if ( $opt_start_dirty )
   {
     if ( ndbcluster_start($opt_with_ndbcluster) )
@@ -424,15 +408,35 @@
   }
   elsif ( $opt_bench )
   {
+    initialize_servers();
     run_benchmarks(shift);      # Shift what? Extra arguments?!
   }
   elsif ( $opt_stress )
   {
+    initialize_servers();
     run_stress_test()
   }
   else
   {
-    run_tests();
+    # Figure out which tests we are going to run
+    my $tests= collect_test_cases($opt_suite);
+
+    # Turn off NDB and other similar options if no tests use it
+    my ($need_ndbcluster,$need_im,$need_slave);
+    foreach my $test (@$tests)
+    {
+      $need_ndbcluster||= $test->{ndb_test};
+      $need_im||= $test->{component_id} eq 'im';
+      $need_slave||= $test->{slave_num};
+    }
+    $opt_with_ndbcluster= 0 unless $need_ndbcluster;
+    $opt_skip_im= 1 unless $need_im;
+    $opt_skip_rpl= 1 unless $need_slave;
+
+    snapshot_setup();
+    initialize_servers();
+
+    run_suite($opt_suite, $tests);
   }
 
   mtr_exit(0);
@@ -983,20 +987,29 @@
   $path_mysqltest_log=  "$opt_vardir/log/mysqltest.log";
 
   $path_snapshot= "$opt_tmpdir/snapshot_$opt_master_myport/";
+}
+
+sub snapshot_setup () {
 
   # Make a list of all data_dirs
   @data_dir_lst = (
     $master->[0]->{'path_myddir'},
-    $master->[1]->{'path_myddir'},
-    $slave->[0]->{'path_myddir'},
-    $slave->[1]->{'path_myddir'},
-    $slave->[2]->{'path_myddir'});
+    $master->[1]->{'path_myddir'});
 
-  foreach my $instance (@{$instance_manager->{'instances'}})
+  unless ($opt_skip_rpl)
   {
-    push(@data_dir_lst, $instance->{'path_datadir'});
+    push @data_dir_lst, ($slave->[0]->{'path_myddir'},
+                         $slave->[1]->{'path_myddir'},
+                         $slave->[2]->{'path_myddir'});
   }
 
+  unless ($opt_skip_im)
+  {
+    foreach my $instance (@{$instance_manager->{'instances'}})
+    {
+      push(@data_dir_lst, $instance->{'path_datadir'});
+    }
+  }
 }
 
 
@@ -1388,7 +1401,7 @@
 
   if ($opt_with_ndbcluster)
   {
-    mtr_report("Using ndbcluster");
+    mtr_report("Using ndbcluster if necessary");
     return;
   }
 
@@ -1404,7 +1417,7 @@
     $opt_with_ndbcluster= 0;
     return;
   }
-  mtr_report("Using ndbcluster, mysqld supports it");
+  mtr_report("Using ndbcluster if necessary, mysqld supports it");
   $opt_with_ndbcluster= 1;
   return;
 }
@@ -1561,12 +1574,9 @@
 
 # FIXME how to specify several suites to run? Comma separated list?
 
-sub run_tests () {
-  run_suite($opt_suite);
-}
 
 sub run_suite () {
-  my $suite= shift;
+  my ($suite, $tests)= @_;
 
   mtr_print_thick_line();
 
@@ -1574,8 +1584,6 @@
 
   mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout);
 
-  my $tests= collect_test_cases($suite);
-
   mtr_report("Starting Tests in the '$suite' suite");
 
   mtr_print_header();
@@ -1617,14 +1625,37 @@
 #
 ##############################################################################
 
+sub initialize_servers () {
+  if ( ! $glob_use_running_server )
+  {
+    if ( $opt_start_dirty )
+    {
+      kill_running_server();
+    }
+    else
+    {
+      kill_and_cleanup();
+      mysql_install_db();
+      if ( $opt_force )
+      {
+	save_installed_db();
+      }
+    }
+  }
+}
+
 sub mysql_install_db () {
 
   # FIXME not exactly true I think, needs improvements
   install_db('master', $master->[0]->{'path_myddir'});
   install_db('master', $master->[1]->{'path_myddir'});
-  install_db('slave',  $slave->[0]->{'path_myddir'});
-  install_db('slave',  $slave->[1]->{'path_myddir'});
-  install_db('slave',  $slave->[2]->{'path_myddir'});
+
+  if ( ! $opt_skip_rpl )
+  {
+    install_db('slave',  $slave->[0]->{'path_myddir'});
+    install_db('slave',  $slave->[1]->{'path_myddir'});
+    install_db('slave',  $slave->[2]->{'path_myddir'});
+  }
 
   if ( ! $opt_skip_im )
   {

--- 1.43/mysql-test/ndb/ndbcluster.sh	2006-01-21 06:39:32 -08:00
+++ 1.44/mysql-test/ndb/ndbcluster.sh	2006-04-21 09:48:45 -07:00
@@ -232,8 +232,8 @@
 
 # test if Ndb Cluster starts properly
 
-echo "Waiting for started..."
-if ( $exec_waiter ) | grep "NDBT_ProgramExit: 0 - OK"; then :; else
+echo "Waiting for NDB data nodes to start..."
+if ( $exec_waiter ) | grep -q "NDBT_ProgramExit: 0 - OK"; then :; else
   echo "Ndbcluster startup failed"
   stop_default_ndbcluster
   exit 1
Thread
bk commit into 5.0 tree (jimw:1.2087) BUG#19083Jim Winstead21 Apr