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

📄 sysscript.tcl

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 TCL
字号:
# See the file LICENSE for redistribution information.## Copyright (c) 1996-2002#	Sleepycat Software.  All rights reserved.## $Id: sysscript.tcl,v 11.17 2002/07/29 17:05:24 sue Exp $## System integration test script.# This script runs a single process that tests the full functionality of# the system.  The database under test contains nfiles files.  Each process# randomly generates a key and some data.  Both keys and data are bimodally# distributed between small keys (1-10 characters) and large keys (the avg# length is indicated via the command line parameter.# The process then decides on a replication factor between 1 and nfiles.# It writes the key and data to that many files and tacks on the file ids# of the files it writes to the data string.  For example, let's say that# I randomly generate the key dog and data cat.  Then I pick a replication# factor of 3.  I pick 3 files from the set of n (say 1, 3, and 5).  I then# rewrite the data as 1:3:5:cat.  I begin a transaction, add the key/data# pair to each file and then commit.  Notice that I may generate replication# of the form 1:3:3:cat in which case I simply add a duplicate to file 3.## Usage: sysscript dir nfiles key_avg data_avg## dir: DB_HOME directory# nfiles: number of files in the set# key_avg: average big key size# data_avg: average big data sizesource ./include.tclsource $test_path/test.tclsource $test_path/testutils.tclset mypid [pid]set usage "sysscript dir nfiles key_avg data_avg method"# Verify usageif { $argc != 5 } {	puts stderr "FAIL:[timestamp] Usage: $usage"	exit}puts [concat "Argc: " $argc " Argv: " $argv]# Initialize argumentsset dir [lindex $argv 0]set nfiles [ lindex $argv 1 ]set key_avg [ lindex $argv 2 ]set data_avg [ lindex $argv 3 ]set method [ lindex $argv 4 ]# Initialize seedglobal rand_initberkdb srand $rand_initputs "Beginning execution for $mypid"puts "$dir DB_HOME"puts "$nfiles files"puts "$key_avg average key length"puts "$data_avg average data length"flush stdout# Create local environmentset dbenv [berkdb_env -txn -home $dir]set err [catch {error_check_good $mypid:dbenv [is_substr $dbenv env] 1} ret]if {$err != 0} {	puts $ret	return}# Now open the filesfor { set i 0 } { $i < $nfiles } { incr i } {	set file test044.$i.db	set db($i) [berkdb open -auto_commit -env $dbenv $method $file]	set err [catch {error_check_bad $mypid:dbopen $db($i) NULL} ret]	if {$err != 0} {		puts $ret		return	}	set err [catch {error_check_bad $mypid:dbopen [is_substr $db($i) \	    error] 1} ret]	if {$err != 0} {		puts $ret		return	}}set record_based [is_record_based $method]while { 1 } {	# Decide if we're going to create a big key or a small key	# We give small keys a 70% chance.	if { [berkdb random_int 1 10] < 8 } {		set k [random_data 5 0 0 $record_based]	} else {		set k [random_data $key_avg 0 0 $record_based]	}	set data [chop_data $method [random_data $data_avg 0 0]]	set txn [$dbenv txn]	set err [catch {error_check_good $mypid:txn_begin [is_substr $txn \	    $dbenv.txn] 1} ret]	if {$err != 0} {		puts $ret		return	}	# Open cursors	for { set f 0 } {$f < $nfiles} {incr f} {		set cursors($f) [$db($f) cursor -txn $txn]		set err [catch {error_check_good $mypid:cursor_open \		    [is_substr $cursors($f) $db($f)] 1} ret]		if {$err != 0} {			puts $ret			return		}	}	set aborted 0	# Check to see if key is already in database	set found 0	for { set i 0 } { $i < $nfiles } { incr i } {		set r [$db($i) get -txn $txn $k]		set r [$db($i) get -txn $txn $k]		if { $r == "-1" } {			for {set f 0 } {$f < $nfiles} {incr f} {				set err [catch {error_check_good \				    $mypid:cursor_close \				    [$cursors($f) close] 0} ret]				if {$err != 0} {					puts $ret					return				}			}			set err [catch {error_check_good $mypid:txn_abort \			    [$txn abort] 0} ret]			if {$err != 0} {				puts $ret				return			}			set aborted 1			set found 2			break		} elseif { $r != "Key $k not found." } {			set found 1			break		}	}	switch $found {	2 {		# Transaction aborted, no need to do anything.	}	0 {		# Key was not found, decide how much to replicate		# and then create a list of that many file IDs.		set repl [berkdb random_int 1 $nfiles]		set fset ""		for { set i 0 } { $i < $repl } {incr i} {			set f [berkdb random_int 0 [expr $nfiles - 1]]			lappend fset $f			set data [chop_data $method $f:$data]		}		foreach i $fset {			set r [$db($i) put -txn $txn $k $data]			if {$r == "-1"} {				for {set f 0 } {$f < $nfiles} {incr f} {					set err [catch {error_check_good \					    $mypid:cursor_close \					    [$cursors($f) close] 0} ret]					if {$err != 0} {						puts $ret						return					}				}				set err [catch {error_check_good \				    $mypid:txn_abort [$txn abort] 0} ret]				if {$err != 0} {					puts $ret					return				}				set aborted 1				break			}		}	}	1 {		# Key was found.  Make sure that all the data values		# look good.		set f [zero_list $nfiles]		set data $r		while { [set ndx [string first : $r]] != -1 } {			set fnum [string range $r 0 [expr $ndx - 1]]			if { [lindex $f $fnum] == 0 } {				#set flag -set				set full [record $cursors($fnum) get -set $k]			} else {				#set flag -next				set full [record $cursors($fnum) get -next]			}			if {[llength $full] == 0} {				for {set f 0 } {$f < $nfiles} {incr f} {					set err [catch {error_check_good \					    $mypid:cursor_close \					    [$cursors($f) close] 0} ret]					if {$err != 0} {						puts $ret						return					}				}				set err [catch {error_check_good \				    $mypid:txn_abort [$txn abort] 0} ret]				if {$err != 0} {					puts $ret					return				}				set aborted 1				break			}			set err [catch {error_check_bad \			    $mypid:curs_get($k,$data,$fnum,$flag) \			    [string length $full] 0} ret]			if {$err != 0} {				puts $ret				return			}			set key [lindex [lindex $full 0] 0]			set rec [pad_data $method [lindex [lindex $full 0] 1]]			set err [catch {error_check_good \			    $mypid:dbget_$fnum:key $key $k} ret]			if {$err != 0} {				puts $ret				return			}			set err [catch {error_check_good \			    $mypid:dbget_$fnum:data($k) $rec $data} ret]			if {$err != 0} {				puts $ret				return			}			set f [lreplace $f $fnum $fnum 1]			incr ndx			set r [string range $r $ndx end]		}	}	}	if { $aborted == 0 } {		for {set f 0 } {$f < $nfiles} {incr f} {			set err [catch {error_check_good $mypid:cursor_close \			    [$cursors($f) close] 0} ret]			if {$err != 0} {				puts $ret				return			}		}		set err [catch {error_check_good $mypid:commit [$txn commit] \		    0} ret]		if {$err != 0} {			puts $ret			return		}	}}# Close filesfor { set i 0 } { $i < $nfiles} { incr i } {	set r [$db($i) close]	set err [catch {error_check_good $mypid:db_close:$i $r 0} ret]	if {$err != 0} {		puts $ret		return	}}# Close tm and environment$dbenv closeputs "[timestamp] [pid] Complete"flush stdoutfilecheck $file 0

⌨️ 快捷键说明

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