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

MySQL数据库

开发平台:

Visual C++

  1. # See the file LICENSE for redistribution information.
  2. #
  3. # Copyright (c) 1999, 2000
  4. # Sleepycat Software.  All rights reserved.
  5. #
  6. # $Id: sdb001.tcl,v 11.12 2000/08/25 14:21:52 sue Exp $
  7. #
  8. # Sub DB Test 1 {access method}
  9. # Test non-subdb and subdb operations
  10. # Test naming (filenames begin with -)
  11. # Test existence (cannot create subdb of same name with -excl)
  12. proc subdb001 { method args } {
  13. source ./include.tcl
  14. set args [convert_args $method $args]
  15. set omethod [convert_method $method]
  16. puts "Subdb001: $method ($args) subdb and non-subdb tests"
  17. # Create the database and open the dictionary
  18. set testfile $testdir/subdb001.db
  19. set subdb subdb0
  20. cleanup $testdir NULL
  21. puts "tSubdb001.a: Non-subdb database and subdb operations"
  22. #
  23. # Create a db with no subdbs.  Add some data.  Close.  Try to
  24. # open/add with a subdb.  Should fail.
  25. #
  26. puts "tSubdb001.a.0: Create db, add data, close, try subdb"
  27. set db [eval {berkdb_open -create -truncate -mode 0644} 
  28.     $args {$omethod $testfile}]
  29. error_check_good dbopen [is_valid_db $db] TRUE
  30. set did [open $dict]
  31. set pflags ""
  32. set gflags ""
  33. set txn ""
  34. set count 0
  35. if { [is_record_based $method] == 1 } {
  36. append gflags " -recno"
  37. }
  38. while { [gets $did str] != -1 && $count < 5 } {
  39. if { [is_record_based $method] == 1 } {
  40. global kvals
  41. set key [expr $count + 1]
  42. set kvals($key) $str
  43. } else {
  44. set key $str
  45. }
  46. set ret [eval 
  47.     {$db put} $txn $pflags {$key [chop_data $method $str]}]
  48. error_check_good put $ret 0
  49. set ret [eval {$db get} $gflags {$key}]
  50. error_check_good 
  51.     get $ret [list [list $key [pad_data $method $str]]]
  52. incr count
  53. }
  54. close $did
  55. error_check_good db_close [$db close] 0
  56. set ret [catch {eval {berkdb_open_noerr -create -mode 0644} $args 
  57.     {$omethod $testfile $subdb}} db]
  58. error_check_bad dbopen $ret 0
  59. #
  60. # Create a db with no subdbs.  Add no data.  Close.  Try to
  61. # open/add with a subdb.  Should fail.
  62. #
  63. set testfile $testdir/subdb001a.db
  64. puts "tSubdb001.a.1: Create db, close, try subdb"
  65. set db [eval {berkdb_open -create -truncate -mode 0644} $args 
  66.     {$omethod $testfile}]
  67. error_check_good dbopen [is_valid_db $db] TRUE
  68. error_check_good db_close [$db close] 0
  69. set ret [catch {eval {berkdb_open_noerr -create -mode 0644} $args 
  70.     {$omethod $testfile $subdb}} db]
  71. error_check_bad dbopen $ret 0
  72. if { [is_queue $method] == 1 } {
  73. puts "Subdb001: skipping remainder of test for method $method"
  74. return
  75. }
  76. #
  77. # Test naming, db and subdb names beginning with -.
  78. #
  79. puts "tSubdb001.b: Naming"
  80. set cwd [pwd]
  81. cd $testdir
  82. set testfile1 -subdb001.db
  83. set subdb -subdb
  84. puts "tSubdb001.b.0: Create db and subdb with -name, no --"
  85. set ret [catch {eval {berkdb_open -create -mode 0644} $args 
  86.     {$omethod $testfile1 $subdb}} db]
  87. error_check_bad dbopen $ret 0
  88. puts "tSubdb001.b.1: Create db and subdb with -name, with --"
  89. set db [eval {berkdb_open -create -mode 0644} $args 
  90.     {$omethod -- $testfile1 $subdb}]
  91. error_check_good dbopen [is_valid_db $db] TRUE
  92. error_check_good db_close [$db close] 0
  93. cd $cwd
  94. #
  95. # Create 1 db with 1 subdb.  Try to create another subdb of
  96. # the same name.  Should fail.
  97. #
  98. puts "tSubdb001.c: Existence check"
  99. set testfile $testdir/subdb001c.db
  100. set subdb subdb
  101. set ret [catch {eval {berkdb_open -create -excl -mode 0644} $args 
  102.     {$omethod $testfile $subdb}} db]
  103. error_check_good dbopen [is_valid_db $db] TRUE
  104. set ret [catch {eval {berkdb_open_noerr -create -excl -mode 0644} 
  105.     $args {$omethod $testfile $subdb}} db1]
  106. error_check_bad dbopen $ret 0
  107. error_check_good db_close [$db close] 0
  108. return
  109. }