~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/test-run.pl

  • Committer: Brian Aker
  • Date: 2010-06-28 16:17:36 UTC
  • mfrom: (1637.4.1 drizzle)
  • Revision ID: brian@gaz-20100628161736-eormhb2mnd551i2h
MergeĀ unused

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
use utf8;
5
5
 
6
6
#
7
 
# Copyright (C) 2008
8
 
9
 
# This program is free software; you can redistribute it and/or modify
10
 
# it under the terms of the GNU General Public License as published by
11
 
# the Free Software Foundation; version 2 of the License.
12
 
13
 
# This program is distributed in the hope that it will be useful,
14
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 
# GNU General Public License for more details.
17
 
18
 
# You should have received a copy of the GNU General Public License
19
 
# along with this program; if not, write to the Free Software
20
 
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */
21
 
#
22
 
#
23
7
##############################################################################
24
8
#
25
9
#  drizzle-test-run.pl
38
22
#
39
23
#   - To make this Perl script easy to alter even for those that not
40
24
#     code Perl that often, keeep the coding style as close as possible to
41
 
#     the C/C++ drizzle coding standard.
 
25
#     the C/C++ MySQL coding standard.
42
26
#
43
27
#   - All lists of arguments to send to commands are Perl lists/arrays,
44
28
#     not strings we append args to. Within reason, most string
45
29
#     concatenation for arguments should be avoided.
46
30
#
47
31
#   - Functions defined in the main program are not to be prefixed,
48
 
#     functions in "library files" are to be prefixed with "dtr_" (for
49
 
#     Drizzle-Test-Run). There are some exceptions, code that fits best in
 
32
#     functions in "library files" are to be prefixed with "mtr_" (for
 
33
#     Mysql-Test-Run). There are some exceptions, code that fits best in
50
34
#     the main program, but are put into separate files to avoid
51
35
#     clutter, may be without prefix.
52
36
#
68
52
# A nice way to trace the execution of this script while debugging
69
53
# is to use the Devel::Trace package found at
70
54
# "http://www.plover.com/~mjd/perl/Trace/" and run this script like
71
 
# "perl -d:Trace test-run.pl"
 
55
# "perl -d:Trace drizzle-test-run.pl"
72
56
#
73
57
 
74
58
 
93
77
select(STDOUT);
94
78
$| = 1; # Automatically flush STDOUT
95
79
 
96
 
require "dtr_cases.pl";
97
 
require "dtr_process.pl";
98
 
require "dtr_timer.pl";
99
 
require "dtr_io.pl";
100
 
require "dtr_gcov.pl";
101
 
require "dtr_gprof.pl";
102
 
require "dtr_report.pl";
103
 
require "dtr_match.pl";
104
 
require "dtr_misc.pl";
105
 
require "dtr_stress.pl";
106
 
require "dtr_unique.pl";
 
80
require "mtr_cases.pl";
 
81
require "mtr_process.pl";
 
82
require "mtr_timer.pl";
 
83
require "mtr_io.pl";
 
84
require "mtr_gcov.pl";
 
85
require "mtr_gprof.pl";
 
86
require "mtr_report.pl";
 
87
require "mtr_match.pl";
 
88
require "mtr_misc.pl";
 
89
require "mtr_stress.pl";
 
90
require "mtr_unique.pl";
107
91
 
108
92
$Devel::Trace::TRACE= 1;
109
93
 
116
100
# Misc global variables
117
101
our $drizzle_version_id;
118
102
our $glob_suite_path=             undef;
119
 
our $glob_drizzle_test_dir=         undef;
120
 
our $glob_drizzle_bench_dir=        undef;
 
103
our $glob_mysql_test_dir=         undef;
 
104
our $glob_mysql_bench_dir=        undef;
121
105
our $glob_scriptname=             undef;
122
106
our $glob_timers=                 undef;
123
107
our @glob_test_mode;
131
115
our $path_snapshot;
132
116
our $path_drizzletest_log;
133
117
our $path_current_test_log;
 
118
our $path_my_basedir;
134
119
 
135
120
our $opt_vardir;                 # A path but set directly on cmd line
136
121
our $opt_top_srcdir;
148
133
 
149
134
our $opt_usage;
150
135
our $opt_suites;
151
 
our $opt_suites_default= "main"; # Default suites to run
 
136
our $opt_suites_default= "main,jp"; # Default suites to run
152
137
our $opt_script_debug= 0;  # Script debugging, enable with --script-debug
153
138
our $opt_verbose= 0;  # Verbose output, enable with --verbose
154
139
 
155
140
our $opt_repeat_test= 1;
156
141
 
157
 
our $exe_master_drizzled;
 
142
our $exe_master_mysqld;
158
143
our $exe_drizzle;
159
 
our $exe_drizzleadmin;
160
144
our $exe_drizzle_client_test;
161
145
our $exe_bug25714;
162
146
our $exe_drizzled;
165
149
our $exe_drizzleimport;
166
150
our $exe_drizzle_fix_system_tables;
167
151
our $exe_drizzletest;
168
 
our $exe_slave_drizzled;
 
152
our $exe_slave_mysqld;
 
153
our $exe_my_print_defaults;
169
154
our $exe_perror;
170
155
our $lib_udf_example;
171
156
our $lib_example_plugin;
178
163
our @opt_combinations;
179
164
our $opt_skip_combination;
180
165
 
181
 
our @opt_extra_drizzled_opt;
 
166
our @opt_extra_mysqld_opt;
182
167
 
183
168
our $opt_compress;
184
169
 
194
179
our $opt_force;
195
180
our $opt_reorder= 0;
196
181
our $opt_enable_disabled;
197
 
our $opt_mem= $ENV{'DTR_MEM'};
 
182
our $opt_mem= $ENV{'MTR_MEM'};
198
183
 
199
184
our $opt_gcov;
200
185
our $opt_gcov_err;
213
198
our $opt_manual_ddd;
214
199
our $opt_manual_debug;
215
200
# Magic number -69.4 results in traditional test ports starting from 9306.
216
 
our $opt_dtr_build_thread=-69.4;
 
201
our $opt_mtr_build_thread=-69.4;
217
202
our $opt_debugger;
218
203
our $opt_client_debugger;
219
204
 
229
214
our $opt_master_myport;
230
215
our $opt_slave_myport;
231
216
our $opt_memc_myport;
232
 
our $opt_pbms_myport;
233
 
our $opt_rabbitmq_myport;
234
217
our $opt_record;
235
218
my $opt_report_features;
236
219
our $opt_check_testcases;
260
243
our $opt_user;
261
244
 
262
245
my $opt_valgrind= 0;
263
 
my $opt_valgrind_drizzled= 0;
 
246
my $opt_valgrind_mysqld= 0;
264
247
my $opt_valgrind_drizzletest= 0;
265
 
my $opt_valgrind_drizzleslap= 0;
266
248
my @default_valgrind_args= ("--show-reachable=yes --malloc-fill=0xDEADBEEF --free-fill=0xDEADBEEF");
267
249
my @valgrind_args;
268
250
my $opt_valgrind_path;
288
270
our $used_default_engine;
289
271
our $debug_compiled_binaries;
290
272
 
291
 
our %drizzled_variables;
 
273
our %mysqld_variables;
292
274
 
293
275
my $source_dist= 0;
294
276
 
305
287
sub main ();
306
288
sub initial_setup ();
307
289
sub command_line_setup ();
308
 
sub set_dtr_build_thread_ports($);
 
290
sub set_mtr_build_thread_ports($);
309
291
sub datadir_list_setup ();
310
292
sub executable_setup ();
311
293
sub environment_setup ();
313
295
sub remove_stale_vardir ();
314
296
sub setup_vardir ();
315
297
sub check_running_as_root();
316
 
sub drizzled_wait_started($);
 
298
sub mysqld_wait_started($);
317
299
sub run_benchmarks ($);
318
300
sub initialize_servers ();
319
 
sub drizzle_install_db ();
 
301
sub mysql_install_db ();
320
302
sub copy_install_db ($$);
321
303
sub run_testcase ($);
322
304
sub run_testcase_stop_servers ($$$);
325
307
sub report_failure_and_restart ($);
326
308
sub do_before_start_master ($);
327
309
sub do_before_start_slave ($);
328
 
sub drizzled_start ($$$);
329
 
sub drizzled_arguments ($$$$);
 
310
sub mysqld_start ($$$);
 
311
sub mysqld_arguments ($$$$);
330
312
sub stop_all_servers ();
331
313
sub run_drizzletest ($);
332
314
sub collapse_path ($);
345
327
 
346
328
  command_line_setup();
347
329
 
348
 
  check_debug_support(\%drizzled_variables);
 
330
  check_debug_support(\%mysqld_variables);
349
331
 
350
332
  executable_setup();
351
333
 
374
356
  }
375
357
  else
376
358
  {
377
 
 
 
359
    # Figure out which tests we are going to run
378
360
    if (!$opt_suites)
379
361
    {
380
 
 
381
 
        $opt_suites= $opt_suites_default;
382
 
 
383
 
        my %extra_suites= ();
384
 
 
385
 
        foreach my $dir ( reverse splitdir($glob_basedir) )
386
 
        {
387
 
            my $extra_suite= $extra_suites{$dir};
388
 
            if (defined $extra_suite){
389
 
                dtr_report("Found extra suite: $extra_suite");
390
 
                $opt_suites= "$extra_suite,$opt_suites";
391
 
                last;
392
 
            }
393
 
        }
 
362
      $opt_suites= $opt_suites_default;
 
363
 
 
364
      # Check for any extra suites to enable based on the path name
 
365
      my %extra_suites= ();
 
366
 
 
367
      foreach my $dir ( reverse splitdir($glob_basedir) )
 
368
      {
 
369
        my $extra_suite= $extra_suites{$dir};
 
370
        if (defined $extra_suite){
 
371
          mtr_report("Found extra suite: $extra_suite");
 
372
          $opt_suites= "$extra_suite,$opt_suites";
 
373
          last;
 
374
        }
 
375
      }
394
376
    }
395
377
 
396
378
    my $tests= collect_test_cases($opt_suites);
405
387
        # Count max number of slaves used by a test case
406
388
        if ( $test->{slave_num} > $max_slave_num) {
407
389
          $max_slave_num= $test->{slave_num};
408
 
          dtr_error("Too many slaves") if $max_slave_num > 3;
 
390
          mtr_error("Too many slaves") if $max_slave_num > 3;
409
391
        }
410
392
 
411
393
        # Count max number of masters used by a test case
412
394
        if ( $test->{master_num} > $max_master_num) {
413
395
          $max_master_num= $test->{master_num};
414
 
          dtr_error("Too many masters") if $max_master_num > 2;
415
 
          dtr_error("Too few masters") if $max_master_num < 1;
 
396
          mtr_error("Too many masters") if $max_master_num > 2;
 
397
          mtr_error("Too few masters") if $max_master_num < 1;
416
398
        }
417
399
      }
418
400
      $use_innodb||= $test->{'innodb_test'};
427
409
    run_tests($tests);
428
410
  }
429
411
 
430
 
  dtr_exit(0);
 
412
  mtr_exit(0);
431
413
}
432
414
 
433
415
##############################################################################
438
420
 
439
421
#
440
422
# When an option is no longer used by this program, it must be explicitly
441
 
# ignored or else it will be passed through to drizzled.  GetOptions will call
 
423
# ignored or else it will be passed through to mysqld.  GetOptions will call
442
424
# this subroutine once for each such option on the command line.  See
443
425
# Getopt::Long documentation.
444
426
#
456
438
  my $opt_comment;
457
439
 
458
440
  # If so requested, we try to avail ourselves of a unique build thread number.
