179
177
if ($rpl_mode ne '') {
180
croak "replication to be implemented here";
182
foreach my $server_id (0..1) {
183
next if $basedirs[$server_id] eq '';
186
push @options, lc("--$engine") if defined $engine && lc($engine) ne lc('myisam');
188
push @options, "--sql-mode=no_engine_substitution" if join(' ', @ARGV_saved) !~ m{sql-mode}io;
190
if (defined $mysqld_options[$server_id]) {
191
push @options, @{$mysqld_options[$server_id]};
179
push @options, lc("--$engine") if defined $engine && lc($engine) ne lc('myisam');
181
push @options, "--sql-mode=no_engine_substitution" if join(' ', @ARGV_saved) !~ m{sql-mode}io;
183
if (defined $mysqld_options[0]) {
184
push @options, @{$mysqld_options[0]};
197
(not defined $vardirs[1]) &&
198
(not defined $mysqld_options[1])
200
push @options, "--slave_port=".$slave_port;
203
$server[$server_id] = GenTest::Server::MySQLd->new(basedir => $basedirs[$server_id],
204
vardir => $vardirs[$server_id],
205
port => $master_ports[$server_id],
206
start_dirty => $start_dirty,
207
valgrind => $valgrind,
208
valgrind_options => \@valgrind_options,
211
my $status = $server[$server_id]->startServer;
187
$rplsrv = GenTest::Server::ReplMySQLd->new(basedir => $basedirs[0],
188
master_vardir => $vardirs[0],
189
master_port => $ports[0],
190
slave_vardir => $vardirs[1],
191
slave_port => $ports[1],
193
server_options => \@options,
194
valgrind => $valgrind,
195
valgrind_options => \@valgrind_options,
196
start_dirty => $start_dirty);
198
my $status = $rplsrv->startServer();
213
200
if ($status > STATUS_OK) {
215
say(system("ls -l ".$server[$server_id]->datadir));
216
croak("Could not start all servers");
223
$master_dsns[$server_id] = $server[$server_id]->dsn($database);
226
if ((defined $master_dsns[$server_id]) && (defined $engine)) {
227
my $dbh = DBI->connect($master_dsns[$server_id], undef, undef, { RaiseError => 1 } );
228
$dbh->do("SET GLOBAL storage_engine = '$engine'");
232
my $master_dbh = DBI->connect($server[0]->dsn($database), undef, undef, { RaiseError => 1 } );
235
croak "replication to be implemented here";
202
say(system("ls -l ".$rplsrv->master->datadir));
203
say(system("ls -l ".$rplsrv->slave->datadir));
204
croak("Could not start replicating server pair");
207
$dsns[0] = $rplsrv->master->dsn($database);
208
$dsns[1] = undef; ## passed to gentest. No dsn for slave!
209
$server[0] = $rplsrv->master;
210
$server[1] = $rplsrv->slave;
213
foreach my $server_id (0..1) {
214
next if $basedirs[$server_id] eq '';
217
push @options, lc("--$engine") if defined $engine && lc($engine) ne lc('myisam');
219
push @options, "--sql-mode=no_engine_substitution" if join(' ', @ARGV_saved) !~ m{sql-mode}io;
221
if (defined $mysqld_options[$server_id]) {
222
push @options, @{$mysqld_options[$server_id]};
225
$server[$server_id] = GenTest::Server::MySQLd->new(basedir => $basedirs[$server_id],
226
vardir => $vardirs[$server_id],
227
port => $ports[$server_id],
228
start_dirty => $start_dirty,
229
valgrind => $valgrind,
230
valgrind_options => \@valgrind_options,
231
server_options => \@options);
233
my $status = $server[$server_id]->startServer;
235
if ($status > STATUS_OK) {
237
say(system("ls -l ".$server[$server_id]->datadir));
238
croak("Could not start all servers");
245
$dsns[$server_id] = $server[$server_id]->dsn($database);
248
if ((defined $dsns[$server_id]) && (defined $engine)) {
249
my $dbh = DBI->connect($dsns[$server_id], undef, undef, { RaiseError => 1 } );
250
$dbh->do("SET GLOBAL storage_engine = '$engine'");
250
267
push @gentest_options, "--threads=$threads" if defined $threads;
251
268
push @gentest_options, "--queries=$queries" if defined $queries;
252
269
push @gentest_options, "--duration=$duration" if defined $duration;
253
push @gentest_options, "--dsn=$master_dsns[0]" if defined $master_dsns[0];
254
push @gentest_options, "--dsn=$master_dsns[1]" if defined $master_dsns[1];
270
push @gentest_options, "--dsn=$dsns[0]" if defined $dsns[0];
271
push @gentest_options, "--dsn=$dsns[1]" if defined $dsns[1];
255
272
push @gentest_options, "--grammar=$grammar_file";
256
273
push @gentest_options, "--redefine=$redefine_file" if defined $redefine_file;
257
274
push @gentest_options, "--seed=$seed" if defined $seed;
273
290
say("gentest.pl exited with exit status ".($gentest_result >> 8));
274
291
exit_test($gentest_result >> 8) if $gentest_result > 0;
277
croak "replication to be implemented here";
281
294
# Compare master and slave, or two masters
284
297
if ($rpl_mode || (defined $basedirs[1])) {
285
my @dump_ports = ($master_ports[0]);
298
if ($rpl_mode ne '') {
299
$rplsrv->waitForSlaveSync;
301
my @dump_ports = ($ports[0]);
287
push @dump_ports, $slave_port;
303
push @dump_ports, $ports[1];
288
304
} elsif (defined $basedirs[1]) {
289
push @dump_ports, $master_ports[1];
305
push @dump_ports, $ports[1];
294
310
foreach my $i (0..$#dump_ports) {
295
311
say("Dumping server on port $dump_ports[$i]...");
296
312
$dump_files[$i] = tmpdir()."/server_".$$."_".$i.".dump";
298
314
my $dump_result = system("\"$client_basedir/mysqldump\" --hex-blob --no-tablespaces --skip-triggers --compact --order-by-primary --skip-extended-insert --no-create-info --host=127.0.0.1 --port=$dump_ports[$i] --user=root $database | sort > $dump_files[$i]");
299
315
exit_test($dump_result >> 8) if $dump_result > 0;
302
318
say("Comparing SQL dumps...");
303
319
my $diff_result = system("diff -u $dump_files[0] $dump_files[1]");
304
320
$diff_result = $diff_result >> 8;
306
322
if ($diff_result == 0) {
307
323
say("No differences were found between servers.");
310
326
foreach my $dump_file (@dump_files) {
311
327
unlink($dump_file);
314
330
exit_test($diff_result);