rpc002.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: rpc002.tcl,v 1.7 2000/10/27 13:23:56 sue Exp $
  7. #
  8. # RPC Test 2
  9. # Test invalid RPC functions and make sure we error them correctly
  10. proc rpc002 { } {
  11. global __debug_on
  12. global __debug_print
  13. global errorInfo
  14. source ./include.tcl
  15. set testfile "rpc002.db"
  16. set home [file tail $rpc_testdir]
  17. #
  18. # First start the server.
  19. #
  20. puts "Rpc002: Unsupported interface test"
  21. if { [string compare $rpc_server "localhost"] == 0 } {
  22.        set dpid [exec $util_path/berkeley_db_svc -h $rpc_testdir &]
  23. } else {
  24.        set dpid [exec rsh $rpc_server $rpc_path/berkeley_db_svc 
  25.    -h $rpc_testdir &]
  26. }
  27. puts "tRpc002.a: Started server, pid $dpid"
  28. tclsleep 2
  29. remote_cleanup $rpc_server $rpc_testdir $testdir
  30. puts "tRpc002.b: Unsupported env options"
  31. #
  32. # Test each "pre-open" option for env's.  These need to be
  33. # tested on the 'berkdb env' line.
  34. #
  35. set rlist {
  36. { "-data_dir $rpc_testdir" "Rpc002.b0"}
  37. { "-log_buffer 512" "Rpc002.b1"}
  38. { "-log_dir $rpc_testdir" "Rpc002.b2"}
  39. { "-log_max 100" "Rpc002.b3"}
  40. { "-lock_conflict {3 {0 0 0 0 0 1 0 1 1}}" "Rpc002.b4"}
  41. { "-lock_detect default" "Rpc002.b5"}
  42. { "-lock_max 100" "Rpc002.b6"}
  43. { "-mmapsize 100" "Rpc002.b7"}
  44. { "-shm_key 100" "Rpc002.b9"}
  45. { "-tmp_dir $rpc_testdir" "Rpc002.b10"}
  46. { "-txn_max 100" "Rpc002.b11"}
  47. { "-txn_timestamp 100" "Rpc002.b12"}
  48. { "-verbose {recovery on}" "Rpc002.b13"}
  49. }
  50. set e "berkdb env -create -mode 0644 -home $home -server $rpc_server 
  51.     -client_timeout 10000 -txn"
  52. foreach pair $rlist {
  53. set cmd [lindex $pair 0]
  54. set msg [lindex $pair 1]
  55. puts "t$msg: $cmd"
  56. set stat [catch {eval $e $cmd} ret]
  57. error_check_good $cmd $stat 1
  58. error_check_good $cmd.err 
  59.     [is_substr $errorInfo "meaningless in RPC env"] 1
  60. }
  61. #
  62. # Open an env with all the subsystems (-txn implies all
  63. # the rest)
  64. #
  65. puts "tRpc002.c: Unsupported env related interfaces"
  66. set env [eval {berkdb env -create -mode 0644 -home $home 
  67.     -server $rpc_server -client_timeout 10000 -txn}]
  68. error_check_good envopen [is_valid_env $env] TRUE
  69. set dbcmd "berkdb_open_noerr -create -btree -mode 0644 -env $env 
  70.     $testfile"
  71. set db [eval $dbcmd]
  72. error_check_good dbopen [is_valid_db $db] TRUE
  73. #
  74. # Test each "post-open" option relating to envs, txns, locks,
  75. # logs and mpools.
  76. #
  77. set rlist {
  78. { " lock_detect default" "Rpc002.c0"}
  79. { " lock_get read 1 $env" "Rpc002.c1"}
  80. { " lock_id" "Rpc002.c2"}
  81. { " lock_stat" "Rpc002.c3"}
  82. { " lock_vec 1 {get $env read}" "Rpc002.c4"}
  83. { " log_archive" "Rpc002.c5"}
  84. { " log_file {0 0}" "Rpc002.c6"}
  85. { " log_flush" "Rpc002.c7"}
  86. { " log_get -current" "Rpc002.c8"}
  87. { " log_register $db $testfile" "Rpc002.c9"}
  88. { " log_stat" "Rpc002.c10"}
  89. { " log_unregister $db" "Rpc002.c11"}
  90. { " mpool -create -pagesize 512" "Rpc002.c12"}
  91. { " mpool_stat" "Rpc002.c13"}
  92. { " mpool_sync {0 0}" "Rpc002.c14"}
  93. { " mpool_trickle 50" "Rpc002.c15"}
  94. { " txn_checkpoint -min 1" "Rpc002.c16"}
  95. { " txn_stat" "Rpc002.c17"}
  96. }
  97. foreach pair $rlist {
  98. set cmd [lindex $pair 0]
  99. set msg [lindex $pair 1]
  100. puts "t$msg: $cmd"
  101. set stat [catch {eval $env $cmd} ret]
  102. error_check_good $cmd $stat 1
  103. error_check_good $cmd.err 
  104.     [is_substr $errorInfo "meaningless in RPC env"] 1
  105. }
  106. error_check_good dbclose [$db close] 0
  107. #
  108. # The database operations that aren't supported are few
  109. # because mostly they are the ones Tcl doesn't support
  110. # either so we have no way to get at them.  Test what we can.
  111. #
  112. puts "tRpc002.d: Unsupported database related interfaces"
  113. #
  114. # NOTE: the type of database doesn't matter, just use btree.
  115. #
  116. puts "tRpc002.d0: -cachesize"
  117. set dbcmd "berkdb_open_noerr -create -btree -mode 0644 -env $env 
  118.     -cachesize {0 65536 0} $testfile"
  119. set stat [catch {eval $dbcmd} ret]
  120. error_check_good dbopen_cache $stat 1
  121. error_check_good dbopen_cache_err 
  122.     [is_substr $errorInfo "meaningless in RPC env"] 1
  123. puts "tRpc002.d1: Try to upgrade a database"
  124. #
  125. # NOTE: the type of database doesn't matter, just use btree.
  126. set stat [catch {eval {berkdb upgrade -env} $env $testfile} ret]
  127. error_check_good dbupgrade $stat 1
  128. error_check_good dbupgrade_err 
  129.     [is_substr $errorInfo "meaningless in RPC env"] 1
  130. error_check_good envclose [$env close] 0
  131. exec $KILL $dpid
  132. }