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
|