Author: rhuijben
Date: Wed Nov 11 12:44:53 2015
New Revision: 1713830

URL: http://svn.apache.org/viewvc?rev=1713830&view=rev
Log:
Following up on r1713829, extend the test a bit more to also verify the
second response. Implement a few more forwards on the barrier buckets
to make this possible.

* buckets/barrier_buckets.c
  (serf_barrier_read_for_sendfile): New function.
  (serf_barrier_readline2): New function.
  (serf_bucket_type_barrier): Register forwards.

* test/test_buckets.c
  (test_response_bucket_read): Extend test.

Modified:
    serf/trunk/buckets/barrier_buckets.c
    serf/trunk/test/test_buckets.c

Modified: serf/trunk/buckets/barrier_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/barrier_buckets.c?rev=1713830&r1=1713829&r2=1713830&view=diff
==============================================================================
--- serf/trunk/buckets/barrier_buckets.c (original)
+++ serf/trunk/buckets/barrier_buckets.c Wed Nov 11 12:44:53 2015
@@ -50,6 +50,18 @@ static apr_status_t serf_barrier_read_io
     return serf_bucket_read_iovec(stream, requested, vecs_size, vecs, 
vecs_used);
 }
 
+static apr_status_t serf_barrier_read_for_sendfile(serf_bucket_t *bucket,
+                                                   apr_size_t requested,
+                                                   apr_hdtr_t *hdtr,
+                                                   apr_file_t **file,
+                                                   apr_off_t *offset,
+                                                   apr_size_t *len)
+{
+    serf_bucket_t *stream = bucket->data;
+    return serf_bucket_read_for_sendfile(bucket, requested, hdtr, file,
+                                         offset, len);
+}
+
 static apr_status_t serf_barrier_readline(serf_bucket_t *bucket,
                                          int acceptable, int *found,
                                          const char **data, apr_size_t *len)
@@ -59,6 +71,18 @@ static apr_status_t serf_barrier_readlin
     return serf_bucket_readline(stream, acceptable, found, data, len);
 }
 
+static apr_status_t serf_barrier_readline2(serf_bucket_t *bucket,
+                                           int acceptable, apr_size_t 
requested,
+                                           int *found,
+                                           const char **data, apr_size_t *len)
+{
+    serf_bucket_t *stream = bucket->data;
+
+    return serf_bucket_readline2(stream, acceptable, requested,
+                                 found, data, len);
+}
+
+
 static apr_status_t serf_barrier_peek(serf_bucket_t *bucket,
                                      const char **data,
                                      apr_size_t *len)
@@ -101,12 +125,12 @@ const serf_bucket_type_t serf_bucket_typ
     serf_barrier_read,
     serf_barrier_readline,
     serf_barrier_read_iovec,
-    serf_default_read_for_sendfile,
+    serf_barrier_read_for_sendfile,
     serf_buckets_are_v2,
     serf_barrier_peek,
     serf_barrier_destroy,
-    serf_default_read_bucket,
-    serf_default_readline2,
+    serf_default_read_bucket, /* ### TODO? */
+    serf_barrier_readline2,
     serf_barrier_get_remaining,
     serf_barrier_set_config,
 };

Modified: serf/trunk/test/test_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/test/test_buckets.c?rev=1713830&r1=1713829&r2=1713830&view=diff
==============================================================================
--- serf/trunk/test/test_buckets.c (original)
+++ serf/trunk/test/test_buckets.c Wed Nov 11 12:44:53 2015
@@ -291,6 +291,7 @@ static void test_response_bucket_read(Cu
     int found;
     const char *data;
     apr_size_t len;
+    serf_status_line sline;
 
     serf_bucket_alloc_t *alloc = test__create_bucket_allocator(tc, tb->pool);
 
@@ -316,7 +317,9 @@ static void test_response_bucket_read(Cu
             CRLF,
             alloc)
 
-    bkt = serf_bucket_response_create(tmp, alloc);
+    bkt = serf_bucket_response_create(
+              serf_bucket_barrier_create(tmp, alloc),
+              alloc);
 
     status = serf_bucket_readline(bkt, SERF_NEWLINE_ANY,
                                   &found, &data, &len);
@@ -324,6 +327,15 @@ static void test_response_bucket_read(Cu
     CuAssertIntEquals(tc, 7, len);
     CuAssertStrnEquals(tc, "abc1234", len, data);
     serf_bucket_destroy(bkt);
+
+    /* 304 has no body, but we should be able to read it */
+    bkt = serf_bucket_response_create(tmp, alloc);
+    read_and_check_bucket(tc, bkt, "");
+
+    CuAssertIntEquals(tc, APR_SUCCESS,
+                      serf_bucket_response_status(bkt, &sline));
+    CuAssertIntEquals(tc, 304, sline.code);
+    serf_bucket_destroy(bkt);
 }
 
 static void test_response_bucket_headers(CuTest *tc)


Reply via email to