proc rep059 { method { tnum "059" } args } {
source ./include.tcl
global rep_verbose
set verbargs ""
if { $rep_verbose == 1 } {
set verbargs " -verbose {rep on} "
}
set orig_tdir $testdir
if { $is_windows9x_test == 1 } {
puts "Skipping replication test on Win 9x platform."
return
}
if { $checking_valid_methods } {
set test_methods { btree }
return $test_methods
}
if { [is_btree $method] == 0 } {
puts "Rep059: Skipping for method $method."
return
}
set largs [convert_args $method $args]
set masterdir $testdir/MASTERDIR
set clientdir $testdir/CLIENTDIR
set clientdir2 $testdir/CLIENTDIR2
env_cleanup $testdir
replsetup $testdir/MSGQUEUEDIR
file mkdir $masterdir
file mkdir $clientdir
file mkdir $clientdir2
set omethod [convert_method $method]
repladd 1
set envcmd(M) "berkdb_env_noerr -create -txn nosync\
-lock_detect default -errpfx MASTER $verbargs \
-home $masterdir -rep_transport \[list 1 replsend\]"
set menv [eval $envcmd(M)]
repladd 2
set envcmd(C) "berkdb_env_noerr -create -txn nosync \
-lock_detect default -errpfx CLIENT1 $verbargs \
-home $clientdir -rep_transport \[list 2 replsend\]"
set cenv [eval $envcmd(C)]
repladd 3
set envcmd(C2) "berkdb_env_noerr -create -txn nosync \
-lock_detect default -errpfx CLIENT2 $verbargs \
-home $clientdir2 -rep_transport \[list 3 replsend\]"
set c2env [eval $envcmd(C2)]
$menv test copy recycle
puts "\tRep$tnum.a: Start master and 2 clients."
error_check_good master [$menv rep_start -master] 0
error_check_good client [$cenv rep_start -client] 0
error_check_good client2 [$c2env rep_start -client] 0
set envlist "{$menv 1} {$cenv 2} {$c2env 3}"
process_msgs $envlist
error_check_good menv_close [$menv close] 0
puts "\tRep$tnum.b: Make client1 master."
set cenv [eval $envcmd(C) -rep_master]
set envlist "{$cenv 2} {$c2env 3}"
process_msgs $envlist
puts "\tRep$tnum.c: Clean up."
error_check_good cenv_close [$cenv close] 0
error_check_good c2env_close [$c2env close] 0
replclose $testdir/MSGQUEUEDIR
set testdir $orig_tdir
return
}