[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