⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rep001.tcl

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 TCL
字号:
# See the file LICENSE for redistribution information.## Copyright (c) 2001-2002#	Sleepycat Software.  All rights reserved.## $Id: rep001.tcl,v 1.16 2002/08/26 17:52:19 margo Exp $## TEST  rep001# TEST	Replication rename and forced-upgrade test.# TEST# TEST	Run a modified version of test001 in a replicated master environment;# TEST  verify that the database on the client is correct.# TEST	Next, remove the database, close the master, upgrade the # TEST	client, reopen the master, and make sure the new master can correctly# TEST	run test001 and propagate it in the other direction.proc rep001 { method { niter 1000 } { tnum "01" } args } {	global passwd	puts "Rep0$tnum: Replication sanity test."	set envargs ""	rep001_sub $method $niter $tnum $envargs $args	puts "Rep0$tnum: Replication and security sanity test."	append envargs " -encryptaes $passwd "	append args " -encrypt "	rep001_sub $method $niter $tnum $envargs $args}proc rep001_sub { method niter tnum envargs largs } {	source ./include.tcl	global testdir	global encrypt	env_cleanup $testdir	replsetup $testdir/MSGQUEUEDIR	set masterdir $testdir/MASTERDIR	set clientdir $testdir/CLIENTDIR	file mkdir $masterdir	file mkdir $clientdir	if { [is_record_based $method] == 1 } {		set checkfunc test001_recno.check	} else {		set checkfunc test001.check	}	# Open a master.	repladd 1	set masterenv \	    [eval {berkdb_env -create -lock_max 2500 -log_max 1000000} \	    $envargs {-home $masterdir -txn -rep_master -rep_transport \	    [list 1 replsend]}]	error_check_good master_env [is_valid_env $masterenv] TRUE	# Open a client	repladd 2	set clientenv [eval {berkdb_env -create} $envargs -txn -lock_max 2500 \	    {-home $clientdir -rep_client -rep_transport [list 2 replsend]}]	error_check_good client_env [is_valid_env $clientenv] TRUE	# Bring the client online by processing the startup messages.	set donenow 0	while { 1 } {		set nproced 0		incr nproced [replprocessqueue $masterenv 1]		incr nproced [replprocessqueue $clientenv 2]		if { $nproced == 0 } {			break		}	}	# Open a test database on the master (so we can test having handles	# open across an upgrade).	puts "\tRep0$tnum.a:\	    Opening test database for post-upgrade client logging test."	set master_upg_db [berkdb_open \	    -create -auto_commit -btree -env $masterenv rep0$tnum-upg.db]	set puttxn [$masterenv txn]	error_check_good master_upg_db_put \	    [$master_upg_db put -txn $puttxn hello world] 0	error_check_good puttxn_commit [$puttxn commit] 0	error_check_good master_upg_db_close [$master_upg_db close] 0	# Run a modified test001 in the master (and update client).	puts "\tRep0$tnum.b: Running test001 in replicated env."	eval test001 $method $niter 0 $tnum 1 -env $masterenv $largs	set donenow 0	while { 1 } {		set nproced 0		incr nproced [replprocessqueue $masterenv 1]		incr nproced [replprocessqueue $clientenv 2]		if { $nproced == 0 } {			break		}	}	# Open the cross-upgrade database on the client and check its contents.	set client_upg_db [berkdb_open \	     -create -auto_commit -btree -env $clientenv rep0$tnum-upg.db]	error_check_good client_upg_db_get [$client_upg_db get hello] \	     [list [list hello world]]	# !!! We use this handle later.  Don't close it here.	# Verify the database in the client dir.	puts "\tRep0$tnum.c: Verifying client database contents."	set testdir [get_home $masterenv]	set t1 $testdir/t1	set t2 $testdir/t2	set t3 $testdir/t3	open_and_dump_file test0$tnum.db $clientenv $t1 \	    $checkfunc dump_file_direction "-first" "-next"	# Remove the file (and update client).	puts "\tRep0$tnum.d: Remove the file on the master and close master."	error_check_good remove \	    [$masterenv dbremove -auto_commit test0$tnum.db] 0	error_check_good masterenv_close [$masterenv close] 0	set donenow 0	while { 1 } {		set nproced 0		incr nproced [replprocessqueue $masterenv 1]		incr nproced [replprocessqueue $clientenv 2]		if { $nproced == 0 } {			break		}	}	# Don't get confused in Tcl.	puts "\tRep0$tnum.e: Upgrade client."	set newmasterenv $clientenv	error_check_good upgrade_client [$newmasterenv rep_start -master] 0	# Run test001 in the new master	puts "\tRep0$tnum.f: Running test001 in new master."	eval test001 $method $niter 0 $tnum 1 -env $newmasterenv $largs	set donenow 0	while { 1 } {		set nproced 0		incr nproced [replprocessqueue $newmasterenv 2]		if { $nproced == 0 } {			break		}	}	puts "\tRep0$tnum.g: Reopen old master as client and catch up."	# Throttle master so it can't send everything at once	$newmasterenv rep_limit 0 [expr 64 * 1024]	set newclientenv [eval {berkdb_env -create -recover} $envargs \	    -txn -lock_max 2500 \	    {-home $masterdir -rep_client -rep_transport [list 1 replsend]}]	error_check_good newclient_env [is_valid_env $newclientenv] TRUE	set donenow 0	while { 1 } {		set nproced 0		incr nproced [replprocessqueue $newclientenv 1]		incr nproced [replprocessqueue $newmasterenv 2]		if { $nproced == 0 } {			break		}	}	set stats [$newmasterenv rep_stat]	set nthrottles [getstats $stats {Transmission limited}]	error_check_bad nthrottles $nthrottles -1	error_check_bad nthrottles $nthrottles 0	# Run a modified test001 in the new master (and update client).	puts "\tRep0$tnum.h: Running test001 in new master."	eval test001 $method \	    $niter $niter $tnum 1 -env $newmasterenv $largs	set donenow 0	while { 1 } {		set nproced 0		incr nproced [replprocessqueue $newclientenv 1]		incr nproced [replprocessqueue $newmasterenv 2]		if { $nproced == 0 } {			break		}	}	# Test put to the database handle we opened back when the new master	# was a client.	puts "\tRep0$tnum.i: Test put to handle opened before upgrade."	set puttxn [$newmasterenv txn]	error_check_good client_upg_db_put \	    [$client_upg_db put -txn $puttxn hello there] 0	error_check_good puttxn_commit [$puttxn commit] 0	set donenow 0	while { 1 } {		set nproced 0		incr nproced [replprocessqueue $newclientenv 1]		incr nproced [replprocessqueue $newmasterenv 2]		if { $nproced == 0 } {			break		}	}	# Close the new master's handle for the upgrade-test database;  we	# don't need it.  Then check to make sure the client did in fact	# update the database.	error_check_good client_upg_db_close [$client_upg_db close] 0	set newclient_upg_db [berkdb_open -env $newclientenv rep0$tnum-upg.db]	error_check_good newclient_upg_db_get [$newclient_upg_db get hello] \	    [list [list hello there]]	error_check_good newclient_upg_db_close [$newclient_upg_db close] 0	# Verify the database in the client dir.	puts "\tRep0$tnum.j: Verifying new client database contents."	set testdir [get_home $newmasterenv]	set t1 $testdir/t1	set t2 $testdir/t2	set t3 $testdir/t3	open_and_dump_file test0$tnum.db $newclientenv $t1 \	    $checkfunc dump_file_direction "-first" "-next"	if { [string compare [convert_method $method] -recno] != 0 } {		filesort $t1 $t3	}	error_check_good diff_files($t2,$t3) [filecmp $t2 $t3] 0	error_check_good newmasterenv_close [$newmasterenv close] 0	error_check_good newclientenv_close [$newclientenv close] 0	if { [lsearch $envargs "-encrypta*"] !=-1 } {		set encrypt 1	}	error_check_good verify \	    [verify_dir $clientdir "\tRep0$tnum.k: " 0 0 1] 0	replclose $testdir/MSGQUEUEDIR}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -