~ubuntu-branches/ubuntu/maverick/evolution-data-server/maverick-proposed

« back to all changes in this revision

Viewing changes to libdb/perl/BerkeleyDB/t/subdb.t

  • Committer: Bazaar Package Importer
  • Author(s): Didier Roche
  • Date: 2010-05-17 17:02:06 UTC
  • mfrom: (1.1.79 upstream) (1.6.12 experimental)
  • Revision ID: james.westby@ubuntu.com-20100517170206-4ufr52vwrhh26yh0
Tags: 2.30.1-1ubuntu1
* Merge from debian experimental. Remaining change:
  (LP: #42199, #229669, #173703, #360344, #508494)
  + debian/control:
    - add Vcs-Bzr tag
    - don't use libgnome
    - Use Breaks instead of Conflicts against evolution 2.25 and earlier.
  + debian/evolution-data-server.install,
    debian/patches/45_libcamel_providers_version.patch:
    - use the upstream versioning, not a Debian-specific one 
  + debian/libedata-book1.2-dev.install, debian/libebackend-1.2-dev.install,
    debian/libcamel1.2-dev.install, debian/libedataserverui1.2-dev.install:
    - install html documentation
  + debian/rules:
    - don't build documentation it's shipped with the tarball

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!./perl -w
2
 
 
3
 
use strict ;
4
 
 
5
 
BEGIN {
6
 
    unless(grep /blib/, @INC) {
7
 
        chdir 't' if -d 't';
8
 
        @INC = '../lib' if -d '../lib';
9
 
    }
10
 
}
11
 
 
12
 
use BerkeleyDB; 
13
 
use t::util ;
14
 
 
15
 
BEGIN 
16
 
{
17
 
    if ($BerkeleyDB::db_version < 3) {
18
 
        print "1..0 # Skipping test, this needs Berkeley DB 3.x or better\n" ;
19
 
        exit 0 ;
20
 
    }
21
 
}
22
 
 
23
 
print "1..43\n";
24
 
 
25
 
my $Dfile = "dbhash.tmp";
26
 
my $Dfile2 = "dbhash2.tmp";
27
 
my $Dfile3 = "dbhash3.tmp";
28
 
unlink $Dfile;
29
 
 
30
 
umask(0) ;
31
 
 
32
 
# Berkeley DB 3.x specific functionality
33
 
 
34
 
# Check for invalid parameters
35
 
{
36
 
    # Check for invalid parameters
37
 
    my $db ;
38
 
    eval ' BerkeleyDB::db_remove  -Stupid => 3 ; ' ;
39
 
    ok 1, $@ =~ /unknown key value\(s\) Stupid/  ;
40
 
 
41
 
    eval ' BerkeleyDB::db_remove -Bad => 2, -Filename => "fred", -Stupid => 3; ' ;
42
 
    ok 2, $@ =~ /unknown key value\(s\) (Bad |Stupid ){2}/  ;
43
 
 
44
 
    eval ' BerkeleyDB::db_remove -Filename => "a", -Env => 2 ' ;
45
 
    ok 3, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
46
 
 
47
 
    eval ' BerkeleyDB::db_remove -Subname => "a"' ;
48
 
    ok 4, $@ =~ /^Must specify a filename/ ;
49
 
 
50
 
    my $obj = bless [], "main" ;
51
 
    eval ' BerkeleyDB::db_remove -Filename => "x", -Env => $obj ' ;
52
 
    ok 5, $@ =~ /^Env not of type BerkeleyDB::Env/ ;
53
 
}
54
 
 
55
 
{
56
 
    # subdatabases
57
 
 
58
 
    # opening a subdatabse in an exsiting database that doesn't have
59
 
    # subdatabases at all should fail
60
 
 
61
 
    my $lex = new LexFile $Dfile ;
62
 
 
63
 
    ok 6, my $db = new BerkeleyDB::Hash -Filename => $Dfile, 
64
 
                                        -Flags    => DB_CREATE ;
65
 
 
66
 
    # Add a k/v pair
67
 
    my %data = qw(
68
 
                        red     sky
69
 
                        blue    sea
70
 
                        black   heart
71
 
                        yellow  belley
72
 
                        green   grass
73
 
                ) ;
74
 
 
75
 
    ok 7, addData($db, %data) ;
76
 
 
77
 
    undef $db ;
78
 
 
79
 
    $db = new BerkeleyDB::Hash -Filename => $Dfile, 
80
 
                               -Subname  => "fred" ;
81
 
    ok 8, ! $db ;                                   
82
 
 
83
 
    ok 9, -e $Dfile ;
84
 
    ok 10, ! BerkeleyDB::db_remove(-Filename => $Dfile)  ;
85
 
}
86
 
 
87
 
{
88
 
    # subdatabases
89
 
 
90
 
    # opening a subdatabse in an exsiting database that does have
91
 
    # subdatabases at all, but not this one
92
 
 
93
 
    my $lex = new LexFile $Dfile ;
94
 
 
95
 
    ok 11, my $db = new BerkeleyDB::Hash -Filename => $Dfile, 
96
 
                                         -Subname  => "fred" ,
97
 
                                         -Flags    => DB_CREATE ;
98
 
 
99
 
    # Add a k/v pair
100
 
    my %data = qw(
101
 
                        red     sky
102
 
                        blue    sea
103
 
                        black   heart
104
 
                        yellow  belley
105
 
                        green   grass
106
 
                ) ;
107
 
 
108
 
    ok 12, addData($db, %data) ;
109
 
 
110
 
    undef $db ;
111
 
 
112
 
    $db = new BerkeleyDB::Hash -Filename => $Dfile, 
113
 
                                    -Subname  => "joe" ;
114
 
 
115
 
    ok 13, !$db ;                                   
116
 
 
117
 
}
118
 
 
119
 
{
120
 
    # subdatabases
121
 
 
122
 
    my $lex = new LexFile $Dfile ;
123
 
 
124
 
    ok 14, my $db = new BerkeleyDB::Hash -Filename => $Dfile, 
125
 
                                        -Subname  => "fred" ,
126
 
                                        -Flags    => DB_CREATE ;
127
 
 
128
 
    # Add a k/v pair
129
 
    my %data = qw(
130
 
                        red     sky
131
 
                        blue    sea
132
 
                        black   heart
133
 
                        yellow  belley
134
 
                        green   grass
135
 
                ) ;
136
 
 
137
 
    ok 15, addData($db, %data) ;
138
 
 
139
 
    undef $db ;
140
 
 
141
 
    ok 16, $db = new BerkeleyDB::Hash -Filename => $Dfile, 
142
 
                                    -Subname  => "fred" ;
143
 
 
144
 
    ok 17, my $cursor = $db->db_cursor() ;
145
 
    my ($k, $v) = ("", "") ;
146
 
    my $status ;
147
 
    while (($status = $cursor->c_get($k, $v, DB_NEXT)) == 0) {
148
 
        if ($data{$k} eq $v) {
149
 
            delete $data{$k} ;
150
 
        }
151
 
    }
152
 
    ok 18, $status == DB_NOTFOUND ;
153
 
    ok 19, keys %data == 0 ;
154
 
}
155
 
 
156
 
{
157
 
    # subdatabases
158
 
 
159
 
    # opening a database with multiple subdatabases - handle should be a list
160
 
    # of the subdatabase names
161
 
 
162
 
    my $lex = new LexFile $Dfile ;
163
 
  
164
 
    ok 20, my $db1 = new BerkeleyDB::Hash -Filename => $Dfile, 
165
 
                                        -Subname  => "fred" ,
166
 
                                        -Flags    => DB_CREATE ;
167
 
 
168
 
    ok 21, my $db2 = new BerkeleyDB::Btree -Filename => $Dfile, 
169
 
                                        -Subname  => "joe" ,
170
 
                                        -Flags    => DB_CREATE ;
171
 
 
172
 
    # Add a k/v pair
173
 
    my %data = qw(
174
 
                        red     sky
175
 
                        blue    sea
176
 
                        black   heart
177
 
                        yellow  belley
178
 
                        green   grass
179
 
                ) ;
180
 
 
181
 
    ok 22, addData($db1, %data) ;
182
 
    ok 23, addData($db2, %data) ;
183
 
 
184
 
    undef $db1 ;
185
 
    undef $db2 ;
186
 
  
187
 
    ok 24, my $db = new BerkeleyDB::Unknown -Filename => $Dfile ,
188
 
                                         -Flags    => DB_RDONLY ;
189
 
 
190
 
    #my $type = $db->type() ; print "type $type\n" ;
191
 
    ok 25, my $cursor = $db->db_cursor() ;
192
 
    my ($k, $v) = ("", "") ;
193
 
    my $status ;
194
 
    my @dbnames = () ;
195
 
    while (($status = $cursor->c_get($k, $v, DB_NEXT)) == 0) {
196
 
        push @dbnames, $k ;
197
 
    }
198
 
    ok 26, $status == DB_NOTFOUND ;
199
 
    ok 27, join(",", sort @dbnames) eq "fred,joe" ;
200
 
    undef $db ;
201
 
 
202
 
    ok 28, BerkeleyDB::db_remove(-Filename => $Dfile, -Subname => "harry") != 0;
203
 
    ok 29, BerkeleyDB::db_remove(-Filename => $Dfile, -Subname => "fred") == 0 ;
204
 
    
205
 
    # should only be one subdatabase
206
 
    ok 30, $db = new BerkeleyDB::Unknown -Filename => $Dfile ,
207
 
                                         -Flags    => DB_RDONLY ;
208
 
 
209
 
    ok 31, $cursor = $db->db_cursor() ;
210
 
    @dbnames = () ;
211
 
    while (($status = $cursor->c_get($k, $v, DB_NEXT)) == 0) {
212
 
        push @dbnames, $k ;
213
 
    }
214
 
    ok 32, $status == DB_NOTFOUND ;
215
 
    ok 33, join(",", sort @dbnames) eq "joe" ;
216
 
    undef $db ;
217
 
 
218
 
    # can't delete an already deleted subdatabase
219
 
    ok 34, BerkeleyDB::db_remove(-Filename => $Dfile, -Subname => "fred") != 0;
220
 
    
221
 
    ok 35, BerkeleyDB::db_remove(-Filename => $Dfile, -Subname => "joe") == 0 ;
222
 
    
223
 
    # should only be one subdatabase
224
 
    ok 36, $db = new BerkeleyDB::Unknown -Filename => $Dfile ,
225
 
                                         -Flags    => DB_RDONLY ;
226
 
 
227
 
    ok 37, $cursor = $db->db_cursor() ;
228
 
    @dbnames = () ;
229
 
    while (($status = $cursor->c_get($k, $v, DB_NEXT)) == 0) {
230
 
        push @dbnames, $k ;
231
 
    }
232
 
    ok 38, $status == DB_NOTFOUND ;
233
 
    ok 39, @dbnames == 0 ;
234
 
    undef $db ;
235
 
    undef $cursor ;
236
 
 
237
 
    ok 40, -e $Dfile ;
238
 
    ok 41, BerkeleyDB::db_remove(-Filename => $Dfile)  == 0 ;
239
 
    ok 42, ! -e $Dfile ;
240
 
    ok 43, BerkeleyDB::db_remove(-Filename => $Dfile) != 0 ;
241
 
}
242
 
 
243
 
# db_remove with env