MessageRenderer& renderer_;
};
+// Similar to Renderer holder, this is a very basic RAII-style class
+// that calls clear(Message::PARSE) on the given Message upon destruction
+class MessageHolder {
+public:
+ MessageHolder(Message& message) : message_(message) {}
+ ~MessageHolder() {
+ message_.clear(Message::PARSE);
+ }
+private:
+ Message& message_;
+};
+
// A helper container of socket session forwarder.
//
// This class provides a simple wrapper interface to SocketSessionForwarder
OutputBufferPtr buffer,
DNSServer* server) const
{
+ // Keep a holder on the message, so that it is automatically
+ // cleared if processMessage() is done
+ // This is not done in processMessage itself (which would be
+ // equivalent), to allow tests to inspect the message handling.
+ MessageHolder message_holder(*message);
server_->processMessage(io_message, *message, *buffer, server);
}
private:
}
~AuthSrvTest() {
- // Clear the message now; depending on the RTTI implementation,
- // type information may be lost if the message is cleared
- // automatically later, so as a precaution we do it now.
- parse_message->clear(Message::PARSE);
server.destroyDDNSForwarder();
}
response_obuffer->getData(),
response_obuffer->getLength(),
&response_data[0], response_data.size());
+
+ // After it has been run, the message should be cleared
+ EXPECT_EQ(0, parse_message->getRRCount(Message::SECTION_QUESTION));
}
// In the following tests we confirm the response data is rendered in