proc env002 { } {
global env
source ./include.tcl
puts "Env002: set_lg_dir test."
puts "\tEnv002: Running with -home argument to berkdb_env."
env002_body "-home $testdir"
puts "\tEnv002: Running with environment variable DB_HOME set."
set env(DB_HOME) $testdir
env002_body "-use_environ"
unset env(DB_HOME)
puts "\tEnv002: Running with both DB_HOME and -home set."
set env(DB_HOME) $testdir/bogus_home
env002_body "-use_environ -home $testdir"
unset env(DB_HOME)
}
proc env002_body { home_arg } {
source ./include.tcl
env_cleanup $testdir
set logdir "logs_in_here"
file mkdir $testdir/$logdir
set curdir [pwd]
cd $testdir/$logdir
set fulllogdir [pwd]
cd $curdir
env002_make_config $logdir
env002_run_test a 1 "relative path, config file" $home_arg \
$testdir/$logdir
env_cleanup $testdir
file mkdir $fulllogdir
env002_make_config $fulllogdir
env002_run_test a 2 "absolute path, config file" $home_arg \
$fulllogdir
env_cleanup $testdir
file mkdir $testdir/$logdir
env002_run_test b 1 "relative path, db_config" "$home_arg \
-log_dir $logdir -data_dir ." \
$testdir/$logdir
env_cleanup $testdir
file mkdir $fulllogdir
env002_run_test b 2 "absolute path, db_config" "$home_arg \
-log_dir $fulllogdir -data_dir ." \
$fulllogdir
env_cleanup $testdir
file mkdir $testdir/$logdir
env002_make_config $logdir
env002_run_test c 1 "relative path, both db_config and file" \
"$home_arg -log_dir $testdir/bogus \
-data_dir ." $testdir/$logdir
env_cleanup $testdir
file mkdir $fulllogdir
env002_make_config $fulllogdir
env002_run_test c 2 "relative path, both db_config and file" \
"$home_arg -log_dir $fulllogdir/bogus \
-data_dir ." $fulllogdir
}
proc env002_run_test { major minor msg env_args log_path} {
global testdir
set testfile "env002.db"
puts "\t\tEnv002.$major.$minor: $msg"
set dbenv [eval {berkdb_env -create -log -private} $env_args]
error_check_good env_open [is_valid_env $dbenv] TRUE
set db [berkdb_open -env $dbenv -create -btree -mode 0644 $testfile]
error_check_good db_open [is_valid_db $db] TRUE
set key "some_key"
set data "some_data"
error_check_good db_put \
[$db put $key [chop_data btree $data]] 0
error_check_good db_close [$db close] 0
error_check_good env_close [$dbenv close] 0
error_check_good db_exists [file exists $testdir/$testfile] 1
error_check_good log_exists \
[file exists $log_path/log.0000000001] 1
}
proc env002_make_config { logdir } {
global testdir
set cid [open $testdir/DB_CONFIG w]
puts $cid "set_data_dir ."
puts $cid "set_lg_dir $logdir"
close $cid
}