[svn] commit: r445 - in /branches/jinmei-dnsrrparams/src/lib/dns/cpp: buffer_unittest.cc messagerenderer.cc messagerenderer.h messagerenderer_unittest.cc rrclass.cc rrclass_unittest.cc rrtype.cc rrtype_unittest.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Tue Jan 12 03:53:09 UTC 2010
Author: jinmei
Date: Tue Jan 12 03:53:09 2010
New Revision: 445
Log:
added toWire() for RRType and RRClass
Modified:
branches/jinmei-dnsrrparams/src/lib/dns/cpp/buffer_unittest.cc
branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer.cc
branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer.h
branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer_unittest.cc
branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrclass.cc
branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrclass_unittest.cc
branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrtype.cc
branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrtype_unittest.cc
Modified: branches/jinmei-dnsrrparams/src/lib/dns/cpp/buffer_unittest.cc
==============================================================================
--- branches/jinmei-dnsrrparams/src/lib/dns/cpp/buffer_unittest.cc (original)
+++ branches/jinmei-dnsrrparams/src/lib/dns/cpp/buffer_unittest.cc Tue Jan 12 03:53:09 2010
@@ -43,7 +43,7 @@
const uint8_t BufferTest::testdata[5] = {1, 2, 3, 4, 5};
-TEST_F(BufferTest, input_buffer_read)
+TEST_F(BufferTest, inputBufferRead)
{
EXPECT_EQ(5, ibuffer.getLength());
EXPECT_EQ(1, ibuffer.readUint8());
@@ -61,7 +61,7 @@
EXPECT_EQ(0, memcmp(vdata, testdata, sizeof(testdata)));
}
-TEST_F(BufferTest, input_buffer_exception)
+TEST_F(BufferTest, inputBufferException)
{
EXPECT_THROW(ibuffer.setPosition(6), isc::dns::InvalidBufferPosition);
@@ -79,7 +79,7 @@
isc::dns::InvalidBufferPosition);
}
-TEST_F(BufferTest, output_buffer_extend)
+TEST_F(BufferTest, outputBufferExtend)
{
EXPECT_EQ(0, obuffer.getCapacity());
EXPECT_EQ(0, obuffer.getLength());
@@ -88,7 +88,7 @@
EXPECT_EQ(1, obuffer.getLength());
}
-TEST_F(BufferTest, output_buffer_write)
+TEST_F(BufferTest, outputBufferWrite)
{
const uint8_t* cp;
@@ -121,7 +121,7 @@
EXPECT_EQ(0, memcmp(cp + 7, testdata, sizeof(testdata)));
}
-TEST_F(BufferTest, output_buffer_writeat)
+TEST_F(BufferTest, outputBufferWriteat)
{
obuffer.writeUint32(data32);
expected_size += sizeof(data32);
@@ -140,7 +140,7 @@
isc::dns::InvalidBufferPosition);
}
-TEST_F(BufferTest, output_buffer_skip)
+TEST_F(BufferTest, outputBufferSkip)
{
obuffer.skip(4);
EXPECT_EQ(4, obuffer.getLength());
@@ -149,7 +149,7 @@
EXPECT_EQ(6, obuffer.getLength());
}
-TEST_F(BufferTest, output_buffer_readat)
+TEST_F(BufferTest, outputBufferReadat)
{
obuffer.writeData(testdata, sizeof(testdata));
for (int i = 0; i < sizeof(testdata); i ++) {
@@ -158,7 +158,7 @@
EXPECT_THROW(obuffer[sizeof(testdata)], isc::dns::InvalidBufferPosition);
}
-TEST_F(BufferTest, output_buffer_clear)
+TEST_F(BufferTest, outputBufferClear)
{
obuffer.writeData(testdata, sizeof(testdata));
obuffer.clear();
Modified: branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer.cc
==============================================================================
--- branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer.cc (original)
+++ branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer.cc Tue Jan 12 03:53:09 2010
@@ -157,6 +157,24 @@
}
void
+MessageRenderer::writeUint16(uint16_t data)
+{
+ impl_->buffer_.writeUint16(data);
+}
+
+const void*
+MessageRenderer::getData() const
+{
+ return (impl_->buffer_.getData());
+}
+
+size_t
+MessageRenderer::getLength() const
+{
+ return (impl_->buffer_.getLength());
+}
+
+void
MessageRenderer::writeName(const Name& name, bool compress)
{
impl_->nbuffer_.clear();
Modified: branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer.h
==============================================================================
--- branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer.h (original)
+++ branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer.h Tue Jan 12 03:53:09 2010
@@ -88,6 +88,31 @@
//@}
///
+ /// \name Getter Methods
+ ///
+ //@{
+ /// \brief Return a pointer to the head of the data stored in the internal
+ /// buffer.
+ ///
+ /// This method works exactly same as the same method of the \c OutputBuffer
+ /// class; all notes for \c OutputBuffer apply.
+ const void* getData() const;
+ /// \brief Return the length of data written in the internal buffer.
+ size_t getLength() const;
+ //@}
+
+ ///
+ /// \name Methods for writing data into the buffer.
+ ///
+ //@{
+ /// \brief Write an unsigned 16-bit integer in host byte order into the
+ /// internal buffer in network byte order.
+ ///
+ /// \param data The 16-bit integer to be written into the buffer.
+ void writeUint16(uint16_t data);
+ //@}
+
+ ///
/// \name Rendering Methods
///
//@{
Modified: branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer_unittest.cc
==============================================================================
--- branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer_unittest.cc (original)
+++ branches/jinmei-dnsrrparams/src/lib/dns/cpp/messagerenderer_unittest.cc Tue Jan 12 03:53:09 2010
@@ -32,13 +32,33 @@
namespace {
class MessageRendererTest : public ::testing::Test {
protected:
- MessageRendererTest() : buffer(0), renderer(buffer) {}
+ MessageRendererTest() : expected_size(0), buffer(0), renderer(buffer)
+ {
+ data16 = (2 << 8) | 3;
+ data32 = (4 << 24) | (5 << 16) | (6 << 8) | 7;
+ }
+ size_t expected_size;
+ uint16_t data16;
+ uint32_t data32;
OutputBuffer buffer;
MessageRenderer renderer;
std::vector<unsigned char> data;
+ static const uint8_t testdata[5];
};
-TEST_F(MessageRendererTest, toWire)
+const uint8_t MessageRendererTest::testdata[5] = {1, 2, 3, 4, 5};
+
+// The test cases are borrowed from those for the OutputBuffer class.
+TEST_F(MessageRendererTest, writeIntger)
+{
+ renderer.writeUint16(data16);
+ expected_size += sizeof(data16);
+
+ EXPECT_PRED_FORMAT4(UnitTestUtil::matchWireData, renderer.getData(),
+ renderer.getLength(), &testdata[1], sizeof(data16));
+}
+
+TEST_F(MessageRendererTest, writeName)
{
UnitTestUtil::readWireData("testdata/name_toWire1", data);
renderer.writeName(Name("a.example.com."));
@@ -48,7 +68,7 @@
buffer.getLength(), &data[0], data.size());
}
-TEST_F(MessageRendererTest, toWireInLargeBuffer)
+TEST_F(MessageRendererTest, writeNameInLargeBuffer)
{
size_t offset = 0x3fff;
buffer.skip(offset);
@@ -63,7 +83,7 @@
&data[0], data.size());
}
-TEST_F(MessageRendererTest, toWireWithUncompressed)
+TEST_F(MessageRendererTest, writeNameWithUncompressed)
{
UnitTestUtil::readWireData("testdata/name_toWire3", data);
renderer.writeName(Name("a.example.com."));
@@ -73,7 +93,7 @@
buffer.getLength(), &data[0], data.size());
}
-TEST_F(MessageRendererTest, toWirePointerChain)
+TEST_F(MessageRendererTest, writeNamePointerChain)
{
UnitTestUtil::readWireData("testdata/name_toWire4", data);
renderer.writeName(Name("a.example.com."));
@@ -83,7 +103,7 @@
buffer.getLength(), &data[0], data.size());
}
-TEST_F(MessageRendererTest, toWireCaseCompress)
+TEST_F(MessageRendererTest, writeNameCaseCompress)
{
UnitTestUtil::readWireData("testdata/name_toWire1", data);
renderer.writeName(Name("a.example.com."));
Modified: branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrclass.cc
==============================================================================
--- branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrclass.cc (original)
+++ branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrclass.cc Tue Jan 12 03:53:09 2010
@@ -18,6 +18,7 @@
#include "buffer.h"
#include "exceptions.h"
+#include "messagerenderer.h"
#include "rrparamregistry.h"
#include "rrclass.h"
@@ -52,6 +53,12 @@
buffer.writeUint16(classcode_);
}
+void
+RRClass::toWire(MessageRenderer& renderer) const
+{
+ renderer.writeUint16(classcode_);
+}
+
ostream&
operator<<(ostream& os, const RRClass& rrclass)
{
Modified: branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrclass_unittest.cc
==============================================================================
--- branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrclass_unittest.cc (original)
+++ branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrclass_unittest.cc Tue Jan 12 03:53:09 2010
@@ -17,6 +17,7 @@
#include <gtest/gtest.h>
#include "buffer.h"
+#include "messagerenderer.h"
#include "rrparamregistry.h"
#include "rrclass.h"
@@ -29,8 +30,26 @@
namespace {
class RRClassTest : public ::testing::Test {
protected:
+ RRClassTest() : obuffer(0), renderer(obuffer) {}
+
+ OutputBuffer obuffer;
+ MessageRenderer renderer;
+
static RRClass rrclassFactoryFromWire(const char* datafile);
+ static const RRClass rrclass_1, rrclass_0x80, rrclass_0x800,
+ rrclass_0x8000, rrclass_max;
+ static const uint8_t wiredata[10];
};
+
+const RRClass RRClassTest::rrclass_1(1);
+const RRClass RRClassTest::rrclass_0x80(0x80);
+const RRClass RRClassTest::rrclass_0x800(0x800);
+const RRClass RRClassTest::rrclass_0x8000(0x8000);
+const RRClass RRClassTest::rrclass_max(0xffff);
+// This is wire-format data for the above sample RRClasss rendered in the
+// appearing order.
+const uint8_t RRClassTest::wiredata[10] = { 0x00, 0x01, 0x00, 0x80, 0x08,
+ 0x00, 0x80, 0x00, 0xff, 0xff };
RRClass
RRClassTest::rrclassFactoryFromWire(const char* datafile)
@@ -84,6 +103,32 @@
EXPECT_EQ("CLASS65000", RRClass(65000).toText());
}
+TEST_F(RRClassTest, toWireBuffer)
+{
+ rrclass_1.toWire(obuffer);
+ rrclass_0x80.toWire(obuffer);
+ rrclass_0x800.toWire(obuffer);
+ rrclass_0x8000.toWire(obuffer);
+ rrclass_max.toWire(obuffer);
+
+ EXPECT_PRED_FORMAT4(UnitTestUtil::matchWireData,
+ obuffer.getData(), obuffer.getLength(),
+ wiredata, sizeof(wiredata));
+}
+
+TEST_F(RRClassTest, toWireRenderer)
+{
+ rrclass_1.toWire(renderer);
+ rrclass_0x80.toWire(renderer);
+ rrclass_0x800.toWire(renderer);
+ rrclass_0x8000.toWire(renderer);
+ rrclass_max.toWire(renderer);
+
+ EXPECT_PRED_FORMAT4(UnitTestUtil::matchWireData,
+ obuffer.getData(), obuffer.getLength(),
+ wiredata, sizeof(wiredata));
+}
+
TEST_F(RRClassTest, wellKnownClasss)
{
EXPECT_EQ(1, RRClass::IN().getCode());
Modified: branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrtype.cc
==============================================================================
--- branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrtype.cc (original)
+++ branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrtype.cc Tue Jan 12 03:53:09 2010
@@ -18,6 +18,7 @@
#include "buffer.h"
#include "exceptions.h"
+#include "messagerenderer.h"
#include "rrparamregistry.h"
#include "rrtype.h"
@@ -53,6 +54,12 @@
buffer.writeUint16(typecode_);
}
+void
+RRType::toWire(MessageRenderer& renderer) const
+{
+ renderer.writeUint16(typecode_);
+}
+
ostream&
operator<<(ostream& os, const RRType& rrtype)
{
Modified: branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrtype_unittest.cc
==============================================================================
--- branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrtype_unittest.cc (original)
+++ branches/jinmei-dnsrrparams/src/lib/dns/cpp/rrtype_unittest.cc Tue Jan 12 03:53:09 2010
@@ -17,6 +17,7 @@
#include <gtest/gtest.h>
#include "buffer.h"
+#include "messagerenderer.h"
#include "rrparamregistry.h"
#include "rrtype.h"
@@ -29,8 +30,26 @@
namespace {
class RRTypeTest : public ::testing::Test {
protected:
+ RRTypeTest() : obuffer(0), renderer(obuffer) {}
+
+ OutputBuffer obuffer;
+ MessageRenderer renderer;
+
static RRType rrtypeFactoryFromWire(const char* datafile);
+ static const RRType rrtype_1, rrtype_0x80, rrtype_0x800, rrtype_0x8000,
+ rrtype_max;
+ static const uint8_t wiredata[10];
};
+
+const RRType RRTypeTest::rrtype_1(1);
+const RRType RRTypeTest::rrtype_0x80(0x80);
+const RRType RRTypeTest::rrtype_0x800(0x800);
+const RRType RRTypeTest::rrtype_0x8000(0x8000);
+const RRType RRTypeTest::rrtype_max(0xffff);
+// This is wire-format data for the above sample RRTypes rendered in the
+// appearing order.
+const uint8_t RRTypeTest::wiredata[10] = { 0x00, 0x01, 0x00, 0x80, 0x08,
+ 0x00, 0x80, 0x00, 0xff, 0xff };
RRType
RRTypeTest::rrtypeFactoryFromWire(const char* datafile)
@@ -89,6 +108,32 @@
EXPECT_EQ("TYPE65000", RRType(65000).toText());
}
+TEST_F(RRTypeTest, toWireBuffer)
+{
+ rrtype_1.toWire(obuffer);
+ rrtype_0x80.toWire(obuffer);
+ rrtype_0x800.toWire(obuffer);
+ rrtype_0x8000.toWire(obuffer);
+ rrtype_max.toWire(obuffer);
+
+ EXPECT_PRED_FORMAT4(UnitTestUtil::matchWireData,
+ obuffer.getData(), obuffer.getLength(),
+ wiredata, sizeof(wiredata));
+}
+
+TEST_F(RRTypeTest, toWireRenderer)
+{
+ rrtype_1.toWire(renderer);
+ rrtype_0x80.toWire(renderer);
+ rrtype_0x800.toWire(renderer);
+ rrtype_0x8000.toWire(renderer);
+ rrtype_max.toWire(renderer);
+
+ EXPECT_PRED_FORMAT4(UnitTestUtil::matchWireData,
+ obuffer.getData(), obuffer.getLength(),
+ wiredata, sizeof(wiredata));
+}
+
TEST_F(RRTypeTest, wellKnownTypes)
{
EXPECT_EQ(1, RRType::A().getCode());
More information about the bind10-changes
mailing list