blob: fa40b82b9e2c294735dbf8610b5c67e2d31578e7 (
plain)
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
|
# See the file LICENSE for redistribution information.
#
# Copyright (c) 2001-2003
# Sleepycat Software. All rights reserved.
#
# $Id: bigfile001.tcl,v 11.8 2003/01/08 05:49:20 bostic Exp $
#
# TEST bigfile001
# TEST Create a database greater than 4 GB in size. Close, verify.
# TEST Grow the database somewhat. Close, reverify. Lather, rinse,
# TEST repeat. Since it will not work on all systems, this test is
# TEST not run by default.
proc bigfile001 { method \
{ itemsize 4096 } { nitems 1048576 } { growby 5000 } { growtms 2 } args } {
source ./include.tcl
set args [convert_args $method $args]
set omethod [convert_method $method]
puts "Bigfile: $method ($args) $nitems * $itemsize bytes of data"
env_cleanup $testdir
# Create the database. Use 64K pages; we want a good fill
# factor, and page size doesn't matter much. Use a 50MB
# cache; that should be manageable, and will help
# performance.
set dbname $testdir/big.db
set db [eval {berkdb_open -create} {-pagesize 65536 \
-cachesize {0 50000000 0}} $omethod $args $dbname]
error_check_good db_open [is_valid_db $db] TRUE
puts -nonewline "\tBigfile.a: Creating database...0%..."
flush stdout
set data [string repeat z $itemsize]
set more_than_ten_already 0
for { set i 0 } { $i < $nitems } { incr i } {
set key key[format %08u $i]
error_check_good db_put($i) [$db put $key $data] 0
if { $i % 5000 == 0 } {
set pct [expr 100 * $i / $nitems]
puts -nonewline "\b\b\b\b\b"
if { $pct >= 10 } {
if { $more_than_ten_already } {
puts -nonewline "\b"
} else {
set more_than_ten_already 1
}
}
puts -nonewline "$pct%..."
flush stdout
}
}
puts "\b\b\b\b\b\b100%..."
error_check_good db_close [$db close] 0
puts "\tBigfile.b: Verifying database..."
error_check_good verify \
[verify_dir $testdir "\t\t" 0 0 1 50000000] 0
puts "\tBigfile.c: Grow database $growtms times by $growby items"
for { set j 0 } { $j < $growtms } { incr j } {
set db [eval {berkdb_open} {-cachesize {0 50000000 0}} $dbname]
error_check_good db_open [is_valid_db $db] TRUE
puts -nonewline "\t\tBigfile.c.1: Adding $growby items..."
flush stdout
for { set i 0 } { $i < $growby } { incr i } {
set key key[format %08u $i].$j
error_check_good db_put($j.$i) [$db put $key $data] 0
}
error_check_good db_close [$db close] 0
puts "done."
puts "\t\tBigfile.c.2: Verifying database..."
error_check_good verify($j) \
[verify_dir $testdir "\t\t\t" 0 0 1 50000000] 0
}
}
|