~drizzle-trunk/drizzle/development

0.67.329 by Bernt M. Johnsen
More server stuff
1
#!/usr/bin/perl
2
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
3
# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
0.67.329 by Bernt M. Johnsen
More server stuff
4
# Use is subject to license terms.
5
#
6
# This program is free software; you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation; version 2 of the License.
9
#
10
# This program is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
# General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with this program; if not, write to the Free Software
17
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
18
# USA
19
20
#################### FOR THE MOMENT THIS SCRIPT IS FOR TESTING PURPOSES
21
22
use lib 'lib';
23
use lib "$ENV{RQG_HOME}/lib";
24
use Carp;
25
use strict;
26
use GenTest;
0.67.521 by eve
provide textual exit codes for various scripts and not jus numbers
27
use GenTest::Constants;
0.67.359 by Bernt M. Johnsen
Use GenTest module in runall-new.pl
28
use GenTest::Properties;
29
use GenTest::App::GenTest;
0.67.404 by Bernt M. Johnsen
Moved server handling to lib/DBServer
30
use DBServer::DBServer;
31
use DBServer::MySQL::MySQLd;
32
use DBServer::MySQL::ReplMySQLd;
0.67.329 by Bernt M. Johnsen
More server stuff
33
34
$| = 1;
0.67.381 by Bernt M. Johnsen
Adjustments after merge
35
if (osWindows()) {
0.67.329 by Bernt M. Johnsen
More server stuff
36
	$SIG{CHLD} = "IGNORE";
37
}
38
39
if (defined $ENV{RQG_HOME}) {
0.67.381 by Bernt M. Johnsen
Adjustments after merge
40
    if (osWindows()) {
0.67.329 by Bernt M. Johnsen
More server stuff
41
        $ENV{RQG_HOME} = $ENV{RQG_HOME}.'\\';
42
    } else {
43
        $ENV{RQG_HOME} = $ENV{RQG_HOME}.'/';
44
    }
45
}
46
47
use Getopt::Long;
48
use GenTest::Constants;
49
use DBI;
50
use Cwd;
51
52
my $database = 'test';
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
53
my @dsns;
0.67.329 by Bernt M. Johnsen
More server stuff
54
55
my ($gendata, @basedirs, @mysqld_options, @vardirs, $rpl_mode,
0.67.374 by Bernt M. Johnsen
Fixed some bugs in runall-new.pl and App::GenTest wrt 2 servers, validators and reporters
56
    $engine, $help, $debug, @validators, @reporters, $grammar_file,
0.67.329 by Bernt M. Johnsen
More server stuff
57
    $redefine_file, $seed, $mask, $mask_level, $mem, $rows,
0.99.14 by Bernt M. Johnsen
valgrind support added to server
58
    $varchar_len, $xml_output, $valgrind, @valgrind_options, $views,
0.67.403 by John H. Embretsen
Accept and pass along all properties needed for XML reporting from runall-new to GenTest.
59
    $start_dirty, $filter, $build_thread, $sqltrace, $testname,
0.107.7 by John H. Embretsen
Add --notnull option to runall-new.pl (was recently added to runall.pl and friends).
60
    $report_xml_tt, $report_xml_tt_type, $report_xml_tt_dest,
61
    $notnull);
