~ubuntu-branches/ubuntu/edgy/rpm/edgy

« back to all changes in this revision

Viewing changes to db/perl.BerkeleyDB/t/strict.t

  • Committer: Bazaar Package Importer
  • Author(s): Joey Hess
  • Date: 2002-01-22 20:56:57 UTC
  • Revision ID: james.westby@ubuntu.com-20020122205657-l74j50mr9z8ofcl5
Tags: upstream-4.0.3
ImportĀ upstreamĀ versionĀ 4.0.3

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 File::Path qw(rmtree);
 
14
 
 
15
print "1..44\n";
 
16
 
 
17
 
 
18
{
 
19
    package LexFile ;
 
20
 
 
21
    sub new
 
22
    {
 
23
        my $self = shift ;
 
24
        unlink @_ ;
 
25
        bless [ @_ ], $self ;
 
26
    }
 
27
 
 
28
    sub DESTROY
 
29
    {
 
30
        my $self = shift ;
 
31
        unlink @{ $self } ;
 
32
    }
 
33
}
 
34
 
 
35
sub ok
 
36
{
 
37
    my $no = shift ;
 
38
    my $result = shift ;
 
39
 
 
40
    print "not " unless $result ;
 
41
    print "ok $no\n" ;
 
42
}
 
43
 
 
44
sub docat
 
45
{
 
46
    my $file = shift;
 
47
    local $/ = undef;
 
48
    open(CAT,$file) || die "Cannot open $file:$!";
 
49
    my $result = <CAT>;
 
50
    close(CAT);
 
51
    return $result;
 
52
}
 
53
 
 
54
 
 
55
my $Dfile = "dbhash.tmp";
 
56
my $home = "./fred" ;
 
57
 
 
58
umask(0);
 
59
 
 
60
{
 
61
    # closing a database & an environment in the correct order.
 
62
    my $lex = new LexFile $Dfile ;
 
63
    my %hash ;
 
64
    my $status ;
 
65
 
 
66
    rmtree $home if -e $home ;
 
67
    ok 1, mkdir($home, 0777) ;
 
68
    ok 2, my $env = new BerkeleyDB::Env -Home => $home,
 
69
                                     -Flags => DB_CREATE|DB_INIT_TXN|
 
70
                                                DB_INIT_MPOOL|DB_INIT_LOCK ;
 
71
                                                
 
72
    ok 3, my $db1 = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
 
73
                                                -Flags     => DB_CREATE ,
 
74
                                                -Env       => $env;
 
75
 
 
76
    ok 4, $db1->db_close() == 0 ; 
 
77
 
 
78
    eval { $status = $env->db_appexit() ; } ;
 
79
    ok 5, $status == 0 ;
 
80
    ok 6, $@ eq "" ;
 
81
    #print "[$@]\n" ;
 
82
 
 
83
    rmtree $home if -e $home ;
 
84
}
 
85
 
 
86
{
 
87
    # closing an environment with an open database
 
88
    my $lex = new LexFile $Dfile ;
 
89
    my %hash ;
 
90
 
 
91
    rmtree $home if -e $home ;
 
92
    ok 7, mkdir($home, 0777) ;
 
93
    ok 8, my $env = new BerkeleyDB::Env -Home => $home,
 
94
                                     -Flags => DB_CREATE|DB_INIT_TXN|
 
95
                                                DB_INIT_MPOOL|DB_INIT_LOCK ;
 
96
                                                
 
97
    ok 9, my $db1 = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
 
98
                                                -Flags     => DB_CREATE ,
 
99
                                                -Env       => $env;
 
100
 
 
101
    eval { $env->db_appexit() ; } ;
 
102
    ok 10, $@ =~ /BerkeleyDB Aborting: attempted to close an environment with 1 open database/ ;
 
103
    #print "[$@]\n" ;
 
104
 
 
105
    undef $db1 ;
 
106
    untie %hash ;
 
107
    undef $env ;
 
108
    rmtree $home if -e $home ;
 
109
}
 
