1# See the file LICENSE for redistribution information.
2#
3# Copyright (c) 1999-2009 Oracle.  All rights reserved.
4#
5# $Id$
6#
7# TEST	env008
8# TEST	Test environments and subdirectories.
9proc env008 { } {
10	global errorInfo
11	global errorCode
12
13	source ./include.tcl
14
15	env_cleanup $testdir
16
17	set subdir  1/1
18	set subdir1 1/2
19	file mkdir $testdir/$subdir $testdir/$subdir1
20	set testfile $subdir/env.db
21
22	puts "Env008: Test of environments and subdirectories."
23
24	puts "\tEnv008.a: Create env and db."
25	set env [berkdb_env -create -mode 0644 -home $testdir -txn]
26	error_check_good env [is_valid_env $env] TRUE
27
28	puts "\tEnv008.b: Remove db in subdir."
29	env008_db $env $testfile
30	error_check_good dbremove:$testfile \
31	    [berkdb dbremove -env $env $testfile] 0
32
33	#
34	# Rather than remaking the db every time for the renames
35	# just move around the new file name to another new file
36	# name.
37	#
38	puts "\tEnv008.c: Rename db in subdir."
39	env008_db $env $testfile
40	set newfile $subdir/new.db
41	error_check_good dbrename:$testfile/.. \
42	    [berkdb dbrename -env $env $testfile $newfile] 0
43	set testfile $newfile
44
45	puts "\tEnv008.d: Rename db to parent dir."
46	set newfile $subdir/../new.db
47	error_check_good dbrename:$testfile/.. \
48	    [berkdb dbrename -env $env $testfile $newfile] 0
49	set testfile $newfile
50
51	puts "\tEnv008.e: Rename db to child dir."
52	set newfile $subdir/env.db
53	error_check_good dbrename:$testfile/.. \
54	    [berkdb dbrename -env $env $testfile $newfile] 0
55	set testfile $newfile
56
57	puts "\tEnv008.f: Rename db to another dir."
58	set newfile $subdir1/env.db
59	error_check_good dbrename:$testfile/.. \
60	    [berkdb dbrename -env $env $testfile $newfile] 0
61
62	error_check_good envclose [$env close] 0
63	puts "\tEnv008 complete."
64}
65
66proc env008_db { env testfile } {
67	set db [berkdb_open -env $env -create -btree $testfile]
68	error_check_good dbopen [is_valid_db $db] TRUE
69	set ret [$db put key data]
70	error_check_good dbput $ret 0
71	error_check_good dbclose [$db close] 0
72}
73