0.67.329 by Bernt M. Johnsen
More server stuff
62
0.103.1 by Bernt M. Johnsen
Fixed gendata from default and start-dirty typo
63
my $gendata=''; ## default simple gendata
64
0.67.329 by Bernt M. Johnsen
More server stuff
65
my $threads = my $default_threads = 10;
66
my $queries = my $default_queries = 1000;
67
my $duration = my $default_duration = 3600;
68
69
my @ARGV_saved = @ARGV;
70
71
my $opt_result = GetOptions(
72
	'mysqld=s@' => \$mysqld_options[0],
73
	'mysqld1=s@' => \$mysqld_options[0],
74
	'mysqld2=s@' => \$mysqld_options[1],
0.67.374 by Bernt M. Johnsen
Fixed some bugs in runall-new.pl and App::GenTest wrt 2 servers, validators and reporters
75
    'basedir=s' => \$basedirs[0],
76
    'basedir1=s' => \$basedirs[0],
77
    'basedir2=s' => \$basedirs[1],
78
	#'basedir=s@' => \@basedirs,
79
	'vardir=s' => \$vardirs[0],
80
	'vardir1=s' => \$vardirs[0],
81
	'vardir2=s' => \$vardirs[1],
82
	#'vardir=s@' => \@vardirs,
0.67.329 by Bernt M. Johnsen
More server stuff
83
	'rpl_mode=s' => \$rpl_mode,
84
	'engine=s' => \$engine,
85
	'grammar=s' => \$grammar_file,
86
	'redefine=s' => \$redefine_file,
87
	'threads=i' => \$threads,
88
	'queries=s' => \$queries,
89
	'duration=i' => \$duration,
90
	'help' => \$help,
91
	'debug' => \$debug,
0.67.374 by Bernt M. Johnsen
Fixed some bugs in runall-new.pl and App::GenTest wrt 2 servers, validators and reporters
92
	'validators=s@' => \@validators,
93
	'reporters=s@' => \@reporters,
0.67.329 by Bernt M. Johnsen
More server stuff
94
	'gendata:s' => \$gendata,
0.107.7 by John H. Embretsen
Add --notnull option to runall-new.pl (was recently added to runall.pl and friends).
95
	'notnull' => \$notnull,
0.67.329 by Bernt M. Johnsen
More server stuff
96
	'seed=s' => \$seed,
97
	'mask=i' => \$mask,
98
    'mask-level=i' => \$mask_level,
99
	'mem' => \$mem,
100
	'rows=i' => \$rows,
101
	'varchar-length=i' => \$varchar_len,
102
	'xml-output=s'	=> \$xml_output,
0.67.403 by John H. Embretsen
Accept and pass along all properties needed for XML reporting from runall-new to GenTest.
103
	'report-xml-tt'	=> \$report_xml_tt,
104
	'report-xml-tt-type=s' => \$report_xml_tt_type,
105
	'report-xml-tt-dest=s' => \$report_xml_tt_dest,
106
	'testname=s'		=> \$testname,
0.67.339 by Bernt M. Johnsen
Added replicating server (actually a master/slave pair) + unit test
107
	'valgrind!'	=> \$valgrind,
0.99.14 by Bernt M. Johnsen
valgrind support added to server
108
	'valgrind_options=s@'	=> \@valgrind_options,
0.67.329 by Bernt M. Johnsen
More server stuff
109
	'views'		=> \$views,
110
	'start-dirty'	=> \$start_dirty,
111
	'filter=s'	=> \$filter,
0.103.2 by Bernt M. Johnsen
Sqltrace option for re-runs
112
    'mtr-build-thread=i' => \$build_thread,
113
    'sqltrace' => \$sqltrace
0.67.329 by Bernt M. Johnsen
More server stuff
114
    );
