env004.tcl
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. # See the file LICENSE for redistribution information.
  2. #
  3. # Copyright (c) 1996, 1997, 1998, 1999, 2000
  4. # Sleepycat Software.  All rights reserved.
  5. #
  6. # $Id: env004.tcl,v 11.14 2000/08/25 14:21:50 sue Exp $
  7. #
  8. # Env Test 4
  9. # Test multiple data directories.  Do a bunch of different opens
  10. # to make sure that the files are detected in different directories.
  11. proc env004 { } {
  12. source ./include.tcl
  13. set method "hash"
  14. set omethod [convert_method $method]
  15. set args [convert_args $method ""]
  16. puts "Env004: Multiple data directory test."
  17. env_cleanup $testdir
  18. file mkdir $testdir/data1
  19. file mkdir $testdir/data2
  20. file mkdir $testdir/data3
  21. puts "tEnv004.a: Multiple data directories in DB_CONFIG file"
  22. # Create a config file
  23. set cid [open $testdir/DB_CONFIG w]
  24. puts $cid "set_data_dir ."
  25. puts $cid "set_data_dir data1"
  26. puts $cid "set_data_dir data2"
  27. puts $cid "set_data_dir data3"
  28. close $cid
  29. # Now get pathnames
  30. set curdir [pwd]
  31. cd $testdir
  32. set fulldir [pwd]
  33. cd $curdir
  34. set e [berkdb env -create -private -home $testdir]
  35. error_check_good dbenv [is_valid_env $e] TRUE
  36. ddir_test $fulldir $method $e $args
  37. error_check_good env_close [$e close] 0
  38. puts "tEnv004.b: Multiple data directories in berkdb env call."
  39. env_cleanup $testdir
  40. file mkdir $testdir/data1
  41. file mkdir $testdir/data2
  42. file mkdir $testdir/data3
  43. # Now call dbenv with config specified
  44. set e [berkdb env -create -private 
  45.     -data_dir . -data_dir data1 -data_dir data2 
  46.     -data_dir data3 -home $testdir]
  47. error_check_good dbenv [is_valid_env $e] TRUE
  48. ddir_test $fulldir $method $e $args
  49. error_check_good env_close [$e close] 0
  50. env_cleanup $testdir
  51. }
  52. proc ddir_test { fulldir method e args } {
  53. source ./include.tcl
  54. set args [convert_args $args]
  55. set omethod [convert_method $method]
  56. # Now create one file in each directory
  57. set db1 [eval {berkdb_open -create 
  58.     -truncate -mode 0644 $omethod -env $e} $args {data1/datafile1.db}]
  59. error_check_good dbopen1 [is_valid_db $db1] TRUE
  60. set db2 [eval {berkdb_open -create 
  61.     -truncate -mode 0644 $omethod -env $e} $args {data2/datafile2.db}]
  62. error_check_good dbopen2 [is_valid_db $db2] TRUE
  63. set db3 [eval {berkdb_open -create 
  64.     -truncate -mode 0644 $omethod -env $e} $args {data3/datafile3.db}]
  65. error_check_good dbopen3 [is_valid_db $db3] TRUE
  66. # Close the files
  67. error_check_good db_close1 [$db1 close] 0
  68. error_check_good db_close2 [$db2 close] 0
  69. error_check_good db_close3 [$db3 close] 0
  70. # Now, reopen the files without complete pathnames and make
  71. # sure that we find them.
  72. set db1 [berkdb_open -env $e $fulldir/data1/datafile1.db]
  73. error_check_good dbopen1 [is_valid_db $db1] TRUE
  74. set db2 [berkdb_open -env $e $fulldir/data2/datafile2.db]
  75. error_check_good dbopen2 [is_valid_db $db2] TRUE
  76. set db3 [berkdb_open -env $e $fulldir/data3/datafile3.db]
  77. error_check_good dbopen3 [is_valid_db $db3] TRUE
  78. # Finally close all the files
  79. error_check_good db_close1 [$db1 close] 0
  80. error_check_good db_close2 [$db2 close] 0
  81. error_check_good db_close3 [$db3 close] 0
  82. }