File: log.rb

package info (click to toggle)
ruby-bdb 0.6.6-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 3,652 kB
  • ctags: 4,687
  • sloc: ansic: 13,663; cpp: 8,601; ruby: 7,903; sh: 47; makefile: 18
file content (147 lines) | stat: -rwxr-xr-x 3,252 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/usr/bin/ruby
$LOAD_PATH.unshift *%w{tests}
require 'bdb'
require 'runit_'

def clean
   Dir.foreach('tmp') do |x|
      if FileTest.file?("tmp/#{x}")
	 File.unlink("tmp/#{x}")
      end
   end
end

$env = nil
clean

print "\nVERSION of BDB is #{BDB::VERSION}\n"

Inh = defined?(RUNIT) ? RUNIT : Test::Unit

class TestLog < Inh::TestCase
   def test_01_init
      assert_kind_of(BDB::Env, $env = BDB::Env.open("tmp", BDB::CREATE | BDB::INIT_LOG, "thread" => false) , "<env open>")
   end

   def test_02_push
      $lsn = []
      100.times do |i|
	 assert_kind_of(BDB::Lsn, lsn = $env.log_put("test #{i}"), "<lsn>")
	 $lsn.push lsn
      end
      assert_equal($env, $env.log_flush, "<log flush>")
      assert_equal(100, $lsn.size, "lsn size")
      assert_equal($env, $lsn[0].env, "<env>")
      log = Dir["tmp/log*"][0].sub(/\Atmp./,'')
      assert_equal([log], $env.log_archive(BDB::ARCH_LOG), "<log archive>")
      assert_equal("tmp/#{log}", $lsn[0].file, "<log file>")
      assert_equal($lsn[0], $lsn[0].flush, "<lsn flush>")
   end

   def test_03_each
      i = 0
      $env.log_each do |r, l|
	 assert_equal($lsn[i], l, "lsn ==")
	 assert_equal("test #{i}", r, "value ==")
	 i += 1
      end
      assert_equal(100, i, "<end each>")
   end

   def test_04_reverse_each
      i = 99
      $env.log_reverse_each do |r, l|
	 assert_equal($lsn[i], l, "lsn == reverse")
	 assert_equal("test #{i}", r, "value == reverse")
	 i -= 1
      end
      assert_equal(-1, i, "<end reverse each>")
   end
 
   def test_05_each
      if $lsn[0].respond_to?(:each)
	 i = 24
	 $lsn[24].log_each do |r, l|
	    assert_equal($lsn[i], l, "lsn ==")
	    assert_equal("test #{i}", r, "value ==")
	    i += 1
	 end
	 assert_equal(100, i, "<end each>")
     end
   end

   def test_06_reverse_each
      if $lsn[0].respond_to?(:reverse_each)
	 i = 55
	 $lsn[55].log_reverse_each do |r, l|
	    assert_equal($lsn[i], l, "lsn == reverse")
	    assert_equal("test #{i}", r, "value == reverse")
	    i -= 1
	 end
	 assert_equal(-1, i, "<end reverse each>")
      end
   end
 
   def test_07_random
      begin
	 1000.times do
	    nb = rand($lsn.size)
	    assert_equal("test #{nb}", $lsn[nb].log_get, "<log_get>")
	 end
      ensure
	 $env.close
      end
   end

   def test_08_reinit
      clean
      assert_kind_of(BDB::Env, 
		     $env = BDB::Env.open("tmp",  BDB::CREATE | BDB::INIT_LOG | BDB::INIT_TXN,
					  "thread" => false, 
					  :set_lg_bsize => 10000,
					  "set_lg_max" => 45000),
		     "<open>")
   end

   def test_09_put
      $lsn = []
      $rec = []
      500.times do |i|
	 assert_kind_of(BDB::Lsn, j = $env.log_put("init %d" % i), "<put>")
	 if (i % 25) == 0
	    $rec.push "init %d" % i
	    $lsn.push j
	 end
      end
   end

   def test_10_log_get
      l = nil
      $lsn.each_with_index do |ls, i|
	 if l
	    assert(ls > l, "<compare>")
	 end
	 assert_equal(ls.log_get, $rec[i], "<equal>")
	 l = ls
      end
   end

   def test_11_file
      if BDB::VERSION_MAJOR < 4
	 log_file = Dir.glob("tmp/*")
	 $lsn.each do |ls|
	    assert(log_file.include?(ls.log_file), "<include>")
	 end
      end
   end

   def test_12_end
      $env.close
      clean
   end

end

if defined?(RUNIT)
   RUNIT::CUI::TestRunner.run(TestLog.suite)
end