115
116
if (!$opt_result || $help || $basedirs[0] eq '' || not defined $grammar_file) {
117
	help();
118
	exit($help ? 0 : 1);
119
}
120
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
121
say("Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms.");
0.67.329 by Bernt M. Johnsen
More server stuff
122
say("Please see http://forge.mysql.com/wiki/Category:RandomQueryGenerator for more information on this test framework.");
123
say("Starting \n# $0 \\ \n# ".join(" \\ \n# ", @ARGV_saved));
124
125
#
126
# Calculate master and slave ports based on MTR_BUILD_THREAD (MTR
127
# Version 1 behaviour)
128
#
129
130
if (not defined $build_thread) {
131
    if (defined $ENV{MTR_BUILD_THREAD}) {
132
        $build_thread = $ENV{MTR_BUILD_THREAD}
133
    } else {
134
        $build_thread = DEFAULT_MTR_BUILD_THREAD;
135
    }
136
}
137
138
if ( $build_thread eq 'auto' ) {
139
    say ("Please set the environment variable MTR_BUILD_THREAD to a value <> 'auto' (recommended) or unset it (will take the value ".DEFAULT_MTR_BUILD_THREAD.") ");
140
    exit (STATUS_ENVIRONMENT_FAILURE);
141
}
142
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
143
my @ports = (10000 + 10 * $build_thread, 10000 + 10 * $build_thread + 2);
144
145
say("master_port : $ports[0] slave_port : $ports[1] ports : @ports MTR_BUILD_THREAD : $build_thread ");
0.67.329 by Bernt M. Johnsen
More server stuff
146
147
#
148
# If the user has provided two vardirs and one basedir, start second
149
# server using the same basedir
150
#
151
152
if (
153
	($vardirs[1] ne '') && 
154
	($basedirs[1] eq '')
155
    ) {
156
	$basedirs[1] = $basedirs[0];	
157
}
158
159
160
if (
161
	($mysqld_options[1] ne '') && 
162
	($basedirs[1] eq '')
163
    ) {
164
	$basedirs[1] = $basedirs[0];	
165
}
166
167
#
168
# If the user has provided identical basedirs and vardirs, warn of a
169
# potential overlap.
170
#
171
172
if (
173
	($basedirs[0] eq $basedirs[1]) &&
174
	($vardirs[0] eq $vardirs[1]) &&
175
	($rpl_mode eq '')
176
    ) {
177
	croak("Please specify either different --basedir[12] or different --vardir[12] in order to start two MySQL servers");
178
}
179
180
my $client_basedir;
181
0.67.361 by John H. Embretsen
Actually fix runall-new as well, as intended in the previous commit.
182
foreach my $path ("$basedirs[0]/client/RelWithDebInfo", "$basedirs[0]/client/Debug", "$basedirs[0]/client", "$basedirs[0]/bin") {
0.67.329 by Bernt M. Johnsen
More server stuff
183
	if (-e $path) {
184
		$client_basedir = $path;
185
		last;
186
	}
187
}
188
189
#
190
# Start servers. Use rpl_alter if replication is needed.
191
#
192
193
my @server;
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
194
my $rplsrv;
0.67.374 by Bernt M. Johnsen
Fixed some bugs in runall-new.pl and App::GenTest wrt 2 servers, validators and reporters
195
0.99.15 by Bernt M. Johnsen
Fixed some typos
196
if ($rpl_mode ne '') {
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
197
    my @options;
198
    push @options, lc("--$engine") if defined $engine && lc($engine) ne lc('myisam');
199
    
200
    push @options, "--sql-mode=no_engine_substitution" if join(' ', @ARGV_saved) !~ m{sql-mode}io;
201
    
202
    if (defined $mysqld_options[0]) {
203
        push @options, @{$mysqld_options[0]};
0.67.329 by Bernt M. Johnsen
More server stuff
204
    }
0.99.14 by Bernt M. Johnsen
valgrind support added to server
205
    
0.67.404 by Bernt M. Johnsen
Moved server handling to lib/DBServer
206
    $rplsrv = DBServer::MySQL::ReplMySQLd->new(basedir => $basedirs[0],
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
207
                                               master_vardir => $vardirs[0],
208
                                               master_port => $ports[0],
209
                                               slave_vardir => $vardirs[1],
210
                                               slave_port => $ports[1],
211
                                               mode => $rpl_mode,
212
                                               server_options => \@options,
213
                                               valgrind => $valgrind,
214
                                               valgrind_options => \@valgrind_options,
215
                                               start_dirty => $start_dirty);
216
    
217
    my $status = $rplsrv->startServer();
0.99.14 by Bernt M. Johnsen
valgrind support added to server
218
    
0.67.404 by Bernt M. Johnsen
Moved server handling to lib/DBServer
219
    if ($status > DBSTATUS_OK) {
0.67.329 by Bernt M. Johnsen
More server stuff
220
        stopServers();
0.107.10 by John H. Embretsen
runall-new.pl: Use 'dir' instead of 'ls -l' on Windows.
221
        if (osWindows()) {
0.107.11 by John H. Embretsen
runall-new.pl: Convert paths fed to system utils on windows to win-style to avoid errors (there are probably more paths to be converted, but this is a start). Add utility function unix2winPath() to GenTest.pm.
222
            say(system("dir ".unix2winPath($rplsrv->master->datadir)));
223
            say(system("dir ".unix2winPath($rplsrv->slave->datadir)));
0.107.10 by John H. Embretsen
runall-new.pl: Use 'dir' instead of 'ls -l' on Windows.
224
        } else {
225
            say(system("ls -l ".$rplsrv->master->datadir));
226
            say(system("ls -l ".$rplsrv->slave->datadir));
227
        }
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
228
        croak("Could not start replicating server pair");
229
    }
230
    
231
    $dsns[0] = $rplsrv->master->dsn($database);
232
    $dsns[1] = undef; ## passed to gentest. No dsn for slave!
233
    $server[0] = $rplsrv->master;
234
    $server[1] = $rplsrv->slave;
235
    
236
} else {
0.67.374 by Bernt M. Johnsen
Fixed some bugs in runall-new.pl and App::GenTest wrt 2 servers, validators and reporters
237
    if ($#basedirs != $#vardirs) {
238
        croak ("The number of basedirs and vardirs must match $#basedirs != $#vardirs")
239
    }
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
240
    foreach my $server_id (0..1) {
241
        next if $basedirs[$server_id] eq '';
242
        
243
        my @options;
244
        push @options, lc("--$engine") if defined $engine && lc($engine) ne lc('myisam');
245
        
246
        push @options, "--sql-mode=no_engine_substitution" if join(' ', @ARGV_saved) !~ m{sql-mode}io;
247
        
248
        if (defined $mysqld_options[$server_id]) {
249
            push @options, @{$mysqld_options[$server_id]};
250
        }
251
        
0.67.404 by Bernt M. Johnsen
Moved server handling to lib/DBServer
252
        $server[$server_id] = DBServer::MySQL::MySQLd->new(basedir => $basedirs[$server_id],
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
253
                                                           vardir => $vardirs[$server_id],
254
                                                           port => $ports[$server_id],
255
                                                           start_dirty => $start_dirty,
256
                                                           valgrind => $valgrind,
257
                                                           valgrind_options => \@valgrind_options,
258
                                                           server_options => \@options);
259
        
260
        my $status = $server[$server_id]->startServer;
261
        
0.67.404 by Bernt M. Johnsen
Moved server handling to lib/DBServer
262
        if ($status > DBSTATUS_OK) {
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
263
            stopServers();
0.107.10 by John H. Embretsen
runall-new.pl: Use 'dir' instead of 'ls -l' on Windows.
264
            if (osWindows()) {
0.107.11 by John H. Embretsen
runall-new.pl: Convert paths fed to system utils on windows to win-style to avoid errors (there are probably more paths to be converted, but this is a start). Add utility function unix2winPath() to GenTest.pm.
265
                say(system("dir ".unix2winPath($server[$server_id]->datadir)));
0.107.10 by John H. Embretsen
runall-new.pl: Use 'dir' instead of 'ls -l' on Windows.
266
            } else {
267
                say(system("ls -l ".$server[$server_id]->datadir));
268
            }
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
269
            croak("Could not start all servers");
270
        }
271
        
272
        if (
273
            ($server_id == 0) ||
274
            ($rpl_mode eq '') 
275
            ) {
276
            $dsns[$server_id] = $server[$server_id]->dsn($database);
277
        }
278
    
279
        if ((defined $dsns[$server_id]) && (defined $engine)) {
280
            my $dbh = DBI->connect($dsns[$server_id], undef, undef, { RaiseError => 1 } );
281
            $dbh->do("SET GLOBAL storage_engine = '$engine'");
282
        }
283
    }
0.67.329 by Bernt M. Johnsen
More server stuff
284
}
285
286
#
287
# Run actual queries
288
#
289
0.67.359 by Bernt M. Johnsen
Use GenTest module in runall-new.pl
290
my $gentestProps = GenTest::Properties->new(
291
    legal => ['grammar',
292
              'dsn',
293
              'engine',
294
              'gendata',
295
              'redefine',
296
              'threads',
297
              'queries',
298
              'duration',
299
              'help',
300
              'debug',
301
              'rpl_mode',
302
              'validators',
303
              'reporters',
304
              'seed',
305
              'mask',
306
              'mask-level',
307
              'rows',
308
              'varchar-length',
309
              'xml-output',
310
              'views',
311
              'start-dirty',
312
              'filter',
0.107.7 by John H. Embretsen
Add --notnull option to runall-new.pl (was recently added to runall.pl and friends).
313
              'notnull',
0.67.381 by Bernt M. Johnsen
Adjustments after merge
314
              'valgrind',
315
              'testname',
0.67.403 by John H. Embretsen
Accept and pass along all properties needed for XML reporting from runall-new to GenTest.
316
              'sqltrace',
0.103.2 by Bernt M. Johnsen
Sqltrace option for re-runs
317
              'report-xml-tt',
0.67.403 by John H. Embretsen
Accept and pass along all properties needed for XML reporting from runall-new to GenTest.
318
              'report-xml-tt-type',
319
              'report-xml-tt-dest']
0.67.359 by Bernt M. Johnsen
Use GenTest module in runall-new.pl
320
    );
