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)