diff options
Diffstat (limited to 'bdb/test/test044.tcl')
-rw-r--r-- | bdb/test/test044.tcl | 250 |
1 files changed, 0 insertions, 250 deletions
diff --git a/bdb/test/test044.tcl b/bdb/test/test044.tcl deleted file mode 100644 index 67cf3ea24b8..00000000000 --- a/bdb/test/test044.tcl +++ /dev/null @@ -1,250 +0,0 @@ -# See the file LICENSE for redistribution information. -# -# Copyright (c) 1996-2002 -# Sleepycat Software. All rights reserved. -# -# $Id: test044.tcl,v 11.32 2002/07/16 20:53:04 bostic Exp $ -# -# TEST test044 -# TEST Small system integration tests -# TEST Test proper functioning of the checkpoint daemon, -# TEST recovery, transactions, etc. -# TEST -# TEST System integration DB test: verify that locking, recovery, checkpoint, -# TEST and all the other utilities basically work. -# TEST -# TEST The test consists of $nprocs processes operating on $nfiles files. A -# TEST transaction consists of adding the same key/data pair to some random -# TEST number of these files. We generate a bimodal distribution in key size -# TEST with 70% of the keys being small (1-10 characters) and the remaining -# TEST 30% of the keys being large (uniform distribution about mean $key_avg). -# TEST If we generate a key, we first check to make sure that the key is not -# TEST already in the dataset. If it is, we do a lookup. -# -# XXX -# This test uses grow-only files currently! -proc test044 { method {nprocs 5} {nfiles 10} {cont 0} args } { - source ./include.tcl - global encrypt - global rand_init - - set args [convert_args $method $args] - set omethod [convert_method $method] - - berkdb srand $rand_init - - # If we are using an env, then skip this test. It needs its own. - set eindex [lsearch -exact $args "-env"] - if { $eindex != -1 } { - incr eindex - set env [lindex $args $eindex] - puts "Test044 skipping for env $env" - return - } - if { $encrypt != 0 } { - puts "Test044 skipping for security" - return - } - - puts "Test044: system integration test db $method $nprocs processes \ - on $nfiles files" - - # Parse options - set otherargs "" - set key_avg 10 - set data_avg 20 - set do_exit 0 - for { set i 0 } { $i < [llength $args] } {incr i} { - switch -regexp -- [lindex $args $i] { - -key_avg { incr i; set key_avg [lindex $args $i] } - -data_avg { incr i; set data_avg [lindex $args $i] } - -testdir { incr i; set testdir [lindex $args $i] } - -x.* { set do_exit 1 } - default { - lappend otherargs [lindex $args $i] - } - } - } - - if { $cont == 0 } { - # Create the database and open the dictionary - env_cleanup $testdir - - # Create an environment - puts "\tTest044.a: creating environment and $nfiles files" - set dbenv [berkdb_env -create -txn -home $testdir] - error_check_good env_open [is_valid_env $dbenv] TRUE - - # Create a bunch of files - set m $method - - for { set i 0 } { $i < $nfiles } { incr i } { - if { $method == "all" } { - switch [berkdb random_int 1 2] { - 1 { set m -btree } - 2 { set m -hash } - } - } else { - set m $omethod - } - - set db [eval {berkdb_open -env $dbenv -create \ - -mode 0644 $m} $otherargs {test044.$i.db}] - error_check_good dbopen [is_valid_db $db] TRUE - error_check_good db_close [$db close] 0 - } - } - - # Close the environment - $dbenv close - - if { $do_exit == 1 } { - return - } - - # Database is created, now fork off the kids. - puts "\tTest044.b: forking off $nprocs processes and utilities" - set cycle 1 - set ncycles 3 - while { $cycle <= $ncycles } { - set dbenv [berkdb_env -create -txn -home $testdir] - error_check_good env_open [is_valid_env $dbenv] TRUE - - # Fire off deadlock detector and checkpointer - puts "Beginning cycle $cycle" - set ddpid [exec $util_path/db_deadlock -h $testdir -t 5 &] - set cppid [exec $util_path/db_checkpoint -h $testdir -p 2 &] - puts "Deadlock detector: $ddpid Checkpoint daemon $cppid" - - set pidlist {} - for { set i 0 } {$i < $nprocs} {incr i} { - set p [exec $tclsh_path \ - $test_path/sysscript.tcl $testdir \ - $nfiles $key_avg $data_avg $omethod \ - >& $testdir/test044.$i.log &] - lappend pidlist $p - } - set sleep [berkdb random_int 300 600] - puts \ -"[timestamp] $nprocs processes running $pidlist for $sleep seconds" - tclsleep $sleep - - # Now simulate a crash - puts "[timestamp] Crashing" - - # - # The environment must remain open until this point to get - # proper sharing (using the paging file) on Win/9X. [#2342] - # - error_check_good env_close [$dbenv close] 0 - - tclkill $ddpid - tclkill $cppid - - foreach p $pidlist { - tclkill $p - } - - # Check for test failure - set e [eval findfail [glob $testdir/test044.*.log]] - error_check_good "FAIL: error message(s) in log files" $e 0 - - # Now run recovery - test044_verify $testdir $nfiles - incr cycle - } -} - -proc test044_usage { } { - puts -nonewline "test044 method nentries [-d directory] [-i iterations]" - puts " [-p procs] -x" -} - -proc test044_verify { dir nfiles } { - source ./include.tcl - - # Save everything away in case something breaks -# for { set f 0 } { $f < $nfiles } {incr f} { -# file copy -force $dir/test044.$f.db $dir/test044.$f.save1 -# } -# foreach f [glob $dir/log.*] { -# if { [is_substr $f save] == 0 } { -# file copy -force $f $f.save1 -# } -# } - - # Run recovery and then read through all the database files to make - # sure that they all look good. - - puts "\tTest044.verify: Running recovery and verifying file contents" - set stat [catch {exec $util_path/db_recover -h $dir} result] - if { $stat == 1 } { - error "FAIL: Recovery error: $result." - } - - # Save everything away in case something breaks -# for { set f 0 } { $f < $nfiles } {incr f} { -# file copy -force $dir/test044.$f.db $dir/test044.$f.save2 -# } -# foreach f [glob $dir/log.*] { -# if { [is_substr $f save] == 0 } { -# file copy -force $f $f.save2 -# } -# } - - for { set f 0 } { $f < $nfiles } { incr f } { - set db($f) [berkdb_open $dir/test044.$f.db] - error_check_good $f:dbopen [is_valid_db $db($f)] TRUE - - set cursors($f) [$db($f) cursor] - error_check_bad $f:cursor_open $cursors($f) NULL - error_check_good \ - $f:cursor_open [is_substr $cursors($f) $db($f)] 1 - } - - for { set f 0 } { $f < $nfiles } { incr f } { - for {set d [$cursors($f) get -first] } \ - { [string length $d] != 0 } \ - { set d [$cursors($f) get -next] } { - - set k [lindex [lindex $d 0] 0] - set d [lindex [lindex $d 0] 1] - - set flist [zero_list $nfiles] - set r $d - while { [set ndx [string first : $r]] != -1 } { - set fnum [string range $r 0 [expr $ndx - 1]] - if { [lindex $flist $fnum] == 0 } { - set fl "-set" - } else { - set fl "-next" - } - - if { $fl != "-set" || $fnum != $f } { - if { [string compare $fl "-set"] == 0} { - set full [$cursors($fnum) \ - get -set $k] - } else { - set full [$cursors($fnum) \ - get -next] - } - set key [lindex [lindex $full 0] 0] - set rec [lindex [lindex $full 0] 1] - error_check_good \ - $f:dbget_$fnum:key $key $k - error_check_good \ - $f:dbget_$fnum:data $rec $d - } - - set flist [lreplace $flist $fnum $fnum 1] - incr ndx - set r [string range $r $ndx end] - } - } - } - - for { set f 0 } { $f < $nfiles } { incr f } { - error_check_good $cursors($f) [$cursors($f) close] 0 - error_check_good db_close:$f [$db($f) close] 0 - } -} |