Author: ivan Date: Tue Nov 3 15:18:12 2015 New Revision: 1712308 URL: http://svn.apache.org/viewvc?rev=1712308&view=rev Log: Explicitly destroy buckets in buckets test.
* test/test_buckets.c (*): Call serf_bucket_destroy() for tested buckets. 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=1712308&r1=1712307&r2=1712308&view=diff ============================================================================== --- serf/trunk/test/test_buckets.c (original) +++ serf/trunk/test/test_buckets.c Tue Nov 3 15:18:12 2015 @@ -223,33 +223,50 @@ static void test_simple_bucket_readline( CuAssertIntEquals(tc, SERF_NEWLINE_NONE, found); CuAssertIntEquals(tc, 5, len); CuAssert(tc, data, strncmp("line2", data, len) == 0); + serf_bucket_destroy(bkt); /* acceptable line types should be reported */ bkt = SERF_BUCKET_SIMPLE_STRING("line1" CRLF, alloc); readlines_and_check_bucket(tc, bkt, SERF_NEWLINE_CRLF, "line1" CRLF, 1); + serf_bucket_destroy(bkt); + bkt = SERF_BUCKET_SIMPLE_STRING("line1" LF, alloc); readlines_and_check_bucket(tc, bkt, SERF_NEWLINE_LF, "line1" LF, 1); + serf_bucket_destroy(bkt); + bkt = SERF_BUCKET_SIMPLE_STRING("line1" LF, alloc); readlines_and_check_bucket(tc, bkt, SERF_NEWLINE_LF, "line1" LF, 1); + serf_bucket_destroy(bkt); + /* special cases, but acceptable */ bkt = SERF_BUCKET_SIMPLE_STRING("line1" CRLF, alloc); readlines_and_check_bucket(tc, bkt, SERF_NEWLINE_CR, "line1" CRLF, 2); + serf_bucket_destroy(bkt); + bkt = SERF_BUCKET_SIMPLE_STRING("line1" CRLF, alloc); readlines_and_check_bucket(tc, bkt, SERF_NEWLINE_LF, "line1" CRLF, 1); + serf_bucket_destroy(bkt); /* Unacceptable line types should not be reported */ bkt = SERF_BUCKET_SIMPLE_STRING("line1" LF, alloc); readlines_and_check_bucket(tc, bkt, SERF_NEWLINE_CR, "line1" LF, 1); + serf_bucket_destroy(bkt); + bkt = SERF_BUCKET_SIMPLE_STRING("line1" LF, alloc); readlines_and_check_bucket(tc, bkt, SERF_NEWLINE_CRLF, "line1" LF, 1); + serf_bucket_destroy(bkt); + bkt = SERF_BUCKET_SIMPLE_STRING("line1" CR, alloc); readlines_and_check_bucket(tc, bkt, SERF_NEWLINE_LF, "line1" CR, 1); + serf_bucket_destroy(bkt); + #if 0 /* TODO: looks like a bug, CRLF acceptable on buffer with CR returns SERF_NEWLINE_CRLF_SPLIT, but here that CR comes at the end of the buffer (APR_EOF), so should have been SERF_NEWLINE_NONE! */ bkt = SERF_BUCKET_SIMPLE_STRING("line1" CR, alloc); readlines_and_check_bucket(tc, bkt, SERF_NEWLINE_CRLF, "line1" CR, 1); + serf_bucket_destroy(bkt); #endif body = "12345678901234567890" CRLF @@ -257,6 +274,7 @@ static void test_simple_bucket_readline( "12345678901234567890" CRLF; bkt = SERF_BUCKET_SIMPLE_STRING(body, alloc); readlines_and_check_bucket(tc, bkt, SERF_NEWLINE_LF, body, 3); + serf_bucket_destroy(bkt); } static void test_response_bucket_read(CuTest *tc) @@ -278,6 +296,7 @@ static void test_response_bucket_read(Cu /* Read all bucket and check it content. */ read_and_check_bucket(tc, bkt, "abc1234"); + serf_bucket_destroy(bkt); } static void test_response_bucket_headers(CuTest *tc) @@ -315,6 +334,7 @@ static void test_response_bucket_headers CuAssertStrEquals(tc, "", serf_bucket_headers_get(hdr, "NoSpace")); + serf_bucket_destroy(bkt); } static void test_response_bucket_chunked_read(CuTest *tc) @@ -348,6 +368,7 @@ static void test_response_bucket_chunked /* Check that trailing headers parsed correctly. */ CuAssertStrEquals(tc, "value", serf_bucket_headers_get(hdrs, "Footer")); + serf_bucket_destroy(bkt); } static void test_bucket_header_set(CuTest *tc) @@ -379,6 +400,8 @@ static void test_bucket_header_set(CuTes /* header not found */ CuAssertPtrEquals(tc, NULL, (void *)serf_bucket_headers_get(hdrs, "blabla")); + + serf_bucket_destroy(hdrs); } static int @@ -433,6 +456,8 @@ static void test_bucket_header_do(CuTest CuAssertStrEquals(tc, elts[i].key, exp_hdrs[i].key); CuAssertStrEquals(tc, elts[i].val, exp_hdrs[i].value); } + + serf_bucket_destroy(hdrs); } static void test_iovec_buckets(CuTest *tc) @@ -509,6 +534,9 @@ static void test_iovec_buckets(CuTest *t vecs[i].iov_len = strlen(vecs[i].iov_base); } + serf_bucket_destroy(bkt); + serf_bucket_destroy(iobkt); + iobkt = serf_bucket_iovec_create(vecs, 32, alloc); /* Check serf_bucket_get_remaining() result. */ @@ -552,6 +580,8 @@ static void test_iovec_buckets(CuTest *t vecs[i].iov_len = strlen(vecs[i].iov_base); } + serf_bucket_destroy(iobkt); + iobkt = serf_bucket_iovec_create(vecs, 32, alloc); /* Check serf_bucket_get_remaining() result. */ @@ -590,6 +620,8 @@ static void test_iovec_buckets(CuTest *t strncmp("DATA 31 901234567890", data, len) == 0); CuAssertIntEquals(tc, 0, (int)serf_bucket_get_remaining(iobkt)); + serf_bucket_destroy(iobkt); + /* Test 3: read an empty iovec */ iobkt = serf_bucket_iovec_create(vecs, 0, alloc); status = serf_bucket_read_iovec(iobkt, SERF_READ_ALL_AVAIL, 32, @@ -603,6 +635,8 @@ static void test_iovec_buckets(CuTest *t CuAssertIntEquals(tc, 0, len); CuAssertIntEquals(tc, 0, (int)serf_bucket_get_remaining(iobkt)); + serf_bucket_destroy(iobkt); + /* Test 4: read 0 bytes from an iovec */ bkt = SERF_BUCKET_SIMPLE_STRING("line1" CRLF, alloc); status = serf_bucket_read_iovec(bkt, SERF_READ_ALL_AVAIL, 32, vecs, @@ -616,6 +650,8 @@ static void test_iovec_buckets(CuTest *t CuAssertIntEquals(tc, APR_SUCCESS, status); CuAssertIntEquals(tc, 0, vecs_used); CuAssertIntEquals(tc, 7, (int)serf_bucket_get_remaining(iobkt)); + serf_bucket_destroy(bkt); + serf_bucket_destroy(iobkt); } /* Construct a header bucket with some headers, and then read from it. */ @@ -638,6 +674,8 @@ static void test_header_buckets(CuTest * CRLF; read_and_check_bucket(tc, hdrs, cur); + + serf_bucket_destroy(hdrs); } static void test_aggregate_buckets(CuTest *tc) @@ -690,6 +728,8 @@ static void test_aggregate_buckets(CuTes /* Test 3: read the data from the bucket. */ read_and_check_bucket(tc, aggbkt, BODY); + serf_bucket_destroy(aggbkt); + /* Test 4: multiple child buckets appended. */ aggbkt = serf_bucket_aggregate_create(alloc); @@ -702,6 +742,8 @@ static void test_aggregate_buckets(CuTes read_and_check_bucket(tc, aggbkt, BODY); + serf_bucket_destroy(aggbkt); + /* Test 5: multiple child buckets prepended. */ aggbkt = serf_bucket_aggregate_create(alloc); @@ -714,6 +756,8 @@ static void test_aggregate_buckets(CuTes read_and_check_bucket(tc, aggbkt, BODY); + serf_bucket_destroy(aggbkt); + /* Test 6: ensure peek doesn't return APR_EAGAIN, or APR_EOF incorrectly. */ aggbkt = serf_bucket_aggregate_create(alloc); @@ -730,6 +774,8 @@ static void test_aggregate_buckets(CuTes CuAssert(tc, "Data should match first part of body.", strncmp(BODY, data, len) == 0); + serf_bucket_destroy(aggbkt); + aggbkt = serf_bucket_aggregate_create(alloc); /* Put bkt in the aggregate */ @@ -770,6 +816,8 @@ static void test_aggregate_bucket_readli readlines_and_check_bucket(tc, aggbkt, SERF_NEWLINE_CRLF, BODY, 3); + serf_bucket_destroy(aggbkt); + /* Test 2: start with empty bucket */ aggbkt = serf_bucket_aggregate_create(alloc); @@ -781,6 +829,8 @@ static void test_aggregate_bucket_readli serf_bucket_aggregate_append(aggbkt, bkt); /* 2nd and 3rd line */ readlines_and_check_bucket(tc, aggbkt, SERF_NEWLINE_CRLF, BODY, 3); + + serf_bucket_destroy(aggbkt); } /* Test for issue: the server aborts the connection in the middle of @@ -826,6 +876,9 @@ static void test_response_body_too_small } CuAssertIntEquals(tc, SERF_ERROR_TRUNCATED_HTTP_RESPONSE, status); } + + /* This will also destroy response stream bucket. */ + serf_bucket_destroy(bkt); } #undef BODY @@ -872,6 +925,9 @@ static void test_response_body_too_small } CuAssertIntEquals(tc, SERF_ERROR_TRUNCATED_HTTP_RESPONSE, status); } + + /* This will also destroy response stream bucket. */ + serf_bucket_destroy(bkt); } #undef BODY @@ -904,6 +960,9 @@ static void test_response_body_chunked_n CuAssertIntEquals(tc, SERF_ERROR_TRUNCATED_HTTP_RESPONSE, status); } + + /* This will also destroy response stream bucket. */ + serf_bucket_destroy(bkt); } /* Test for issue: the server aborts the connection in the middle of @@ -936,6 +995,9 @@ static void test_response_body_chunked_i CuAssertIntEquals(tc, SERF_ERROR_TRUNCATED_HTTP_RESPONSE, status); } + + /* This will also destroy response stream bucket. */ + serf_bucket_destroy(bkt); } static void test_response_body_chunked_gzip_small(CuTest *tc) @@ -965,6 +1027,9 @@ static void test_response_body_chunked_g CuAssertIntEquals(tc, SERF_ERROR_TRUNCATED_HTTP_RESPONSE, status); } + + /* This will also destroy response stream bucket. */ + serf_bucket_destroy(bkt); } static void test_response_bucket_peek_at_headers(CuTest *tc) @@ -1031,6 +1096,8 @@ static void test_response_bucket_peek_at cur += len; } + /* This will also destroy response stream bucket. */ + serf_bucket_destroy(resp_bkt1); } #undef EXP_RESPONSE @@ -1118,6 +1185,8 @@ static void test_copy_bucket(CuTest *tc) for (i = 0; i < vecs_used; i++) actual_len += tgt_vecs[i].iov_len; CuAssertIntEquals(tc, strlen(BODY), actual_len); + + serf_bucket_destroy(copybkt); } @@ -1259,6 +1328,9 @@ static void test_response_bucket_iis_sta /* Probably better to have just "Logon failed" as reason. But current behavior is also acceptable.*/ CuAssertStrEquals(tc, ".1 Logon failed.", sline.reason); + + /* This will also destroy response stream bucket. */ + serf_bucket_destroy(bkt); } /* Test handling responses without a reason by response buckets. */ @@ -1288,6 +1360,9 @@ static void test_response_bucket_no_reas /* Probably better to have just "Logon failed" as reason. But current behavior is also acceptable.*/ CuAssertStrEquals(tc, "", sline.reason); + + /* This will also destroy response stream bucket. */ + serf_bucket_destroy(bkt); } /* Test that serf can handle lines that don't arrive completely in one go. @@ -1462,6 +1537,8 @@ static void test_dechunk_buckets(CuTest } while(!APR_STATUS_IS_EOF(status)); CuAssert(tc, "Read less data than expected.", strlen(expected) == 0); + + serf_bucket_destroy(bkt); } static apr_status_t deflate_compress(const char **data, apr_size_t *len, @@ -1622,6 +1699,8 @@ static void deflate_buckets(CuTest *tc, /* Release a few MB of memory kept by zlib */ CuAssertIntEquals(tc, Z_OK, deflateEnd(&zdestr)); + + serf_bucket_destroy(defbkt); } static void test_deflate_buckets(CuTest *tc) @@ -1845,6 +1924,7 @@ static void test_linebuf_fetch_crlf(CuTe CuAssertStrEquals(tc, "", linebuf.line); CuAssertIntEquals(tc, 0, linebuf.used); + serf_bucket_destroy(bkt); } typedef struct prefix_cb @@ -2328,6 +2408,8 @@ static void test_hpack_header_encode(CuT /* CuAssertTrue(tc, ! SERF_BUCKET_IS_HPACK(hpack)); */ CuAssertTrue(tc, sz > 4); CuAssertTrue(tc, sz <= 59); /* The all literal approach takes 59 bytes */ + + serf_bucket_destroy(hpack); } static void test_http2_frame_bucket_basic(CuTest *tc) @@ -2368,6 +2450,8 @@ static void test_http2_frame_bucket_basi &buffer, &sz)); CuAssertIntEquals(tc, 0, sz); } + + serf_bucket_destroy(frame_out); } CuSuite *test_buckets(void)