1# See the file LICENSE for redistribution information. 2# 3# Copyright (c) 2001,2008 Oracle. All rights reserved. 4# 5# $Id: env016.tcl,v 1.1 2008/02/01 19:03:40 sue Exp $ 6# 7# TEST env016 8# TEST Replication settings and DB_CONFIG 9# TEST 10# TEST Create a DB_CONFIG for various replication settings. Use 11# TEST rep_stat or getter functions to verify they're set correctly. 12# 13proc env016 { } { 14 source ./include.tcl 15 16 puts "Env016: Replication DB_CONFIG settings." 17 18 # 19 # Test options that we query via rep_stat. 20 # Structure of the list is: 21 # 0. Arg used in DB_CONFIG. 22 # 1. Value assigned in DB_CONFIG. 23 # 2. Message output during test. 24 # 3. String to search for in stat output. 25 # 26 set slist { 27 { "rep_set_priority" "1" "Env016.a0: Priority" 28 "Environment priority" } 29 } 30 puts "\tEnv016.a: Check settings via rep_stat." 31 foreach l $slist { 32 set carg [lindex $l 0] 33 set val [lindex $l 1] 34 set msg [lindex $l 2] 35 set str [lindex $l 3] 36 env_cleanup $testdir 37 replsetup $testdir/MSGQUEUEDIR 38 set masterdir $testdir/MASTERDIR 39 file mkdir $masterdir 40 repladd 1 41 42 # Open a master. 43 puts "\t\t$msg" 44 # 45 # Create DB_CONFIG. 46 # 47 env016_make_config $masterdir $carg $val 48 # 49 # Open env. 50 # 51 set ma_envcmd "berkdb_env_noerr -create -txn nosync \ 52 -home $masterdir -errpfx MASTER -rep_master \ 53 -rep_transport \[list 1 replsend\]" 54 set masterenv [eval $ma_envcmd] 55 # 56 # Verify value 57 # 58 set gval [stat_field $masterenv rep_stat $str] 59 error_check_good stat_get $gval $val 60 61 error_check_good masterenv_close [$masterenv close] 0 62 replclose $testdir/MSGQUEUEDIR 63 } 64 65 # Test options that we query via getter functions. 66 # Structure of the list is: 67 # 0. Arg used in DB_CONFIG. 68 # 1. Value assigned in DB_CONFIG. 69 # 2. Message output during test. 70 # 3. Getter command. 71 # 4. Getter results expected if different from #1 value. 72 set glist { 73 { "rep_set_clockskew" "102 100" "Env016.b0: Rep clockskew" 74 "rep_get_clockskew" } 75 { "rep_set_config" "db_rep_conf_bulk" "Env016.b1: Rep config" 76 "rep_get_config bulk" "1" } 77 { "rep_set_limit" "0 1048576" "Env016.b2: Rep limit" 78 "rep_get_limit" } 79 { "rep_set_nsites" "6" "Env016.b3: Rep nsites" 80 "rep_get_nsites" } 81 { "rep_set_request" "4000 128000" "Env016.b4: Rep request" 82 "rep_get_request" } 83 { "rep_set_timeout" "db_rep_election_timeout 500000" 84 "Env016.b5: Rep elect timeout" "rep_get_timeout election" 85 "500000" } 86 { "rep_set_timeout" "db_rep_checkpoint_delay 500000" 87 "Env016.b6: Rep ckp timeout" 88 "rep_get_timeout checkpoint_delay" "500000" } 89 } 90 puts "\tEnv016.b: Check settings via getter functions." 91 foreach l $glist { 92 set carg [lindex $l 0] 93 set val [lindex $l 1] 94 set msg [lindex $l 2] 95 set getter [lindex $l 3] 96 if { [llength $l] > 4 } { 97 set getval [lindex $l 4] 98 } else { 99 set getval $val 100 } 101 env_cleanup $testdir 102 replsetup $testdir/MSGQUEUEDIR 103 set masterdir $testdir/MASTERDIR 104 file mkdir $masterdir 105 repladd 1 106 107 # Open a master. 108 puts "\t\t$msg" 109 # 110 # Create DB_CONFIG. 111 # 112 env016_make_config $masterdir $carg $val 113 # 114 # Open env. 115 # 116 set ma_envcmd "berkdb_env_noerr -create -txn nosync \ 117 -home $masterdir -errpfx MASTER -rep_master \ 118 -rep_transport \[list 1 replsend\]" 119 set masterenv [eval $ma_envcmd] 120 # 121 # Verify value 122 # 123 set gval [eval $masterenv $getter] 124 error_check_good stat_get $gval $getval 125 126 error_check_good masterenv_close [$masterenv close] 0 127 replclose $testdir/MSGQUEUEDIR 128 } 129} 130 131proc env016_make_config { dir carg cval } { 132 set cid [open $dir/DB_CONFIG w] 133 puts $cid "$carg $cval" 134 close $cid 135} 136