proc log009 { } {
source ./include.tcl
global errorInfo
env_cleanup $testdir
set niter 200
set method btree
puts "Log009: Retrieve log version using log cursor."
set pagesize 4096
append largs " -pagesize $pagesize "
set log_buf [expr $pagesize * 2]
set log_max [expr $log_buf * 4]
set envcmd "berkdb_env_noerr -create \
-log_buffer $log_buf -log_max $log_max -txn -home $testdir"
set env [eval $envcmd]
error_check_good env [is_valid_env $env] TRUE
set stop 0
set start 0
while { $stop == 0 } {
puts "\tLog009.a: Running test in to generate log files."
eval rep_test \
$method $env NULL $niter $start $start 0 0 $largs
incr start $niter
set last_log [get_logfile $env last]
if { $last_log >= 3 } {
set stop 1
}
}
set curfile 0
set logc [$env log_cursor]
error_check_good logc [is_valid_logc $logc $env] TRUE
puts "\tLog009.b: Try to get version on unset cursor."
set stat [catch {eval $logc version} ret]
error_check_bad stat $stat 0
error_check_good err [is_substr $ret "unset cursor"] 1
puts "\tLog009.c: Walk log forward checking persist."
for { set logrec [$logc get -first] } \
{ [llength $logrec] != 0 } \
{ set logrec [$logc get -next] } {
set lsn [lindex $logrec 0]
set lsnfile [lindex $lsn 0]
if { $curfile != $lsnfile } {
log009_check $logc $logrec
set curfile $lsnfile
}
}
error_check_good logclose [$logc close] 0
set curfile 0
set logc [$env log_cursor]
error_check_good logc [is_valid_logc $logc $env] TRUE
puts "\tLog009.d: Walk log backward checking persist."
for { set logrec [$logc get -last] } \
{ [llength $logrec] != 0 } \
{ set logrec [$logc get -prev] } {
set lsn [lindex $logrec 0]
set lsnfile [lindex $lsn 0]
if { $curfile != $lsnfile } {
log009_check $logc $logrec
set curfile $lsnfile
}
}
error_check_good logclose [$logc close] 0
error_check_good env_close [$env close] 0
}
proc log009_check { logc logrec } {
set version [$logc version]
set reasonable [expr $version > 7 && $version < 20]
error_check_good persist $reasonable 1
set logrec1 [$logc get -current]
error_check_good current $logrec $logrec1
}