1# See the file LICENSE for redistribution information. 2# 3# Copyright (c) 1996,2008 Oracle. All rights reserved. 4# 5# $Id: txn001.tcl,v 12.6 2008/01/08 20:58:53 bostic Exp $ 6# 7# TEST txn001 8# TEST Begin, commit, abort testing. 9proc txn001 { {tnum "001"} { max 1024 } { ntxns 50 } } { 10 source ./include.tcl 11 global txn_curid 12 global txn_maxid 13 14 puts -nonewline "Txn$tnum: Basic begin, commit, abort" 15 16 if { $tnum != "001"} { 17 puts " (with ID wrap)" 18 } else { 19 puts "" 20 } 21 22 # Open environment 23 env_cleanup $testdir 24 25 set env [eval {berkdb_env -create -mode 0644 -txn \ 26 -txn_max $max -home $testdir}] 27 error_check_good evn_open [is_valid_env $env] TRUE 28 error_check_good txn_id_set \ 29 [ $env txn_id_set $txn_curid $txn_maxid ] 0 30 txn001_suba $ntxns $env $tnum 31 txn001_subb $ntxns $env $tnum 32 txn001_subc $ntxns $env $tnum 33 # Close and unlink the file 34 error_check_good env_close:$env [$env close] 0 35} 36 37proc txn001_suba { ntxns env tnum } { 38 source ./include.tcl 39 40 # We will create a bunch of transactions and commit them. 41 set txn_list {} 42 set tid_list {} 43 puts "\tTxn$tnum.a: Beginning/Committing $ntxns Transactions in $env" 44 for { set i 0 } { $i < $ntxns } { incr i } { 45 set txn [$env txn] 46 error_check_good txn_begin [is_valid_txn $txn $env] TRUE 47 48 lappend txn_list $txn 49 50 set tid [$txn id] 51 error_check_good tid_check [lsearch $tid_list $tid] -1 52 53 lappend tid_list $tid 54 } 55 56 # Now commit them all 57 foreach t $txn_list { 58 error_check_good txn_commit:$t [$t commit] 0 59 } 60} 61 62proc txn001_subb { ntxns env tnum } { 63 # We will create a bunch of transactions and abort them. 64 set txn_list {} 65 set tid_list {} 66 puts "\tTxn$tnum.b: Beginning/Aborting Transactions" 67 for { set i 0 } { $i < $ntxns } { incr i } { 68 set txn [$env txn] 69 error_check_good txn_begin [is_valid_txn $txn $env] TRUE 70 71 lappend txn_list $txn 72 73 set tid [$txn id] 74 error_check_good tid_check [lsearch $tid_list $tid] -1 75 76 lappend tid_list $tid 77 } 78 79 # Now abort them all 80 foreach t $txn_list { 81 error_check_good txn_abort:$t [$t abort] 0 82 } 83} 84 85proc txn001_subc { ntxns env tnum } { 86 # We will create a bunch of transactions and commit them. 87 set txn_list {} 88 set tid_list {} 89 puts "\tTxn$tnum.c: Beginning/Prepare/Committing Transactions" 90 for { set i 0 } { $i < $ntxns } { incr i } { 91 set txn [$env txn] 92 error_check_good txn_begin [is_valid_txn $txn $env] TRUE 93 94 lappend txn_list $txn 95 96 set tid [$txn id] 97 error_check_good tid_check [lsearch $tid_list $tid] -1 98 99 lappend tid_list $tid 100 } 101 102 # Now prepare them all 103 foreach t $txn_list { 104 error_check_good txn_prepare:$t \ 105 [$t prepare [make_gid global:$t]] 0 106 } 107 108 # Now commit them all 109 foreach t $txn_list { 110 error_check_good txn_commit:$t [$t commit] 0 111 } 112 113} 114 115