diff options
Diffstat (limited to 'libdb/test/rep003.tcl')
-rw-r--r-- | libdb/test/rep003.tcl | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/libdb/test/rep003.tcl b/libdb/test/rep003.tcl deleted file mode 100644 index 7551e8557..000000000 --- a/libdb/test/rep003.tcl +++ /dev/null @@ -1,221 +0,0 @@ -# See the file LICENSE for redistribution information. -# -# Copyright (c) 2002 -# Sleepycat Software. All rights reserved. -# -# $Id$ -# -# TEST rep003 -# TEST Repeated shutdown/restart replication test -# TEST -# TEST Run a quick put test in a replicated master environment; start up, -# TEST shut down, and restart client processes, with and without recovery. -# TEST To ensure that environment state is transient, use DB_PRIVATE. - -proc rep003 { method { tnum "03" } args } { - source ./include.tcl - global testdir rep003_dbname rep003_omethod rep003_oargs - - env_cleanup $testdir - set niter 10 - set rep003_dbname rep003.db - - if { [is_record_based $method] } { - puts "Rep0$tnum: Skipping for method $method" - return - } - - set rep003_omethod [convert_method $method] - set rep003_oargs [convert_args $method $args] - - replsetup $testdir/MSGQUEUEDIR - - set masterdir $testdir/MASTERDIR - file mkdir $masterdir - - set clientdir $testdir/CLIENTDIR - file mkdir $clientdir - - puts "Rep0$tnum: Replication repeated-startup test" - - # Open a master. - repladd 1 - set masterenv [berkdb_env_noerr -create -log_max 1000000 \ - -home $masterdir -txn -rep_master -rep_transport [list 1 replsend]] - error_check_good master_env [is_valid_env $masterenv] TRUE - - puts "\tRep0$tnum.a: Simple client startup test." - - # Put item one. - rep003_put $masterenv A1 a-one - - # Open a client. - repladd 2 - set clientenv [berkdb_env_noerr -create -private -home $clientdir -txn \ - -rep_client -rep_transport [list 2 replsend]] - error_check_good client_env [is_valid_env $clientenv] TRUE - - # Put another quick item. - rep003_put $masterenv A2 a-two - - # Loop, processing first the master's messages, then the client's, - # until both queues are empty. - while { 1 } { - set nproced 0 - - incr nproced [replprocessqueue $masterenv 1] - incr nproced [replprocessqueue $clientenv 2] - - if { $nproced == 0 } { - break - } - } - - rep003_check $clientenv A1 a-one - rep003_check $clientenv A2 a-two - - error_check_good clientenv_close [$clientenv close] 0 - replclear 2 - - # Now reopen the client after doing another put. - puts "\tRep0$tnum.b: Client restart." - rep003_put $masterenv B1 b-one - - unset clientenv - set clientenv [berkdb_env_noerr -create -private -home $clientdir -txn \ - -rep_client -rep_transport [list 2 replsend]] - error_check_good client_env [is_valid_env $clientenv] TRUE - - rep003_put $masterenv B2 b-two - - # Loop, processing first the master's messages, then the client's, - # until both queues are empty. - while { 1 } { - set nproced 0 - - # The items from part A should be present at all times-- - # if we roll them back, we've screwed up. [#5709] - rep003_check $clientenv A1 a-one - rep003_check $clientenv A2 a-two - - incr nproced [replprocessqueue $masterenv 1] - incr nproced [replprocessqueue $clientenv 2] - - if { $nproced == 0 } { - break - } - } - - rep003_check $clientenv B1 b-one - rep003_check $clientenv B2 b-two - - error_check_good clientenv_close [$clientenv close] 0 - - replclear 2 - - # Now reopen the client after a recovery. - puts "\tRep0$tnum.c: Client restart after recovery." - rep003_put $masterenv C1 c-one - - unset clientenv - set clientenv [berkdb_env_noerr -create -private -home $clientdir -txn \ - -recover -rep_client -rep_transport [list 2 replsend]] - error_check_good client_env [is_valid_env $clientenv] TRUE - - rep003_put $masterenv C2 c-two - - # Loop, processing first the master's messages, then the client's, - # until both queues are empty. - while { 1 } { - set nproced 0 - - # The items from part A should be present at all times-- - # if we roll them back, we've screwed up. [#5709] - rep003_check $clientenv A1 a-one - rep003_check $clientenv A2 a-two - rep003_check $clientenv B1 b-one - rep003_check $clientenv B2 b-two - - incr nproced [replprocessqueue $masterenv 1] - incr nproced [replprocessqueue $clientenv 2] - - if { $nproced == 0 } { - break - } - } - - rep003_check $clientenv C1 c-one - rep003_check $clientenv C2 c-two - - error_check_good clientenv_close [$clientenv close] 0 - - replclear 2 - - # Now reopen the client after a catastrophic recovery. - puts "\tRep0$tnum.d: Client restart after catastrophic recovery." - rep003_put $masterenv D1 d-one - - unset clientenv - set clientenv [berkdb_env_noerr -create -private -home $clientdir -txn \ - -recover_fatal -rep_client -rep_transport [list 2 replsend]] - error_check_good client_env [is_valid_env $clientenv] TRUE - - rep003_put $masterenv D2 d-two - - # Loop, processing first the master's messages, then the client's, - # until both queues are empty. - while { 1 } { - set nproced 0 - - # The items from part A should be present at all times-- - # if we roll them back, we've screwed up. [#5709] - rep003_check $clientenv A1 a-one - rep003_check $clientenv A2 a-two - rep003_check $clientenv B1 b-one - rep003_check $clientenv B2 b-two - rep003_check $clientenv C1 c-one - rep003_check $clientenv C2 c-two - - incr nproced [replprocessqueue $masterenv 1] - incr nproced [replprocessqueue $clientenv 2] - - if { $nproced == 0 } { - break - } - } - - rep003_check $clientenv D1 d-one - rep003_check $clientenv D2 d-two - - error_check_good clientenv_close [$clientenv close] 0 - - error_check_good masterenv_close [$masterenv close] 0 - replclose $testdir/MSGQUEUEDIR -} - -proc rep003_put { masterenv key data } { - global rep003_dbname rep003_omethod rep003_oargs - - set db [eval {berkdb_open_noerr -create -env $masterenv -auto_commit} \ - $rep003_omethod $rep003_oargs $rep003_dbname] - error_check_good rep3_put_open($key,$data) [is_valid_db $db] TRUE - - set txn [$masterenv txn] - error_check_good rep3_put($key,$data) [$db put -txn $txn $key $data] 0 - error_check_good rep3_put_txn_commit($key,$data) [$txn commit] 0 - - error_check_good rep3_put_close($key,$data) [$db close] 0 -} - -proc rep003_check { env key data } { - global rep003_dbname - - set db [berkdb_open_noerr -rdonly -env $env $rep003_dbname] - error_check_good rep3_check_open($key,$data) [is_valid_db $db] TRUE - - set dbt [$db get $key] - error_check_good rep3_check($key,$data) \ - [lindex [lindex $dbt 0] 1] $data - - error_check_good rep3_put_close($key,$data) [$db close] 0 -} |