1
# Copyright (C) 2010 Sun Microsystems, Inc. All rights reserved. Use
2
# is subject to license terms.
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; version 2 of the License.
8
# This program is distributed in the hope that it will be useful, but
9
# WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
# General Public License for more details.
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
18
package TestReplServer;
20
use base qw(Test::Unit::TestCase);
21
use lib 'lib','lib/DBServer';
23
use DBServer::DBServer;
24
use DBServer::MySQL::ReplMySQLd;
25
use GenTest::Executor;
30
my $self = shift()->SUPER::new(@_);
31
# your state for fixture here
42
## Need to ,kill leftover processes if there are some
43
foreach my $p (@pids) {
44
Win32::Process::KillProcess($p,-1);
46
system("rmdir /s /q unit\\tmp1");
47
system("rmdir /s /q unit\\tmp2");
49
## Need to ,kill leftover processes if there are some
51
system("rm -rf unit/tmp1");
52
system("rm -rf unit/tmp2");
56
sub test_create_server {
59
my $portbase = 30 + ($ENV{TEST_PORTBASE}?int($ENV{TEST_PORTBASE}):22120);
61
my $master_vardir= cwd()."/unit/tmp1/";
62
my $slave_vardir= cwd()."/unit/tmp1_slave";
64
$self->assert(defined $ENV{RQG_MYSQL_BASE},"RQG_MYSQL_BASE not defined");
66
my $server = DBServer::MySQL::ReplMySQLd->new(basedir => $ENV{RQG_MYSQL_BASE},
67
master_vardir => $master_vardir,
69
master_port => $portbase);
70
$self->assert_not_null($server);
72
$self->assert(-f $master_vardir."/data/mysql/db.MYD","No ".$master_vardir."/data/mysql/db.MYD");
73
$self->assert(-f $slave_vardir."/data/mysql/db.MYD","No ".$slave_vardir."/data/mysql/db.MYD");
76
push @pids,$server->master->serverpid;
77
push @pids,$server->slave->serverpid;
80
$server->master->dbh->do("CREATE TABLE test.t (i integer)");
81
$server->master->dbh->do("INSERT INTO test.t VALUES(42)");
83
$server->waitForSlaveSync();
85
my $result = $server->slave->dbh->selectrow_array("SELECT * FROM test.t");
87
$self->assert_num_equals(42, $result);
91
sayFile($server->master->logfile);
92
sayFile($server->slave->logfile);
95
sub test_create_repl {
98
my $portbase = 30 + ($ENV{TEST_PORTBASE}?int($ENV{TEST_PORTBASE}):22120);
100
my $master_vardir= cwd()."/unit/tmp1/";
101
my $slave_vardir= cwd()."/unit/tmp1_slave";
103
$self->assert(defined $ENV{RQG_MYSQL_BASE},"RQG_MYSQL_BASE not defined");
105
my $master = DBServer::MySQL::MySQLd->new(basedir => $ENV{RQG_MYSQL_BASE},
106
vardir => $master_vardir,
108
my $slave = DBServer::MySQL::MySQLd->new(basedir => $ENV{RQG_MYSQL_BASE},
109
vardir => $slave_vardir,
110
port => $portbase+2);
112
my $server = DBServer::MySQL::ReplMySQLd->new(slave => $slave,
116
$self->assert_not_null($server);
118
$self->assert(-f $master_vardir."/data/mysql/db.MYD","No ".$master_vardir."/data/mysql/db.MYD");
119
$self->assert(-f $slave_vardir."/data/mysql/db.MYD","No ".$slave_vardir."/data/mysql/db.MYD");
121
$server->startServer;
122
push @pids,$server->master->serverpid;
123
push @pids,$server->slave->serverpid;
126
$server->master->dbh->do("CREATE TABLE test.t (i integer)");
127
$server->master->dbh->do("INSERT INTO test.t VALUES(42)");
129
$server->waitForSlaveSync();
131
my $result = $server->slave->dbh->selectrow_array("SELECT * FROM test.t");
133
$self->assert_num_equals(42, $result);
137
sayFile($server->master->logfile);
138
sayFile($server->slave->logfile);