aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/cpp/codegen
diff options
context:
space:
mode:
authorGravatar ncteisen <ncteisen@gmail.com>2018-02-27 11:55:10 -0800
committerGravatar ncteisen <ncteisen@gmail.com>2018-04-06 07:05:27 -0700
commitcf5b2666e16f7b6ebc1bda4a884045d1ef1a4134 (patch)
treeb945a65fa777134898ec029cfc094d69b1190024 /test/cpp/codegen
parent1c73e2c53ddecf3bd45f1c28d23a895fc7cd6e12 (diff)
Make GrpcProtoBufferReaderWriter public
Diffstat (limited to 'test/cpp/codegen')
-rw-r--r--test/cpp/codegen/proto_utils_test.cc42
1 files changed, 25 insertions, 17 deletions
diff --git a/test/cpp/codegen/proto_utils_test.cc b/test/cpp/codegen/proto_utils_test.cc
index 836d3d8076..53e2a2864c 100644
--- a/test/cpp/codegen/proto_utils_test.cc
+++ b/test/cpp/codegen/proto_utils_test.cc
@@ -24,32 +24,43 @@
#include <gtest/gtest.h>
namespace grpc {
+
namespace internal {
-// Provide access to GrpcBufferWriter internals.
-class GrpcBufferWriterPeer {
+// Provide access to GrpcProtoBufferWriter internals.
+class GrpcProtoBufferWriterPeer {
public:
- explicit GrpcBufferWriterPeer(internal::GrpcBufferWriter* writer)
+ explicit GrpcProtoBufferWriterPeer(GrpcProtoBufferWriter* writer)
: writer_(writer) {}
bool have_backup() const { return writer_->have_backup_; }
const grpc_slice& backup_slice() const { return writer_->backup_slice_; }
const grpc_slice& slice() const { return writer_->slice_; }
private:
- GrpcBufferWriter* writer_;
+ GrpcProtoBufferWriter* writer_;
+};
+
+// Provide access to ByteBuffer internals.
+class GrpcByteBufferPeer {
+ public:
+ explicit GrpcByteBufferPeer(ByteBuffer* bb) : bb_(bb) {}
+ grpc_byte_buffer* c_buffer() { return bb_->c_buffer(); }
+
+ private:
+ ByteBuffer* bb_;
};
class ProtoUtilsTest : public ::testing::Test {};
// Regression test for a memory corruption bug where a series of
-// GrpcBufferWriter Next()/Backup() invocations could result in a dangling
+// GrpcProtoBufferWriter Next()/Backup() invocations could result in a dangling
// pointer returned by Next() due to the interaction between grpc_slice inlining
// and GRPC_SLICE_START_PTR.
TEST_F(ProtoUtilsTest, TinyBackupThenNext) {
- grpc_byte_buffer* bp;
+ ByteBuffer bp;
const int block_size = 1024;
- GrpcBufferWriter writer(&bp, block_size, 8192);
- GrpcBufferWriterPeer peer(&writer);
+ GrpcProtoBufferWriter writer(&bp, block_size, 8192);
+ GrpcProtoBufferWriterPeer peer(&writer);
void* data;
int size;
@@ -63,17 +74,14 @@ TEST_F(ProtoUtilsTest, TinyBackupThenNext) {
ASSERT_TRUE(writer.Next(&data, &size));
EXPECT_TRUE(peer.slice().refcount != nullptr);
EXPECT_EQ(block_size, size);
-
- // Cleanup.
- g_core_codegen_interface->grpc_byte_buffer_destroy(bp);
}
namespace {
// Set backup_size to 0 to indicate no backup is needed.
void BufferWriterTest(int block_size, int total_size, int backup_size) {
- grpc_byte_buffer* bp;
- GrpcBufferWriter writer(&bp, block_size, total_size);
+ ByteBuffer bb;
+ GrpcProtoBufferWriter writer(&bb, block_size, total_size);
int written_size = 0;
void* data;
@@ -110,10 +118,11 @@ void BufferWriterTest(int block_size, int total_size, int backup_size) {
writer.BackUp(backup_size);
}
}
- EXPECT_EQ(grpc_byte_buffer_length(bp), (size_t)total_size);
+ EXPECT_EQ(bb.Length(), (size_t)total_size);
grpc_byte_buffer_reader reader;
- grpc_byte_buffer_reader_init(&reader, bp);
+ GrpcByteBufferPeer peer(&bb);
+ grpc_byte_buffer_reader_init(&reader, peer.c_buffer());
int read_bytes = 0;
while (read_bytes < total_size) {
grpc_slice s;
@@ -126,7 +135,6 @@ void BufferWriterTest(int block_size, int total_size, int backup_size) {
}
EXPECT_EQ(read_bytes, total_size);
grpc_byte_buffer_reader_destroy(&reader);
- grpc_byte_buffer_destroy(bp);
}
TEST(WriterTest, TinyBlockTinyBackup) {
@@ -154,7 +162,7 @@ TEST(WriterTest, LargeBlockLargeBackup) { BufferWriterTest(4096, 8192, 4095); }
} // namespace grpc
int main(int argc, char** argv) {
- // Ensure the GrpcBufferWriter internals are initialized.
+ // Ensure the GrpcProtoBufferWriter internals are initialized.
grpc::internal::GrpcLibraryInitializer init;
init.summon();
grpc::GrpcLibraryCodegen lib;