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