321
0.67.329 by Bernt M. Johnsen
More server stuff
322
my @gentest_options;
323
0.67.374 by Bernt M. Johnsen
Fixed some bugs in runall-new.pl and App::GenTest wrt 2 servers, validators and reporters
324
## For backward compatability
325
if ($#validators == 0 and $validators[0] =~ m/,/) {
326
    @validators = split(/,/,$validators[0]);
327
}
328
329
## For backward compatability
330
if ($#reporters == 0 and $reporters[0] =~ m/,/) {
331
    @reporters = split(/,/,$reporters[0]);
332
}
333
0.103.1 by Bernt M. Johnsen
Fixed gendata from default and start-dirty typo
334
$gentestProps->property('start-dirty',1) if defined $start_dirty;
0.67.359 by Bernt M. Johnsen
Use GenTest module in runall-new.pl
335
$gentestProps->gendata($gendata);
336
$gentestProps->engine($engine) if defined $engine;
337
$gentestProps->rpl_mode($rpl_mode) if defined $rpl_mode;
0.67.374 by Bernt M. Johnsen
Fixed some bugs in runall-new.pl and App::GenTest wrt 2 servers, validators and reporters
338
$gentestProps->validators(\@validators) if defined @validators;
339
$gentestProps->reporters(\@reporters) if defined @reporters;
0.67.359 by Bernt M. Johnsen
Use GenTest module in runall-new.pl
340
$gentestProps->threads($threads) if defined $threads;
341
$gentestProps->queries($queries) if defined $queries;
342
$gentestProps->duration($duration) if defined $duration;
343
$gentestProps->dsn(\@dsns) if defined @dsns;
344
$gentestProps->grammar($grammar_file);
345
$gentestProps->redefine_file($redefine_file) if defined $redefine_file;
346
$gentestProps->seed($seed) if defined $seed;
347
$gentestProps->mask($mask) if defined $mask;
348
$gentestProps->property('mask-level',$mask_level) if defined $mask_level;
349
$gentestProps->rows($rows) if defined $rows;
350
$gentestProps->views(1) if defined $views;
351
$gentestProps->property('varchar-length',$varchar_len) if defined $varchar_len;
352
$gentestProps->property('xml-output',$xml_output) if defined $xml_output;
353
$gentestProps->debug(1) if defined $debug;
354
$gentestProps->filter($filter) if defined $filter;
0.107.7 by John H. Embretsen
Add --notnull option to runall-new.pl (was recently added to runall.pl and friends).
355
$gentestProps->notnull($notnull) if defined $notnull;
0.67.359 by Bernt M. Johnsen
Use GenTest module in runall-new.pl
356
$gentestProps->valgrind(1) if $valgrind;
0.103.2 by Bernt M. Johnsen
Sqltrace option for re-runs
357
$gentestProps->sqltrace(1) if $sqltrace;
0.67.403 by John H. Embretsen
Accept and pass along all properties needed for XML reporting from runall-new to GenTest.
358
$gentestProps->testname($testname) if $testname;
359
$gentestProps->property('report-xml-tt', 1) if defined $report_xml_tt;
360
$gentestProps->property('report-xml-tt-type', $report_xml_tt_type) if defined $report_xml_tt_type;
361
$gentestProps->property('report-xml-tt-dest', $report_xml_tt_dest) if defined $report_xml_tt_dest;
0.67.329 by Bernt M. Johnsen
More server stuff
362
363
# Push the number of "worker" threads into the environment.
364
# lib/GenTest/Generator/FromGrammar.pm will generate a corresponding grammar element.
365
$ENV{RQG_THREADS}= $threads;
366
0.67.359 by Bernt M. Johnsen
Use GenTest module in runall-new.pl
367
my $gentest = GenTest::App::GenTest->new(config => $gentestProps);
368
my $gentest_result = $gentest->run();
0.67.521 by eve
provide textual exit codes for various scripts and not jus numbers
369
say("GenTest exited with exit status ".status2text($gentest_result)." ($gentest_result)");
0.67.359 by Bernt M. Johnsen
Use GenTest module in runall-new.pl
370
exit_test($gentest_result) if $gentest_result > 0;
0.67.329 by Bernt M. Johnsen
More server stuff
371
372
#
373
# Compare master and slave, or two masters
374
#
375
376
if ($rpl_mode || (defined $basedirs[1])) {
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
377
    if ($rpl_mode ne '') {
378
        $rplsrv->waitForSlaveSync;
379
    }
0.104.2 by Bernt M. Johnsen
Moved call to mysqldump into DBServer/MySQLd
380
381
    my @dump_files;
382
    
383
	foreach my $i (0..$#server) {
0.107.3 by John H. Embretsen
Fix for bug#55689 (mysqldump fails with new server module against old MySQL due to --no-tablespaces).
384
		$dump_files[$i] = tmpdir()."server_".$$."_".$i.".dump";
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
385
        
0.104.2 by Bernt M. Johnsen
Moved call to mysqldump into DBServer/MySQLd
386
		my $dump_result = $server[$i]->dumpdb($database,$dump_files[$i]);
0.67.329 by Bernt M. Johnsen
More server stuff
387
		exit_test($dump_result >> 8) if $dump_result > 0;
388
	}
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
389
    
0.67.329 by Bernt M. Johnsen
More server stuff
390
	say("Comparing SQL dumps...");
391
	my $diff_result = system("diff -u $dump_files[0] $dump_files[1]");
392
	$diff_result = $diff_result >> 8;
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
393
    
0.67.329 by Bernt M. Johnsen
More server stuff
394
	if ($diff_result == 0) {
395
		say("No differences were found between servers.");
396
	}
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
397
    
0.67.329 by Bernt M. Johnsen
More server stuff
398
	foreach my $dump_file (@dump_files) {
399
		unlink($dump_file);
400
	}
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
401
    
0.67.329 by Bernt M. Johnsen
More server stuff
402
	exit_test($diff_result);
403
}
404
405
406
stopServers();
407
408
sub stopServers {
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
409
    if ($rpl_mode ne '') {
410
        $rplsrv->stopServer();
411
    } else {
412
        foreach my $srv (@server) {
413
            if ($srv) {
414
                $srv->stopServer;
415
            }
0.67.329 by Bernt M. Johnsen
More server stuff
416
        }
417
    }
418
}
419
420
421
sub help {
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
422
    
0.67.329 by Bernt M. Johnsen
More server stuff
423
	print <<EOF
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
424
Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms.
0.67.329 by Bernt M. Johnsen
More server stuff
425
426
$0 - Run a complete random query generation test, including server start with replication and master/slave verification
427
    
428
    Options related to one standalone MySQL server:
429
430
    --basedir   : Specifies the base directory of the stand-alone MySQL installation;
431
    --mysqld    : Options passed to the MySQL server
432
    --vardir    : Optional. (default \$basedir/mysql-test/var);
433
434
    Options related to two MySQL servers
435
436
    --basedir1  : Specifies the base directory of the first MySQL installation;
437
    --basedir2  : Specifies the base directory of the second MySQL installation;
438
    --mysqld1   : Options passed to the first MySQL server
439
    --mysqld2   : Options passed to the second MySQL server
440
    --vardir1   : Optional. (default \$basedir1/mysql-test/var);
441
    --vardir2   : Optional. (default \$basedir2/mysql-test/var);
442
443
    General options
444
445
    --grammar   : Grammar file to use when generating queries (REQUIRED);
446
    --redefine  : Grammar file to redefine and/or add rules to the given grammar
447
    --rpl_mode  : Replication type to use (statement|row|mixed) (default: no replication);
448
    --vardir1   : Optional.
449
    --vardir2   : Optional. 
450
    --engine    : Table engine to use when creating tables with gendata (default no ENGINE in CREATE TABLE);
451
    --threads   : Number of threads to spawn (default $default_threads);
452
    --queries   : Number of queries to execute per thread (default $default_queries);
453
    --duration  : Duration of the test in seconds (default $default_duration seconds);
454
    --validator : The validators to use
455
    --reporter  : The reporters to use
456
    --gendata   : Generate data option. Passed to gentest.pl
457
    --seed      : PRNG seed. Passed to gentest.pl
458
    --mask      : Grammar mask. Passed to gentest.pl
459
    --mask-level: Grammar mask level. Passed to gentest.pl
0.107.7 by John H. Embretsen
Add --notnull option to runall-new.pl (was recently added to runall.pl and friends).
460
    --notnull   : Generate all fields with NOT NULL
0.67.329 by Bernt M. Johnsen
More server stuff
461
    --rows      : No of rows. Passed to gentest.pl
0.109.2 by John H. Embretsen
Support --sqltrace option with classic runall.pl and gentest.pl. Add to usage texts.
462
    --sqltrace  : Print all generated SQL statements.
0.67.329 by Bernt M. Johnsen
More server stuff
463
    --varchar-length: length of strings. passed to gentest.pl
464
    --xml-outputs: Passed to gentest.pl
465
    --views     : Generate views. Passed to gentest.pl
466
    --valgrind  : Passed to gentest.pl
467
    --filter    : Passed to gentest.pl
468
    --mem       : Passed to mtr.
469
    --mtr-build-thread: 
470
                  Value used for MTR_BUILD_THREAD when servers are started and accessed.
471
    --debug     : Debug mode
472
    --help      : This help message
473
474
    If you specify --basedir1 and --basedir2 or --vardir1 and --vardir2, two servers will be started and the results from the queries
475
    will be compared between them.
476
EOF
477
	;
478
	print "$0 arguments were: ".join(' ', @ARGV_saved)."\n";
479
	exit_test(STATUS_UNKNOWN_ERROR);
480
}
481
482
sub exit_test {
483
	my $status = shift;
0.99.18 by Bernt M. Johnsen
More replication fixes + someother stuff
484
    stopServers();
0.67.521 by eve
provide textual exit codes for various scripts and not jus numbers
485
	say("[$$] $0 will exit with exit status ".status2text($status). " ($status)");
0.67.329 by Bernt M. Johnsen
More server stuff
486
	safe_exit($status);
487
}