Skip to content
Snippets Groups Projects
Commit 9caec653 authored by yang-g's avatar yang-g
Browse files

add test for byte_buffer_copy

parent b67ef24d
No related branches found
No related tags found
No related merge requests found
...@@ -217,6 +217,42 @@ static void test_readall(void) { ...@@ -217,6 +217,42 @@ static void test_readall(void) {
grpc_byte_buffer_destroy(buffer); grpc_byte_buffer_destroy(buffer);
} }
static void test_byte_buffer_copy(void) {
char *lotsa_as[512];
char *lotsa_bs[1024];
gpr_slice slices[2];
grpc_byte_buffer *buffer;
grpc_byte_buffer *copied_buffer;
grpc_byte_buffer_reader reader;
gpr_slice slice_out;
LOG_TEST("test_byte_buffer_copy");
memset(lotsa_as, 'a', 512);
memset(lotsa_bs, 'b', 1024);
/* use slices large enough to overflow inlining */
slices[0] = gpr_slice_malloc(512);
memcpy(GPR_SLICE_START_PTR(slices[0]), lotsa_as, 512);
slices[1] = gpr_slice_malloc(1024);
memcpy(GPR_SLICE_START_PTR(slices[1]), lotsa_bs, 1024);
buffer = grpc_raw_byte_buffer_create(slices, 2);
gpr_slice_unref(slices[0]);
gpr_slice_unref(slices[1]);
copied_buffer = grpc_byte_buffer_copy(buffer);
grpc_byte_buffer_reader_init(&reader, copied_buffer);
slice_out = grpc_byte_buffer_reader_readall(&reader);
GPR_ASSERT(GPR_SLICE_LENGTH(slice_out) == 512 + 1024);
GPR_ASSERT(memcmp(GPR_SLICE_START_PTR(slice_out), lotsa_as, 512) == 0);
GPR_ASSERT(memcmp(&(GPR_SLICE_START_PTR(slice_out)[512]), lotsa_bs, 1024) ==
0);
gpr_slice_unref(slice_out);
grpc_byte_buffer_destroy(buffer);
grpc_byte_buffer_destroy(copied_buffer);
}
int main(int argc, char **argv) { int main(int argc, char **argv) {
grpc_test_init(argc, argv); grpc_test_init(argc, argv);
test_read_one_slice(); test_read_one_slice();
...@@ -225,6 +261,7 @@ int main(int argc, char **argv) { ...@@ -225,6 +261,7 @@ int main(int argc, char **argv) {
test_read_gzip_compressed_slice(); test_read_gzip_compressed_slice();
test_read_deflate_compressed_slice(); test_read_deflate_compressed_slice();
test_byte_buffer_from_reader(); test_byte_buffer_from_reader();
test_byte_buffer_copy();
test_readall(); test_readall();
return 0; return 0;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment