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

MySQL数据库

开发平台:

Visual C++

  1. # See the file LICENSE for redistribution information.
  2. #
  3. # Copyright (c) 2000
  4. # Sleepycat Software.  All rights reserved.
  5. #
  6. # $Id: test078.tcl,v 1.9 2000/12/11 17:24:55 sue Exp $
  7. #
  8. # DB Test 78: Test of DBC->c_count(). [#303]
  9. proc test078 { method { nkeys 100 } { pagesize 512 } { tnum 78 } args } {
  10. source ./include.tcl
  11. global alphabet rand_init
  12. set args [convert_args $method $args]
  13. set omethod [convert_method $method]
  14. puts "Test0$tnum: Test of key counts."
  15. berkdb srand $rand_init
  16. set eindex [lsearch -exact $args "-env"]
  17. if { $eindex == -1 } {
  18. set testfile $testdir/test0$tnum.db
  19. set env NULL
  20. } else {
  21. set testfile test0$tnum.db
  22. incr eindex
  23. set env [lindex $args $eindex]
  24. }
  25. cleanup $testdir $env
  26. puts "tTest0$tnum.a: No duplicates, trivial answer."
  27. set pgindex [lsearch -exact $args "-pagesize"]
  28. if { $pgindex != -1 } {
  29. puts "Test078: skipping for specific pagesizes"
  30. return
  31. }
  32. set db [eval {berkdb_open -create -truncate -mode 0644
  33.     -pagesize $pagesize} $omethod $args {$testfile}]
  34. error_check_good db_open [is_valid_db $db] TRUE
  35. for { set i 1 } { $i <= $nkeys } { incr i } {
  36. error_check_good put.a($i) [$db put $i
  37.     [pad_data $method $alphabet$i]] 0
  38. error_check_good count.a [$db count $i] 1
  39. }
  40. error_check_good db_close.a [$db close] 0
  41. if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
  42. puts 
  43.     "tTest0$tnum.b: Duplicates not supported in $method, skipping."
  44. return
  45. }
  46. foreach tuple {{b sorted "-dup -dupsort"} {c unsorted "-dup"}} {
  47. set letter [lindex $tuple 0]
  48. set dupopt [lindex $tuple 2]
  49. puts "tTest0$tnum.$letter: Duplicates ([lindex $tuple 1])."
  50. puts "ttTest0$tnum.$letter.1: Populating database."
  51. set db [eval {berkdb_open -create -truncate -mode 0644
  52.     -pagesize $pagesize} $dupopt $omethod $args {$testfile}]
  53. error_check_good db_open [is_valid_db $db] TRUE
  54. for { set i 1 } { $i <= $nkeys } { incr i } {
  55. for { set j 0 } { $j < $i } { incr j } {
  56. error_check_good put.$letter,$i [$db put $i
  57.     [pad_data $method $j$alphabet]] 0
  58. }
  59. }
  60. puts -nonewline "ttTest0$tnum.$letter.2: "
  61. puts "Verifying dup counts on first dup."
  62. for { set i 1 } { $i < $nkeys } { incr i } {
  63. error_check_good count.$letter,$i 
  64.     [$db count $i] $i
  65. }
  66. puts -nonewline "ttTest0$tnum.$letter.3: "
  67. puts "Verifying dup counts on random dup."
  68. for { set i 1 } { $i < $nkeys } { incr i } {
  69. set key [berkdb random_int 1 $nkeys]
  70. error_check_good count.$letter,$i 
  71.     [$db count $i] $i
  72. }
  73. error_check_good db_close.$letter [$db close] 0
  74. }
  75. }