459
 
  if ( $ENV{'DTR_BUILD_THREAD'} ) {
460
 
    if ( lc($ENV{'DTR_BUILD_THREAD'}) eq 'auto' ) {
 
441
  if ( $ENV{'MTR_BUILD_THREAD'} ) {
 
442
    if ( lc($ENV{'MTR_BUILD_THREAD'}) eq 'auto' ) {
461
443
      print "Requesting build thread... ";
462
 
      $ENV{'DTR_BUILD_THREAD'} = dtr_require_unique_id_and_wait("/tmp/drizzle-test-ports", 200, 299);
463
 
      print "got ".$ENV{'DTR_BUILD_THREAD'}."\n";
 
444
      $ENV{'MTR_BUILD_THREAD'} = mtr_require_unique_id_and_wait("/tmp/mysql-test-ports", 200, 299);
 
445
      print "got ".$ENV{'MTR_BUILD_THREAD'}."\n";
464
446
    }
465
447
  }
466
448
 
467
 
  if ( $ENV{'DTR_BUILD_THREAD'} )
 
449
  if ( $ENV{'MTR_BUILD_THREAD'} )
468
450
  {
469
 
    set_dtr_build_thread_ports($ENV{'DTR_BUILD_THREAD'});
 
451
    set_mtr_build_thread_ports($ENV{'MTR_BUILD_THREAD'});
470
452
  }
471
453
 
472
454
  # This is needed for test log evaluation in "gen-build-status-page"
478
460
  # Note: Keep list, and the order, in sync with usage at end of this file
479
461
 
480
462
  # Options that are no longer used must still be processed, because all
481
 
  # unprocessed options are passed directly to drizzled.  The user will be
 
463
  # unprocessed options are passed directly to mysqld.  The user will be
482
464
  # warned that the option is being ignored.
483
465
  #
484
466
  # Put the complete option string here.  For example, to remove the --suite
508
490
             'master_port=i'            => \$opt_master_myport,
509
491
             'slave_port=i'             => \$opt_slave_myport,
510
492
             'memc_port=i'              => \$opt_memc_myport,
511
 
             'pbms_port=i'              => \$opt_pbms_myport,
512
 
             'rabbitmq_port=i'              => \$opt_rabbitmq_myport,
513
 
             'dtr-build-thread=i'       => \$opt_dtr_build_thread,
 
493
             'mtr-build-thread=i'       => \$opt_mtr_build_thread,
514
494
 
515
495
             # Test case authoring
516
496
             'record'                   => \$opt_record,
517
497
             'check-testcases'          => \$opt_check_testcases,
518
498
             'mark-progress'            => \$opt_mark_progress,
519
499
 
520
 
             # Extra options used when starting drizzled
521
 
             'drizzled=s'                 => \@opt_extra_drizzled_opt,
 
500
             # Extra options used when starting mysqld
 
501
             'mysqld=s'                 => \@opt_extra_mysqld_opt,
522
502
             'engine=s'                 => \$opt_engine,
523
503
 
524
504
             # Run test on running server
541
521
             'debugger=s'               => \$opt_debugger,
542
522
             'client-debugger=s'        => \$opt_client_debugger,
543
523
             'strace-client'            => \$opt_strace_client,
544
 
             'master-binary=s'          => \$exe_master_drizzled,
545
 
             'slave-binary=s'           => \$exe_slave_drizzled,
 
524
             'master-binary=s'          => \$exe_master_mysqld,
 
525
             'slave-binary=s'           => \$exe_slave_mysqld,
546
526
             'max-save-core=i'          => \$opt_max_save_core,
547
527
 
548
528
             # Coverage, profiling etc
550
530
             'gprof'                    => \$opt_gprof,
551
531
             'valgrind|valgrind-all'    => \$opt_valgrind,
552
532
             'valgrind-drizzletest'       => \$opt_valgrind_drizzletest,
553
 
             'valgrind-drizzleslap'       => \$opt_valgrind_drizzleslap,
554
 
             'valgrind-drizzled'          => \$opt_valgrind_drizzled,
 
533
             'valgrind-mysqld'          => \$opt_valgrind_mysqld,
555
534
             'valgrind-options=s'       => sub {
556
535
               my ($opt, $value)= @_;
557
536
               # Deprecated option unless it's what we know pushbuild uses
586
565
             'top-srcdir=s'             => \$opt_top_srcdir,
587
566
             'suitepath=s'              => \$opt_suitepath,
588
567
             'testdir=s'                => \$opt_testdir,
589
 
             'benchdir=s'               => \$glob_drizzle_bench_dir,
 
568
             'benchdir=s'               => \$glob_mysql_bench_dir,
590
569
             'mem'                      => \$opt_mem,
591
570
 
592
571
             # Misc
615
594
             'help|h'                   => \$opt_usage,
616
595
            ) or usage("Can't read options");
617
596
 
 
597
  usage("") if $opt_usage;
 
598
 
618
599
  usage("you cannot specify --gdb and --dbx both!") if 
619
600
        ($opt_gdb && $opt_dbx) ||
620
601
        ($opt_manual_gdb && $opt_manual_dbx);
621
602
 
622
603
  $glob_scriptname=  basename($0);
623
604
 
624
 
  if ($opt_dtr_build_thread != 0)
 
605
  if ($opt_mtr_build_thread != 0)
625
606
  {
626
 
    set_dtr_build_thread_ports($opt_dtr_build_thread)
 
607
    set_mtr_build_thread_ports($opt_mtr_build_thread)
627
608
  }
628
 
  elsif ($ENV{'DTR_BUILD_THREAD'})
 
609
  elsif ($ENV{'MTR_BUILD_THREAD'})
629
610
  {
630
 
    $opt_dtr_build_thread= $ENV{'DTR_BUILD_THREAD'};
 
611
    $opt_mtr_build_thread= $ENV{'MTR_BUILD_THREAD'};
631
612
  }
632
613
 
633
614
  if ( -d "../drizzled" )
638
619
  # Find the absolute path to the test directory
639
620
  if ( ! $opt_testdir )
640
621
  {
641
 
    $glob_drizzle_test_dir=  cwd();
 
622
    $glob_mysql_test_dir=  cwd();
642
623
  } 
643
624
  else
644
625
  {
645
 
    $glob_drizzle_test_dir= $opt_testdir;
 
626
    $glob_mysql_test_dir= $opt_testdir;
646
627
  }
647
 
  $default_vardir= "$glob_drizzle_test_dir/var";
648
 
  $default_top_srcdir= "$glob_drizzle_test_dir/..";
649
 
  $default_top_builddir= "$glob_drizzle_test_dir/..";
 
628
  $default_vardir= "$glob_mysql_test_dir/var";
 
629
  $default_top_srcdir= "$glob_mysql_test_dir/..";
 
630
  $default_top_builddir= "$glob_mysql_test_dir/..";
650
631
 
651
632
  if ( ! $opt_suitepath )
652
633
  {
653
 
    $glob_suite_path= "$glob_drizzle_test_dir/../plugin";
 
634
    $glob_suite_path= "$glob_mysql_test_dir/../plugin";
654
635
  }
655
636
  else
656
637
  {
657
638
    $glob_suite_path= $opt_suitepath;
658
639
  }
659
640
  # In most cases, the base directory we find everything relative to,
660
 
  # is the parent directory of the "drizzle-test" directory. For source
 
641
  # is the parent directory of the "mysql-test" directory. For source
661
642
  # distributions, TAR binary distributions and some other packages.
662
 
  $glob_basedir= dirname($glob_drizzle_test_dir);
663
 
 
664
 
  # Figure out which tests we are going to run
665
 
  my $suitedir= "$glob_drizzle_test_dir/suite";
666
 
  if ( -d $suitedir )
667
 
  {
668
 
      opendir(SUITE_DIR, $suitedir)
669
 
          or dtr_error("can't open directory \"$suitedir\": $!");
670
 
 
671
 
      while ( my $elem= readdir(SUITE_DIR) )
672
 
      {
673
 
          next if $elem eq ".";
674
 
          next if $elem eq "..";
675
 
          next if $elem eq "big"; # Eats up too much disk
676
 
          next if $elem eq "large_tests"; # Eats up too much disk
677
 
          next if $elem eq "stress"; # Currently fails
678
 
          next if $elem eq "broken"; # Old broken test, mainly unsupported featurs
679
 
 
680
 
          my $local_dir= "$suitedir/$elem";
681
 
 
682
 
          next unless -d $local_dir;
683
 
          next unless -d "$local_dir/t"; # We want to make sure it has tests
684
 
          next unless -d "$local_dir/r"; # Ditto, results
685
 
 
686
 
          $opt_suites_default.= ",$elem";
687
 
      }
688
 
      closedir(SUITE_DIR);
689
 
  }
690
 
 
691
 
  usage("") if $opt_usage;
 
643
  $glob_basedir= dirname($glob_mysql_test_dir);
692
644
 
693
645
  # In the RPM case, binaries and libraries are installed in the
694
646
  # default system locations, instead of having our own private base
695
 
  # directory. And we install "/usr/share/drizzle-test". Moving up one
696
 
  # more directory relative to "drizzle-test" gives us a usable base
 
647
  # directory. And we install "/usr/share/mysql-test". Moving up one
 
648
  # more directory relative to "mysql-test" gives us a usable base
697
649
  # directory for RPM installs.
698
650
  if ( ! $source_dist and ! -d "$glob_basedir/bin" )
699
651
  {
711
663
    $glob_builddir="..";
712
664
  }
713
665
 
714
 
  # Expect drizzle-bench to be located adjacent to the source tree, by default
715
 
  $glob_drizzle_bench_dir= "$glob_basedir/../drizzle-bench"
716
 
    unless defined $glob_drizzle_bench_dir;
717
 
  $glob_drizzle_bench_dir= undef
718
 
    unless -d $glob_drizzle_bench_dir;
719
 
 
720
 
  $glob_timers= dtr_init_timers();
 
666
  # Expect mysql-bench to be located adjacent to the source tree, by default
 
667
  $glob_mysql_bench_dir= "$glob_basedir/../mysql-bench"
 
668
    unless defined $glob_mysql_bench_dir;
 
669
  $glob_mysql_bench_dir= undef
 
670
    unless -d $glob_mysql_bench_dir;
 
671
 
 
672
  $path_my_basedir=
 
673
    $source_dist ? $glob_mysql_test_dir : $glob_basedir;
 
674
 
 
675
  $glob_timers= mtr_init_timers();
721
676
 
722
677
  #
723
 
  # Find the drizzled executable to be able to find the drizzled version
 
678
  # Find the mysqld executable to be able to find the mysqld version
724
679
  # number as early as possible
725
680
  #
726
681
 
727
682
  # Look for the client binaries directory
728
 
  $path_client_bindir= dtr_path_exists("$glob_builddir/client",
 
683
  $path_client_bindir= mtr_path_exists("$glob_builddir/client",
729
684
                                       "$glob_basedir/client",
730
685
                                       "$glob_basedir/bin");
731
686
 
732
687
  if (!$opt_extern)
733
688
  {
734
 
    $exe_drizzled=       dtr_exe_exists ("$glob_basedir/drizzled/drizzled",
 
689
    $exe_drizzled=       mtr_exe_exists ("$glob_basedir/drizzled/drizzled",
735
690
                                       "$path_client_bindir/drizzled",
736
691
                                       "$glob_basedir/libexec/drizzled",
737
692
                                       "$glob_basedir/bin/drizzled",
738
693
                                       "$glob_basedir/sbin/drizzled",
739
694
                                       "$glob_builddir/drizzled/drizzled");
740
695
 
741
 
    # Use the drizzled found above to find out what features are available
742
 
    collect_drizzled_features();
 
696
    # Use the mysqld found above to find out what features are available
 
697
    collect_mysqld_features();
743
698
  }
744
699
  else
745
700
  {
746
 
    $drizzled_variables{'port'}= 4427;
 
701
    $mysqld_variables{'port'}= 4427;
747
702
  }
748
703
 
749
704
  if (!$opt_engine)
763
718
  {
764
719
    if ( $arg =~ /^--skip-/ )
765
720
    {
766
 
      push(@opt_extra_drizzled_opt, $arg);
 
721
      push(@opt_extra_mysqld_opt, $arg);
767
722
    }
768
723
    elsif ( $arg =~ /^--$/ )
769
724
    {
784
739
  # --------------------------------------------------------------------------
785
740
  # Find out default storage engine being used(if any)
786
741
  # --------------------------------------------------------------------------
787
 
  foreach my $arg ( @opt_extra_drizzled_opt )
 
742
  foreach my $arg ( @opt_extra_mysqld_opt )
788
743
  {
789
744
    if ( $arg =~ /default-storage-engine=(\S+)/ )
790
745
    {
791
746
      $used_default_engine= $1;
792
747
    }
793
748
  }
794
 
  dtr_report("Using default engine '$used_default_engine'")
 
749
  mtr_report("Using default engine '$used_default_engine'")
795
750
    if defined $used_default_engine;
796
751
 
797
752
  # --------------------------------------------------------------------------
799
754
  # --------------------------------------------------------------------------
800
755
  if ( defined $opt_mem )
801
756
  {
802
 
    dtr_error("Can't use --mem and --vardir at the same time ")
 
757
    mtr_error("Can't use --mem and --vardir at the same time ")
803
758
      if $opt_vardir;
804
 
    dtr_error("Can't use --mem and --tmpdir at the same time ")
 
759
    mtr_error("Can't use --mem and --tmpdir at the same time ")
805
760
      if $opt_tmpdir;
806
761
 
807
762
    # Search through list of locations that are known
813
768
    {
814
769
      if ( -d $fs )
815
770
      {
816
 
        dtr_report("Using tmpfs in $fs");
 
771
        mtr_report("Using tmpfs in $fs");
817
772
        $opt_mem= "$fs/var";
818
 
        $opt_mem .= $opt_dtr_build_thread if $opt_dtr_build_thread;
 
773
        $opt_mem .= $opt_mtr_build_thread if $opt_mtr_build_thread;
819
774
        last;
820
775
      }
821
776
    }
864
819
# --------------------------------------------------------------------------
865
820
  if ( $opt_record and ! @opt_cases )
866
821
  {
867
 
    dtr_error("Will not run in record mode without a specific test case");
 
822
    mtr_error("Will not run in record mode without a specific test case");
868
823
  }
869
824
 
870
825
  if ( $opt_record )
885
840
  # --------------------------------------------------------------------------
886
841
  if ( $opt_gcov and ! $source_dist )
887
842
  {
888
 
    dtr_error("Coverage test needs the source - please use source dist");
 
843
    mtr_error("Coverage test needs the source - please use source dist");
889
844
  }
890
845
 
891
846
  # --------------------------------------------------------------------------
899
854
    $glob_debugger= 1;
900
855
    if ( $opt_extern )
901
856
    {
902
 
      dtr_error("Can't use --extern when using debugger");
 
857
      mtr_error("Can't use --extern when using debugger");
903
858
    }
904
859
  }
905
860
 
906
861
  # --------------------------------------------------------------------------
907
862
  # Check if special exe was selected for master or slave
908
863
  # --------------------------------------------------------------------------
909
 
  $exe_master_drizzled= $exe_master_drizzled || $exe_drizzled;
910
 
  $exe_slave_drizzled=  $exe_slave_drizzled  || $exe_drizzled;
 
864
  $exe_master_mysqld= $exe_master_mysqld || $exe_drizzled;
 
865
  $exe_slave_mysqld=  $exe_slave_mysqld  || $exe_drizzled;
911
866
 
912
867
  # --------------------------------------------------------------------------
913
868
  # Check valgrind arguments
914
869
  # --------------------------------------------------------------------------
915
870
  if ( $opt_valgrind or $opt_valgrind_path or @valgrind_args)
916
871
  {
917
 
    dtr_report("Turning on valgrind for all executables");
 
872
    mtr_report("Turning on valgrind for all executables");
918
873
    $opt_valgrind= 1;
919
 
    $opt_valgrind_drizzled= 1;
 
874
    $opt_valgrind_mysqld= 1;
920
875
    $opt_valgrind_drizzletest= 1;
921
 
    $ENV{'VALGRIND_RUN'} = '1';
922
876
  }
923
 
  elsif ( $opt_valgrind_drizzled )
 
877
  elsif ( $opt_valgrind_mysqld )
924
878
  {
925
 
    dtr_report("Turning on valgrind for drizzled(s) only");
 
879
    mtr_report("Turning on valgrind for mysqld(s) only");
926
880
    $opt_valgrind= 1;
927
881
  }
928
882
  elsif ( $opt_valgrind_drizzletest )
929
883
  {
930
 
    dtr_report("Turning on valgrind for drizzletest and drizzle_client_test only");
931
 
    $opt_valgrind= 1;
932
 
  }
933
 
  elsif ( $opt_valgrind_drizzleslap )
934
 
  {
935
 
    dtr_report("Turning on valgrind for drizzleslap only");
 
884
    mtr_report("Turning on valgrind for drizzletest and drizzle_client_test only");
936
885
    $opt_valgrind= 1;
937
886
  }
938
887
 
939
888
  if ( $opt_callgrind )
940
889
  {
941
 
    dtr_report("Turning on valgrind with callgrind for drizzled(s)");
 
890
    mtr_report("Turning on valgrind with callgrind for mysqld(s)");
942
891
    $opt_valgrind= 1;
943
 
    $opt_valgrind_drizzled= 1;
 
892
    $opt_valgrind_mysqld= 1;
944
893
 
945
894
    # Set special valgrind options unless options passed on command line
946
895
    push(@valgrind_args, "--trace-children=yes")
949
898
 
950
899
  if ( $opt_massif )
951
900
  {
952
 
    dtr_report("Valgrind with Massif tool for drizzled(s)");
 
901
    mtr_report("Valgrind with Massif tool for drizzled(s)");
953
902
    $opt_valgrind= 1;
954
 
    $opt_valgrind_drizzled= 1;
 
903
    $opt_valgrind_mysqld= 1;
955
904
  }
956
905
 
957
906
  if ( $opt_valgrind )
960
909
    push(@valgrind_args, @default_valgrind_args)
961
910
      unless @valgrind_args;
962
911
 
963
 
    dtr_report("Running valgrind with options \"",
 
912
    mtr_report("Running valgrind with options \"",
964
913
               join(" ", @valgrind_args), "\"");
965
914
  }
966
915
 
988
937
    }
989
938
  }
990
939
 
 
940
  # On QNX, /tmp/dir/master.sock and /tmp/dir//master.sock seem to be
 
941
  # considered different, so avoid the extra slash (/) in the socket
 
942
  # paths.
 
943
  my $sockdir = $opt_tmpdir;
 
944
  $sockdir =~ s|/+$||;
 
945
 
 
946
  # On some operating systems, there is a limit to the length of a
 
947
  # UNIX domain socket's path far below PATH_MAX, so try to avoid long
 
948
  # socket path names.
 
949
  $sockdir = tempdir(CLEANUP => 0) if ( length($sockdir) >= 70 );
 
950
 
991
951
  $master->[0]=
992
952
  {
993
953
   pid            => 0,
996
956
   path_myddir    => "$opt_vardir/master-data",
997
957
   path_myerr     => "$opt_vardir/log/master.err",
998
958
   path_pid       => "$opt_vardir/run/master.pid",
999
 
   path_sock      => "$opt_vardir/master.sock",
 
959
   path_sock      => "$sockdir/master.sock",
1000
960
   port           =>  $opt_master_myport,
1001
961
   secondary_port =>  $opt_master_myport + $secondary_port_offset,
1002
962
   start_timeout  =>  400, # enough time create innodb tables
1012
972
   path_myddir    => "$opt_vardir/master1-data",
1013
973
   path_myerr     => "$opt_vardir/log/master1.err",
1014
974
   path_pid       => "$opt_vardir/run/master1.pid",
1015
 
   path_sock      => "$opt_vardir/master1.sock",
 
975
   path_sock      => "$sockdir/master1.sock",
1016
976
   port           => $opt_master_myport + 1,
1017
977
   secondary_port => $opt_master_myport + 1 + $secondary_port_offset,
1018
978
   start_timeout  => 400, # enough time create innodb tables
1028
988
   path_myddir    => "$opt_vardir/slave-data",
1029
989
   path_myerr     => "$opt_vardir/log/slave.err",
1030
990
   path_pid       => "$opt_vardir/run/slave.pid",
1031
 
   path_sock      => "$opt_vardir/slave.sock",
 
991
   path_sock      => "$sockdir/slave.sock",
1032
992
   port           => $opt_slave_myport,
1033
993
   secondary_port => $opt_slave_myport + $secondary_port_offset,
1034
994
   start_timeout  => 400,
1044
1004
   path_myddir    => "$opt_vardir/slave1-data",
1045
1005
   path_myerr     => "$opt_vardir/log/slave1.err",
1046
1006
   path_pid       => "$opt_vardir/run/slave1.pid",
1047
 
   path_sock      => "$opt_vardir/slave1.sock",
 
1007
   path_sock      => "$sockdir/slave1.sock",
1048
1008
   port           => $opt_slave_myport + 1,
1049
1009
   secondary_port => $opt_slave_myport + 1 + $secondary_port_offset,
1050
1010
   start_timeout  => 300,
1060
1020
   path_myddir    => "$opt_vardir/slave2-data",
1061
1021
   path_myerr     => "$opt_vardir/log/slave2.err",
1062
1022
   path_pid       => "$opt_vardir/run/slave2.pid",
1063
 
   path_sock      => "$opt_vardir/slave2.sock",
 
1023
   path_sock      => "$sockdir/slave2.sock",
1064
1024
   port           => $opt_slave_myport + 2,
1065
1025
   secondary_port => $opt_slave_myport + 2 + $secondary_port_offset,
1066
1026
   start_timeout  => 300,
1079
1039
    warn("Currenty broken --extern");
1080
1040
 
1081
1041
    # Setup master->[0] with the settings for the extern server
1082
 
    $master->[0]->{'path_sock'}=  $opt_socket ? $opt_socket : "/tmp/drizzle.sock";
1083
 
    dtr_report("Using extern server at '$master->[0]->{path_sock}'");
 
1042
    $master->[0]->{'path_sock'}=  $opt_socket ? $opt_socket : "/tmp/mysql.sock";
 
1043
    mtr_report("Using extern server at '$master->[0]->{path_sock}'");
1084
1044
  }
1085
1045
  else
1086
1046
  {
1087
 
    dtr_error("--socket can only be used in combination with --extern")
 
1047
    mtr_error("--socket can only be used in combination with --extern")
1088
1048
      if $opt_socket;
1089
1049
  }
1090
1050
 
1100
1060
    # When both --valgrind and --debug is selected, send
1101
1061
    # all output to the trace file, making it possible to
1102
1062
    # see the exact location where valgrind complains
1103
 
    foreach my $drizzled (@{$master}, @{$slave})
 
1063
    foreach my $mysqld (@{$master}, @{$slave})
1104
1064
    {
1105
 
      my $sidx= $drizzled->{idx} ? "$drizzled->{idx}" : "";
1106
 
      $drizzled->{path_myerr}=
1107
 
        "$opt_vardir/log/" . $drizzled->{type} . "$sidx.trace";
 
1065
      my $sidx= $mysqld->{idx} ? "$mysqld->{idx}" : "";
 
1066
      $mysqld->{path_myerr}=
 
1067
        "$opt_vardir/log/" . $mysqld->{type} . "$sidx.trace";
1108
1068
    }
1109
1069
  }
1110
1070
}
1142
1102
#
1143
1103
# Note the MASTER_MYPORT has to be set the same in all 4.x and 5.x
1144
1104
# versions of this script, else a 4.0 test run might conflict with a
1145
 
# 5.1 test run, even if different DTR_BUILD_THREAD is used. This means
 
1105
# 5.1 test run, even if different MTR_BUILD_THREAD is used. This means
1146
1106
# all port numbers might not be used in this version of the script.
1147
1107
#
1148
1108
# Also note the limitation of ports we are allowed to hand out. This
1151
1111
# But a fairly safe range seems to be 5001 - 32767
1152
1112
#
1153
1113
 
1154
 
sub set_dtr_build_thread_ports($) {
1155
 
  my $dtr_build_thread= shift;
 
1114
sub set_mtr_build_thread_ports($) {
 
1115
  my $mtr_build_thread= shift;
1156
1116
 
1157
 
  if ( lc($dtr_build_thread) eq 'auto' ) {
 
1117
  if ( lc($mtr_build_thread) eq 'auto' ) {
1158
1118
    print "Requesting build thread... ";
1159
 
    $ENV{'DTR_BUILD_THREAD'} = $dtr_build_thread = dtr_require_unique_id_and_wait("/tmp/drizzle-test-ports", 200, 299);
1160
 
    print "got ".$dtr_build_thread."\n";
 
1119
    $ENV{'MTR_BUILD_THREAD'} = $mtr_build_thread = mtr_require_unique_id_and_wait("/tmp/mysql-test-ports", 200, 299);
 
1120
    print "got ".$mtr_build_thread."\n";
1161
1121
  }
1162
1122
 
1163
 
  $dtr_build_thread= (($dtr_build_thread * 10) % 2000) - 1000;
 
1123
  $mtr_build_thread= (($mtr_build_thread * 10) % 2000) - 1000;
1164
1124
 
1165
1125
  # Up to two masters, up to three slaves
1166
1126
  # A magic value in command_line_setup depends on these equations.
1167
 
  $opt_master_myport=         gimme_a_good_port($dtr_build_thread + 9000); # and 1
 
1127
  $opt_master_myport=         gimme_a_good_port($mtr_build_thread + 9000); # and 1
1168
1128
 
1169
1129
 
1170
1130
  $opt_slave_myport=          gimme_a_good_port($opt_master_myport + 2);  # and 3 4
1171
1131
  $opt_memc_myport= gimme_a_good_port($opt_master_myport + 10);
1172
 
  $opt_pbms_myport= gimme_a_good_port($opt_master_myport + 11);
1173
 
  $opt_rabbitmq_myport= gimme_a_good_port($opt_master_myport + 12);
1174
1132
 
1175
1133
  if ( $opt_master_myport < 5001 or $opt_master_myport + 10 >= 32767 )
1176
1134
  {
1177
 
    dtr_error("DTR_BUILD_THREAD number results in a port",
 
1135
    mtr_error("MTR_BUILD_THREAD number results in a port",
1178
1136
              "outside 5001 - 32767",
1179
1137
              "($opt_master_myport - $opt_master_myport + 10)");
1180
1138
  }
1203
1161
##############################################################################
1204
1162
 
1205
1163
 
1206
 
sub collect_drizzled_features () {
 
1164
sub collect_mysqld_features () {
1207
1165
  my $found_variable_list_start= 0;
1208
1166
  my $tmpdir= tempdir(CLEANUP => 0); # Directory removed by this function
1209
1167
 
1210
1168
  #
1211
 
  # Execute "drizzled --help" to get a list
 
1169
  # Execute "mysqld --help --verbose" to get a list
1212
1170
  # list of all features and settings
1213
1171
  #
1214
 
  # --no-defaults are to avoid loading
 
1172
  # --no-defaults and --skip-grant-tables are to avoid loading
1215
1173
  # system-wide configs and plugins
1216
1174
  #
1217
 
  my $list= `$exe_drizzled --no-defaults --help`;
 
1175
  # --datadir must exist, mysqld will chdir into it
 
1176
  #
 
1177
  my $list= `$exe_drizzled --no-defaults --datadir=$tmpdir --skip-grant-tables --verbose --help`;
1218
1178
 
1219
1179
  foreach my $line (split('\n', $list))
1220
1180
  {
1223
1183
    {
1224
1184
      # Look for version
1225
1185
      my $exe_name= basename($exe_drizzled);
1226
 
      dtr_verbose("exe_name: $exe_name");
 
1186
      mtr_verbose("exe_name: $exe_name");
1227
1187
      if ( $line =~ /^\S*$exe_name\s\sVer\s([0-9]*)\.([0-9]*)\.([0-9]*)/ )
1228
1188
      {
1229
1189
        #print "Major: $1 Minor: $2 Build: $3\n";
1230
1190
        $drizzle_version_id= $1*10000 + $2*100 + $3;
1231
1191
        #print "drizzle_version_id: $drizzle_version_id\n";
1232
 
        dtr_report("Drizzle Version $1.$2.$3");
 
1192
        mtr_report("Drizzle Version $1.$2.$3");
 
1193
      }
 
1194
    }
 
1195
    else
 
1196
    {
 
1197
      if (!$found_variable_list_start)
 
1198
      {
 
1199
        # Look for start of variables list
 
1200
        if ( $line =~ /[\-]+\s[\-]+/ )
 
1201
        {
 
1202
          $found_variable_list_start= 1;
 
1203
        }
 
1204
      }
 
1205
      else
 
1206
      {
 
1207
        # Put variables into hash
 
1208
        if ( $line =~ /^([\S]+)[ \t]+(.*?)\r?$/ )
 
1209
        {
 
1210
          # print "$1=\"$2\"\n";
 
1211
          $mysqld_variables{$1}= $2;
 
1212
        }
 
1213
        else
 
1214
        {
 
1215
          # The variable list is ended with a blank line
 
1216
          if ( $line =~ /^[\s]*$/ )
 
1217
          {
 
1218
            last;
 
1219
          }
 
1220
          else
 
1221
          {
 
1222
            # Send out a warning, we should fix the variables that has no
 
1223
            # space between variable name and it's value
 
1224
            # or should it be fixed width column parsing? It does not
 
1225
            # look like that in function my_print_variables in my_getopt.c
 
1226
            mtr_warning("Could not parse variable list line : $line");
 
1227
          }
 
1228
        }
1233
1229
      }
1234
1230
    }
1235
1231
  }
1236
1232
  rmtree($tmpdir);
1237
 
  dtr_error("Could not find version of Drizzle") unless $drizzle_version_id;
 
1233
  mtr_error("Could not find version of Drizzle") unless $drizzle_version_id;
 
1234
  mtr_error("Could not find variabes list") unless $found_variable_list_start;
1238
1235
 
1239
1236
}
1240
1237
 
1241
1238
 
1242
1239
sub run_query($$) {
1243
 
  my ($drizzled, $query)= @_;
 
1240
  my ($mysqld, $query)= @_;
1244
1241
 
1245
1242
  my $args;
1246
 
  dtr_init_args(\$args);
 
1243
  mtr_init_args(\$args);
1247
1244
 
1248
 
  dtr_add_arg($args, "--no-defaults");
1249
 
  dtr_add_arg($args, "--skip-stack-trace");
1250
 
  dtr_add_arg($args, "--user=%s", $opt_user);
1251
 
  dtr_add_arg($args, "--port=%d", $drizzled->{'port'});
1252
 
  dtr_add_arg($args, "--silent"); # Tab separated output
1253
 
  dtr_add_arg($args, "-e '%s'", $query);
 
1245
  mtr_add_arg($args, "--no-defaults");
 
1246
  mtr_add_arg($args, "--skip-stack-trace");
 
1247
  mtr_add_arg($args, "--user=%s", $opt_user);
 
1248
  mtr_add_arg($args, "--port=%d", $mysqld->{'port'});
 
1249
  mtr_add_arg($args, "--silent"); # Tab separated output
 
1250
  mtr_add_arg($args, "-e '%s'", $query);
1254
1251
 
1255
1252
  my $cmd= "$exe_drizzle " . join(' ', @$args);
1256
 
  dtr_verbose("cmd: $cmd");
 
1253
  mtr_verbose("cmd: $cmd");
1257
1254
  return `$cmd`;
1258
1255
}
1259
1256
 
1260
1257
 
1261
 
sub collect_drizzled_features_from_running_server ()
 
1258
sub collect_mysqld_features_from_running_server ()
1262
1259
{
1263
 
  my $list= run_query($master->[0], "use drizzle; SHOW VARIABLES");
 
1260
  my $list= run_query($master->[0], "use mysql; SHOW VARIABLES");
1264
1261
 
1265
1262
  foreach my $line (split('\n', $list))
1266
1263
  {
1268
1265
    if ( $line =~ /^([\S]+)[ \t]+(.*?)\r?$/ )
1269
1266
    {
1270
1267
      print "$1=\"$2\"\n";
1271
 
      $drizzled_variables{$1}= $2;
 
1268
      $mysqld_variables{$1}= $2;
1272
1269
    }
1273
1270
  }
1274
1271
}
1286
1283
    $exe_libtool= "../libtool";
1287
1284
    if ($opt_valgrind or $glob_debugger)
1288
1285
    {
1289
 
      dtr_report("Using \"$exe_libtool\" when running valgrind or debugger");
 
1286
      mtr_report("Using \"$exe_libtool\" when running valgrind or debugger");
1290
1287
    }
1291
1288
  }
1292
1289
 
 
1290
# Look for my_print_defaults
 
1291
  $exe_my_print_defaults=
 
1292
    mtr_exe_exists(
 
1293
        "$path_client_bindir/my_print_defaults",
 
1294
        "$glob_basedir/extra/my_print_defaults",
 
1295
        "$glob_builddir/extra/my_print_defaults");
 
1296
 
1293
1297
# Look for perror
1294
1298
  $exe_perror= "perror";
1295
1299
 
1296
1300
# Look for the client binaries
1297
 
  $exe_drizzledump= dtr_exe_exists("$path_client_bindir/drizzledump");
1298
 
  $exe_drizzleimport= dtr_exe_exists("$path_client_bindir/drizzleimport");
1299
 
  $exe_drizzle=          dtr_exe_exists("$path_client_bindir/drizzle");
1300
 
  $exe_drizzleadmin= dtr_exe_exists("$path_client_bindir/drizzleadmin");
 
1301
  $exe_drizzledump= mtr_exe_exists("$path_client_bindir/drizzledump");
 
1302
  $exe_drizzleimport= mtr_exe_exists("$path_client_bindir/drizzleimport");
 
1303
  $exe_drizzle=          mtr_exe_exists("$path_client_bindir/drizzle");
1301
1304
 
1302
1305
  if (!$opt_extern)
1303
1306
  {
1304
1307
# Look for SQL scripts directory
1305
1308
     if ( $drizzle_version_id >= 50100 )
1306
1309
     {
1307
 
         $exe_drizzleslap= dtr_exe_exists("$path_client_bindir/drizzleslap");
 
1310
         $exe_drizzleslap= mtr_exe_exists("$path_client_bindir/drizzleslap");
1308
1311
     }
1309
1312
  }
1310
1313
 
1311
1314
# Look for schema_writer
1312
1315
  {
1313
 
    $exe_schemawriter= dtr_exe_exists("$glob_basedir/drizzled/message/schema_writer",
 
1316
    $exe_schemawriter= mtr_exe_exists("$glob_basedir/drizzled/message/schema_writer",
1314
1317
                                      "$glob_builddir/drizzled/message/schema_writer");
1315
1318
  }
1316
1319
 
1317
1320
# Look for drizzletest executable
1318
1321
  {
1319
 
    $exe_drizzletest= dtr_exe_exists("$path_client_bindir/drizzletest");
 
1322
    $exe_drizzletest= mtr_exe_exists("$path_client_bindir/drizzletest");
1320
1323
  }
1321
1324
 
1322
1325
# Look for drizzle_client_test executable which may _not_ exist in
1323
1326
# some versions, test using it should be skipped
1324
1327
  {
1325
1328
    $exe_drizzle_client_test=
1326
 
      dtr_exe_maybe_exists(
 
1329
      mtr_exe_maybe_exists(
1327
1330
          "$glob_basedir/tests/drizzle_client_test",
1328
1331
          "$glob_basedir/bin/drizzle_client_test");
1329
1332
  }
1331
1334
# Look for bug25714 executable which may _not_ exist in
1332
1335
# some versions, test using it should be skipped
1333
1336
  $exe_bug25714=
1334
 
    dtr_exe_maybe_exists(
 
1337
    mtr_exe_maybe_exists(
1335
1338
        "$glob_basedir/tests/bug25714");
1336
1339
}
1337
1340
 
1338
1341
 
1339
1342
 
1340
 
sub generate_cmdline_drizzledump ($) {
1341
 
  my($drizzled) = @_;
 
1343
sub generate_cmdline_mysqldump ($) {
 
1344
  my($mysqld) = @_;
1342
1345
  return
1343
 
    dtr_native_path($exe_drizzledump) .
 
1346
    mtr_native_path($exe_drizzledump) .
1344
1347
      " --no-defaults -uroot " .
1345
 
      "--port=$drizzled->{'port'} ";
 
1348
      "--port=$mysqld->{'port'} ";
1346
1349
}
1347
1350
 
1348
1351
sub generate_cmdline_drizzle ($) {
1349
 
  my($drizzled) = @_;
 
1352
  my($mysqld) = @_;
1350
1353
  return
1351
 
    dtr_native_path($exe_drizzle) .
1352
 
    " -uroot --port=$drizzled->{'port'} ";
 
1354
    mtr_native_path($exe_drizzle) .
 
1355
    " -uroot --port=$mysqld->{'port'} ";
1353
1356
}
1354
1357
 
1355
 
sub generate_cmdline_drizzleadmin ($) {
1356
 
  my($drizzled) = @_;
1357
 
  return
1358
 
    dtr_native_path($exe_drizzleadmin) .
1359
 
    " -uroot --port=$drizzled->{'port'} ";
1360
 
}
1361
1358
 
1362
1359
##############################################################################
1363
1360
#
1371
1368
  my $exe= $exe_drizzle_client_test;
1372
1369
 
1373
1370
  my $args;
1374
 
  dtr_init_args(\$args);
 
1371
  mtr_init_args(\$args);
1375
1372
  if ( $opt_valgrind_drizzletest )
1376
1373
  {
1377
1374
    valgrind_arguments($args, \$exe);
1378
1375
  }
1379
1376
 
1380
 
  dtr_add_arg($args, "--no-defaults");
1381
 
  dtr_add_arg($args, "--testcase");
1382
 
  dtr_add_arg($args, "--user=root");
1383
 
  dtr_add_arg($args, "--port=$master->[0]->{'port'}");
 
1377
  mtr_add_arg($args, "--no-defaults");
 
1378
  mtr_add_arg($args, "--testcase");
 
1379
  mtr_add_arg($args, "--user=root");
 
1380
  mtr_add_arg($args, "--port=$master->[0]->{'port'}");
1384
1381
 
1385
1382
  if ( $opt_extern || $drizzle_version_id >= 50000 )
1386
1383
  {
1387
 
    dtr_add_arg($args, "--vardir=$opt_vardir")
 
1384
    mtr_add_arg($args, "--vardir=$opt_vardir")
1388
1385
  }
1389
1386
 
1390
1387
  if ( $opt_debug )
1391
1388
  {
1392
 
    dtr_add_arg($args,
 
1389
    mtr_add_arg($args,
1393
1390
      "--debug=d:t:A,$path_vardir_trace/log/drizzle_client_test.trace");
1394
1391
  }
1395
1392
 
1397
1394
}
1398
1395
 
1399
1396
 
1400
 
# Note that some env is setup in spawn/run, in "dtr_process.pl"
 
1397
# Note that some env is setup in spawn/run, in "mtr_process.pl"
1401
1398
 
1402
1399
sub environment_setup () {
1403
1400
 
1436
1433
  my $deb_version;
1437
1434
  if (  $opt_valgrind and -d $debug_libraries_path and
1438
1435
        (! -e '/etc/debian_version' or
1439
 
         ($deb_version= dtr_grab_file('/etc/debian_version')) !~ /^[0-9]+\.[0-9]$/ or
 
1436
         ($deb_version= mtr_grab_file('/etc/debian_version')) !~ /^[0-9]+\.[0-9]$/ or
1440
1437
         $deb_version > 3.1 ) )
1441
1438
  {
1442
1439
    push(@ld_library_paths, $debug_libraries_path);
1446
1443
                                $ENV{'LD_LIBRARY_PATH'} ?
1447
1444
                                split(':', $ENV{'LD_LIBRARY_PATH'}) : (),
1448
1445
                                @ld_library_paths);
1449
 
  dtr_debug("LD_LIBRARY_PATH: $ENV{'LD_LIBRARY_PATH'}");
 
1446
  mtr_debug("LD_LIBRARY_PATH: $ENV{'LD_LIBRARY_PATH'}");
1450
1447
 
1451
1448
  $ENV{'DYLD_LIBRARY_PATH'}= join(":", @ld_library_paths,
1452
1449
                                  $ENV{'DYLD_LIBRARY_PATH'} ?
1453
1450
                                  split(':', $ENV{'DYLD_LIBRARY_PATH'}) : ());
1454
 
  dtr_debug("DYLD_LIBRARY_PATH: $ENV{'DYLD_LIBRARY_PATH'}");
 
1451
  mtr_debug("DYLD_LIBRARY_PATH: $ENV{'DYLD_LIBRARY_PATH'}");
1455
1452
 
1456
1453
  # The environment variable used for shared libs on AIX
1457
1454
  $ENV{'SHLIB_PATH'}= join(":", @ld_library_paths,
1458
1455
                           $ENV{'SHLIB_PATH'} ?
1459
1456
                           split(':', $ENV{'SHLIB_PATH'}) : ());
1460
 
  dtr_debug("SHLIB_PATH: $ENV{'SHLIB_PATH'}");
 
1457
  mtr_debug("SHLIB_PATH: $ENV{'SHLIB_PATH'}");
1461
1458
 
1462
1459
  # The environment variable used for shared libs on hp-ux
1463
1460
  $ENV{'LIBPATH'}= join(":", @ld_library_paths,
1464
1461
                        $ENV{'LIBPATH'} ?
1465
1462
                        split(':', $ENV{'LIBPATH'}) : ());
1466
 
  dtr_debug("LIBPATH: $ENV{'LIBPATH'}");
 
1463
  mtr_debug("LIBPATH: $ENV{'LIBPATH'}");
1467
1464
 
1468
1465
  # --------------------------------------------------------------------------
1469
1466
  # Also command lines in .opt files may contain env vars
1474
1471
  $ENV{'UMASK_DIR'}=          "0770"; # The octal *string*
1475
1472
  
1476
1473
  #
1477
 
  # drizzle tests can produce output in various character sets
 
1474
  # MySQL tests can produce output in various character sets
1478
1475
  # (especially, ctype_xxx.test). To avoid confusing Perl
1479
1476
  # with output which is incompatible with the current locale
1480
1477
  # settings, we reset the current values of LC_ALL and LC_CTYPE to "C".
1486
1483
  
1487
1484
  $ENV{'LC_COLLATE'}=         "C";
1488
1485
  $ENV{'USE_RUNNING_SERVER'}= $opt_extern;
1489
 
  $ENV{'DRIZZLE_TEST_DIR'}=     collapse_path($glob_drizzle_test_dir);
1490
 
  $ENV{'DRIZZLETEST_VARDIR'}=   $opt_vardir;
 
1486
  $ENV{'DRIZZLE_TEST_DIR'}=     collapse_path($glob_mysql_test_dir);
 
1487
  $ENV{'MYSQLTEST_VARDIR'}=   $opt_vardir;
1491
1488
  $ENV{'TOP_SRCDIR'}= $opt_top_srcdir;
1492
1489
  $ENV{'TOP_BUILDDIR'}= $opt_top_builddir;
1493
1490
  $ENV{'DRIZZLE_TMP_DIR'}=      $opt_tmpdir;
1500
1497
  $ENV{'SLAVE_MYPORT1'}=      $slave->[1]->{'port'};
1501
1498
  $ENV{'SLAVE_MYPORT2'}=      $slave->[2]->{'port'};
1502
1499
  $ENV{'MC_PORT'}=            $opt_memc_myport;
1503
 
  $ENV{'PBMS_PORT'}=          $opt_pbms_myport;
1504
 
  $ENV{'RABBITMQ_NODE_PORT'}= $opt_rabbitmq_myport;
1505
 
  $ENV{'DRIZZLE_TCP_PORT'}=   $drizzled_variables{'drizzle-protocol.port'};
1506
 
 
1507
 
  $ENV{'DTR_BUILD_THREAD'}=      $opt_dtr_build_thread;
1508
 
 
1509
 
  $ENV{'EXE_DRIZZLE'}=          $exe_drizzle;
 
1500
  $ENV{'DRIZZLE_TCP_PORT'}=     $mysqld_variables{'drizzle-protocol-port'};
 
1501
 
 
1502
  $ENV{'MTR_BUILD_THREAD'}=      $opt_mtr_build_thread;
 
1503
 
 
1504
  $ENV{'EXE_MYSQL'}=          $exe_drizzle;
1510
1505
 
1511
1506
 
1512
1507
  # ----------------------------------------------------
1513
1508
  # Setup env to childs can execute myqldump
1514
1509
  # ----------------------------------------------------
1515
 
  my $cmdline_drizzleadmin= generate_cmdline_drizzleadmin($master->[0]);
1516
 
  my $cmdline_drizzledump= generate_cmdline_drizzledump($master->[0]);
1517
 
  my $cmdline_drizzledumpslave= generate_cmdline_drizzledump($slave->[0]);
1518
 
  my $cmdline_drizzledump_secondary= dtr_native_path($exe_drizzledump) .
 
1510
  my $cmdline_mysqldump= generate_cmdline_mysqldump($master->[0]);
 
1511
  my $cmdline_mysqldumpslave= generate_cmdline_mysqldump($slave->[0]);
 
1512
  my $cmdline_mysqldump_secondary= mtr_native_path($exe_drizzledump) .
1519
1513
       " --no-defaults -uroot " .
1520
1514
       " --port=$master->[0]->{'secondary_port'} ";
1521
1515
 
1522
1516
  if ( $opt_debug )
1523
1517
  {
1524
 
    $cmdline_drizzledump .=
1525
 
      " --debug=d:t:A,$path_vardir_trace/log/drizzledump-master.trace";
1526
 
    $cmdline_drizzledumpslave .=
1527
 
      " --debug=d:t:A,$path_vardir_trace/log/drizzledump-slave.trace";
1528
 
    $cmdline_drizzledump_secondary .=
1529
 
      " --debug=d:t:A,$path_vardir_trace/log/drizzledump-drizzle.trace";
 
1518
    $cmdline_mysqldump .=
 
1519
      " --debug=d:t:A,$path_vardir_trace/log/mysqldump-master.trace";
 
1520
    $cmdline_mysqldumpslave .=
 
1521
      " --debug=d:t:A,$path_vardir_trace/log/mysqldump-slave.trace";
 
1522
    $cmdline_mysqldump_secondary .=
 
1523
      " --debug=d:t:A,$path_vardir_trace/log/mysqldump-mysql.trace";
1530
1524
  }
1531
 
  $ENV{'DRIZZLE_ADMIN'}= $cmdline_drizzleadmin;
1532
 
  $ENV{'DRIZZLE_DUMP'}= $cmdline_drizzledump;
1533
 
  $ENV{'DRIZZLE_DUMP_SLAVE'}= $cmdline_drizzledumpslave;
1534
 
  $ENV{'DRIZZLE_DUMP_SECONDARY'}= $cmdline_drizzledump_secondary;
 
1525
  $ENV{'DRIZZLE_DUMP'}= $cmdline_mysqldump;
 
1526
  $ENV{'DRIZZLE_DUMP_SLAVE'}= $cmdline_mysqldumpslave;
 
1527
  $ENV{'DRIZZLE_DUMP_SECONDARY'}= $cmdline_mysqldump_secondary;
1535
1528
 
1536
1529
  # ----------------------------------------------------
1537
1530
  # Setup env so we can execute drizzle client
1538
1531
  # ----------------------------------------------------
1539
 
  #my $cmdline_drizzle = generate_cmdline_drizzle($master->[0]);
1540
 
  #$ENV{'DRIZZLE'}= $cmdline_drizzle;
 
1532
  my $cmdline_drizzle = generate_cmdline_drizzle($master->[0]);
 
1533
  $ENV{'DRIZZLE'}= $cmdline_drizzle;
1541
1534
 
1542
1535
  # ----------------------------------------------------
1543
 
  # Setup env so childs can execute drizzleslap
 
1536
  # Setup env so childs can execute mysqlslap
1544
1537
  # ----------------------------------------------------
1545
1538
  if ( $exe_drizzleslap )
1546
1539
  {
1547
 
    my $cmdline_drizzleslap;
1548
 
 
1549
 
    if ( $opt_valgrind_drizzleslap )
1550
 
    {
1551
 
      $cmdline_drizzleslap= "$glob_basedir/libtool --mode=execute valgrind --log-file=$opt_vardir/log/drizzleslap-valgrind.log ";
1552
 
    }
1553
 
    $cmdline_drizzleslap .=
1554
 
      dtr_native_path($exe_drizzleslap) .
 
1540
    my $cmdline_drizzleslap=
 
1541
      mtr_native_path($exe_drizzleslap) .
1555
1542
      " -uroot " .
1556
1543
      "--port=$master->[0]->{'port'} ";
1557
1544
    my $cmdline_drizzleslap_secondary=
1558
 
      dtr_native_path($exe_drizzleslap) .
 
1545
      mtr_native_path($exe_drizzleslap) .
1559
1546
      " -uroot " .
1560
1547
      " --port=$master->[0]->{'secondary_port'} ";
1561
1548
 
1573
1560
 
1574
1561
 
1575
1562
  # ----------------------------------------------------
1576
 
  # Setup env so childs can execute drizzleimport
 
1563
  # Setup env so childs can execute mysqlimport
1577
1564
  # ----------------------------------------------------
1578
 
  my $cmdline_drizzleimport=
1579
 
    dtr_native_path($exe_drizzleimport) .
 
1565
  my $cmdline_mysqlimport=
 
1566
    mtr_native_path($exe_drizzleimport) .
1580
1567
    " -uroot " .
1581
1568
    "--port=$master->[0]->{'port'} ";
1582
1569
 
1583
1570
  if ( $opt_debug )
1584
1571
  {
1585
 
    $cmdline_drizzleimport .=
1586
 
      " --debug=d:t:A,$path_vardir_trace/log/drizzleimport.trace";
 
1572
    $cmdline_mysqlimport .=
 
1573
      " --debug=d:t:A,$path_vardir_trace/log/mysqlimport.trace";
1587
1574
  }
1588
 
  $ENV{'DRIZZLE_IMPORT'}= $cmdline_drizzleimport;
1589
 
 
1590
 
 
1591
 
  # ----------------------------------------------------
1592
 
  # Setup env so childs can execute drizzle
1593
 
  # ----------------------------------------------------
1594
 
  my $cmdline_drizzle=
1595
 
    dtr_native_path($exe_drizzle) .
 
1575
  $ENV{'DRIZZLE_IMPORT'}= $cmdline_mysqlimport;
 
1576
 
 
1577
 
 
1578
  # ----------------------------------------------------
 
1579
  # Setup env so childs can execute mysql
 
1580
  # ----------------------------------------------------
 
1581
  my $cmdline_mysql=
 
1582
    mtr_native_path($exe_drizzle) .
1596
1583
    " --no-defaults --host=localhost  --user=root --password= " .
1597
1584
    "--port=$master->[0]->{'port'} ";
1598
1585
  my $cmdline_drizzle_secondary=
1599
 
    dtr_native_path($exe_drizzle) .
 
1586
    mtr_native_path($exe_drizzle) .
1600
1587
    " --no-defaults --host=localhost  --user=root --password= " .
1601
1588
    " --port=$master->[0]->{'secondary_port'} ";
1602
1589
 
1603
 
  $ENV{'DRIZZLE'}= $cmdline_drizzle;
 
1590
  $ENV{'MYSQL'}= $cmdline_mysql;
1604
1591
  $ENV{'DRIZZLE_SECONDARY'}= $cmdline_drizzle_secondary;
1605
1592
 
1606
1593
  # ----------------------------------------------------
1615
1602
 
1616
1603
 
1617
1604
  # ----------------------------------------------------
1618
 
  # Setup env so childs can execute drizzle_fix_system_tables
 
1605
  # Setup env so childs can execute mysql_fix_system_tables
1619
1606
  # ----------------------------------------------------
1620
1607
  #if ( !$opt_extern)
1621
1608
  if ( 0 )
1622
1609
  {
1623
 
    my $cmdline_drizzle_fix_system_tables=
 
1610
    my $cmdline_mysql_fix_system_tables=
1624
1611
      "$exe_drizzle_fix_system_tables --no-defaults --host=localhost " .
1625
1612
      "--user=root --password= " .
1626
1613
      "--basedir=$glob_basedir --bindir=$path_client_bindir --verbose " .
1627
1614
      "--port=$master->[0]->{'port'} ";
1628
 
    $ENV{'DRIZZLE_FIX_SYSTEM_TABLES'}=  $cmdline_drizzle_fix_system_tables;
 
1615
    $ENV{'DRIZZLE_FIX_SYSTEM_TABLES'}=  $cmdline_mysql_fix_system_tables;
1629
1616
 
1630
1617
  }
1631
1618
 
1632
1619
  # ----------------------------------------------------
 
1620
  # Setup env so childs can execute my_print_defaults
 
1621
  # ----------------------------------------------------
 
1622
  $ENV{'DRIZZLE_MY_PRINT_DEFAULTS'}= mtr_native_path($exe_my_print_defaults);
 
1623
 
 
1624
  # ----------------------------------------------------
1633
1625
  # Setup env so childs can shutdown the server
1634
1626
  # ----------------------------------------------------
1635
 
  $ENV{'DRIZZLED_SHUTDOWN'}= dtr_native_path($exe_drizzle);
 
1627
  $ENV{'DRIZZLED_SHUTDOWN'}= mtr_native_path($exe_drizzle);
1636
1628
 
1637
1629
  # ----------------------------------------------------
1638
1630
  # Setup env so childs can execute perror  
1639
1631
  # ----------------------------------------------------
1640
 
  $ENV{'MY_PERROR'}= dtr_native_path($exe_perror);
 
1632
  $ENV{'MY_PERROR'}= mtr_native_path($exe_perror);
1641
1633
 
1642
1634
  # ----------------------------------------------------
1643
 
  # Add the path where drizzled will find ha_example.so
 
1635
  # Add the path where mysqld will find ha_example.so
1644
1636
  # ----------------------------------------------------
1645
1637
  $ENV{'EXAMPLE_PLUGIN'}=
1646
1638
    ($lib_example_plugin ? basename($lib_example_plugin) : "");
1648
1640
    ($lib_example_plugin ? "--plugin_dir=" . dirname($lib_example_plugin) : "");
1649
1641
 
1650
1642
  # ----------------------------------------------------
 
1643
  # Setup env so childs can execute myisampack and myisamchk
 
1644
  # ----------------------------------------------------
 
1645
#  $ENV{'MYISAMCHK'}= mtr_native_path(mtr_exe_exists(
 
1646
#                       "$path_client_bindir/myisamchk",
 
1647
#                       "$glob_basedir/storage/myisam/myisamchk",
 
1648
#                       "$glob_basedir/myisam/myisamchk"));
 
1649
#  $ENV{'MYISAMPACK'}= mtr_native_path(mtr_exe_exists(
 
1650
#                        "$path_client_bindir/myisampack",
 
1651
#                        "$glob_basedir/storage/myisam/myisampack",
 
1652
#                        "$glob_basedir/myisam/myisampack"));
 
1653
 
 
1654
  # ----------------------------------------------------
1651
1655
  # We are nice and report a bit about our settings
1652
1656
  # ----------------------------------------------------
1653
1657
  if (!$opt_extern)
1654
1658
  {
1655
 
    print "Using DTR_BUILD_THREAD      = $ENV{DTR_BUILD_THREAD}\n";
 
1659
    print "Using MTR_BUILD_THREAD      = $ENV{MTR_BUILD_THREAD}\n";
1656
1660
    print "Using MASTER_MYPORT         = $ENV{MASTER_MYPORT}\n";
1657
1661
    print "Using MASTER_MYPORT1        = $ENV{MASTER_MYPORT1}\n";
1658
1662
    print "Using SLAVE_MYPORT          = $ENV{SLAVE_MYPORT}\n";
1659
1663
    print "Using SLAVE_MYPORT1         = $ENV{SLAVE_MYPORT1}\n";
1660
1664
    print "Using SLAVE_MYPORT2         = $ENV{SLAVE_MYPORT2}\n";
1661
1665
    print "Using MC_PORT               = $ENV{MC_PORT}\n";
1662
 
    print "Using PBMS_PORT             = $ENV{PBMS_PORT}\n";
1663
 
    print "Using RABBITMQ_NODE_PORT    = $ENV{RABBITMQ_NODE_PORT}\n";
1664
1666
  }
1665
1667
 
1666
1668
  # Create an environment variable to make it possible
1684
1686
 
1685
1687
sub handle_int_signal () {
1686
1688
  $SIG{INT}= 'DEFAULT';         # If we get a ^C again, we die...
1687
 
  dtr_warning("got INT signal, cleaning up.....");
 
1689
  mtr_warning("got INT signal, cleaning up.....");
1688
1690
  stop_all_servers();
1689
 
  dtr_error("We die from ^C signal from user");
 
1691
  mtr_error("We die from ^C signal from user");
1690
1692
}
1691
1693
 
1692
1694
 
1698
1700
 
1699
1701
sub kill_running_servers () {
1700
1702
  {
1701
 
    # Ensure that no old drizzled test servers are running
 
1703
    # Ensure that no old mysqld test servers are running
1702
1704
    # This is different from terminating processes we have
1703
1705
    # started from this run of the script, this is terminating
1704
1706
    # leftovers from previous runs.
1705
 
    dtr_kill_leftovers();
 
1707
    mtr_kill_leftovers();
1706
1708
   }
1707
1709
}
1708
1710
 
1712
1714
#
1713
1715
sub remove_stale_vardir () {
1714
1716
 
1715
 
  dtr_report("Removing Stale Files");
 
1717
  mtr_report("Removing Stale Files");
1716
1718
 
1717
1719
  # Safety!
1718
 
  dtr_error("No, don't remove the vardir when running with --extern")
 
1720
  mtr_error("No, don't remove the vardir when running with --extern")
1719
1721
    if $opt_extern;
1720
1722
 
1721
 
  dtr_verbose("opt_vardir: $opt_vardir");
 
1723
  mtr_verbose("opt_vardir: $opt_vardir");
1722
1724
  if ( $opt_vardir eq $default_vardir )
1723
1725
  {
1724
1726
    #
1725
 
    # Running with "var" in drizzle-test dir
 
1727
    # Running with "var" in mysql-test dir
1726
1728
    #
1727
1729
    if ( -l $opt_vardir)
1728
1730
    {
1731
1733
      if ( $opt_mem and readlink($opt_vardir) eq $opt_mem )
1732
1734
      {
1733
1735
        # Remove the directory which the link points at
1734
 
        dtr_verbose("Removing " . readlink($opt_vardir));
1735
 
        dtr_rmtree(readlink($opt_vardir));
 
1736
        mtr_verbose("Removing " . readlink($opt_vardir));
 
1737
        mtr_rmtree(readlink($opt_vardir));
1736
1738
 
1737
1739
        # Remove the "var" symlink
1738
 
        dtr_verbose("unlink($opt_vardir)");
 
1740
        mtr_verbose("unlink($opt_vardir)");
1739
1741
        unlink($opt_vardir);
1740
1742
      }
1741
1743
      elsif ( $opt_mem )
1742
1744
      {
1743
1745
        # Just remove the "var" symlink
1744
 
        dtr_report("WARNING: Removing '$opt_vardir' symlink it's wrong");
 
1746
        mtr_report("WARNING: Removing '$opt_vardir' symlink it's wrong");
1745
1747
 
1746
 
        dtr_verbose("unlink($opt_vardir)");
 
1748
        mtr_verbose("unlink($opt_vardir)");
1747
1749
        unlink($opt_vardir);
1748
1750
      }
1749
1751
      else
1750
1752
      {
1751
 
        # Some users creates a soft link in drizzle-test/var to another area
 
1753
        # Some users creates a soft link in mysql-test/var to another area
1752
1754
        # - allow it, but remove all files in it
1753
1755
 
1754
 
        dtr_report("WARNING: Using the 'drizzle-test/var' symlink");
 
1756
        mtr_report("WARNING: Using the 'mysql-test/var' symlink");
1755
1757
 
1756
1758
        # Make sure the directory where it points exist
1757
 
        dtr_error("The destination for symlink $opt_vardir does not exist")
 
1759
        mtr_error("The destination for symlink $opt_vardir does not exist")
1758
1760
          if ! -d readlink($opt_vardir);
1759
1761
 
1760
1762
        foreach my $bin ( glob("$opt_vardir/*") )
1761
1763
        {
1762
 
          dtr_verbose("Removing bin $bin");
1763
 
          dtr_rmtree($bin);
 
1764
          mtr_verbose("Removing bin $bin");
 
1765
          mtr_rmtree($bin);
1764
1766
        }
1765
1767
      }
1766
1768
    }
1767
1769
    else
1768
1770
    {
1769
1771
      # Remove the entire "var" dir
1770
 
      dtr_verbose("Removing $opt_vardir/");
1771
 
      dtr_rmtree("$opt_vardir/");
 
1772
      mtr_verbose("Removing $opt_vardir/");
 
1773
      mtr_rmtree("$opt_vardir/");
1772
1774
    }
1773
1775
 
1774
1776
    if ( $opt_mem )
1776
1778
      # A symlink from var/ to $opt_mem will be set up
1777
1779
      # remove the $opt_mem dir to assure the symlink
1778
1780
      # won't point at an old directory
1779
 
      dtr_verbose("Removing $opt_mem");
1780
 
      dtr_rmtree($opt_mem);
 
1781
      mtr_verbose("Removing $opt_mem");
 
1782
      mtr_rmtree($opt_mem);
1781
1783
    }
1782
1784
 
1783
1785
  }
1787
1789
    # Running with "var" in some other place
1788
1790
    #
1789
1791
 
1790
 
    # Remove the var/ dir in drizzle-test dir if any
 
1792
    # Remove the var/ dir in mysql-test dir if any
1791
1793
    # this could be an old symlink that shouldn't be there
1792
 
    dtr_verbose("Removing $default_vardir");
1793
 
    dtr_rmtree($default_vardir);
 
1794
    mtr_verbose("Removing $default_vardir");
 
1795
    mtr_rmtree($default_vardir);
1794
1796
 
1795
1797
    # Remove the "var" dir
1796
 
    dtr_verbose("Removing $opt_vardir/");
1797
 
    dtr_rmtree("$opt_vardir/");
 
1798
    mtr_verbose("Removing $opt_vardir/");
 
1799
    mtr_rmtree("$opt_vardir/");
1798
1800
  }
1799
1801
}
1800
1802
 
1802
1804
# Create var and the directories needed in var
1803
1805
#
1804
1806
sub setup_vardir() {
1805
 
  dtr_report("Creating Directories");
 
1807
  mtr_report("Creating Directories");
1806
1808
 
1807
1809
  if ( $opt_vardir eq $default_vardir )
1808
1810
  {
1809
1811
    #
1810
 
    # Running with "var" in drizzle-test dir
 
1812
    # Running with "var" in mysql-test dir
1811
1813
    #
1812
1814
    if ( -l $opt_vardir )
1813
1815
    {
1814
1816
      #  it's a symlink
1815
1817
 
1816
1818
      # Make sure the directory where it points exist
1817
 
      dtr_error("The destination for symlink $opt_vardir does not exist")
 
1819
      mtr_error("The destination for symlink $opt_vardir does not exist")
1818
1820
        if ! -d readlink($opt_vardir);
1819
1821
    }
1820
1822
    elsif ( $opt_mem )
1821
1823
    {
1822
1824
      # Runinng with "var" as a link to some "memory" location, normally tmpfs
1823
 
      dtr_verbose("Creating $opt_mem");
 
1825
      mtr_verbose("Creating $opt_mem");
1824
1826
      mkpath($opt_mem);
1825
1827
 
1826
 
      dtr_report("Symlinking 'var' to '$opt_mem'");
 
1828
      mtr_report("Symlinking 'var' to '$opt_mem'");
1827
1829
      symlink($opt_mem, $opt_vardir);
1828
1830
    }
1829
1831
  }
1830
1832
 
1831
1833
  if ( ! -d $opt_vardir )
1832
1834
  {
1833
 
    dtr_verbose("Creating $opt_vardir");
 
1835
    mtr_verbose("Creating $opt_vardir");
1834
1836
    mkpath($opt_vardir);
1835
1837
  }
1836
1838
 
1837
1839
  # Ensure a proper error message if vardir couldn't be created
1838
1840
  unless ( -d $opt_vardir and -w $opt_vardir )
1839
1841
  {
1840
 
    dtr_error("Writable 'var' directory is needed, use the " .
 
1842
    mtr_error("Writable 'var' directory is needed, use the " .
1841
1843
              "'--vardir=<path>' option");
1842
1844
  }
1843
1845
 
1849
1851
  # Create new data dirs
1850
1852
  foreach my $data_dir (@data_dir_lst)
1851
1853
  {
1852
 
    mkpath("$data_dir/local/mysql");
1853
 
    system("$exe_schemawriter mysql $data_dir/local/mysql/db.opt");
 
1854
    mkpath("$data_dir/mysql");
 
1855
    system("$exe_schemawriter mysql $data_dir/mysql/db.opt");
1854
1856
 
1855
 
    mkpath("$data_dir/local/test");
1856
 
    system("$exe_schemawriter test $data_dir/local/test/db.opt");
 
1857
    mkpath("$data_dir/test");
 
1858
    system("$exe_schemawriter test $data_dir/test/db.opt");
1857
1859
  }
1858
1860
 
1859
1861
  # Make a link std_data_ln in var/ that points to std_data
1860
 
  symlink(collapse_path("$glob_drizzle_test_dir/std_data"),
 
1862
  symlink(collapse_path("$glob_mysql_test_dir/std_data"),
1861
1863
          "$opt_vardir/std_data_ln");
1862
1864
 
1863
 
  symlink(collapse_path("$glob_suite_path/filesystem_engine/tests/t"),
1864
 
          "$opt_vardir/filesystem_ln");
1865
 
 
1866
1865
  # Remove old log files
1867
1866
  foreach my $name (glob("r/*.progress r/*.log r/*.warnings"))
1868
1867
  {
1870
1869
  }
1871
1870
  system("chmod -R ugo+r $opt_vardir");
1872
1871
  system("chmod -R ugo+r $opt_vardir/std_data_ln/*");
1873
 
  system("chmod -R ugo+rw $opt_vardir/filesystem_ln/*");
1874
 
  system("chmod -R ugo+w $glob_suite_path/filesystem_engine/tests/t");
1875
1872
}
1876
1873
 
1877
1874
 
1879
1876
  # Check if running as root
1880
1877
  # i.e a file can be read regardless what mode we set it to
1881
1878
  my $test_file= "$opt_vardir/test_running_as_root.txt";
1882
 
  dtr_tofile($test_file, "Drizzle");
 
1879
  mtr_tofile($test_file, "MySQL");
1883
1880
  chmod(oct("0000"), $test_file);
1884
1881
 
1885
1882
  my $result="";
1895
1892
  my $file_mode= (stat($test_file))[2] & 07777;
1896
1893
 
1897
1894
  $ENV{'DRIZZLE_TEST_ROOT'}= "NO";
1898
 
  dtr_verbose("result: $result, file_mode: $file_mode");
1899
 
  if ($result eq "Drizzle" && $file_mode == 0)
 
1895
  mtr_verbose("result: $result, file_mode: $file_mode");
 
1896
  if ($result eq "MySQL" && $file_mode == 0)
1900
1897
  {
1901
 
    dtr_warning("running this script as _root_ will cause some " .
 
1898
    mtr_warning("running this script as _root_ will cause some " .
1902
1899
                "tests to be skipped");
1903
1900
    $ENV{'DRIZZLE_TEST_ROOT'}= "YES";
1904
1901
  }
1910
1907
 
1911
1908
 
1912
1909
sub check_debug_support ($) {
1913
 
  my $drizzled_variables= shift;
 
1910
  my $mysqld_variables= shift;
1914
1911
 
1915
 
  if ( ! $drizzled_variables->{'debug'} )
 
1912
  if ( ! $mysqld_variables->{'debug'} )
1916
1913
  {
1917
 
    #dtr_report("Binaries are not debug compiled");
 
1914
    #mtr_report("Binaries are not debug compiled");
1918
1915
    $debug_compiled_binaries= 0;
1919
1916
 
1920
1917
    if ( $opt_debug )
1921
1918
    {
1922
 
      dtr_error("Can't use --debug, binaries does not support it");
 
1919
      mtr_error("Can't use --debug, binaries does not support it");
1923
1920
    }
1924
1921
    return;
1925
1922
  }
1926
 
  dtr_report("Binaries are debug compiled");
 
1923
  mtr_report("Binaries are debug compiled");
1927
1924
  $debug_compiled_binaries= 1;
1928
1925
}
1929
1926
 
1940
1937
  my $args;
1941
1938
 
1942
1939
  {
1943
 
    drizzled_start($master->[0],[],[]);
 
1940
    mysqld_start($master->[0],[],[]);
1944
1941
    if ( ! $master->[0]->{'pid'} )
1945
1942
    {
1946
 
      dtr_error("Can't start the drizzled server");
 
1943
      mtr_error("Can't start the mysqld server");
1947
1944
    }
1948
1945
  }
1949
1946
 
1950
 
  dtr_init_args(\$args);
 
1947
  mtr_init_args(\$args);
1951
1948
 
1952
 
  dtr_add_arg($args, "--user=%s", $opt_user);
 
1949
  mtr_add_arg($args, "--user=%s", $opt_user);
1953
1950
 
1954
1951
  if ( $opt_small_bench )
1955
1952
  {
1956
 
    dtr_add_arg($args, "--small-test");
1957
 
    dtr_add_arg($args, "--small-tables");
 
1953
    mtr_add_arg($args, "--small-test");
 
1954
    mtr_add_arg($args, "--small-tables");
1958
1955
  }
1959
1956
 
1960
 
  chdir($glob_drizzle_bench_dir)
1961
 
    or dtr_error("Couldn't chdir to '$glob_drizzle_bench_dir': $!");
 
1957
  chdir($glob_mysql_bench_dir)
 
1958
    or mtr_error("Couldn't chdir to '$glob_mysql_bench_dir': $!");
1962
1959
 
1963
1960
  if ( ! $benchmark )
1964
1961
  {
1965
 
    dtr_run("$glob_drizzle_bench_dir/run-all-tests", $args, "", "", "", "");
 
1962
    mtr_run("$glob_mysql_bench_dir/run-all-tests", $args, "", "", "", "");
1966
1963
    # FIXME check result code?!
1967
1964
  }
1968
1965
  elsif ( -x $benchmark )
1969
1966
  {
1970
 
    dtr_run("$glob_drizzle_bench_dir/$benchmark", $args, "", "", "", "");
 
1967
    mtr_run("$glob_mysql_bench_dir/$benchmark", $args, "", "", "", "");
1971
1968
    # FIXME check result code?!
1972
1969
  }
1973
1970
  else
1974
1971
  {
1975
 
    dtr_error("Benchmark $benchmark not found");
 
1972
    mtr_error("Benchmark $benchmark not found");
1976
1973
  }
1977
1974
 
1978
 
  chdir($glob_drizzle_test_dir);          # Go back
 
1975
  chdir($glob_mysql_test_dir);          # Go back
1979
1976
 
1980
1977
  {
1981
1978
    stop_masters();
1992
1989
sub run_tests () {
1993
1990
  my ($tests)= @_;
1994
1991
 
1995
 
  dtr_print_thick_line();
1996
 
 
1997
 
  dtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout);
1998
 
 
1999
 
  dtr_report_tests_not_skipped_though_disabled($tests);
2000
 
 
2001
 
  dtr_print_header();
 
1992
  mtr_print_thick_line();
 
1993
 
 
1994
  mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout);
 
1995
 
 
1996
  mtr_report_tests_not_skipped_though_disabled($tests);
 
1997
 
 
1998
  mtr_print_header();
2002
1999
 
2003
2000
  foreach my $tinfo ( @$tests )
2004
2001
  {
2009
2006
          next;
2010
2007
        }
2011
2008
 
2012
 
      dtr_timer_start($glob_timers,"testcase", 60 * $opt_testcase_timeout);
 
2009
      mtr_timer_start($glob_timers,"testcase", 60 * $opt_testcase_timeout);
2013
2010
      run_testcase($tinfo);
2014
 
      dtr_timer_stop($glob_timers,"testcase");
 
2011
      mtr_timer_stop($glob_timers,"testcase");
2015
2012
    }
2016
2013
  }
2017
2014
 
2018
 
  dtr_print_line();
 
2015
  mtr_print_line();
2019
2016
 
2020
2017
  if ( ! $glob_debugger and
2021
2018
       ! $opt_extern )
2032
2029
    gprof_collect(); # collect coverage information
2033
2030
  }
2034
2031
 
2035
 
  dtr_report_stats($tests);
 
2032
  mtr_report_stats($tests);
2036
2033
 
2037
 
  dtr_timer_stop($glob_timers,"suite");
 
2034
  mtr_timer_stop($glob_timers,"suite");
2038
2035
}
2039
2036
 
2040
2037
 
2054
2051
    # vardir does not already exist it should be created
2055
2052
    if ( ! -d $opt_vardir )
2056
2053
    {
2057
 
      dtr_report("Creating '$opt_vardir'");
 
2054
      mtr_report("Creating '$opt_vardir'");
2058
2055
      setup_vardir();
2059
2056
    }
2060
2057
    else
2061
2058
    {
2062
 
      dtr_verbose("No need to create '$opt_vardir' it already exists");
 
2059
      mtr_verbose("No need to create '$opt_vardir' it already exists");
2063
2060
    }
2064
2061
  }
2065
2062
  else
2071
2068
      remove_stale_vardir();
2072
2069
      setup_vardir();
2073
2070
 
2074
 
      drizzle_install_db();
 
2071
      mysql_install_db();
2075
2072
      if ( $opt_force )
2076
2073
      {
2077
2074
        # Save a snapshot of the freshly installed db
2082
2079
  }
2083
2080
  check_running_as_root();
2084
2081
 
2085
 
  dtr_log_init("$opt_vardir/log/drizzle-test-run.log");
 
2082
  mtr_log_init("$opt_vardir/log/drizzle-test-run.log");
2086
2083
 
2087
2084
}
2088
2085
 
2089
 
sub drizzle_install_db () {
 
2086
sub mysql_install_db () {
2090
2087
 
2091
2088
  if ($max_master_num > 1)
2092
2089
  {
2093
 
    copy_install_db('master', $master->[1]->{'path_myddir'} . "/local");
 
2090
    copy_install_db('master', $master->[1]->{'path_myddir'});
2094
2091
  }
2095
2092
 
2096
2093
  # Install the number of slave databses needed
2107
2104
  my $type=      shift;
2108
2105
  my $data_dir=  shift;
2109
2106
 
2110
 
  dtr_report("Installing \u$type Database");
 
2107
  mtr_report("Installing \u$type Database");
2111
2108
 
2112
2109
  # Just copy the installed db from first master
2113
 
  dtr_copy_dir($master->[0]->{'path_myddir'}, $data_dir);
 
2110
  mtr_copy_dir($master->[0]->{'path_myddir'}, $data_dir);
2114
2111
 
2115
2112
}
2116
2113
 
2128
2125
    {
2129
2126
      my $data_dir= $slave->[$idx]->{'path_myddir'};
2130
2127
      my $name= basename($data_dir);
2131
 
      dtr_rmtree($data_dir);
2132
 
      dtr_copy_dir("$path_snapshot/$name", $data_dir);
 
2128
      mtr_rmtree($data_dir);
 
2129
      mtr_copy_dir("$path_snapshot/$name", $data_dir);
2133
2130
    }
2134
2131
  }
2135
2132
}
2148
2145
 
2149
2146
  if ( $tinfo->{'skip'} )
2150
2147
  {
2151
 
    dtr_report_test_name($tinfo);
2152
 
    dtr_report_test_skipped($tinfo);
 
2148
    mtr_report_test_name($tinfo);
 
2149
    mtr_report_test_skipped($tinfo);
2153
2150
    return 1;
2154
2151
  }
2155
2152
 
2163
2160
  my $args;
2164
2161
 
2165
2162
  # Remove old files produced by drizzletest
2166
 
  my $base_file= dtr_match_extension($tinfo->{'result_file'},
 
2163
  my $base_file= mtr_match_extension($tinfo->{'result_file'},
2167
2164
                                    "result"); # Trim extension
2168
2165
  unlink("$base_file.reject");
2169
2166
  unlink("$base_file.progress");
2177
2174
  my $tinfo= shift;
2178
2175
 
2179
2176
  # Save info from this testcase run to drizzletest.log
2180
 
  dtr_appendfile_to_file($path_current_test_log, $path_drizzletest_log)
 
2177
  mtr_appendfile_to_file($path_current_test_log, $path_drizzletest_log)
2181
2178
    if -f $path_current_test_log;
2182
 
  dtr_appendfile_to_file($path_timefile, $path_drizzletest_log)
 
2179
  mtr_appendfile_to_file($path_timefile, $path_drizzletest_log)
2183
2180
    if -f $path_timefile;
2184
2181
}
2185
2182
 
2191
2188
  # Write a marker to all log files
2192
2189
 
2193
2190
  # The file indicating current test name
2194
 
  dtr_tonewfile($path_current_test_log, $log_msg);
 
2191
  mtr_tonewfile($path_current_test_log, $log_msg);
2195
2192
 
2196
 
  # each drizzled's .err file
2197
 
  foreach my $drizzled (@{$master}, @{$slave})
 
2193
  # each mysqld's .err file
 
2194
  foreach my $mysqld (@{$master}, @{$slave})
2198
2195
  {
2199
 
    dtr_tofile($drizzled->{path_myerr}, $log_msg);
 
2196
    mtr_tofile($mysqld->{path_myerr}, $log_msg);
2200
2197
  }
2201
2198
 
2202
2199
}
2224
2221
 
2225
2222
  if ( ! $reason )
2226
2223
  {
2227
 
    dtr_warning("Could not find reason for skipping test in $path_timefile");
 
2224
    mtr_warning("Could not find reason for skipping test in $path_timefile");
2228
2225
    $reason= "Detected by testcase(reason unknown) ";
2229
2226
  }
2230
2227
  $tinfo->{'comment'}= $reason;
2244
2241
 
2245
2242
# We don't start and kill the servers for each testcase. But some
2246
2243
# testcases needs a restart, because they specify options to start
2247
 
# drizzled with. After that testcase, we need to restart again, to set
 
2244
# mysqld with. After that testcase, we need to restart again, to set
2248
2245
# back the normal options.
2249
2246
 
2250
2247
sub run_testcase ($) {
2255
2252
  # -------------------------------------------------------
2256
2253
 
2257
2254
  $ENV{'TZ'}= $tinfo->{'timezone'};
2258
 
  dtr_verbose("Setting timezone: $tinfo->{'timezone'}");
 
2255
  mtr_verbose("Setting timezone: $tinfo->{'timezone'}");
2259
2256
 
2260
2257
  my $master_restart= run_testcase_need_master_restart($tinfo);
2261
2258
  my $slave_restart= run_testcase_need_slave_restart($tinfo);
2265
2262
    # Can't restart a running server that may be in use
2266
2263
    if ( $opt_extern )
2267
2264
    {
2268
 
      dtr_report_test_name($tinfo);
 
2265
      mtr_report_test_name($tinfo);
2269
2266
      $tinfo->{comment}= "Can't restart a running server";
2270
 
      dtr_report_test_skipped($tinfo);
 
2267
      mtr_report_test_skipped($tinfo);
2271
2268
      return;
2272
2269
    }
2273
2270
 
2277
2274
  # Write to all log files to indicate start of testcase
2278
2275
  run_testcase_mark_logs($tinfo, "CURRENT_TEST: $tinfo->{name}\n");
2279
2276
 
2280
 
  my $died= dtr_record_dead_children();
 
2277
  my $died= mtr_record_dead_children();
2281
2278
  if ($died or $master_restart or $slave_restart)
2282
2279
  {
2283
2280
    if (run_testcase_start_servers($tinfo))
2284
2281
    {
2285
 
      dtr_report_test_name($tinfo);
 
2282
      mtr_report_test_name($tinfo);
2286
2283
      report_failure_and_restart($tinfo);
2287
2284
      return 1;
2288
2285
    }
2293
2290
  # ----------------------------------------------------------------------
2294
2291
  if ( $opt_start_and_exit or $opt_start_dirty )
2295
2292
  {
2296
 
    dtr_timer_stop_all($glob_timers);
2297
 
    dtr_report("\nServers started, exiting");
 
2293
    mtr_timer_stop_all($glob_timers);
 
2294
    mtr_report("\nServers started, exiting");
2298
2295
    exit(0);
2299
2296
  }
2300
2297
 
2302
2299
    do_before_run_drizzletest($tinfo);
2303
2300
 
2304
2301
    my $res= run_drizzletest($tinfo);
2305
 
    dtr_report_test_name($tinfo);
 
2302
    mtr_report_test_name($tinfo);
2306
2303
 
2307
2304
    do_after_run_drizzletest($tinfo);
2308
2305
 
2309
2306
    if ( $res == 0 )
2310
2307
    {
2311
 
      dtr_report_test_passed($tinfo);
 
2308
      mtr_report_test_passed($tinfo);
2312
2309
    }
2313
2310
    elsif ( $res == 62 )
2314
2311
    {
2316
2313
 
2317
2314
      # Try to get reason from drizzletest.log
2318
2315
      find_testcase_skipped_reason($tinfo);
2319
 
      dtr_report_test_skipped($tinfo);
 
2316
      mtr_report_test_skipped($tinfo);
2320
2317
    }
2321
2318
    elsif ( $res == 63 )
2322
2319
    {
2352
2349
#
2353
2350
sub save_installed_db () {
2354
2351
 
2355
 
  dtr_report("Saving snapshot of installed databases");
2356
 
  dtr_rmtree($path_snapshot);
 
2352
  mtr_report("Saving snapshot of installed databases");
 
2353
  mtr_rmtree($path_snapshot);
2357
2354
 
2358
2355
  foreach my $data_dir (@data_dir_lst)
2359
2356
  {
2360
2357
    my $name= basename($data_dir);
2361
 
    dtr_copy_dir("$data_dir", "$path_snapshot/$name");
 
2358
    mtr_copy_dir("$data_dir", "$path_snapshot/$name");
2362
2359
  }
2363
2360
}
2364
2361
 
2377
2374
  {
2378
2375
    last if $opt_max_save_core > 0 && $num_saved_cores >= $opt_max_save_core;
2379
2376
    my $core_name= basename($core_file);
2380
 
    dtr_report("Saving $core_name");
 
2377
    mtr_report("Saving $core_name");
2381
2378
    mkdir($save_name) if ! -d $save_name;
2382
2379
    rename("$core_file", "$save_name/$core_name");
2383
2380
    ++$num_saved_cores;
2394
2391
 
2395
2392
  if ( -d $path_snapshot)
2396
2393
  {
2397
 
    dtr_report("Restoring snapshot of databases");
 
2394
    mtr_report("Restoring snapshot of databases");
2398
2395
 
2399
2396
    foreach my $data_dir (@data_dir_lst)
2400
2397
    {
2401
2398
      my $name= basename($data_dir);
2402
2399
      save_files_before_restore($test_name, $data_dir);
2403
 
      dtr_rmtree("$data_dir");
2404
 
      dtr_copy_dir("$path_snapshot/$name", "$data_dir");
 
2400
      mtr_rmtree("$data_dir");
 
2401
      mtr_copy_dir("$path_snapshot/$name", "$data_dir");
2405
2402
    }
2406
2403
  }
2407
2404
  else
2408
2405
  {
2409
2406
    # No snapshot existed
2410
 
    dtr_error("No snapshot existed");
 
2407
    mtr_error("No snapshot existed");
2411
2408
  }
2412
2409
}
2413
2410
 
2414
2411
sub report_failure_and_restart ($) {
2415
2412
  my $tinfo= shift;
2416
2413
 
2417
 
  dtr_report_test_failed($tinfo);
 
2414
  mtr_report_test_failed($tinfo);
2418
2415
  print "\n";
2419
2416
  if ( $opt_force )
2420
2417
  {
2423
2420
 
2424
2421
    # Restore the snapshot of the installed test db
2425
2422
    restore_installed_db($tinfo->{'name'});
2426
 
    dtr_report("Resuming Tests\n");
 
2423
    mtr_report("Resuming Tests\n");
2427
2424
    return;
2428
2425
  }
2429
2426
 
2430
2427
  my $test_mode= join(" ", @::glob_test_mode) || "default";
2431
 
  dtr_report("Aborting: $tinfo->{'name'} failed in $test_mode mode. ");
2432
 
  dtr_report("To continue, re-run with '--force'.");
 
2428
  mtr_report("Aborting: $tinfo->{'name'} failed in $test_mode mode. ");
 
2429
  mtr_report("To continue, re-run with '--force'.");
2433
2430
  if ( ! $glob_debugger and
2434
2431
       ! $opt_extern )
2435
2432
  {
2436
2433
    stop_all_servers();
2437
2434
  }
2438
 
  dtr_exit(1);
 
2435
  mtr_exit(1);
2439
2436
 
2440
2437
}
2441
2438
 
2447
2444
  # Run master initialization shell script if one exists
2448
2445
  if ( $init_script )
2449
2446
  {
2450
 
    my $ret= dtr_run("/bin/sh", [$init_script], "", "", "", "");
 
2447
    my $ret= mtr_run("/bin/sh", [$init_script], "", "", "", "");
2451
2448
    if ( $ret != 0 )
2452
2449
    {
2453
2450
      # FIXME rewrite those scripts to return 0 if successful
2454
 
      # dtr_warning("$init_script exited with code $ret");
 
2451
      # mtr_warning("$init_script exited with code $ret");
2455
2452
    }
2456
2453
  }
2457
2454
}
2510
2507
  # Run slave initialization shell script if one exists
2511
2508
  if ( $init_script )
2512
2509
  {
2513
 
    my $ret= dtr_run("/bin/sh", [$init_script], "", "", "", "");
 
2510
    my $ret= mtr_run("/bin/sh", [$init_script], "", "", "", "");
2514
2511
    if ( $ret != 0 )
2515
2512
    {
2516
2513
      # FIXME rewrite those scripts to return 0 if successful
2517
 
      # dtr_warning("$init_script exited with code $ret");
 
2514
      # mtr_warning("$init_script exited with code $ret");
2518
2515
    }
2519
2516
  }
2520
2517
 
2525
2522
}
2526
2523
 
2527
2524
 
2528
 
sub drizzled_arguments ($$$$) {
 
2525
sub mysqld_arguments ($$$$) {
2529
2526
  my $args=              shift;
2530
 
  my $drizzled=            shift;
 
2527
  my $mysqld=            shift;
2531
2528
  my $extra_opt=         shift;
2532
2529
  my $slave_master_info= shift;
2533
2530
 
2534
 
  my $idx= $drizzled->{'idx'};
 
2531
  my $idx= $mysqld->{'idx'};
2535
2532
  my $sidx= "";                 # Index as string, 0 is empty string
2536
2533
  if ( $idx> 0 )
2537
2534
  {
2540
2537
 
2541
2538
  my $prefix= "";               # If drizzletest server arg
2542
2539
 
2543
 
  dtr_add_arg($args, "%s--no-defaults", $prefix);
 
2540
  mtr_add_arg($args, "%s--no-defaults", $prefix);
 
2541
 
 
2542
  $path_my_basedir= collapse_path($path_my_basedir);
 
2543
  mtr_add_arg($args, "%s--basedir=%s", $prefix, $path_my_basedir);
2544
2544
 
2545
2545
  if ($opt_engine)
2546
2546
  {
2547
 
    dtr_add_arg($args, "%s--default-storage-engine=%s", $prefix, $opt_engine);
 
2547
    mtr_add_arg($args, "%s--default-storage-engine=%s", $prefix, $opt_engine);
2548
2548
  }
2549
2549
 
2550
2550
  if ( $drizzle_version_id >= 50036)
2551
2551
  {
2552
 
    # By default, prevent the started drizzled to access files outside of vardir
2553
 
    dtr_add_arg($args, "%s--secure-file-priv=%s", $prefix, $opt_vardir);
 
2552
    # By default, prevent the started mysqld to access files outside of vardir
 
2553
    mtr_add_arg($args, "%s--secure-file-priv=%s", $prefix, $opt_vardir);
2554
2554
  }
2555
2555
 
2556
 
  dtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix);
 
2556
  mtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix);
2557
2557
 
2558
2558
  # Increase default connect_timeout to avoid intermittent
2559
2559
  # disconnects when test servers are put under load
2560
2560
  # see BUG#28359
2561
 
  dtr_add_arg($args, "%s--mysql-protocol.connect-timeout=60", $prefix);
2562
 
 
2563
 
 
2564
 
  # When drizzled is run by a root user(euid is 0), it will fail
 
2561
  mtr_add_arg($args, "%s--mysql-protocol-connect-timeout=60", $prefix);
 
2562
 
 
2563
 
 
2564
  # When mysqld is run by a root user(euid is 0), it will fail
2565
2565
  # to start unless we specify what user to run as, see BUG#30630
2566
2566
  my $euid= $>;
2567
 
  if (grep(/^--user/, @$extra_opt, @opt_extra_drizzled_opt) == 0) {
2568
 
    dtr_add_arg($args, "%s--user=root", $prefix);
 
2567
  if (grep(/^--user/, @$extra_opt, @opt_extra_mysqld_opt) == 0) {
 
2568
    mtr_add_arg($args, "%s--user=root", $prefix);
2569
2569
  }
2570
2570
 
2571
 
  dtr_add_arg($args, "%s--pid-file=%s", $prefix,
2572
 
              $drizzled->{'path_pid'});
2573
 
 
2574
 
  dtr_add_arg($args, "%s--mysql-protocol.port=%d", $prefix,
2575
 
              $drizzled->{'port'});
2576
 
 
2577
 
  dtr_add_arg($args, "%s--drizzle-protocol.port=%d", $prefix,
2578
 
              $drizzled->{'secondary_port'});
2579
 
 
2580
 
  dtr_add_arg($args, "%s--datadir=%s", $prefix,
2581
 
              $drizzled->{'path_myddir'});
2582
 
 
2583
 
  dtr_add_arg($args, "%s--mysql-unix-socket-protocol.path=%s", $prefix,
2584
 
              $drizzled->{'path_sock'});
 
2571
  mtr_add_arg($args, "%s--pid-file=%s", $prefix,
 
2572
              $mysqld->{'path_pid'});
 
2573
 
 
2574
  mtr_add_arg($args, "%s--mysql-protocol-port=%d", $prefix,
 
2575
              $mysqld->{'port'});
 
2576
 
 
2577
  mtr_add_arg($args, "%s--drizzle-protocol-port=%d", $prefix,
 
2578
              $mysqld->{'secondary_port'});
 
2579
 
 
2580
  mtr_add_arg($args, "%s--datadir=%s", $prefix,
 
2581
              $mysqld->{'path_myddir'});
2585
2582
 
2586
2583
  # Check if "extra_opt" contains --skip-log-bin
2587
 
  if ( $drizzled->{'type'} eq 'master' )
 
2584
  if ( $mysqld->{'type'} eq 'master' )
2588
2585
  {
2589
 
    dtr_add_arg($args, "%s--server-id=%d", $prefix,
 
2586
    mtr_add_arg($args, "%s--server-id=%d", $prefix,
2590
2587
               $idx > 0 ? $idx + 101 : 1);
2591
2588
 
2592
 
    dtr_add_arg($args,
2593
 
      "%s--innodb.data-file-path=ibdata1:20M:autoextend", $prefix);
 
2589
    mtr_add_arg($args,
 
2590
      "%s--loose-innodb_data_file_path=ibdata1:20M:autoextend", $prefix);
 
2591
 
 
2592
    mtr_add_arg($args, "%s--loose-innodb-lock-wait-timeout=5", $prefix);
2594
2593
 
2595
2594
  }
2596
2595
  else
2597
2596
  {
2598
 
    dtr_error("unknown drizzled type")
2599
 
      unless $drizzled->{'type'} eq 'slave';
 
2597
    mtr_error("unknown mysqld type")
 
2598
      unless $mysqld->{'type'} eq 'slave';
2600
2599
 
2601
2600
    # Directory where slaves find the dumps generated by "load data"
2602
2601
    # on the server. The path need to have constant length otherwise
2607
2606
    {
2608
2607
      foreach my $arg ( @$slave_master_info )
2609
2608
      {
2610
 
        dtr_add_arg($args, "%s%s", $prefix, $arg);
 
2609
        mtr_add_arg($args, "%s%s", $prefix, $arg);
2611
2610
      }
2612
2611
    }
2613
2612
    else
2614
2613
    {
2615
2614
      my $slave_server_id=  2 + $idx;
2616
2615
      my $slave_rpl_rank= $slave_server_id;
2617
 
      dtr_add_arg($args, "%s--server-id=%d", $prefix, $slave_server_id);
 
2616
      mtr_add_arg($args, "%s--server-id=%d", $prefix, $slave_server_id);
2618
2617
    }
2619
2618
  } # end slave
2620
2619
 
2621
2620
  if ( $opt_debug )
2622
2621
  {
2623
 
    dtr_add_arg($args, "%s--debug=d:t:i:A,%s/log/%s%s.trace",
2624
 
                $prefix, $path_vardir_trace, $drizzled->{'type'}, $sidx);
 
2622
    mtr_add_arg($args, "%s--debug=d:t:i:A,%s/log/%s%s.trace",
 
2623
                $prefix, $path_vardir_trace, $mysqld->{'type'}, $sidx);
2625
2624
  }
2626
2625
 
2627
 
  dtr_add_arg($args, "%s--sort-buffer-size=256K", $prefix);
2628
 
  dtr_add_arg($args, "%s--max-heap-table-size=1M", $prefix);
 
2626
  mtr_add_arg($args, "%s--myisam_key_cache_size=1M", $prefix);
 
2627
  mtr_add_arg($args, "%s--sort_buffer=256K", $prefix);
 
2628
  mtr_add_arg($args, "%s--max_heap_table_size=1M", $prefix);
2629
2629
 
2630
2630
  if ( $opt_warnings )
2631
2631
  {
2632
 
    dtr_add_arg($args, "%s--log-warnings", $prefix);
 
2632
    mtr_add_arg($args, "%s--log-warnings", $prefix);
2633
2633
  }
2634
2634
 
2635
 
  # Indicate to "drizzled" it will be debugged in debugger
 
2635
  # Indicate to "mysqld" it will be debugged in debugger
2636
2636
  if ( $glob_debugger )
2637
2637
  {
2638
 
    dtr_add_arg($args, "%s--gdb", $prefix);
 
2638
    mtr_add_arg($args, "%s--gdb", $prefix);
2639
2639
  }
2640
2640
 
2641
2641
  my $found_skip_core= 0;
2642
 
  foreach my $arg ( @opt_extra_drizzled_opt, @$extra_opt )
 
2642
  foreach my $arg ( @opt_extra_mysqld_opt, @$extra_opt )
2643
2643
  {
2644
2644
    # Allow --skip-core-file to be set in <testname>-[master|slave].opt file
2645
2645
    if ($arg eq "--skip-core-file")
2648
2648
    }
2649
2649
    else
2650
2650
    {
2651
 
      dtr_add_arg($args, "%s%s", $prefix, $arg);
 
2651
      mtr_add_arg($args, "%s%s", $prefix, $arg);
2652
2652
    }
2653
2653
  }
2654
2654
  if ( !$found_skip_core )
2655
2655
  {
2656
 
    dtr_add_arg($args, "%s%s", $prefix, "--core-file");
 
2656
    mtr_add_arg($args, "%s%s", $prefix, "--core-file");
2657
2657
  }
2658
2658
 
2659
2659
  return $args;
2662
2662
 
2663
2663
##############################################################################
2664
2664
#
2665
 
#  Start drizzled and return the PID
 
2665
#  Start mysqld and return the PID
2666
2666
#
2667
2667
##############################################################################
2668
2668
 
2669
 
sub drizzled_start ($$$) {
2670
 
  my $drizzled=            shift;
 
2669
sub mysqld_start ($$$) {
 
2670
  my $mysqld=            shift;
2671
2671
  my $extra_opt=         shift;
2672
2672
  my $slave_master_info= shift;
2673
2673
 
2676
2676
  my $pid= -1;
2677
2677
  my $wait_for_pid_file= 1;
2678
2678
 
2679
 
  my $type= $drizzled->{'type'};
2680
 
  my $idx= $drizzled->{'idx'};
 
2679
  my $type= $mysqld->{'type'};
 
2680
  my $idx= $mysqld->{'idx'};
2681
2681
 
2682
2682
  if ( $type eq 'master' )
2683
2683
  {
2684
 
    $exe= $exe_master_drizzled;
 
2684
    $exe= $exe_master_mysqld;
2685
2685
  }
2686
2686
  elsif ( $type eq 'slave' )
2687
2687
  {
2688
 
    $exe= $exe_slave_drizzled;
 
2688
    $exe= $exe_slave_mysqld;
2689
2689
  }
2690
2690
  else
2691
2691
  {
2692
 
    dtr_error("Unknown 'type' \"$type\" passed to drizzled_start");
 
2692
    mtr_error("Unknown 'type' \"$type\" passed to mysqld_start");
2693
2693
  }
2694
2694
 
2695
 
  dtr_init_args(\$args);
 
2695
  mtr_init_args(\$args);
2696
2696
 
2697
 
  if ( $opt_valgrind_drizzled )
 
2697
  if ( $opt_valgrind_mysqld )
2698
2698
  {
2699
2699
    valgrind_arguments($args, \$exe);
2700
2700
  }
2701
2701
 
2702
 
  drizzled_arguments($args,$drizzled,$extra_opt,$slave_master_info);
 
2702
  mysqld_arguments($args,$mysqld,$extra_opt,$slave_master_info);
2703
2703
 
2704
2704
  if ( $opt_gdb || $opt_manual_gdb)
2705
2705
  {
2720
2720
  elsif ( $opt_manual_debug )
2721
2721
  {
2722
2722
     print "\nStart $type in your debugger\n" .
2723
 
           "dir: $glob_drizzle_test_dir\n" .
 
2723
           "dir: $glob_mysql_test_dir\n" .
2724
2724
           "exe: $exe\n" .
2725
2725
           "args:  " . join(" ", @$args)  . "\n\n" .
2726
2726
           "Waiting ....\n";
2735
2735
  }
2736
2736
 
2737
2737
  # Remove the pidfile
2738
 
  unlink($drizzled->{'path_pid'});
 
2738
  unlink($mysqld->{'path_pid'});
2739
2739
 
2740
2740
  if ( defined $exe )
2741
2741
  {
2742
 
    dtr_verbose("running Drizzle with: $exe @$args");
2743
 
    $pid= dtr_spawn($exe, $args, "",
2744
 
                    $drizzled->{'path_myerr'},
2745
 
                    $drizzled->{'path_myerr'},
 
2742
    $pid= mtr_spawn($exe, $args, "",
 
2743
                    $mysqld->{'path_myerr'},
 
2744
                    $mysqld->{'path_myerr'},
2746
2745
                    "",
2747
2746
                    { append_log_file => 1 });
2748
2747
  }
2749
2748
 
2750
2749
 
2751
 
  if ( $wait_for_pid_file && !sleep_until_file_created($drizzled->{'path_pid'},
2752
 
                                                       $drizzled->{'start_timeout'},
 
2750
  if ( $wait_for_pid_file && !sleep_until_file_created($mysqld->{'path_pid'},
 
2751
                                                       $mysqld->{'start_timeout'},
2753
2752
                                                       $pid))
2754
2753
  {
2755
2754
 
2756
 
    dtr_error("Failed to start drizzled $drizzled->{'type'}");
 
2755
    mtr_error("Failed to start mysqld $mysqld->{'type'}");
2757
2756
  }
2758
2757
 
2759
2758
 
2760
2759
  # Remember pid of the started process
2761
 
  $drizzled->{'pid'}= $pid;
 
2760
  $mysqld->{'pid'}= $pid;
2762
2761
 
2763
2762
  # Remember options used when starting
2764
 
  $drizzled->{'start_opts'}= $extra_opt;
2765
 
  $drizzled->{'start_slave_master_info'}= $slave_master_info;
 
2763
  $mysqld->{'start_opts'}= $extra_opt;
 
2764
  $mysqld->{'start_slave_master_info'}= $slave_master_info;
2766
2765
 
2767
 
  dtr_verbose("drizzled pid: $pid");
 
2766
  mtr_verbose("mysqld pid: $pid");
2768
2767
  return $pid;
2769
2768
}
2770
2769
 
2771
2770
 
2772
2771
sub stop_all_servers () {
2773
2772
 
2774
 
  dtr_report("Stopping All Servers");
 
2773
  mtr_report("Stopping All Servers");
2775
2774
 
2776
2775
  my %admin_pids; # hash of admin processes that requests shutdown
2777
2776
  my @kill_pids;  # list of processes to shutdown/kill
2778
2777
  my $pid;
2779
2778
 
2780
2779
  # Start shutdown of all started masters
2781
 
  foreach my $drizzled (@{$slave}, @{$master})
 
2780
  foreach my $mysqld (@{$slave}, @{$master})
2782
2781
  {
2783
 
    if ( $drizzled->{'pid'} )
 
2782
    if ( $mysqld->{'pid'} )
2784
2783
    {
2785
 
      $pid= dtr_server_shutdown($drizzled);
 
2784
      $pid= mtr_server_shutdown($mysqld);
2786
2785
      $admin_pids{$pid}= 1;
2787
2786
 
2788
2787
      push(@kill_pids,{
2789
 
                       pid      => $drizzled->{'pid'},
2790
 
                       real_pid => $drizzled->{'real_pid'},
2791
 
                       pidfile  => $drizzled->{'path_pid'},
2792
 
                       sockfile => $drizzled->{'path_sock'},
2793
 
                       port     => $drizzled->{'port'},
2794
 
                       errfile  => $drizzled->{'path_myerr'},
 
2788
                       pid      => $mysqld->{'pid'},
 
2789
                       real_pid => $mysqld->{'real_pid'},
 
2790
                       pidfile  => $mysqld->{'path_pid'},
 
2791
                       sockfile => $mysqld->{'path_sock'},
 
2792
                       port     => $mysqld->{'port'},
 
2793
                       errfile  => $mysqld->{'path_myerr'},
2795
2794
                      });
2796
2795
 
2797
 
      $drizzled->{'pid'}= 0; # Assume we are done with it
 
2796
      $mysqld->{'pid'}= 0; # Assume we are done with it
2798
2797
    }
2799
2798
  }
2800
2799
 
2801
2800
  # Wait blocking until all shutdown processes has completed
2802
 
  dtr_wait_blocking(\%admin_pids);
 
2801
  mtr_wait_blocking(\%admin_pids);
2803
2802
 
2804
2803
  # Make sure that process has shutdown else try to kill them
2805
 
  dtr_check_stop_servers(\@kill_pids);
 
2804
  mtr_check_stop_servers(\@kill_pids);
2806
2805
}
2807
2806
 
2808
2807
 
2816
2815
  if ( $tinfo->{'master_sh'} )
2817
2816
  {
2818
2817
    $do_restart= 1;           # Always restart if script to run
2819
 
    dtr_verbose("Restart master: Always restart if script to run");
 
2818
    mtr_verbose("Restart master: Always restart if script to run");
2820
2819
  }
2821
2820
  if ( $tinfo->{'force_restart'} )
2822
2821
  {
2823
2822
    $do_restart= 1; # Always restart if --force-restart in -opt file
2824
 
    dtr_verbose("Restart master: Restart forced with --force-restart");
 
2823
    mtr_verbose("Restart master: Restart forced with --force-restart");
2825
2824
  }
2826
2825
  elsif( $tinfo->{'component_id'} eq 'im' )
2827
2826
  {
2828
2827
    $do_restart= 1;
2829
 
    dtr_verbose("Restart master: Always restart for im tests");
 
2828
    mtr_verbose("Restart master: Always restart for im tests");
2830
2829
  }
2831
2830
  elsif ( $master->[0]->{'running_master_options'} and
2832
2831
          $master->[0]->{'running_master_options'}->{'timezone'} ne
2833
2832
          $tinfo->{'timezone'})
2834
2833
  {
2835
2834
    $do_restart= 1;
2836
 
    dtr_verbose("Restart master: Different timezone");
 
2835
    mtr_verbose("Restart master: Different timezone");
2837
2836
  }
2838
2837
  # Check that running master was started with same options
2839
2838
  # as the current test requires
2840
 
  elsif (! dtr_same_opts($master->[0]->{'start_opts'},
 
2839
  elsif (! mtr_same_opts($master->[0]->{'start_opts'},
2841
2840
                         $tinfo->{'master_opt'}) )
2842
2841
  {
2843
2842
    # Chech that diff is binlog format only
2844
 
    my $diff_opts= dtr_diff_opts($master->[0]->{'start_opts'},$tinfo->{'master_opt'});
 
2843
    my $diff_opts= mtr_diff_opts($master->[0]->{'start_opts'},$tinfo->{'master_opt'});
2845
2844
    if (scalar(@$diff_opts) eq 2) 
2846
2845
    {
2847
2846
      $do_restart= 1;
2849
2848
    else
2850
2849
    {
2851
2850
      $do_restart= 1;
2852
 
      dtr_verbose("Restart master: running with different options '" .
 
2851
      mtr_verbose("Restart master: running with different options '" .
2853
2852
                 join(" ", @{$tinfo->{'master_opt'}}) . "' != '" .
2854
2853
                join(" ", @{$master->[0]->{'start_opts'}}) . "'" );
2855
2854
    }
2859
2858
    if ( $opt_extern )
2860
2859
    {
2861
2860
      $do_restart= 0;
2862
 
      dtr_verbose("No restart: using extern master");
 
2861
      mtr_verbose("No restart: using extern master");
2863
2862
    }
2864
2863
    else
2865
2864
    {
2866
2865
      $do_restart= 1;
2867
 
      dtr_verbose("Restart master: master is not started");
 
2866
      mtr_verbose("Restart master: master is not started");
2868
2867
    }
2869
2868
  }
2870
2869
  return $do_restart;
2879
2878
 
2880
2879
  if ( $max_slave_num == 0)
2881
2880
  {
2882
 
    dtr_verbose("Skip slave restart: No testcase use slaves");
 
2881
    mtr_verbose("Skip slave restart: No testcase use slaves");
2883
2882
  }
2884
2883
  else
2885
2884
  {
2886
2885
 
2887
2886
    # Check if any slave is currently started
2888
2887
    my $any_slave_started= 0;
2889
 
    foreach my $drizzled (@{$slave})
 
2888
    foreach my $mysqld (@{$slave})
2890
2889
    {
2891
 
      if ( $drizzled->{'pid'} )
 
2890
      if ( $mysqld->{'pid'} )
2892
2891
      {
2893
2892
        $any_slave_started= 1;
2894
2893
        last;
2897
2896
 
2898
2897
    if ($any_slave_started)
2899
2898
    {
2900
 
      dtr_verbose("Restart slave: Slave is started, always restart");
 
2899
      mtr_verbose("Restart slave: Slave is started, always restart");
2901
2900
      $do_slave_restart= 1;
2902
2901
    }
2903
2902
    elsif ( $tinfo->{'slave_num'} )
2904
2903
    {
2905
 
      dtr_verbose("Restart slave: Test need slave");
 
2904
      mtr_verbose("Restart slave: Test need slave");
2906
2905
      $do_slave_restart= 1;
2907
2906
    }
2908
2907
  }
2936
2935
    delete $master->[0]->{'running_master_options'}; # Forget history
2937
2936
 
2938
2937
    # Start shutdown of all started masters
2939
 
    foreach my $drizzled (@{$master})
 
2938
    foreach my $mysqld (@{$master})
2940
2939
    {
2941
 
      if ( $drizzled->{'pid'} )
 
2940
      if ( $mysqld->{'pid'} )
2942
2941
      {
2943
 
        $pid= dtr_server_shutdown($drizzled);
 
2942
        $pid= mtr_server_shutdown($mysqld);
2944
2943
 
2945
2944
        $admin_pids{$pid}= 1;
2946
2945
 
2947
2946
        push(@kill_pids,{
2948
 
              pid      => $drizzled->{'pid'},
2949
 
              real_pid => $drizzled->{'real_pid'},
2950
 
              pidfile  => $drizzled->{'path_pid'},
2951
 
              sockfile => $drizzled->{'path_sock'},
2952
 
              port     => $drizzled->{'port'},
2953
 
              errfile   => $drizzled->{'path_myerr'},
 
2947
              pid      => $mysqld->{'pid'},
 
2948
              real_pid => $mysqld->{'real_pid'},
 
2949
              pidfile  => $mysqld->{'path_pid'},
 
2950
              sockfile => $mysqld->{'path_sock'},
 
2951
              port     => $mysqld->{'port'},
 
2952
              errfile   => $mysqld->{'path_myerr'},
2954
2953
        });
2955
2954
 
2956
 
        $drizzled->{'pid'}= 0; # Assume we are done with it
 
2955
        $mysqld->{'pid'}= 0; # Assume we are done with it
2957
2956
      }
2958
2957
    }
2959
2958
  }
2964
2963
    delete $slave->[0]->{'running_slave_options'}; # Forget history
2965
2964
 
2966
2965
    # Start shutdown of all started slaves
2967
 
    foreach my $drizzled (@{$slave})
 
2966
    foreach my $mysqld (@{$slave})
2968
2967
    {
2969
 
      if ( $drizzled->{'pid'} )
 
2968
      if ( $mysqld->{'pid'} )
2970
2969
      {
2971
 
        $pid= dtr_server_shutdown($drizzled);
 
2970
        $pid= mtr_server_shutdown($mysqld);
2972
2971
 
2973
2972
        $admin_pids{$pid}= 1;
2974
2973
 
2975
2974
        push(@kill_pids,{
2976
 
              pid      => $drizzled->{'pid'},
2977
 
              real_pid => $drizzled->{'real_pid'},
2978
 
              pidfile  => $drizzled->{'path_pid'},
2979
 
              sockfile => $drizzled->{'path_sock'},
2980
 
              port     => $drizzled->{'port'},
2981
 
              errfile  => $drizzled->{'path_myerr'},
 
2975
              pid      => $mysqld->{'pid'},
 
2976
              real_pid => $mysqld->{'real_pid'},
 
2977
              pidfile  => $mysqld->{'path_pid'},
 
2978
              sockfile => $mysqld->{'path_sock'},
 
2979
              port     => $mysqld->{'port'},
 
2980
              errfile  => $mysqld->{'path_myerr'},
2982
2981
        });
2983
2982
 
2984
 
        $drizzled->{'pid'}= 0; # Assume we are done with it
 
2983
        $mysqld->{'pid'}= 0; # Assume we are done with it
2985
2984
      }
2986
2985
    }
2987
2986
  }
2992
2991
  # ----------------------------------------------------------------------
2993
2992
 
2994
2993
  # Wait blocking until all shutdown processes has completed
2995
 
  dtr_wait_blocking(\%admin_pids);
 
2994
  mtr_wait_blocking(\%admin_pids);
2996
2995
 
2997
2996
 
2998
2997
  # Make sure that process has shutdown else try to kill them
2999
 
  dtr_check_stop_servers(\@kill_pids);
 
2998
  mtr_check_stop_servers(\@kill_pids);
3000
2999
}
3001
3000
 
3002
3001
 
3014
3013
  my $tinfo= shift;
3015
3014
  my $tname= $tinfo->{'name'};
3016
3015
 
3017
 
  if ( $tinfo->{'component_id'} eq 'drizzled' )
 
3016
  if ( $tinfo->{'component_id'} eq 'mysqld' )
3018
3017
  {
3019
3018
    if ( !$master->[0]->{'pid'} )
3020
3019
    {
3021
 
      # Master drizzled is not started
 
3020
      # Master mysqld is not started
3022
3021
      do_before_start_master($tinfo);
3023
3022
 
3024
 
      drizzled_start($master->[0],$tinfo->{'master_opt'},[]);
 
3023
      mysqld_start($master->[0],$tinfo->{'master_opt'},[]);
3025
3024
 
3026
3025
    }
3027
3026
 
3042
3041
    {
3043
3042
      if ( ! $slave->[$idx]->{'pid'} )
3044
3043
      {
3045
 
        drizzled_start($slave->[$idx],$tinfo->{'slave_opt'},
 
3044
        mysqld_start($slave->[$idx],$tinfo->{'slave_opt'},
3046
3045
                     $tinfo->{'slave_mi'});
3047
3046
 
3048
3047
      }
3052
3051
    $slave->[0]->{'running_slave_options'}= $tinfo;
3053
3052
  }
3054
3053
 
3055
 
  # Wait for drizzled's to start
3056
 
  foreach my $drizzled (@{$master},@{$slave})
 
3054
  # Wait for mysqld's to start
 
3055
  foreach my $mysqld (@{$master},@{$slave})
3057
3056
  {
3058
3057
 
3059
 
    next if !$drizzled->{'pid'};
 
3058
    next if !$mysqld->{'pid'};
3060
3059
 
3061
 
    if (drizzled_wait_started($drizzled))
 
3060
    if (mysqld_wait_started($mysqld))
3062
3061
    {
3063
3062
      # failed to start
3064
3063
      $tinfo->{'comment'}=
3065
 
        "Failed to start $drizzled->{'type'} drizzled $drizzled->{'idx'}";
 
3064
        "Failed to start $mysqld->{'type'} mysqld $mysqld->{'idx'}";
3066
3065
      return 1;
3067
3066
    }
3068
3067
  }
3081
3080
sub run_check_testcase ($$) {
3082
3081
 
3083
3082
  my $mode=     shift;
3084
 
  my $drizzled=   shift;
 
3083
  my $mysqld=   shift;
3085
3084
 
3086
 
  my $name= "check-" . $drizzled->{'type'} . $drizzled->{'idx'};
 
3085
  my $name= "check-" . $mysqld->{'type'} . $mysqld->{'idx'};
3087
3086
 
3088
3087
  my $args;
3089
 
  dtr_init_args(\$args);
3090
 
 
3091
 
  dtr_add_arg($args, "--no-defaults");
3092
 
  dtr_add_arg($args, "--silent");
3093
 
  dtr_add_arg($args, "--tmpdir=%s", $opt_tmpdir);
3094
 
 
3095
 
  dtr_add_arg($args, "--port=%d", $drizzled->{'port'});
3096
 
  dtr_add_arg($args, "--database=test");
3097
 
  dtr_add_arg($args, "--user=%s", $opt_user);
3098
 
  dtr_add_arg($args, "--password=");
3099
 
 
3100
 
  dtr_add_arg($args, "-R");
3101
 
  dtr_add_arg($args, "$opt_vardir/tmp/$name.result");
 
3088
  mtr_init_args(\$args);
 
3089
 
 
3090
  mtr_add_arg($args, "--no-defaults");
 
3091
  mtr_add_arg($args, "--silent");
 
3092
  mtr_add_arg($args, "--tmpdir=%s", $opt_tmpdir);
 
3093
 
 
3094
  mtr_add_arg($args, "--port=%d", $mysqld->{'port'});
 
3095
  mtr_add_arg($args, "--database=test");
 
3096
  mtr_add_arg($args, "--user=%s", $opt_user);
 
3097
  mtr_add_arg($args, "--password=");
 
3098
 
 
3099
  mtr_add_arg($args, "-R");
 
3100
  mtr_add_arg($args, "$opt_vardir/tmp/$name.result");
3102
3101
 
3103
3102
  if ( $mode eq "before" )
3104
3103
  {
3105
 
    dtr_add_arg($args, "--record");
 
3104
    mtr_add_arg($args, "--record");
3106
3105
  }
3107
3106
 
3108
3107
  if ( $opt_testdir )
3109
3108
  {
3110
 
    dtr_add_arg($args, "--testdir=%s", $opt_testdir);
 
3109
    mtr_add_arg($args, "--testdir=%s", $opt_testdir);
3111
3110
  }
3112
3111
 
3113
 
  my $res = dtr_run_test($exe_drizzletest,$args,
 
3112
  my $res = mtr_run_test($exe_drizzletest,$args,
3114
3113
                "include/check-testcase.test", "", "", "");
3115
3114
 
3116
3115
  if ( $res == 1  and $mode eq "after")
3117
3116
  {
3118
 
    dtr_run("diff",["-u",
 
3117
    mtr_run("diff",["-u",
3119
3118
                    "$opt_vardir/tmp/$name.result",
3120
3119
                    "$opt_vardir/tmp/$name.reject"],
3121
3120
            "", "", "", "");
3122
3121
  }
3123
3122
  elsif ( $res )
3124
3123
  {
3125
 
    dtr_error("Could not execute 'check-testcase' $mode testcase");
 
3124
    mtr_error("Could not execute 'check-testcase' $mode testcase");
3126
3125
  }
3127
3126
  return $res;
3128
3127
}
3137
3136
  my $args;
3138
3137
 
3139
3138
  {
3140
 
    drizzled_start($master->[0],[],[]);
 
3139
    mysqld_start($master->[0],[],[]);
3141
3140
    if ( ! $master->[0]->{'pid'} )
3142
3141
    {
3143
 
      dtr_error("Can't start the drizzled server");
 
3142
      mtr_error("Can't start the mysqld server");
3144
3143
    }
3145
 
    drizzled_wait_started($master->[0]);
 
3144
    mysqld_wait_started($master->[0]);
3146
3145
  }
3147
3146
 
3148
3147
  my $tinfo = {};
3149
3148
  $tinfo->{'name'} = 'report features';
3150
3149
  $tinfo->{'result_file'} = undef;
3151
 
  $tinfo->{'component_id'} = 'drizzled';
 
3150
  $tinfo->{'component_id'} = 'mysqld';
3152
3151
  $tinfo->{'path'} = 'include/report-features.test';
3153
3152
  $tinfo->{'timezone'}=  "GMT-3";
3154
3153
  $tinfo->{'slave_num'} = 0;
3169
3168
  my $exe= $exe_drizzletest;
3170
3169
  my $args;
3171
3170
 
3172
 
  dtr_init_args(\$args);
 
3171
  mtr_init_args(\$args);
3173
3172
 
3174
 
  dtr_add_arg($args, "--no-defaults");
3175
 
  dtr_add_arg($args, "--silent");
3176
 
  dtr_add_arg($args, "--tmpdir=%s", $opt_tmpdir);
3177
 
  dtr_add_arg($args, "--logdir=%s/log", $opt_vardir);
 
3173
  mtr_add_arg($args, "--no-defaults");
 
3174
  mtr_add_arg($args, "--silent");
 
3175
  mtr_add_arg($args, "--tmpdir=%s", $opt_tmpdir);
 
3176
  mtr_add_arg($args, "--logdir=%s/log", $opt_vardir);
3178
3177
 
3179
3178
  # Log line number and time  for each line in .test file
3180
 
  dtr_add_arg($args, "--mark-progress")
 
3179
  mtr_add_arg($args, "--mark-progress")
3181
3180
    if $opt_mark_progress;
3182
3181
 
3183
3182
  {
3184
 
    dtr_add_arg($args, "--port=%d", $master->[0]->{'port'});
3185
 
    dtr_add_arg($args, "--database=test");
3186
 
    dtr_add_arg($args, "--user=%s", $opt_user);
3187
 
    dtr_add_arg($args, "--password=");
 
3183
    mtr_add_arg($args, "--port=%d", $master->[0]->{'port'});
 
3184
    mtr_add_arg($args, "--database=test");
 
3185
    mtr_add_arg($args, "--user=%s", $opt_user);
 
3186
    mtr_add_arg($args, "--password=");
3188
3187
  }
3189
3188
 
3190
3189
  if ( $opt_strace_client )
3191
3190
  {
3192
3191
    $exe=  "strace";            # FIXME there are ktrace, ....
3193
 
    dtr_add_arg($args, "-o");
3194
 
    dtr_add_arg($args, "%s/log/drizzletest.strace", $opt_vardir);
3195
 
    dtr_add_arg($args, "$exe_drizzletest");
 
3192
    mtr_add_arg($args, "-o");
 
3193
    mtr_add_arg($args, "%s/log/drizzletest.strace", $opt_vardir);
 
3194
    mtr_add_arg($args, "$exe_drizzletest");
3196
3195
  }
3197
3196
 
3198
3197
  if ( $opt_timer )
3199
3198
  {
3200
 
    dtr_add_arg($args, "--timer-file=%s/log/timer", $opt_vardir);
 
3199
    mtr_add_arg($args, "--timer-file=%s/log/timer", $opt_vardir);
3201
3200
  }
3202
3201
 
3203
3202
  if ( $opt_compress )
3204
3203
  {
3205
 
    dtr_add_arg($args, "--compress");
 
3204
    mtr_add_arg($args, "--compress");
3206
3205
  }
3207
3206
 
3208
3207
  if ( $opt_sleep )
3209
3208
  {
3210
 
    dtr_add_arg($args, "--sleep=%d", $opt_sleep);
 
3209
    mtr_add_arg($args, "--sleep=%d", $opt_sleep);
3211
3210
  }
3212
3211
 
3213
3212
  if ( $opt_debug )
3214
3213
  {
3215
 
    dtr_add_arg($args, "--debug=d:t:A,%s/log/drizzletest.trace",
 
3214
    mtr_add_arg($args, "--debug=d:t:A,%s/log/drizzletest.trace",
3216
3215
                $path_vardir_trace);
3217
3216
  }
3218
3217
 
3219
3218
  if ( $opt_testdir )
3220
3219
  {
3221
 
    dtr_add_arg($args, "--testdir=%s", $opt_testdir);
 
3220
    mtr_add_arg($args, "--testdir=%s", $opt_testdir);
3222
3221
  }
3223
3222
 
3224
3223
 
3226
3225
  # export DRIZZLE_TEST variable containing <path>/drizzletest <args>
3227
3226
  # ----------------------------------------------------------------------
3228
3227
  $ENV{'DRIZZLE_TEST'}=
3229
 
    dtr_native_path($exe_drizzletest) . " " . join(" ", @$args);
 
3228
    mtr_native_path($exe_drizzletest) . " " . join(" ", @$args);
3230
3229
 
3231
3230
  # ----------------------------------------------------------------------
3232
3231
  # Add arguments that should not go into the DRIZZLE_TEST env var
3238
3237
    # We do this here, since we do not want to Valgrind the nested invocations
3239
3238
    # of drizzletest; that would mess up the stderr output causing test failure.
3240
3239
    my @args_saved = @$args;
3241
 
    dtr_init_args(\$args);
 
3240
    mtr_init_args(\$args);
3242
3241
    valgrind_arguments($args, \$exe);
3243
 
    dtr_add_arg($args, "%s", $_) for @args_saved;
 
3242
    mtr_add_arg($args, "%s", $_) for @args_saved;
3244
3243
  }
3245
3244
 
3246
 
  dtr_add_arg($args, "--test-file=%s", $tinfo->{'path'});
 
3245
  mtr_add_arg($args, "--test-file=%s", $tinfo->{'path'});
3247
3246
 
3248
3247
  # Number of lines of resut to include in failure report
3249
 
  dtr_add_arg($args, "--tail-lines=20");
 
3248
  mtr_add_arg($args, "--tail-lines=20");
3250
3249
 
3251
3250
  if ( defined $tinfo->{'result_file'} ) {
3252
 
    dtr_add_arg($args, "--result-file=%s", $tinfo->{'result_file'});
 
3251
    mtr_add_arg($args, "--result-file=%s", $tinfo->{'result_file'});
3253
3252
  }
3254
3253
 
3255
3254
  if ( $opt_record )
3256
3255
  {
3257
 
    dtr_add_arg($args, "--record");
 
3256
    mtr_add_arg($args, "--record");
3258
3257
  }
3259
3258
 
3260
3259
  if ( $opt_client_gdb )
3272
3271
 
3273
3272
  if ( $opt_check_testcases )
3274
3273
  {
3275
 
    foreach my $drizzled (@{$master}, @{$slave})
 
3274
    foreach my $mysqld (@{$master}, @{$slave})
3276
3275
    {
3277
 
      if ($drizzled->{'pid'})
 
3276
      if ($mysqld->{'pid'})
3278
3277
      {
3279
 
        run_check_testcase("before", $drizzled);
 
3278
        run_check_testcase("before", $mysqld);
3280
3279
      }
3281
3280
    }
3282
3281
  }
3283
3282
 
3284
 
  my $res = dtr_run_test($exe,$args,"","",$path_timefile,"");
 
3283
  my $res = mtr_run_test($exe,$args,"","",$path_timefile,"");
3285
3284
 
3286
3285
  if ( $opt_check_testcases )
3287
3286
  {
3288
 
    foreach my $drizzled (@{$master}, @{$slave})
 
3287
    foreach my $mysqld (@{$master}, @{$slave})
3289
3288
    {
3290
 
      if ($drizzled->{'pid'})
 
3289
      if ($mysqld->{'pid'})
3291
3290
      {
3292
 
        if (run_check_testcase("after", $drizzled))
 
3291
        if (run_check_testcase("after", $mysqld))
3293
3292
        {
3294
3293
          # Check failed, mark the test case with that info
3295
3294
          $tinfo->{'check_testcase_failed'}= 1;
3319
3318
  if ( $type eq "client" )
3320
3319
  {
3321
3320
    # write init file for client
3322
 
    dtr_tofile($dbx_init_file,
 
3321
    mtr_tofile($dbx_init_file,
3323
3322
               "runargs $str\n" .
3324
3323
               "run\n");
3325
3324
  }
3326
3325
  else
3327
3326
  {
3328
3327
    # write init file for drizzled
3329
 
    dtr_tofile($dbx_init_file,
3330
 
               "stop in __1cIdrizzledLparse6Fpn0AHSession_pkcI_v_\n" .
 
3328
    mtr_tofile($dbx_init_file,
 
3329
               "stop in __1cIdrizzledLmysql_parse6Fpn0AHSession_pkcI_v_\n" .
3331
3330
               "runargs $str\n" .
3332
3331
               "run\n" .
3333
3332
               "\n");
3344
3343
  }
3345
3344
 
3346
3345
  $$args= [];
3347
 
  dtr_add_arg($$args, "-title");
3348
 
  dtr_add_arg($$args, "$type");
3349
 
  dtr_add_arg($$args, "-e");
 
3346
  mtr_add_arg($$args, "-title");
 
3347
  mtr_add_arg($$args, "$type");
 
3348
  mtr_add_arg($$args, "-e");
3350
3349
 
3351
 
  dtr_add_arg($$args, "dbx");
3352
 
  dtr_add_arg($$args, "-c");
3353
 
  dtr_add_arg($$args, "source $dbx_init_file");
3354
 
  dtr_add_arg($$args, "$$exe");
 
3350
  mtr_add_arg($$args, "dbx");
 
3351
  mtr_add_arg($$args, "-c");
 
3352
  mtr_add_arg($$args, "source $dbx_init_file");
 
3353
  mtr_add_arg($$args, "$$exe");
3355
3354
 
3356
3355
  $$exe= "xterm";
3357
3356
}
3363
3362
  my $args= shift;
3364
3363
  my $exe=  shift;
3365
3364
  my $type= shift;
3366
 
  # We add needed, extra lines to gdbinit on OS X
3367
 
  my $extra_gdb_init = '' ;
3368
 
  if ($^O eq 'darwin')
3369
 
  {
3370
 
    $extra_gdb_init= "set env DYLD_INSERT_LIBRARIES /usr/lib/libgmalloc.dylib\n".
3371
 
                 "set env MallocStackLogging 1\n".
3372
 
                 "set env MallocScribble 1\n".
3373
 
                 "set env MallocPreScribble 1\n".
3374
 
                 "set env MallocStackLogging 1\n".
3375
 
                 "set env MallocStackLoggingNoCompact 1\n".
3376
 
                 "set env MallocGuardEdges 1\n" ;
3377
 
  }
3378
3365
 
3379
3366
  # Write $args to gdb init file
3380
3367
  my $str= join(" ", @$$args);
3386
3373
  if ( $type eq "client" )
3387
3374
  {
3388
3375
    # write init file for client
3389
 
    dtr_tofile($gdb_init_file,
 
3376
    mtr_tofile($gdb_init_file,
3390
3377
               "set args $str\n" .
3391
 
               "$extra_gdb_init" .
3392
3378
               "break main\n");
3393
3379
  }
3394
3380
  else
3395
3381
  {
3396
 
    # write init file for drizzled
3397
 
    dtr_tofile($gdb_init_file,
 
3382
    # write init file for mysqld
 
3383
    mtr_tofile($gdb_init_file,
3398
3384
               "set args $str\n" .
3399
 
               "$extra_gdb_init" .
3400
3385
               "set breakpoint pending on\n" .
3401
 
               "break drizzled::parse\n" .
 
3386
               "break drizzled::mysql_parse\n" .
3402
3387
               "commands 1\n" .
3403
3388
               "disable 1\n" .
3404
3389
               "end\n" .
3409
3394
  if ( $opt_manual_gdb )
3410
3395
  {
3411
3396
     print "\nTo start gdb for $type, type in another window:\n";
3412
 
     print "$glob_drizzle_test_dir/../libtool --mode=execute gdb -cd $glob_drizzle_test_dir -x $gdb_init_file $$exe\n";
 
3397
     print "$glob_mysql_test_dir/../libtool --mode=execute gdb -cd $glob_mysql_test_dir -x $gdb_init_file $$exe\n";
3413
3398
 
3414
3399
     # Indicate the exe should not be started
3415
3400
     $$exe= undef;
3417
3402
  }
3418
3403
 
3419
3404
  $$args= [];
3420
 
  dtr_add_arg($$args, "-title");
3421
 
  dtr_add_arg($$args, "$type");
3422
 
  dtr_add_arg($$args, "-e");
 
3405
  mtr_add_arg($$args, "-title");
 
3406
  mtr_add_arg($$args, "$type");
 
3407
  mtr_add_arg($$args, "-e");
3423
3408
 
3424
3409
  if ( $exe_libtool )
3425
3410
  {
3426
 
    dtr_add_arg($$args, $exe_libtool);
3427
 
    dtr_add_arg($$args, "--mode=execute");
 
3411
    mtr_add_arg($$args, $exe_libtool);
 
3412
    mtr_add_arg($$args, "--mode=execute");
3428
3413
  }
3429
3414
 
3430
 
  dtr_add_arg($$args, "gdb");
3431
 
  dtr_add_arg($$args, "-x");
3432
 
  dtr_add_arg($$args, "$gdb_init_file");
3433
 
  dtr_add_arg($$args, "$$exe");
 
3415
  mtr_add_arg($$args, "gdb");
 
3416
  mtr_add_arg($$args, "-x");
 
3417
  mtr_add_arg($$args, "$gdb_init_file");
 
3418
  mtr_add_arg($$args, "$$exe");
3434
3419
 
3435
3420
  $$exe= "xterm";
3436
3421
}
3454
3439
  if ( $type eq "client" )
3455
3440
  {
3456
3441
    # write init file for client
3457
 
    dtr_tofile($gdb_init_file,
 
3442
    mtr_tofile($gdb_init_file,
3458
3443
               "set args $str\n" .
3459
3444
               "break main\n");
3460
3445
  }
3461
3446
  else
3462
3447
  {
3463
 
    # write init file for drizzled
3464
 
    dtr_tofile($gdb_init_file,
 
3448
    # write init file for mysqld
 
3449
    mtr_tofile($gdb_init_file,
3465
3450
               "file $$exe\n" .
3466
3451
               "set args $str\n" .
3467
 
               "break drizzled::parse\n" .
 
3452
               "break drizzled::mysql_parse\n" .
3468
3453
               "commands 1\n" .
3469
3454
               "disable 1\n" .
3470
3455
               "end");
3473
3458
  if ( $opt_manual_ddd )
3474
3459
  {
3475
3460
     print "\nTo start ddd for $type, type in another window:\n";
3476
 
     print "ddd -cd $glob_drizzle_test_dir -x $gdb_init_file $$exe\n";
 
3461
     print "ddd -cd $glob_mysql_test_dir -x $gdb_init_file $$exe\n";
3477
3462
 
3478
3463
     # Indicate the exe should not be started
3479
3464
     $$exe= undef;
3485
3470
  if ( $exe_libtool )
3486
3471
  {
3487
3472
    $$exe= $exe_libtool;
3488
 
    dtr_add_arg($$args, "--mode=execute");
3489
 
    dtr_add_arg($$args, "ddd");
 
3473
    mtr_add_arg($$args, "--mode=execute");
 
3474
    mtr_add_arg($$args, "ddd");
3490
3475
  }
3491
3476
  else
3492
3477
  {
3493
3478
    $$exe= "ddd";
3494
3479
  }
3495
 
  dtr_add_arg($$args, "--command=$gdb_init_file");
3496
 
  dtr_add_arg($$args, "$save_exe");
 
3480
  mtr_add_arg($$args, "--command=$gdb_init_file");
 
3481
  mtr_add_arg($$args, "$save_exe");
3497
3482
}
3498
3483
 
3499
3484
 
3531
3516
#  }
3532
3517
  else
3533
3518
  {
3534
 
    dtr_error("Unknown argument \"$debugger\" passed to --debugger");
 
3519
    mtr_error("Unknown argument \"$debugger\" passed to --debugger");
3535
3520
  }
3536
3521
}
3537
3522
 
3545
3530
 
3546
3531
  if ( $opt_callgrind)
3547
3532
  {
3548
 
    dtr_add_arg($args, "--tool=callgrind");
 
3533
    mtr_add_arg($args, "--tool=callgrind");
 
3534
    mtr_add_arg($args, "--base=$opt_vardir/log");
3549
3535
  }
3550
3536
  elsif ($opt_massif)
3551
3537
  {
3552
 
    dtr_add_arg($args, "--tool=massif");
 
3538
    mtr_add_arg($args, "--tool=massif");
3553
3539
  }
3554
3540
  else
3555
3541
  {
3556
 
    dtr_add_arg($args, "--tool=memcheck"); # From >= 2.1.2 needs this option
3557
 
    dtr_add_arg($args, "--leak-check=yes");
3558
 
    dtr_add_arg($args, "--num-callers=16");
3559
 
    dtr_add_arg($args, "--suppressions=%s/valgrind.supp", $glob_drizzle_test_dir)
3560
 
      if -f "$glob_drizzle_test_dir/valgrind.supp";
 
3542
    mtr_add_arg($args, "--tool=memcheck"); # From >= 2.1.2 needs this option
 
3543
    mtr_add_arg($args, "--leak-check=yes");
 
3544
    mtr_add_arg($args, "--num-callers=16");
 
3545
    mtr_add_arg($args, "--suppressions=%s/valgrind.supp", $glob_mysql_test_dir)
 
3546
      if -f "$glob_mysql_test_dir/valgrind.supp";
3561
3547
  }
3562
3548
 
3563
3549
  # Add valgrind options, can be overriden by user
3564
 
  dtr_add_arg($args, '%s', $_) for (@valgrind_args);
 
3550
  mtr_add_arg($args, '%s', $_) for (@valgrind_args);
3565
3551
 
3566
 
  dtr_add_arg($args, $$exe);
 
3552
  mtr_add_arg($args, $$exe);
3567
3553
 
3568
3554
  $$exe= $opt_valgrind_path || "valgrind";
3569
3555
 
3577
3563
}
3578
3564
 
3579
3565
 
3580
 
sub drizzled_wait_started($){
3581
 
  my $drizzled= shift;
 
3566
sub mysqld_wait_started($){
 
3567
  my $mysqld= shift;
3582
3568
 
3583
 
  if (sleep_until_file_created($drizzled->{'path_pid'},
3584
 
            $drizzled->{'start_timeout'},
3585
 
            $drizzled->{'pid'}) == 0)
 
3569
  if (sleep_until_file_created($mysqld->{'path_pid'},
 
3570
            $mysqld->{'start_timeout'},
 
3571
            $mysqld->{'pid'}) == 0)
3586
3572
  {
3587
3573
    # Failed to wait for pid file
3588
3574
    return 1;
3590
3576
 
3591
3577
  # Get the "real pid" of the process, it will be used for killing
3592
3578
  # the process in ActiveState's perl on windows
3593
 
  $drizzled->{'real_pid'}= dtr_get_pid_from_file($drizzled->{'path_pid'});
 
3579
  $mysqld->{'real_pid'}= mtr_get_pid_from_file($mysqld->{'path_pid'});
3594
3580
 
3595
3581
  return 0;
3596
3582
}
3660
3646
                        using a builtin list of standard locations
3661
3647
                        for tmpfs (/dev/shm)
3662
3648
                        The option can also be set using environment
3663
 
                        variable DTR_MEM=[DIR]
 
3649
                        variable MTR_MEM=[DIR]
3664
3650
 
3665
3651
Options to control what test suites or cases to run
3666
3652
 
3676
3662
                        list of suite names.
3677
3663
                        The default is: "$opt_suites_default"
3678
3664
  skip-rpl              Skip the replication test cases.
3679
 
  combination="ARG1 .. ARG2" Specify a set of "drizzled" arguments for one
 
3665
  combination="ARG1 .. ARG2" Specify a set of "mysqld" arguments for one
3680
3666
                        combination.
3681
3667
  skip-combination      Skip any combination options and combinations files
3682
3668
  repeat-test=n         How many times to repeat each test (default: 1)
3685
3671
 
3686
3672
  master_port=PORT      Specify the port number used by the first master
3687
3673
  slave_port=PORT       Specify the port number used by the first slave
3688
 
  dtr-build-thread=#    Specify unique collection of ports. Can also be set by
3689
 
                        setting the environment variable DTR_BUILD_THREAD.
 
3674
  mtr-build-thread=#    Specify unique collection of ports. Can also be set by
 
3675
                        setting the environment variable MTR_BUILD_THREAD.
3690
3676
 
3691
3677
Options for test case authoring
3692
3678
 
3696
3682
 
3697
3683
Options that pass on options
3698
3684
 
3699
 
  drizzled=ARGS           Specify additional arguments to "drizzled"
 
3685
  mysqld=ARGS           Specify additional arguments to "mysqld"
3700
3686
 
3701
3687
Options to run test on running server
3702
3688
 
3708
3694
  client-ddd            Start drizzletest client in ddd
3709
3695
  client-debugger=NAME  Start drizzletest in the selected debugger
3710
3696
  client-gdb            Start drizzletest client in gdb
3711
 
  ddd                   Start drizzled in ddd
 
3697
  ddd                   Start mysqld in ddd
3712
3698
  debug                 Dump trace output for all servers and client programs
3713
 
  debugger=NAME         Start drizzled in the selected debugger
3714
 
  gdb                   Start the drizzled(s) in gdb
3715
 
  manual-debug          Let user manually start drizzled in debugger, before
 
3699
  debugger=NAME         Start mysqld in the selected debugger
 
3700
  gdb                   Start the mysqld(s) in gdb
 
3701
  manual-debug          Let user manually start mysqld in debugger, before
3716
3702
                        running test(s)
3717
 
  manual-gdb            Let user manually start drizzled in gdb, before running
3718
 
                        test(s)
3719
 
  manual-ddd            Let user manually start drizzled in ddd, before running
3720
 
                        test(s)
3721
 
  master-binary=PATH    Specify the master "drizzled" to use
3722
 
  slave-binary=PATH     Specify the slave "drizzled" to use
 
3703
  manual-gdb            Let user manually start mysqld in gdb, before running
 
3704
                        test(s)
 
3705
  manual-ddd            Let user manually start mysqld in ddd, before running
 
3706
                        test(s)
 
3707
  master-binary=PATH    Specify the master "mysqld" to use
 
3708
  slave-binary=PATH     Specify the slave "mysqld" to use
3723
3709
  strace-client         Create strace output for drizzletest client
3724
3710
  max-save-core         Limit the number of core files saved (to avoid filling
3725
3711
                        up disks for heavily crashing server). Defaults to
3729
3715
 
3730
3716
  gcov                  FIXME
3731
3717
  gprof                 See online documentation on how to use it.
3732
 
  valgrind              Run the "drizzletest" and "drizzled" executables using
 
3718
  valgrind              Run the "drizzletest" and "mysqld" executables using
3733
3719
                        valgrind with default options
3734
3720
  valgrind-all          Synonym for --valgrind
3735
 
  valgrind-drizzleslap  Run "drizzleslap" with valgrind.
3736
 
  valgrind-drizzletest  Run the "drizzletest" and "drizzle_client_test" executable
 
3721
  valgrind-drizzletest    Run the "drizzletest" and "drizzle_client_test" executable
3737
3722
                        with valgrind
3738
 
  valgrind-drizzled       Run the "drizzled" executable with valgrind
 
3723
  valgrind-mysqld       Run the "mysqld" executable with valgrind
3739
3724
  valgrind-options=ARGS Deprecated, use --valgrind-option
3740
3725
  valgrind-option=ARGS  Option to give valgrind, replaces default option(s),
3741
3726
                        can be specified more then once
3759
3744
 
3760
3745
  testcase-timeout=MINUTES Max test case run time (default $default_testcase_timeout)
3761
3746
  suite-timeout=MINUTES Max test suite run time (default $default_suite_timeout)
3762
 
  warnings | log-warnings Pass --log-warnings to drizzled
 
3747
  warnings | log-warnings Pass --log-warnings to mysqld
3763
3748
 
3764
3749
  sleep=SECONDS         Passed to drizzletest, will be used as fixed sleep time
3765
3750
 
3766
3751
HERE
3767
 
  dtr_exit(1);
 
3752
  mtr_exit(1);
3768
3753
 
3769
3754
}