source ./include.tcl
source $test_path/test.tcl
source $test_path/testutils.tcl
source $test_path/reputils.tcl
set usage "repscript clientdir niter dbfile method rep_verbose verbose_type"
if { $argc != 6 } {
puts stderr "FAIL:[timestamp] Usage: $usage"
exit
}
set clientdir [ lindex $argv 0 ]
set niter [ lindex $argv 1 ]
set dbfile [ lindex $argv 2 ]
set method [ lindex $argv 3 ]
set rep_verbose [ lindex $argv 4 ]
set verbose_type [ lindex $argv 5 ]
set verbargs ""
if { $rep_verbose == 1 } {
set verbargs " -verbose {$verbose_type on} "
}
set queueenv [eval berkdb_env -home $testdir/MSGQUEUEDIR]
error_check_good script_qenv_open [is_valid_env $queueenv] TRUE
repladd 1
repladd 2
set cl_cmd "berkdb_env_noerr -home $clientdir $verbargs -errpfx CHILD \
-txn -rep_client -rep_transport \[list 2 replsend\]"
set clientenv [eval $cl_cmd]
error_check_good script_cenv_open [is_valid_env $clientenv] TRUE
set db [eval "berkdb_open -env $clientenv $dbfile"]
for { set i 1 } { $i <= $niter } { incr i } {
set ret [lindex [$db get $i] 0]
error_check_good db_get $ret [list $i [pad_data $method data$i]]
}
set markerenv [berkdb_env -create -home $testdir -txn]
error_check_good markerenv_open [is_valid_env $markerenv] TRUE
set marker \
[eval "berkdb_open -create -btree -auto_commit -env $markerenv marker.db"]
error_check_good timestamp_ready \
[$marker put CHILDREADY [timestamp -r]] 0
tclsleep 30
error_check_good timestamp_done \
[$marker put CHILDDONE [timestamp -r]] 0
error_check_good client_db_close [$db close] 0
while { [llength [$marker get PARENTDONE]] == 0 } {
tclsleep 1
}
set db [eval "berkdb_open -env $clientenv $dbfile"]
set cursor [$db cursor]
error_check_good db_empty [llength [$cursor get -first]] 0
error_check_good cursor_close [$cursor close] 0
error_check_good db_close [$db close] 0
error_check_good marker_db_close [$marker close] 0
error_check_good markerenv_close [$markerenv close] 0
error_check_good script_client_close [$clientenv close] 0