Author: rhuijben
Date: Wed Nov 4 02:30:20 2015
New Revision: 1712458
URL: http://svn.apache.org/viewvc?rev=1712458&view=rev
Log:
Following up on r1712456, add test for refilling during hold-open.
* test/test_buckets.c
(append_magic): New function.
(test_aggregate_buckets): Extend test.
Modified:
serf/trunk/test/test_buckets.c
Modified: serf/trunk/test/test_buckets.c
URL:
http://svn.apache.org/viewvc/serf/trunk/test/test_buckets.c?rev=1712458&r1=1712457&r2=1712458&view=diff
==============================================================================
--- serf/trunk/test/test_buckets.c (original)
+++ serf/trunk/test/test_buckets.c Wed Nov 4 02:30:20 2015
@@ -670,6 +670,24 @@ static void test_header_buckets(CuTest *
serf_bucket_destroy(hdrs);
}
+static apr_status_t append_magic(void *baton,
+ serf_bucket_t *bucket)
+{
+ serf_bucket_t *bkt;
+ int *append = baton;
+
+ if (*append)
+ {
+ (*append)--;
+ bkt = SERF_BUCKET_SIMPLE_STRING("magic", bucket->allocator);
+ serf_bucket_aggregate_append(bucket, bkt);
+ return APR_SUCCESS;
+ }
+
+ return APR_EOF;
+}
+
+
static void test_aggregate_buckets(CuTest *tc)
{
test_baton_t *tb = tc->testBaton;
@@ -679,6 +697,7 @@ static void test_aggregate_buckets(CuTes
int vecs_used;
apr_size_t len;
const char *data;
+ int append = 3;
serf_bucket_alloc_t *alloc = test__create_bucket_allocator(tc, tb->pool);
const char *BODY = "12345678901234567890"\
@@ -784,6 +803,23 @@ static void test_aggregate_buckets(CuTes
/* While it doesn't affect the inner bucket */
read_and_check_bucket(tc, bkt, BODY);
serf_bucket_destroy(bkt);
+
+ aggbkt = serf_bucket_aggregate_create(alloc);
+ bkt = SERF_BUCKET_SIMPLE_STRING_LEN(BODY, 15, alloc);
+ serf_bucket_aggregate_append(aggbkt, bkt);
+
+ serf_bucket_aggregate_hold_open(aggbkt, append_magic, &append);
+
+ CuAssertIntEquals(tc, APR_EOF,
+ serf_bucket_read_iovec(aggbkt, SERF_READ_ALL_AVAIL,
+ 32, tgt_vecs, &vecs_used));
+ CuAssertIntEquals(tc, 4, vecs_used);
+ CuAssertIntEquals(tc, 15, tgt_vecs[0].iov_len);
+ CuAssertIntEquals(tc, 5, tgt_vecs[1].iov_len);
+ CuAssertIntEquals(tc, 5, tgt_vecs[2].iov_len);
+ CuAssertIntEquals(tc, 5, tgt_vecs[3].iov_len);
+
+ serf_bucket_destroy(aggbkt);
}
static void test_aggregate_bucket_readline(CuTest *tc)