497
464
# Control what test suites or cases to run
498
465
'force' => \$opt_force,
466
'skip-master-binlog' => \$opt_skip_master_binlog,
467
'skip-slave-binlog' => \$opt_skip_slave_binlog,
499
468
'do-test=s' => \$opt_do_test,
500
469
'start-from=s' => \$opt_start_from,
501
470
'suite|suites=s' => \$opt_suites,
502
471
'skip-rpl' => \$opt_skip_rpl,
503
472
'skip-test=s' => \$opt_skip_test,
473
'big-test' => \$opt_big_test,
504
474
'combination=s' => \@opt_combinations,
505
475
'skip-combination' => \$opt_skip_combination,
508
478
'master_port=i' => \$opt_master_myport,
509
479
'slave_port=i' => \$opt_slave_myport,
510
'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,
480
'mtr-build-thread=i' => \$opt_mtr_build_thread,
515
482
# Test case authoring
516
483
'record' => \$opt_record,
517
484
'check-testcases' => \$opt_check_testcases,
518
485
'mark-progress' => \$opt_mark_progress,
520
# Extra options used when starting drizzled
521
'drizzled=s' => \@opt_extra_drizzled_opt,
522
'engine=s' => \$opt_engine,
487
# Extra options used when starting mysqld
488
'mysqld=s' => \@opt_extra_mysqld_opt,
524
490
# Run test on running server
525
491
'extern' => \$opt_extern,
528
'subunit' => \$opt_subunit,
531
494
'gdb' => \$opt_gdb,
533
495
'client-gdb' => \$opt_client_gdb,
534
'client-dbx' => \$opt_client_dbx,
535
496
'manual-gdb' => \$opt_manual_gdb,
536
'manual-dbx' => \$opt_manual_dbx,
537
497
'manual-debug' => \$opt_manual_debug,
538
498
'ddd' => \$opt_ddd,
539
499
'client-ddd' => \$opt_client_ddd,
638
598
# Find the absolute path to the test directory
639
if ( ! $opt_testdir )
641
$glob_drizzle_test_dir= cwd();
645
$glob_drizzle_test_dir= $opt_testdir;
647
$default_vardir= "$glob_drizzle_test_dir/var";
648
$default_top_srcdir= "$glob_drizzle_test_dir/..";
649
$default_top_builddir= "$glob_drizzle_test_dir/..";
599
$glob_mysql_test_dir= cwd();
600
$default_vardir= "$glob_mysql_test_dir/var";
651
if ( ! $opt_suitepath )
653
$glob_suite_path= "$glob_drizzle_test_dir/../plugin";
657
$glob_suite_path= $opt_suitepath;
659
602
# In most cases, the base directory we find everything relative to,
660
# is the parent directory of the "drizzle-test" directory. For source
603
# is the parent directory of the "mysql-test" directory. For source
661
604
# distributions, TAR binary distributions and some other packages.
662
$glob_basedir= dirname($glob_drizzle_test_dir);
664
# Figure out which tests we are going to run
665
my $suitedir= "$glob_drizzle_test_dir/suite";
668
opendir(SUITE_DIR, $suitedir)
669
or dtr_error("can't open directory \"$suitedir\": $!");
671
while ( my $elem= readdir(SUITE_DIR) )
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
680
my $local_dir= "$suitedir/$elem";
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
686
$opt_suites_default.= ",$elem";
691
usage("") if $opt_usage;
605
$glob_basedir= dirname($glob_mysql_test_dir);
693
607
# In the RPM case, binaries and libraries are installed in the
694
608
# 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
609
# directory. And we install "/usr/share/mysql-test". Moving up one
610
# more directory relative to "mysql-test" gives us a usable base
697
611
# directory for RPM installs.
698
612
if ( ! $source_dist and ! -d "$glob_basedir/bin" )
700
614
$glob_basedir= dirname($glob_basedir);
703
if ( $opt_testdir and -d $opt_testdir and $opt_vardir and -d $opt_vardir
704
and -f "$opt_vardir/../../drizzled/drizzled")
706
# probably in a VPATH build
707
$glob_builddir= "$opt_vardir/../..";
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;
720
$glob_timers= dtr_init_timers();
617
# Expect mysql-bench to be located adjacent to the source tree, by default
618
$glob_mysql_bench_dir= "$glob_basedir/../mysql-bench"
619
unless defined $glob_mysql_bench_dir;
620
$glob_mysql_bench_dir= undef
621
unless -d $glob_mysql_bench_dir;
624
$source_dist ? $glob_mysql_test_dir : $glob_basedir;
626
$glob_timers= mtr_init_timers();
723
# Find the drizzled executable to be able to find the drizzled version
629
# Find the mysqld executable to be able to find the mysqld version
724
630
# number as early as possible
727
633
# Look for the client binaries directory
728
$path_client_bindir= dtr_path_exists("$glob_builddir/client",
729
"$glob_basedir/client",
634
$path_client_bindir= mtr_path_exists("$glob_basedir/client",
730
635
"$glob_basedir/bin");
732
637
if (!$opt_extern)
734
$exe_drizzled= dtr_exe_exists ("$glob_basedir/drizzled/drizzled",
639
$exe_drizzled= mtr_exe_exists ("$glob_basedir/drizzled/drizzled",
735
640
"$path_client_bindir/drizzled",
736
641
"$glob_basedir/libexec/drizzled",
737
642
"$glob_basedir/bin/drizzled",
738
"$glob_basedir/sbin/drizzled",
739
"$glob_builddir/drizzled/drizzled");
643
"$glob_basedir/sbin/drizzled");
741
# Use the drizzled found above to find out what features are available
742
collect_drizzled_features();
645
# Use the mysqld found above to find out what features are available
646
collect_mysqld_features();
746
$drizzled_variables{'port'}= 4427;
751
$opt_engine= "innodb";
650
$mysqld_variables{'port'}= 4427;
754
653
if ( $opt_comment )
893
824
# --------------------------------------------------------------------------
894
825
if ( $opt_gdb || $opt_client_gdb || $opt_ddd || $opt_client_ddd ||
895
826
$opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug ||
896
$opt_debugger || $opt_client_debugger || $opt_gdb || $opt_manual_gdb)
827
$opt_debugger || $opt_client_debugger )
898
829
# Indicate that we are using debugger
899
830
$glob_debugger= 1;
900
831
if ( $opt_extern )
902
dtr_error("Can't use --extern when using debugger");
833
mtr_error("Can't use --extern when using debugger");
906
837
# --------------------------------------------------------------------------
907
838
# Check if special exe was selected for master or slave
908
839
# --------------------------------------------------------------------------
909
$exe_master_drizzled= $exe_master_drizzled || $exe_drizzled;
910
$exe_slave_drizzled= $exe_slave_drizzled || $exe_drizzled;
840
$exe_master_mysqld= $exe_master_mysqld || $exe_drizzled;
841
$exe_slave_mysqld= $exe_slave_mysqld || $exe_drizzled;
912
843
# --------------------------------------------------------------------------
913
844
# Check valgrind arguments
914
845
# --------------------------------------------------------------------------
915
846
if ( $opt_valgrind or $opt_valgrind_path or @valgrind_args)
917
dtr_report("Turning on valgrind for all executables");
848
mtr_report("Turning on valgrind for all executables");
918
849
$opt_valgrind= 1;
919
$opt_valgrind_drizzled= 1;
850
$opt_valgrind_mysqld= 1;
920
851
$opt_valgrind_drizzletest= 1;
921
$ENV{'VALGRIND_RUN'} = '1';
923
elsif ( $opt_valgrind_drizzled )
853
elsif ( $opt_valgrind_mysqld )
925
dtr_report("Turning on valgrind for drizzled(s) only");
855
mtr_report("Turning on valgrind for mysqld(s) only");
926
856
$opt_valgrind= 1;
928
858
elsif ( $opt_valgrind_drizzletest )
930
dtr_report("Turning on valgrind for drizzletest and drizzle_client_test only");
933
elsif ( $opt_valgrind_drizzleslap )
935
dtr_report("Turning on valgrind for drizzleslap only");
860
mtr_report("Turning on valgrind for drizzletest and drizzle_client_test only");
936
861
$opt_valgrind= 1;
939
864
if ( $opt_callgrind )
941
dtr_report("Turning on valgrind with callgrind for drizzled(s)");
866
mtr_report("Turning on valgrind with callgrind for mysqld(s)");
942
867
$opt_valgrind= 1;
943
$opt_valgrind_drizzled= 1;
868
$opt_valgrind_mysqld= 1;
945
870
# Set special valgrind options unless options passed on command line
946
871
push(@valgrind_args, "--trace-children=yes")
947
872
unless @valgrind_args;
952
dtr_report("Valgrind with Massif tool for drizzled(s)");
954
$opt_valgrind_drizzled= 1;
957
875
if ( $opt_valgrind )
959
877
# Set valgrind_options to default unless already defined
960
878
push(@valgrind_args, @default_valgrind_args)
961
879
unless @valgrind_args;
963
dtr_report("Running valgrind with options \"",
881
mtr_report("Running valgrind with options \"",
964
882
join(" ", @valgrind_args), "\"");
909
# On QNX, /tmp/dir/master.sock and /tmp/dir//master.sock seem to be
910
# considered different, so avoid the extra slash (/) in the socket
912
my $sockdir = $opt_tmpdir;
915
# On some operating systems, there is a limit to the length of a
916
# UNIX domain socket's path far below PATH_MAX, so try to avoid long
918
$sockdir = tempdir(CLEANUP => 0) if ( length($sockdir) >= 70 );
996
path_myddir => "$opt_vardir/master-data",
997
path_myerr => "$opt_vardir/log/master.err",
998
path_pid => "$opt_vardir/run/master.pid",
999
path_sock => "$opt_vardir/master.sock",
1000
port => $opt_master_myport,
1001
secondary_port => $opt_master_myport + $secondary_port_offset,
1002
start_timeout => 400, # enough time create innodb tables
1003
cluster => 0, # index in clusters list
925
path_myddir => "$opt_vardir/master-data",
926
path_myerr => "$opt_vardir/log/master.err",
927
path_pid => "$opt_vardir/run/master.pid",
928
path_sock => "$sockdir/master.sock",
929
port => $opt_master_myport,
930
start_timeout => 400, # enough time create innodb tables
931
cluster => 0, # index in clusters list
1012
path_myddir => "$opt_vardir/master1-data",
1013
path_myerr => "$opt_vardir/log/master1.err",
1014
path_pid => "$opt_vardir/run/master1.pid",
1015
path_sock => "$opt_vardir/master1.sock",
1016
port => $opt_master_myport + 1,
1017
secondary_port => $opt_master_myport + 1 + $secondary_port_offset,
1018
start_timeout => 400, # enough time create innodb tables
1019
cluster => 0, # index in clusters list
940
path_myddir => "$opt_vardir/master1-data",
941
path_myerr => "$opt_vardir/log/master1.err",
942
path_pid => "$opt_vardir/run/master1.pid",
943
path_sock => "$sockdir/master1.sock",
944
port => $opt_master_myport + 1,
945
start_timeout => 400, # enough time create innodb tables
946
cluster => 0, # index in clusters list
1028
path_myddir => "$opt_vardir/slave-data",
1029
path_myerr => "$opt_vardir/log/slave.err",
1030
path_pid => "$opt_vardir/run/slave.pid",
1031
path_sock => "$opt_vardir/slave.sock",
1032
port => $opt_slave_myport,
1033
secondary_port => $opt_slave_myport + $secondary_port_offset,
1034
start_timeout => 400,
1035
cluster => 1, # index in clusters list
955
path_myddir => "$opt_vardir/slave-data",
956
path_myerr => "$opt_vardir/log/slave.err",
957
path_pid => "$opt_vardir/run/slave.pid",
958
path_sock => "$sockdir/slave.sock",
959
port => $opt_slave_myport,
960
start_timeout => 400,
962
cluster => 1, # index in clusters list
1044
path_myddir => "$opt_vardir/slave1-data",
1045
path_myerr => "$opt_vardir/log/slave1.err",
1046
path_pid => "$opt_vardir/run/slave1.pid",
1047
path_sock => "$opt_vardir/slave1.sock",
1048
port => $opt_slave_myport + 1,
1049
secondary_port => $opt_slave_myport + 1 + $secondary_port_offset,
1050
start_timeout => 300,
1051
cluster => -1, # index in clusters list
971
path_myddir => "$opt_vardir/slave1-data",
972
path_myerr => "$opt_vardir/log/slave1.err",
973
path_pid => "$opt_vardir/run/slave1.pid",
974
path_sock => "$sockdir/slave1.sock",
975
port => $opt_slave_myport + 1,
976
start_timeout => 300,
977
cluster => -1, # index in clusters list
1060
path_myddir => "$opt_vardir/slave2-data",
1061
path_myerr => "$opt_vardir/log/slave2.err",
1062
path_pid => "$opt_vardir/run/slave2.pid",
1063
path_sock => "$opt_vardir/slave2.sock",
1064
port => $opt_slave_myport + 2,
1065
secondary_port => $opt_slave_myport + 2 + $secondary_port_offset,
1066
start_timeout => 300,
1067
cluster => -1, # index in clusters list
986
path_myddir => "$opt_vardir/slave2-data",
987
path_myerr => "$opt_vardir/log/slave2.err",
988
path_pid => "$opt_vardir/run/slave2.pid",
989
path_sock => "$sockdir/slave2.sock",
990
port => $opt_slave_myport + 2,
991
start_timeout => 300,
992
cluster => -1, # index in clusters list
1203
1095
##############################################################################
1206
sub collect_drizzled_features () {
1098
sub collect_mysqld_features () {
1207
1099
my $found_variable_list_start= 0;
1208
1100
my $tmpdir= tempdir(CLEANUP => 0); # Directory removed by this function
1211
# Execute "drizzled --help" to get a list
1103
# Execute "mysqld --help --verbose" to get a list
1212
1104
# list of all features and settings
1214
# --no-defaults are to avoid loading
1106
# --no-defaults and --skip-grant-tables are to avoid loading
1215
1107
# system-wide configs and plugins
1217
my $list= `$exe_drizzled --no-defaults --help`;
1109
# --datadir must exist, mysqld will chdir into it
1111
my $list= `$exe_drizzled --no-defaults --datadir=$tmpdir --skip-grant-tables --verbose --help`;
1219
1113
foreach my $line (split('\n', $list))
1221
1115
# First look for version
1222
if ( !$drizzle_version_id )
1116
if ( !$mysql_version_id )
1224
1118
# Look for version
1225
1119
my $exe_name= basename($exe_drizzled);
1226
dtr_verbose("exe_name: $exe_name");
1120
mtr_verbose("exe_name: $exe_name");
1227
1121
if ( $line =~ /^\S*$exe_name\s\sVer\s([0-9]*)\.([0-9]*)\.([0-9]*)/ )
1229
1123
#print "Major: $1 Minor: $2 Build: $3\n";
1230
$drizzle_version_id= $1*10000 + $2*100 + $3;
1231
#print "drizzle_version_id: $drizzle_version_id\n";
1232
dtr_report("Drizzle Version $1.$2.$3");
1124
$mysql_version_id= $1*10000 + $2*100 + $3;
1125
#print "mysql_version_id: $mysql_version_id\n";
1126
mtr_report("MySQL Version $1.$2.$3");
1131
if (!$found_variable_list_start)
1133
# Look for start of variables list
1134
if ( $line =~ /[\-]+\s[\-]+/ )
1136
$found_variable_list_start= 1;
1141
# Put variables into hash
1142
if ( $line =~ /^([\S]+)[ \t]+(.*?)\r?$/ )
1144
# print "$1=\"$2\"\n";
1145
$mysqld_variables{$1}= $2;
1149
# The variable list is ended with a blank line
1150
if ( $line =~ /^[\s]*$/ )
1156
# Send out a warning, we should fix the variables that has no
1157
# space between variable name and it's value
1158
# or should it be fixed width column parsing? It does not
1159
# look like that in function my_print_variables in my_getopt.c
1160
mtr_warning("Could not parse variable list line : $line");
1236
1166
rmtree($tmpdir);
1237
dtr_error("Could not find version of Drizzle") unless $drizzle_version_id;
1167
mtr_error("Could not find version of MySQL") unless $mysql_version_id;
1168
mtr_error("Could not find variabes list") unless $found_variable_list_start;
1242
1173
sub run_query($$) {
1243
my ($drizzled, $query)= @_;
1174
my ($mysqld, $query)= @_;
1246
dtr_init_args(\$args);
1177
mtr_init_args(\$args);
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);
1179
mtr_add_arg($args, "--no-defaults");
1180
mtr_add_arg($args, "--user=%s", $opt_user);
1181
mtr_add_arg($args, "--port=%d", $mysqld->{'port'});
1182
mtr_add_arg($args, "--silent"); # Tab separated output
1183
mtr_add_arg($args, "-e '%s'", $query);
1255
1185
my $cmd= "$exe_drizzle " . join(' ', @$args);
1256
dtr_verbose("cmd: $cmd");
1186
mtr_verbose("cmd: $cmd");
1261
sub collect_drizzled_features_from_running_server ()
1191
sub collect_mysqld_features_from_running_server ()
1263
my $list= run_query($master->[0], "use drizzle; SHOW VARIABLES");
1193
my $list= run_query($master->[0], "use mysql; SHOW VARIABLES");
1265
1195
foreach my $line (split('\n', $list))
1286
1216
$exe_libtool= "../libtool";
1287
1217
if ($opt_valgrind or $glob_debugger)
1289
dtr_report("Using \"$exe_libtool\" when running valgrind or debugger");
1219
mtr_report("Using \"$exe_libtool\" when running valgrind or debugger");
1223
# Look for my_print_defaults
1224
$exe_my_print_defaults=
1226
"$path_client_bindir/my_print_defaults",
1227
"$glob_basedir/extra/my_print_defaults");
1293
1229
# Look for perror
1294
1230
$exe_perror= "perror";
1296
1232
# 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");
1233
$exe_drizzlecheck= mtr_exe_exists("$path_client_bindir/drizzlecheck");
1234
$exe_drizzledump= mtr_exe_exists("$path_client_bindir/drizzledump");
1235
$exe_drizzleimport= mtr_exe_exists("$path_client_bindir/drizzleimport");
1236
$exe_drizzlebinlog= mtr_exe_exists("$path_client_bindir/drizzlebinlog");
1237
$exe_drizzleadmin= mtr_exe_exists("$path_client_bindir/drizzleadmin");
1238
$exe_drizzle= mtr_exe_exists("$path_client_bindir/drizzle");
1302
1240
if (!$opt_extern)
1304
1242
# Look for SQL scripts directory
1305
if ( $drizzle_version_id >= 50100 )
1243
if ( $mysql_version_id >= 50100 )
1307
$exe_drizzleslap= dtr_exe_exists("$path_client_bindir/drizzleslap");
1245
$exe_drizzleslap= mtr_exe_exists("$path_client_bindir/drizzleslap");
1311
# Look for schema_writer
1313
$exe_schemawriter= dtr_exe_exists("$glob_basedir/drizzled/message/schema_writer",
1314
"$glob_builddir/drizzled/message/schema_writer");
1317
1249
# Look for drizzletest executable
1319
$exe_drizzletest= dtr_exe_exists("$path_client_bindir/drizzletest");
1251
$exe_drizzletest= mtr_exe_exists("$path_client_bindir/drizzletest");
1322
1254
# Look for drizzle_client_test executable which may _not_ exist in
1323
1255
# some versions, test using it should be skipped
1325
1257
$exe_drizzle_client_test=
1326
dtr_exe_maybe_exists(
1258
mtr_exe_maybe_exists(
1327
1259
"$glob_basedir/tests/drizzle_client_test",
1328
1260
"$glob_basedir/bin/drizzle_client_test");
1436
1353
my $deb_version;
1437
1354
if ( $opt_valgrind and -d $debug_libraries_path and
1438
1355
(! -e '/etc/debian_version' or
1439
($deb_version= dtr_grab_file('/etc/debian_version')) !~ /^[0-9]+\.[0-9]$/ or
1356
($deb_version= mtr_grab_file('/etc/debian_version')) !~ /^[0-9]+\.[0-9]$/ or
1440
1357
$deb_version > 3.1 ) )
1442
1359
push(@ld_library_paths, $debug_libraries_path);
1445
$ENV{'LD_LIBRARY_PATH'}= join(":",
1362
$ENV{'LD_LIBRARY_PATH'}= join(":", @ld_library_paths,
1446
1363
$ENV{'LD_LIBRARY_PATH'} ?
1447
split(':', $ENV{'LD_LIBRARY_PATH'}) : (),
1449
dtr_debug("LD_LIBRARY_PATH: $ENV{'LD_LIBRARY_PATH'}");
1364
split(':', $ENV{'LD_LIBRARY_PATH'}) : ());
1365
mtr_debug("LD_LIBRARY_PATH: $ENV{'LD_LIBRARY_PATH'}");
1451
1367
$ENV{'DYLD_LIBRARY_PATH'}= join(":", @ld_library_paths,
1452
1368
$ENV{'DYLD_LIBRARY_PATH'} ?
1453
1369
split(':', $ENV{'DYLD_LIBRARY_PATH'}) : ());
1454
dtr_debug("DYLD_LIBRARY_PATH: $ENV{'DYLD_LIBRARY_PATH'}");
1370
mtr_debug("DYLD_LIBRARY_PATH: $ENV{'DYLD_LIBRARY_PATH'}");
1456
1372
# The environment variable used for shared libs on AIX
1457
1373
$ENV{'SHLIB_PATH'}= join(":", @ld_library_paths,
1458
1374
$ENV{'SHLIB_PATH'} ?
1459
1375
split(':', $ENV{'SHLIB_PATH'}) : ());
1460
dtr_debug("SHLIB_PATH: $ENV{'SHLIB_PATH'}");
1376
mtr_debug("SHLIB_PATH: $ENV{'SHLIB_PATH'}");
1462
1378
# The environment variable used for shared libs on hp-ux
1463
1379
$ENV{'LIBPATH'}= join(":", @ld_library_paths,
1464
1380
$ENV{'LIBPATH'} ?
1465
1381
split(':', $ENV{'LIBPATH'}) : ());
1466
dtr_debug("LIBPATH: $ENV{'LIBPATH'}");
1382
mtr_debug("LIBPATH: $ENV{'LIBPATH'}");
1468
1384
# --------------------------------------------------------------------------
1469
1385
# Also command lines in .opt files may contain env vars
1499
1413
$ENV{'SLAVE_MYPORT'}= $slave->[0]->{'port'};
1500
1414
$ENV{'SLAVE_MYPORT1'}= $slave->[1]->{'port'};
1501
1415
$ENV{'SLAVE_MYPORT2'}= $slave->[2]->{'port'};
1502
$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'};
1507
$ENV{'DTR_BUILD_THREAD'}= $opt_dtr_build_thread;
1509
$ENV{'EXE_DRIZZLE'}= $exe_drizzle;
1416
$ENV{'DRIZZLE_TCP_PORT'}= $mysqld_variables{'port'};
1418
$ENV{MTR_BUILD_THREAD}= $opt_mtr_build_thread;
1420
$ENV{'EXE_MYSQL'}= $exe_drizzle;
1422
# ----------------------------------------------------
1423
# Setup env so childs can execute mysqlcheck
1424
# ----------------------------------------------------
1425
my $cmdline_mysqlcheck=
1426
mtr_native_path($exe_drizzlecheck) .
1427
" --no-defaults --debug-check -uroot " .
1428
"--port=$master->[0]->{'port'} ";
1432
$cmdline_mysqlcheck .=
1433
" --debug=d:t:A,$path_vardir_trace/log/mysqlcheck.trace";
1435
$ENV{'DRIZZLE_CHECK'}= $cmdline_mysqlcheck;
1512
1437
# ----------------------------------------------------
1513
1438
# Setup env to childs can execute myqldump
1514
1439
# ----------------------------------------------------
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) .
1519
" --no-defaults -uroot " .
1520
" --port=$master->[0]->{'secondary_port'} ";
1440
my $cmdline_mysqldump= generate_cmdline_mysqldump($master->[0]);
1441
my $cmdline_mysqldumpslave= generate_cmdline_mysqldump($slave->[0]);
1522
1443
if ( $opt_debug )
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";
1445
$cmdline_mysqldump .=
1446
" --debug=d:t:A,$path_vardir_trace/log/mysqldump-master.trace";
1447
$cmdline_mysqldumpslave .=
1448
" --debug=d:t:A,$path_vardir_trace/log/mysqldump-slave.trace";
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;
1536
# ----------------------------------------------------
1537
# Setup env so we can execute drizzle client
1538
# ----------------------------------------------------
1539
#my $cmdline_drizzle = generate_cmdline_drizzle($master->[0]);
1540
#$ENV{'DRIZZLE'}= $cmdline_drizzle;
1542
# ----------------------------------------------------
1543
# Setup env so childs can execute drizzleslap
1450
$ENV{'DRIZZLE_DUMP'}= $cmdline_mysqldump;
1451
$ENV{'DRIZZLE_DUMP_SLAVE'}= $cmdline_mysqldumpslave;
1453
# ----------------------------------------------------
1454
# Setup env so childs can execute mysqlslap
1544
1455
# ----------------------------------------------------
1545
1456
if ( $exe_drizzleslap )
1547
my $cmdline_drizzleslap;
1549
if ( $opt_valgrind_drizzleslap )
1551
$cmdline_drizzleslap= "$glob_basedir/libtool --mode=execute valgrind --log-file=$opt_vardir/log/drizzleslap-valgrind.log ";
1553
$cmdline_drizzleslap .=
1554
dtr_native_path($exe_drizzleslap) .
1458
my $cmdline_drizzleslap=
1459
mtr_native_path($exe_drizzleslap) .
1556
1461
"--port=$master->[0]->{'port'} ";
1557
my $cmdline_drizzleslap_secondary=
1558
dtr_native_path($exe_drizzleslap) .
1560
" --port=$master->[0]->{'secondary_port'} ";
1562
1463
if ( $opt_debug )
1564
1465
$cmdline_drizzleslap .=
1565
1466
" --debug=d:t:A,$path_vardir_trace/log/drizzleslap.trace";
1566
$cmdline_drizzleslap_secondary .=
1567
" --debug=d:t:A,$path_vardir_trace/log/drizzleslap.trace";
1569
1468
$ENV{'DRIZZLE_SLAP'}= $cmdline_drizzleslap;
1570
$ENV{'DRIZZLE_SLAP_SECONDARY'}= $cmdline_drizzleslap_secondary;
1575
# ----------------------------------------------------
1576
# Setup env so childs can execute drizzleimport
1577
# ----------------------------------------------------
1578
my $cmdline_drizzleimport=
1579
dtr_native_path($exe_drizzleimport) .
1581
"--port=$master->[0]->{'port'} ";
1585
$cmdline_drizzleimport .=
1586
" --debug=d:t:A,$path_vardir_trace/log/drizzleimport.trace";
1588
$ENV{'DRIZZLE_IMPORT'}= $cmdline_drizzleimport;
1591
# ----------------------------------------------------
1592
# Setup env so childs can execute drizzle
1593
# ----------------------------------------------------
1594
my $cmdline_drizzle=
1595
dtr_native_path($exe_drizzle) .
1596
" --no-defaults --host=localhost --user=root --password= " .
1597
"--port=$master->[0]->{'port'} ";
1598
my $cmdline_drizzle_secondary=
1599
dtr_native_path($exe_drizzle) .
1600
" --no-defaults --host=localhost --user=root --password= " .
1601
" --port=$master->[0]->{'secondary_port'} ";
1603
$ENV{'DRIZZLE'}= $cmdline_drizzle;
1604
$ENV{'DRIZZLE_SECONDARY'}= $cmdline_drizzle_secondary;
1473
# ----------------------------------------------------
1474
# Setup env so childs can execute mysqlimport
1475
# ----------------------------------------------------
1476
my $cmdline_mysqlimport=
1477
mtr_native_path($exe_drizzleimport) .
1478
" -uroot --debug-check " .
1479
"--port=$master->[0]->{'port'} ";
1483
$cmdline_mysqlimport .=
1484
" --debug=d:t:A,$path_vardir_trace/log/mysqlimport.trace";
1486
$ENV{'DRIZZLE_IMPORT'}= $cmdline_mysqlimport;
1489
# ----------------------------------------------------
1490
# Setup env so childs can execute mysqlbinlog
1491
# ----------------------------------------------------
1492
my $cmdline_mysqlbinlog=
1493
mtr_native_path($exe_drizzlebinlog) .
1494
" --no-defaults --disable-force-if-open --debug-check";
1498
$cmdline_mysqlbinlog .=
1499
" --debug=d:t:A,$path_vardir_trace/log/mysqlbinlog.trace";
1501
$ENV{'DRIZZLE_BINLOG'}= $cmdline_mysqlbinlog;
1503
# ----------------------------------------------------
1504
# Setup env so childs can execute mysql
1505
# ----------------------------------------------------
1507
mtr_native_path($exe_drizzle) .
1508
" --no-defaults --debug-check --host=localhost --user=root --password= " .
1509
"--port=$master->[0]->{'port'} ";
1511
$ENV{'MYSQL'}= $cmdline_mysql;
1606
1513
# ----------------------------------------------------
1607
1514
# Setup env so childs can execute bug25714
1943
drizzled_start($master->[0],[],[]);
1853
mysqld_start($master->[0],[],[]);
1944
1854
if ( ! $master->[0]->{'pid'} )
1946
dtr_error("Can't start the drizzled server");
1856
mtr_error("Can't start the mysqld server");
1950
dtr_init_args(\$args);
1860
mtr_init_args(\$args);
1952
dtr_add_arg($args, "--user=%s", $opt_user);
1862
mtr_add_arg($args, "--user=%s", $opt_user);
1954
1864
if ( $opt_small_bench )
1956
dtr_add_arg($args, "--small-test");
1957
dtr_add_arg($args, "--small-tables");
1866
mtr_add_arg($args, "--small-test");
1867
mtr_add_arg($args, "--small-tables");
1960
chdir($glob_drizzle_bench_dir)
1961
or dtr_error("Couldn't chdir to '$glob_drizzle_bench_dir': $!");
1870
chdir($glob_mysql_bench_dir)
1871
or mtr_error("Couldn't chdir to '$glob_mysql_bench_dir': $!");
1963
1873
if ( ! $benchmark )
1965
dtr_run("$glob_drizzle_bench_dir/run-all-tests", $args, "", "", "", "");
1875
mtr_add_arg($args, "--log");
1876
mtr_run("$glob_mysql_bench_dir/run-all-tests", $args, "", "", "", "");
1966
1877
# FIXME check result code?!
1968
1879
elsif ( -x $benchmark )
1970
dtr_run("$glob_drizzle_bench_dir/$benchmark", $args, "", "", "", "");
1881
mtr_run("$glob_mysql_bench_dir/$benchmark", $args, "", "", "", "");
1971
1882
# FIXME check result code?!
1975
dtr_error("Benchmark $benchmark not found");
1886
mtr_error("Benchmark $benchmark not found");
1978
chdir($glob_drizzle_test_dir); # Go back
1889
chdir($glob_mysql_test_dir); # Go back
1981
1892
stop_masters();
2541
2473
my $prefix= ""; # If drizzletest server arg
2543
dtr_add_arg($args, "%s--no-defaults", $prefix);
2547
dtr_add_arg($args, "%s--default-storage-engine=%s", $prefix, $opt_engine);
2550
if ( $drizzle_version_id >= 50036)
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);
2556
dtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix);
2475
mtr_add_arg($args, "%s--no-defaults", $prefix);
2477
mtr_add_arg($args, "%s--basedir=%s", $prefix, $path_my_basedir);
2479
if ( $mysql_version_id >= 50036)
2481
# By default, prevent the started mysqld to access files outside of vardir
2482
mtr_add_arg($args, "%s--secure-file-priv=%s", $prefix, $opt_vardir);
2485
if ( $mysql_version_id >= 50000 )
2487
mtr_add_arg($args, "%s--log-bin-trust-function-creators", $prefix);
2490
mtr_add_arg($args, "%s--default-character-set=utf8", $prefix);
2491
mtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix);
2558
2493
# Increase default connect_timeout to avoid intermittent
2559
2494
# disconnects when test servers are put under load
2560
2495
# see BUG#28359
2561
dtr_add_arg($args, "%s--mysql-protocol.connect-timeout=60", $prefix);
2564
# When drizzled is run by a root user(euid is 0), it will fail
2496
mtr_add_arg($args, "%s--connect-timeout=60", $prefix);
2499
# When mysqld is run by a root user(euid is 0), it will fail
2565
2500
# to start unless we specify what user to run as, see BUG#30630
2567
if (grep(/^--user/, @$extra_opt, @opt_extra_drizzled_opt) == 0) {
2568
dtr_add_arg($args, "%s--user=root", $prefix);
2502
if (grep(/^--user/, @$extra_opt, @opt_extra_mysqld_opt) == 0) {
2503
mtr_add_arg($args, "%s--user=root", $prefix);
2571
dtr_add_arg($args, "%s--pid-file=%s", $prefix,
2572
$drizzled->{'path_pid'});
2574
dtr_add_arg($args, "%s--mysql-protocol.port=%d", $prefix,
2575
$drizzled->{'port'});
2577
dtr_add_arg($args, "%s--drizzle-protocol.port=%d", $prefix,
2578
$drizzled->{'secondary_port'});
2580
dtr_add_arg($args, "%s--datadir=%s", $prefix,
2581
$drizzled->{'path_myddir'});
2583
dtr_add_arg($args, "%s--mysql-unix-socket-protocol.path=%s", $prefix,
2584
$drizzled->{'path_sock'});
2506
mtr_add_arg($args, "%s--pid-file=%s", $prefix,
2507
$mysqld->{'path_pid'});
2509
mtr_add_arg($args, "%s--port=%d", $prefix,
2512
mtr_add_arg($args, "%s--datadir=%s", $prefix,
2513
$mysqld->{'path_myddir'});
2515
my $log_base_path= "$opt_vardir/log/$mysqld->{'type'}$sidx";
2516
mtr_add_arg($args, "%s--log=%s.log", $prefix, $log_base_path);
2518
"%s--log-slow-queries=%s-slow.log", $prefix, $log_base_path);
2586
2520
# Check if "extra_opt" contains --skip-log-bin
2587
if ( $drizzled->{'type'} eq 'master' )
2521
my $skip_binlog= grep(/^--skip-log-bin/, @$extra_opt, @opt_extra_mysqld_opt);
2522
if ( $mysqld->{'type'} eq 'master' )
2589
dtr_add_arg($args, "%s--server-id=%d", $prefix,
2524
if (! ($opt_skip_master_binlog || $skip_binlog) )
2526
mtr_add_arg($args, "%s--log-bin=%s/log/master-bin%s", $prefix,
2527
$opt_vardir, $sidx);
2530
mtr_add_arg($args, "%s--server-id=%d", $prefix,
2590
2531
$idx > 0 ? $idx + 101 : 1);
2593
"%s--innodb.data-file-path=ibdata1:20M:autoextend", $prefix);
2533
mtr_add_arg($args, "%s--loose-innodb_data_file_path=ibdata1:10M:autoextend",
2536
mtr_add_arg($args, "%s--local-infile", $prefix);
2538
if ( $idx > 0 or !$use_innodb)
2540
mtr_add_arg($args, "%s--loose-skip-innodb", $prefix);
2598
dtr_error("unknown drizzled type")
2599
unless $drizzled->{'type'} eq 'slave';
2545
mtr_error("unknown mysqld type")
2546
unless $mysqld->{'type'} eq 'slave';
2548
#mtr_add_arg($args, "%s--init-rpl-role=slave", $prefix);
2549
if (! ( $opt_skip_slave_binlog || $skip_binlog ))
2551
mtr_add_arg($args, "%s--log-bin=%s/log/slave%s-bin", $prefix,
2552
$opt_vardir, $sidx); # FIXME use own dir for binlogs
2553
mtr_add_arg($args, "%s--log-slave-updates", $prefix);
2556
mtr_add_arg($args, "%s--master-retry-count=10", $prefix);
2558
mtr_add_arg($args, "%s--relay-log=%s/log/slave%s-relay-bin", $prefix,
2559
$opt_vardir, $sidx);
2560
mtr_add_arg($args, "%s--report-host=127.0.0.1", $prefix);
2561
mtr_add_arg($args, "%s--report-port=%d", $prefix,
2563
# mtr_add_arg($args, "%s--report-user=root", $prefix);
2564
mtr_add_arg($args, "%s--loose-skip-innodb", $prefix);
2565
mtr_add_arg($args, "%s--skip-slave-start", $prefix);
2601
2567
# Directory where slaves find the dumps generated by "load data"
2602
2568
# on the server. The path need to have constant length otherwise
2603
2569
# test results will vary, thus a relative path is used.
2604
2570
my $slave_load_path= "../tmp";
2571
mtr_add_arg($args, "%s--slave-load-tmpdir=%s", $prefix,
2573
mtr_add_arg($args, "%s--set-variable=slave_net_timeout=120", $prefix);
2606
2575
if ( @$slave_master_info )
2608
2577
foreach my $arg ( @$slave_master_info )
2610
dtr_add_arg($args, "%s%s", $prefix, $arg);
2579
mtr_add_arg($args, "%s%s", $prefix, $arg);
2615
2584
my $slave_server_id= 2 + $idx;
2616
2585
my $slave_rpl_rank= $slave_server_id;
2617
dtr_add_arg($args, "%s--server-id=%d", $prefix, $slave_server_id);
2586
mtr_add_arg($args, "%s--server-id=%d", $prefix, $slave_server_id);
2587
# mtr_add_arg($args, "%s--rpl-recovery-rank=%d", $prefix, $slave_rpl_rank);
2621
2591
if ( $opt_debug )
2623
dtr_add_arg($args, "%s--debug=d:t:i:A,%s/log/%s%s.trace",
2624
$prefix, $path_vardir_trace, $drizzled->{'type'}, $sidx);
2593
mtr_add_arg($args, "%s--debug=d:t:i:A,%s/log/%s%s.trace",
2594
$prefix, $path_vardir_trace, $mysqld->{'type'}, $sidx);
2627
dtr_add_arg($args, "%s--sort-buffer-size=256K", $prefix);
2628
dtr_add_arg($args, "%s--max-heap-table-size=1M", $prefix);
2597
mtr_add_arg($args, "%s--key_buffer_size=1M", $prefix);
2598
mtr_add_arg($args, "%s--sort_buffer=256K", $prefix);
2599
mtr_add_arg($args, "%s--max_heap_table_size=1M", $prefix);
2630
2601
if ( $opt_warnings )
2632
dtr_add_arg($args, "%s--log-warnings", $prefix);
2603
mtr_add_arg($args, "%s--log-warnings", $prefix);
2635
# Indicate to "drizzled" it will be debugged in debugger
2606
# Indicate to "mysqld" it will be debugged in debugger
2636
2607
if ( $glob_debugger )
2638
dtr_add_arg($args, "%s--gdb", $prefix);
2609
mtr_add_arg($args, "%s--gdb", $prefix);
2641
2612
my $found_skip_core= 0;
2642
foreach my $arg ( @opt_extra_drizzled_opt, @$extra_opt )
2613
foreach my $arg ( @opt_extra_mysqld_opt, @$extra_opt )
2644
2615
# Allow --skip-core-file to be set in <testname>-[master|slave].opt file
2645
2616
if ($arg eq "--skip-core-file")
2647
2618
$found_skip_core= 1;
2620
elsif ($skip_binlog and mtr_match_prefix($arg, "--binlog-format"))
2622
; # Dont add --binlog-format when running without binlog
2651
dtr_add_arg($args, "%s%s", $prefix, $arg);
2626
mtr_add_arg($args, "%s%s", $prefix, $arg);
2654
2629
if ( !$found_skip_core )
2656
dtr_add_arg($args, "%s%s", $prefix, "--core-file");
2631
mtr_add_arg($args, "%s%s", $prefix, "--core-file");
2636
#mtr_add_arg($args, "%s--rpl-recovery-rank=1", $prefix);
2637
#mtr_add_arg($args, "%s--init-rpl-role=master", $prefix);
2639
elsif ( $mysqld->{'type'} eq 'master' )
2641
mtr_add_arg($args, "%s--open-files-limit=1024", $prefix);
2737
2718
# Remove the pidfile
2738
unlink($drizzled->{'path_pid'});
2719
unlink($mysqld->{'path_pid'});
2740
2721
if ( defined $exe )
2742
dtr_verbose("running Drizzle with: $exe @$args");
2743
$pid= dtr_spawn($exe, $args, "",
2744
$drizzled->{'path_myerr'},
2745
$drizzled->{'path_myerr'},
2723
$pid= mtr_spawn($exe, $args, "",
2724
$mysqld->{'path_myerr'},
2725
$mysqld->{'path_myerr'},
2747
2727
{ append_log_file => 1 });
2751
if ( $wait_for_pid_file && !sleep_until_file_created($drizzled->{'path_pid'},
2752
$drizzled->{'start_timeout'},
2731
if ( $wait_for_pid_file && !sleep_until_file_created($mysqld->{'path_pid'},
2732
$mysqld->{'start_timeout'},
2756
dtr_error("Failed to start drizzled $drizzled->{'type'}");
2736
mtr_error("Failed to start mysqld $mysqld->{'type'}");
2760
2740
# Remember pid of the started process
2761
$drizzled->{'pid'}= $pid;
2741
$mysqld->{'pid'}= $pid;
2763
2743
# Remember options used when starting
2764
$drizzled->{'start_opts'}= $extra_opt;
2765
$drizzled->{'start_slave_master_info'}= $slave_master_info;
2744
$mysqld->{'start_opts'}= $extra_opt;
2745
$mysqld->{'start_slave_master_info'}= $slave_master_info;
2767
dtr_verbose("drizzled pid: $pid");
2747
mtr_verbose("mysqld pid: $pid");
2772
2752
sub stop_all_servers () {
2774
dtr_report("Stopping All Servers");
2754
mtr_report("Stopping All Servers");
2776
2756
my %admin_pids; # hash of admin processes that requests shutdown
2777
2757
my @kill_pids; # list of processes to shutdown/kill
2780
2760
# Start shutdown of all started masters
2781
foreach my $drizzled (@{$slave}, @{$master})
2761
foreach my $mysqld (@{$slave}, @{$master})
2783
if ( $drizzled->{'pid'} )
2763
if ( $mysqld->{'pid'} )
2785
$pid= dtr_server_shutdown($drizzled);
2765
$pid= mtr_mysqladmin_start($mysqld, "shutdown", 70);
2786
2766
$admin_pids{$pid}= 1;
2788
2768
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'},
2769
pid => $mysqld->{'pid'},
2770
real_pid => $mysqld->{'real_pid'},
2771
pidfile => $mysqld->{'path_pid'},
2772
sockfile => $mysqld->{'path_sock'},
2773
port => $mysqld->{'port'},
2774
errfile => $mysqld->{'path_myerr'},
2797
$drizzled->{'pid'}= 0; # Assume we are done with it
2777
$mysqld->{'pid'}= 0; # Assume we are done with it
2801
2781
# Wait blocking until all shutdown processes has completed
2802
dtr_wait_blocking(\%admin_pids);
2782
mtr_wait_blocking(\%admin_pids);
2804
2784
# Make sure that process has shutdown else try to kill them
2805
dtr_check_stop_servers(\@kill_pids);
2785
mtr_check_stop_servers(\@kill_pids);
3081
3062
sub run_check_testcase ($$) {
3083
3064
my $mode= shift;
3084
my $drizzled= shift;
3086
my $name= "check-" . $drizzled->{'type'} . $drizzled->{'idx'};
3067
my $name= "check-" . $mysqld->{'type'} . $mysqld->{'idx'};
3089
dtr_init_args(\$args);
3091
dtr_add_arg($args, "--no-defaults");
3092
dtr_add_arg($args, "--silent");
3093
dtr_add_arg($args, "--tmpdir=%s", $opt_tmpdir);
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=");
3100
dtr_add_arg($args, "-R");
3101
dtr_add_arg($args, "$opt_vardir/tmp/$name.result");
3070
mtr_init_args(\$args);
3072
mtr_add_arg($args, "--no-defaults");
3073
mtr_add_arg($args, "--silent");
3074
mtr_add_arg($args, "--tmpdir=%s", $opt_tmpdir);
3076
mtr_add_arg($args, "--port=%d", $mysqld->{'port'});
3077
mtr_add_arg($args, "--database=test");
3078
mtr_add_arg($args, "--user=%s", $opt_user);
3079
mtr_add_arg($args, "--password=");
3081
mtr_add_arg($args, "-R");
3082
mtr_add_arg($args, "$opt_vardir/tmp/$name.result");
3103
3084
if ( $mode eq "before" )
3105
dtr_add_arg($args, "--record");
3110
dtr_add_arg($args, "--testdir=%s", $opt_testdir);
3113
my $res = dtr_run_test($exe_drizzletest,$args,
3086
mtr_add_arg($args, "--record");
3089
my $res = mtr_run_test($exe_drizzletest,$args,
3114
3090
"include/check-testcase.test", "", "", "");
3116
3092
if ( $res == 1 and $mode eq "after")
3118
dtr_run("diff",["-u",
3094
mtr_run("diff",["-u",
3119
3095
"$opt_vardir/tmp/$name.result",
3120
3096
"$opt_vardir/tmp/$name.reject"],
3121
3097
"", "", "", "");
3125
dtr_error("Could not execute 'check-testcase' $mode testcase");
3101
mtr_error("Could not execute 'check-testcase' $mode testcase");
3169
3145
my $exe= $exe_drizzletest;
3172
dtr_init_args(\$args);
3148
mtr_init_args(\$args);
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);
3150
mtr_add_arg($args, "--no-defaults");
3151
mtr_add_arg($args, "--silent");
3152
mtr_add_arg($args, "--tmpdir=%s", $opt_tmpdir);
3153
mtr_add_arg($args, "--logdir=%s/log", $opt_vardir);
3179
3155
# Log line number and time for each line in .test file
3180
dtr_add_arg($args, "--mark-progress")
3156
mtr_add_arg($args, "--mark-progress")
3181
3157
if $opt_mark_progress;
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=");
3160
mtr_add_arg($args, "--port=%d", $master->[0]->{'port'});
3161
mtr_add_arg($args, "--database=test");
3162
mtr_add_arg($args, "--user=%s", $opt_user);
3163
mtr_add_arg($args, "--password=");
3190
3166
if ( $opt_strace_client )
3192
3168
$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");
3169
mtr_add_arg($args, "-o");
3170
mtr_add_arg($args, "%s/log/drizzletest.strace", $opt_vardir);
3171
mtr_add_arg($args, "$exe_drizzletest");
3198
3174
if ( $opt_timer )
3200
dtr_add_arg($args, "--timer-file=%s/log/timer", $opt_vardir);
3176
mtr_add_arg($args, "--timer-file=%s/log/timer", $opt_vardir);
3203
3179
if ( $opt_compress )
3205
dtr_add_arg($args, "--compress");
3181
mtr_add_arg($args, "--compress");
3208
3184
if ( $opt_sleep )
3210
dtr_add_arg($args, "--sleep=%d", $opt_sleep);
3186
mtr_add_arg($args, "--sleep=%d", $opt_sleep);
3213
3189
if ( $opt_debug )
3215
dtr_add_arg($args, "--debug=d:t:A,%s/log/drizzletest.trace",
3191
mtr_add_arg($args, "--debug=d:t:A,%s/log/drizzletest.trace",
3216
3192
$path_vardir_trace);
3221
dtr_add_arg($args, "--testdir=%s", $opt_testdir);
3225
3195
# ----------------------------------------------------------------------
3226
3196
# export DRIZZLE_TEST variable containing <path>/drizzletest <args>
3227
3197
# ----------------------------------------------------------------------
3228
3198
$ENV{'DRIZZLE_TEST'}=
3229
dtr_native_path($exe_drizzletest) . " " . join(" ", @$args);
3199
mtr_native_path($exe_drizzletest) . " " . join(" ", @$args);
3231
3201
# ----------------------------------------------------------------------
3232
3202
# Add arguments that should not go into the DRIZZLE_TEST env var