Browse Source

[trac813] added a test case to Message::toText(), and adjusted the code
(and a python test) to be compatible with BIND 9 dig's output.

JINMEI Tatuya 14 years ago
parent
commit
2d514a7641

+ 10 - 10
src/lib/dns/message.cc

@@ -83,7 +83,7 @@ const unsigned int HEADERFLAG_MASK = 0x87b0;
 const uint16_t MESSAGE_REPLYPRESERVE = (Message::HEADERFLAG_RD |
 const uint16_t MESSAGE_REPLYPRESERVE = (Message::HEADERFLAG_RD |
                                         Message::HEADERFLAG_CD);
                                         Message::HEADERFLAG_CD);
 
 
-const char *sectiontext[] = {
+const char* const sectiontext[] = {
     "QUESTION",
     "QUESTION",
     "ANSWER",
     "ANSWER",
     "AUTHORITY",
     "AUTHORITY",
@@ -780,31 +780,31 @@ Message::toText() const {
     // for simplicity we don't consider extended rcode (unlike BIND9)
     // for simplicity we don't consider extended rcode (unlike BIND9)
     s += ", status: " + impl_->rcode_->toText();
     s += ", status: " + impl_->rcode_->toText();
     s += ", id: " + boost::lexical_cast<string>(impl_->qid_);
     s += ", id: " + boost::lexical_cast<string>(impl_->qid_);
-    s += "\n;; flags: ";
+    s += "\n;; flags:";
     if (getHeaderFlag(HEADERFLAG_QR)) {
     if (getHeaderFlag(HEADERFLAG_QR)) {
-        s += "qr ";
+        s += " qr";
     }
     }
     if (getHeaderFlag(HEADERFLAG_AA)) {
     if (getHeaderFlag(HEADERFLAG_AA)) {
-        s += "aa ";
+        s += " aa";
     }
     }
     if (getHeaderFlag(HEADERFLAG_TC)) {
     if (getHeaderFlag(HEADERFLAG_TC)) {
-        s += "tc ";
+        s += " tc";
     }
     }
     if (getHeaderFlag(HEADERFLAG_RD)) {
     if (getHeaderFlag(HEADERFLAG_RD)) {
-        s += "rd ";
+        s += " rd";
     }
     }
     if (getHeaderFlag(HEADERFLAG_RA)) {
     if (getHeaderFlag(HEADERFLAG_RA)) {
-        s += "ra ";
+        s += " ra";
     }
     }
     if (getHeaderFlag(HEADERFLAG_AD)) {
     if (getHeaderFlag(HEADERFLAG_AD)) {
-        s += "ad ";
+        s += " ad";
     }
     }
     if (getHeaderFlag(HEADERFLAG_CD)) {
     if (getHeaderFlag(HEADERFLAG_CD)) {
-        s += "cd ";
+        s += " cd";
     }
     }
 
 
     // for simplicity, don't consider the update case for now
     // for simplicity, don't consider the update case for now
-    s += "; QUESTION: " +
+    s += "; QUERY: " + // note: not "QUESTION" to be compatible with BIND 9 dig
         lexical_cast<string>(impl_->counts_[SECTION_QUESTION]);
         lexical_cast<string>(impl_->counts_[SECTION_QUESTION]);
     s += ", ANSWER: " +
     s += ", ANSWER: " +
         lexical_cast<string>(impl_->counts_[SECTION_ANSWER]);
         lexical_cast<string>(impl_->counts_[SECTION_ANSWER]);

+ 1 - 1
src/lib/dns/python/tests/message_python_test.py

@@ -282,7 +282,7 @@ class MessageTest(unittest.TestCase):
         
         
         msg_str =\
         msg_str =\
 """;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4149
 """;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4149
-;; flags: qr aa rd ; QUESTION: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
+;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
 
 
 ;; QUESTION SECTION:
 ;; QUESTION SECTION:
 ;test.example.com. IN A
 ;test.example.com. IN A

+ 0 - 2
src/lib/dns/tests/message_unittest.cc

@@ -683,9 +683,7 @@ TEST_F(MessageTest, toWireWithoutRcode) {
 TEST_F(MessageTest, toText) {
 TEST_F(MessageTest, toText) {
     ifstream ifs;
     ifstream ifs;
     unittests::openTestData("message_toText1.txt", ifs);
     unittests::openTestData("message_toText1.txt", ifs);
-
     factoryFromFile(message_parse, "message_toText1.wire");
     factoryFromFile(message_parse, "message_toText1.wire");
-
     unittests::matchTextData(ifs, message_parse.toText());
     unittests::matchTextData(ifs, message_parse.toText());
 }
 }
 
 

+ 24 - 0
src/lib/dns/tests/testdata/message_toText1.spec

@@ -0,0 +1,24 @@
+#
+# A standard DNS message (taken from an invokation of dig)
+#
+
+[custom]
+sections: header:question:a/1:ns:a/2
+[header]
+id: 29174
+qr: 1
+aa: 1
+ancount: 1
+nscount: 1
+arcount: 1
+[question]
+name: www.example.com
+[a/1]
+as_rr: True
+rr_name: www.example.com
+address: 192.0.2.80
+[ns]
+as_rr: True
+[a/2]
+as_rr: True
+rr_name: ns.example.com

+ 14 - 0
src/lib/dns/tests/testdata/message_toText1.txt

@@ -0,0 +1,14 @@
+;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29174
+;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
+
+;; QUESTION SECTION:
+;www.example.com. IN A
+
+;; ANSWER SECTION:
+www.example.com. 86400 IN A 192.0.2.80
+
+;; AUTHORITY SECTION:
+example.com. 86400 IN NS ns.example.com.
+
+;; ADDITIONAL SECTION:
+ns.example.com. 86400 IN A 192.0.2.1