1# See the file LICENSE for redistribution information.
2#
3# Copyright (c) 2004,2008 Oracle.  All rights reserved.
4#
5# $Id: envscript.tcl,v 12.8 2008/01/08 20:58:53 bostic Exp $
6#
7# Envscript -- for use with env012, DB_REGISTER test.
8# Usage: envscript testdir testfile putget key data recover envclose wait
9# testdir: directory containing the env we are joining.
10# testfile: file name for database.
11# putget: What to do in the db: put, get, or loop.
12# key: key to store or get
13# data: data to store or get
14# recover: include or omit the -recover flag in opening the env.
15# envclose: close env at end of test?
16# wait: how many seconds to wait before closing env at end of test.
17
18source ./include.tcl
19
20set usage "envscript testdir testfile putget key data recover envclose wait"
21
22# Verify usage
23if { $argc != 7 } {
24	puts stderr "FAIL:[timestamp] Usage: $usage"
25	exit
26}
27
28# Initialize arguments
29set testdir [ lindex $argv 0 ]
30set testfile [ lindex $argv 1 ]
31set putget [lindex $argv 2 ]
32set key [ lindex $argv 3 ]
33set data [ lindex $argv 4 ]
34set recover [ lindex $argv 5 ]
35set wait [ lindex $argv 6 ]
36
37set flags {}
38if { $recover == "RECOVER" } {
39	set flags " -recover "
40}
41
42# Open and register environment.
43if {[catch {eval {berkdb_env} \
44    -create -home $testdir -txn -register $flags} dbenv]} {
45    	puts "FAIL: opening env returned $dbenv"
46}
47error_check_good envopen [is_valid_env $dbenv] TRUE
48
49# Open database, put or get, close database.
50if {[catch {eval {berkdb_open} \
51    -create -auto_commit -btree -env $dbenv $testfile} db]} {
52	puts "FAIL: opening db returned $db"
53}
54error_check_good dbopen [is_valid_db $db] TRUE
55
56switch $putget {
57	PUT {
58		set txn [$dbenv txn]
59		error_check_good db_put [eval {$db put} -txn $txn $key $data] 0
60		error_check_good txn_commit [$txn commit] 0
61	}
62	GET {
63		set ret [$db get $key]
64		error_check_good db_get [lindex [lindex $ret 0] 1] $data
65	}
66	LOOP {
67		while { 1 } {
68			set txn [$dbenv txn]
69			error_check_good db_put \
70			    [eval {$db put} -txn $txn $key $data] 0
71			error_check_good txn_commit [$txn commit] 0
72			tclsleep 1
73		}
74	}
75	default {
76		puts "FAIL: Unrecognized putget value $putget"
77	}
78}
79
80error_check_good db_close [$db close] 0
81
82# Wait.
83while { $wait > 0 } {
84puts "waiting ... wait is $wait"
85	tclsleep 1
86	incr wait -1
87}
88
89error_check_good env_close [$dbenv close] 0
90