diff options
Diffstat (limited to 'bdb/test/test016.tcl')
-rw-r--r-- | bdb/test/test016.tcl | 71 |
1 files changed, 54 insertions, 17 deletions
diff --git a/bdb/test/test016.tcl b/bdb/test/test016.tcl index def3c114693..af289f866f4 100644 --- a/bdb/test/test016.tcl +++ b/bdb/test/test016.tcl @@ -1,19 +1,20 @@ # See the file LICENSE for redistribution information. # -# Copyright (c) 1996, 1997, 1998, 1999, 2000 +# Copyright (c) 1996-2002 # Sleepycat Software. All rights reserved. # -# $Id: test016.tcl,v 11.17 2000/08/25 14:21:54 sue Exp $ +# $Id: test016.tcl,v 11.23 2002/05/22 15:42:46 sue Exp $ # -# DB Test 16 {access method} -# Partial put test where partial puts make the record smaller. -# Use the first 10,000 entries from the dictionary. -# Insert each with self as key and a fixed, medium length data string; -# retrieve each. After all are entered, go back and do partial puts, -# replacing a random-length string with the key value. -# Then verify. - -set datastr abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz +# TEST test016 +# TEST Partial put test +# TEST Partial put where the datum gets shorter as a result of the put. +# TEST +# TEST Partial put test where partial puts make the record smaller. +# TEST Use the first 10,000 entries from the dictionary. +# TEST Insert each with self as key and a fixed, medium length data string; +# TEST retrieve each. After all are entered, go back and do partial puts, +# TEST replacing a random-length string with the key value. +# TEST Then verify. proc test016 { method {nentries 10000} args } { global datastr @@ -31,9 +32,8 @@ proc test016 { method {nentries 10000} args } { return } - puts "Test016: $method ($args) $nentries partial put shorten" - # Create the database and open the dictionary + set txnenv 0 set eindex [lsearch -exact $args "-env"] # # If we are using an env, then testfile should just be the db name. @@ -45,13 +45,27 @@ proc test016 { method {nentries 10000} args } { set testfile test016.db incr eindex set env [lindex $args $eindex] + set txnenv [is_txnenv $env] + if { $txnenv == 1 } { + append args " -auto_commit " + # + # If we are using txns and running with the + # default, set the default down a bit. + # + if { $nentries == 10000 } { + set nentries 100 + } + } + set testdir [get_home $env] } + puts "Test016: $method ($args) $nentries partial put shorten" + set t1 $testdir/t1 set t2 $testdir/t2 set t3 $testdir/t3 cleanup $testdir $env set db [eval {berkdb_open \ - -create -truncate -mode 0644} $args {$omethod $testfile}] + -create -mode 0644} $args {$omethod $testfile}] error_check_good dbopen [is_valid_db $db] TRUE set pflags "" @@ -64,7 +78,6 @@ proc test016 { method {nentries 10000} args } { } # Here is the loop where we put and get each key/data pair - puts "\tTest016.a: put/get loop" set did [open $dict] while { [gets $did str] != -1 && $count < $nentries } { @@ -73,6 +86,11 @@ proc test016 { method {nentries 10000} args } { } else { set key $str } + if { $txnenv == 1 } { + set t [$env txn] + error_check_good txn [is_valid_txn $t $env] TRUE + set txn "-txn $t" + } set ret [eval {$db put} \ $txn $pflags {$key [chop_data $method $datastr]}] error_check_good put $ret 0 @@ -80,6 +98,9 @@ proc test016 { method {nentries 10000} args } { set ret [eval {$db get} $txn $gflags {$key}] error_check_good \ get $ret [list [list $key [pad_data $method $datastr]]] + if { $txnenv == 1 } { + error_check_good txn [$t commit] 0 + } incr count } close $did @@ -103,12 +124,20 @@ proc test016 { method {nentries 10000} args } { set s2 [string toupper $key] set s3 [string range $datastr [expr $repl_off + $repl_len] end ] set dvals($key) [pad_data $method $s1$s2$s3] + if { $txnenv == 1 } { + set t [$env txn] + error_check_good txn [is_valid_txn $t $env] TRUE + set txn "-txn $t" + } set ret [eval {$db put} $txn {-partial \ [list $repl_off $repl_len] $key [chop_data $method $s2]}] error_check_good put $ret 0 set ret [eval {$db get} $txn $gflags {$key}] error_check_good \ put $ret [list [list $key [pad_data $method $s1$s2$s3]]] + if { $txnenv == 1 } { + error_check_good txn [$t commit] 0 + } incr count } close $did @@ -116,7 +145,15 @@ proc test016 { method {nentries 10000} args } { # Now we will get each key from the DB and compare the results # to the original. puts "\tTest016.c: dump file" + if { $txnenv == 1 } { + set t [$env txn] + error_check_good txn [is_valid_txn $t $env] TRUE + set txn "-txn $t" + } dump_file $db $txn $t1 test016.check + if { $txnenv == 1 } { + error_check_good txn [$t commit] 0 + } error_check_good db_close [$db close] 0 # Now compare the keys to see if they match the dictionary @@ -139,7 +176,7 @@ proc test016 { method {nentries 10000} args } { # Now, reopen the file and run the last test again. puts "\tTest016.d: close, open, and dump file" - open_and_dump_file $testfile $env $txn $t1 test016.check \ + open_and_dump_file $testfile $env $t1 test016.check \ dump_file_direction "-first" "-next" if { [ is_record_based $method ] == 0 } { @@ -150,7 +187,7 @@ proc test016 { method {nentries 10000} args } { # Now, reopen the file and run the last test again in reverse direction. puts "\tTest016.e: close, open, and dump file in reverse direction" - open_and_dump_file $testfile $env $txn $t1 test016.check \ + open_and_dump_file $testfile $env $t1 test016.check \ dump_file_direction "-last" "-prev" if { [ is_record_based $method ] == 0 } { |