diff options
Diffstat (limited to 'db-4.8.30/test/rep048script.tcl')
-rw-r--r-- | db-4.8.30/test/rep048script.tcl | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/db-4.8.30/test/rep048script.tcl b/db-4.8.30/test/rep048script.tcl new file mode 100644 index 0000000..99a8938 --- /dev/null +++ b/db-4.8.30/test/rep048script.tcl @@ -0,0 +1,84 @@ +# See the file LICENSE for redistribution information. +# +# Copyright (c) 2003-2009 Oracle. All rights reserved. +# +# $Id$ +# +# Rep048 script - toggle bulk transfer while updates are going on. + +# Usage: repscript masterdir +# masterdir: master env directory +# databases_in_memory: are we using named in-memory databases? +# +source ./include.tcl +source $test_path/reputils.tcl + +set usage "repscript masterdir" + +# Verify usage +if { $argc != 2 } { + puts stderr "FAIL:[timestamp] Usage: $usage" + exit +} + +# Initialize arguments +set masterdir [ lindex $argv 0 ] +global databases_in_memory +set databases_in_memory [ lindex $argv 1 ] + +# Join the queue env. We assume the rep test convention of +# placing the messages in $testdir/MSGQUEUEDIR. +set queueenv [eval berkdb_env -home $testdir/MSGQUEUEDIR] +error_check_good script_qenv_open [is_valid_env $queueenv] TRUE + +# +# We need to set up our own machids. +# Add 1 for master env id, and 2 for the clientenv id. +# +repladd 1 +repladd 2 + +# Join the master env. +set ma_cmd "berkdb_env_noerr -home $masterdir \ + -txn -rep_master -rep_transport \[list 1 replsend\]" +# set ma_cmd "berkdb_env_noerr -home $masterdir \ +# -verbose {rep on} -errfile /dev/stderr \ +# -txn -rep_master -rep_transport \[list 1 replsend\]" +set masterenv [eval $ma_cmd] +error_check_good script_menv_open [is_valid_env $masterenv] TRUE + +puts "Master open" +if { $databases_in_memory } { + set dbname { "" "child.db" } +} else { + set dbname "child.db" +} +set db [eval "berkdb_open -create -btree -auto_commit -env $masterenv $dbname"] +error_check_good dbopen [is_valid_db $db] TRUE + +# Create marker file +set marker [open $masterdir/marker.file w] +close $marker + +# +# Keep toggling until the parent indicates it's done. +# +set tog "on" +for { set i 0 } { [file exists $masterdir/done.file] == 0 } { incr i } { +puts "Iter $i: Turn bulk $tog" + error_check_good bulk$tog [$masterenv rep_config [list bulk $tog]] 0 + set t [$masterenv txn] + error_check_good db_put \ + [eval $db put -txn $t $i data$i] 0 + error_check_good txn_commit [$t commit] 0 + if { $tog == "on" } { + set tog "off" + } else { + set tog "on" + } + tclsleep 1 +} +# Close the envs +error_check_good script_db_close [$db close] 0 +error_check_good script_master_close [$masterenv close] 0 +puts "\tRepscript completed successfully" |