110
 
 
111
{
 
112
    # closing a transaction & a database 
 
113
    my $lex = new LexFile $Dfile ;
 
114
    my %hash ;
 
115
    my $status ;
 
116
 
 
117
    rmtree $home if -e $home ;
 
118
    ok 11, mkdir($home, 0777) ;
 
119
    ok 12, my $env = new BerkeleyDB::Env -Home => $home,
 
120
                                     -Flags => DB_CREATE|DB_INIT_TXN|
 
121
                                                DB_INIT_MPOOL|DB_INIT_LOCK ;
 
122
 
 
123
    ok 13, my $txn = $env->txn_begin() ;
 
124
    ok 14, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
 
125
                                                -Flags     => DB_CREATE ,
 
126
                                                -Env       => $env,
 
127
                                                -Txn       => $txn  ;
 
128
 
 
129
    ok 15, $txn->txn_commit()  == 0 ;
 
130
    eval { $status = $db->db_close() ; } ;
 
131
    ok 16, $status == 0 ;
 
132
    ok 17, $@ eq "" ;
 
133
    eval { $status = $env->db_appexit() ; } ;
 
134
    ok 18, $status == 0 ;
 
135
    ok 19, $@ eq "" ;
 
136
    #print "[$@]\n" ;
 
137
}
 
138
 
 
139
{
 
140
    # closing a database with an open transaction
 
141
    my $lex = new LexFile $Dfile ;
 
142
    my %hash ;
 
143
 
 
144
    rmtree $home if -e $home ;
 
145
    ok 20, mkdir($home, 0777) ;
 
146
    ok 21, my $env = new BerkeleyDB::Env -Home => $home,
 
147
                                     -Flags => DB_CREATE|DB_INIT_TXN|
 
148
                                                DB_INIT_MPOOL|DB_INIT_LOCK ;
 
149
 
 
150
    ok 22, my $txn = $env->txn_begin() ;
 
151
    ok 23, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
 
152
                                                -Flags     => DB_CREATE ,
 
153
                                                -Env       => $env,
 
154
                                                -Txn       => $txn  ;
 
155
 
 
156
    eval { $db->db_close() ; } ;
 
157
    ok 24, $@ =~ /BerkeleyDB Aborting: attempted to close a database while a transaction was still open at/ ;
 
158
    #print "[$@]\n" ;
 
159
}
 
160
 
 
161
{
 
162
    # closing a cursor & a database 
 
163
    my $lex = new LexFile $Dfile ;
 
164
    my %hash ;
 
165
    my $status ;
 
166
    ok 25, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
 
167
                                                -Flags     => DB_CREATE ;
 
168
    ok 26, my $cursor = $db->db_cursor() ;
 
169
    ok 27, $cursor->c_close() == 0 ;
 
170
    eval { $status = $db->db_close() ; } ;
 
171
    ok 28, $status == 0 ;
 
172
    ok 29, $@ eq "" ;
 
173
    #print "[$@]\n" ;
 
174
    rmtree $home if -e $home ;
 
175
}
 
176
 
 
177
{
 
178
    # closing a database with an open cursor
 
179
    my $lex = new LexFile $Dfile ;
 
180
    my %hash ;
 
181
    ok 30, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
 
182
                                                -Flags     => DB_CREATE ;
 
183
    ok 31, my $cursor = $db->db_cursor() ;
 
184
    eval { $db->db_close() ; } ;
 
185
    ok 32, $@ =~ /\QBerkeleyDB Aborting: attempted to close a database with 1 open cursor(s) at/;
 
186
    #print "[$@]\n" ;
 
187
    rmtree $home if -e $home ;
 
188
}
 
189
 
 
190
{
 
191
    # closing a transaction & a cursor 
 
192
    my $lex = new LexFile $Dfile ;
 
193
    my %hash ;
 
194
    my $status ;
 
195
 
 
196
    rmtree $home if -e $home ;
 
197
    ok 33, mkdir($home, 0777) ;
 
198
    ok 34, my $env = new BerkeleyDB::Env -Home => $home,
 
199
                                     -Flags => DB_CREATE|DB_INIT_TXN|
 
200
                                                DB_INIT_MPOOL|DB_INIT_LOCK ;
 
201
    ok 35, my $txn = $env->txn_begin() ;
 
202
    ok 36, my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile,
 
203
                                                -Flags     => DB_CREATE ,
 
204
                                                -Env       => $env,
 
205
                                                -Txn       => $txn  ;
 
206
    ok 37, my $cursor = $db->db_cursor() ;
 
207
    eval { $status = $cursor->c_close() ; } ;
 
208
    ok 38, $status == 0 ;
 
209
    ok 39, ($status = $txn->txn_commit())  == 0 ;
 
210
    ok 40, $@ eq "" ;
 
211
    eval { $status = $db->db_close() ; } ;
 
212
    ok 41, $status == 0 ;
 
213
    ok 42, $@ eq "" ;
 
214
    eval { $status = $env->db_appexit() ; } ;
 
215
    ok 43, $status == 0 ;
 
216
    ok 44, $@ eq "" ;
 
217
    #print "[$@]\n" ;
 
218
    rmtree $home if -e $home ;
 
219
}
 
220