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

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: logtrack.tcl,v 11.6 2000/10/27 15:30:39 krinsky Exp $
  7. #
  8. # logtrack.tcl:  A collection of routines, formerly implemented in Perl
  9. # as log.pl, to track which log record types the test suite hits.
  10. set ltsname "logtrack_seen.db"
  11. set ltlist  $test_path/logtrack.list
  12. set tmpname "logtrack_tmp"
  13. proc logtrack_clean { } {
  14. global ltsname
  15. file delete -force $ltsname
  16. return
  17. }
  18. proc logtrack_init { } {
  19. global ltsname
  20. logtrack_clean
  21. # Create an empty tracking database.
  22. [berkdb_open -create -truncate -btree $ltsname] close
  23. return
  24. }
  25. # Dump the logs for directory dirname and record which log
  26. # records were seen.
  27. proc logtrack_read { dirname } {
  28. global ltsname tmpname util_path
  29. set seendb [berkdb_open $ltsname]
  30. error_check_good seendb_open [is_valid_db $seendb] TRUE
  31. file delete -force $tmpname
  32. set ret [catch {exec $util_path/db_printlog -N 
  33.     -h "$dirname" > $tmpname} res]
  34. error_check_good printlog $ret 0
  35. error_check_good tmpfile_exists [file exists $tmpname] 1
  36. set f [open $tmpname r]
  37. while { [gets $f record] >= 0 } {
  38. regexp {[[^]]*][[^]]*]([^:]*):} $record whl name
  39. error_check_good seendb_put [$seendb put $name ""] 0
  40. }
  41. close $f
  42. file delete -force $tmpname
  43. error_check_good seendb_close [$seendb close] 0
  44. }
  45. # Print the log record types that were seen but should not have been
  46. # seen and the log record types that were not seen but should have been seen.
  47. proc logtrack_summary { } {
  48. global ltsname ltlist testdir
  49. set seendb [berkdb_open $ltsname]
  50. error_check_good seendb_open [is_valid_db $seendb] TRUE
  51. set existdb [berkdb_open -create -btree]
  52. error_check_good existdb_open [is_valid_db $existdb] TRUE
  53. set deprecdb [berkdb_open -create -btree]
  54. error_check_good deprecdb_open [is_valid_db $deprecdb] TRUE
  55. error_check_good ltlist_exists [file exists $ltlist] 1
  56. set f [open $ltlist r]
  57. set pref ""
  58. while { [gets $f line] >= 0 } {
  59. # Get the keyword, the first thing on the line:
  60. # BEGIN/DEPRECATED/PREFIX
  61. set keyword [lindex $line 0]
  62. if { [string compare $keyword PREFIX] == 0 } {
  63. # New prefix.
  64. set pref [lindex $line 1]
  65. } elseif { [string compare $keyword BEGIN] == 0 } {
  66. # A log type we care about;  put it on our list.
  67. # Skip noop and debug.
  68. if { [string compare [lindex $line 1] noop] == 0 } {
  69. continue
  70. }
  71. if { [string compare [lindex $line 1] debug] == 0 } {
  72. continue
  73. }
  74. error_check_good exist_put [$existdb put 
  75.     ${pref}_[lindex $line 1] ""] 0
  76. } elseif { [string compare $keyword DEPRECATED] == 0 } {
  77. error_check_good deprec_put [$deprecdb put 
  78.     ${pref}_[lindex $line 1] ""] 0
  79. }
  80. }
  81. error_check_good exist_curs 
  82.     [is_valid_cursor [set ec [$existdb cursor]] $existdb] TRUE
  83. while { [llength [set dbt [$ec get -next]]] != 0 } {
  84. set rec [lindex [lindex $dbt 0] 0]
  85. if { [$seendb count $rec] == 0 } {
  86. puts "FAIL: log record type $rec not seen"
  87. }
  88. }
  89. error_check_good exist_curs_close [$ec close] 0
  90. error_check_good seen_curs 
  91.     [is_valid_cursor [set sc [$existdb cursor]] $existdb] TRUE
  92. while { [llength [set dbt [$sc get -next]]] != 0 } {
  93. set rec [lindex [lindex $dbt 0] 0]
  94. if { [$existdb count $rec] == 0 } {
  95. if { [$deprecdb count $rec] == 0 } {
  96.        puts "FAIL: unknown log record type $rec seen"
  97. } else {
  98.        puts "FAIL: deprecated log record type $rec seen"
  99. }
  100. }
  101. }
  102. error_check_good seen_curs_close [$sc close] 0
  103. error_check_good seendb_close [$seendb close] 0
  104. error_check_good existdb_close [$existdb close] 0
  105. error_check_good deprecdb_close [$deprecdb close] 0
  106. logtrack_clean
  107. }