1
package TestAPR::flatten;
4
use warnings FATAL => 'all';
9
use Apache::RequestRec ();
13
use Apache::Const -compile => 'OK';
21
# first, create a brigade
23
my $ba = $r->connection->bucket_alloc;
25
my $bb = APR::Brigade->new($pool, $ba);
27
# now, let's put several buckets in it
29
my $data = 'x' x 20000;
30
my $bucket = APR::Bucket->new($data);
31
$bb->insert_tail($bucket);
34
# ok, that's 10 buckets of 20,000 = 200,000 characters
37
'APR::Brigade::length()');
39
# syntax: require a $bb
40
eval { APR::Brigade::flatten("") };
42
ok t_cmp(qr!expecting an APR::Brigade derived object!,
44
'APR::Brigade::flatten() requires a brigade');
46
# flatten() will slurp up the entire brigade
47
# equivalent to calling apr_brigade_pflatten
49
my $data = $bb->flatten();
53
'$bb->flatten() returned all the data');
55
# don't use t_cmp() here, else we get 200,000 characters
56
# to look at in verbose mode
57
t_debug("data all 'x' characters");
58
ok ($data !~ m/[^x]/);
61
# flatten(0) returns 0 bytes
63
my $data = $bb->flatten(0);
65
t_debug('$bb->flatten(0) returns a defined value');
70
'$bb->flatten(0) returned no data');
74
# flatten($length) will return the first $length bytes
75
# equivalent to calling apr_brigade_flatten
78
my $data = $bb->flatten(30);
82
'$bb->flatten(30) returned 30 characters');
84
t_debug("APR::Brigade::flatten() data all 'x' characters");
85
ok ($data !~ m/[^x]/);
90
my $data = $bb->flatten(190000);
94
'$bb->flatten(190000) returned 19000 characters');
96
t_debug("data all 'x' characters");
97
ok ($data !~ m/[^x]/);
102
my $data = $bb->flatten(300000);
106
'$bb->flatten(300000) returned all 200000 characters');
108
t_debug("data all 'x' characters");
109
ok ($data !~ m/[^x]/);
112
# fetch from a brigade with no data in it
114
my $data = APR::Brigade->new($pool, $ba)->flatten();
116
t_debug('empty brigade returns a defined value');
121
'empty brigade returns data of 0 length');