BIND 10 trac2850_2, updated. 8ba0a7bc496c135f80c71bf035fcca0687a16e27 [2850] Add tests to check that resetHeader() is called by ZoneWriter class
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri May 10 12:36:51 UTC 2013
The branch, trac2850_2 has been updated
via 8ba0a7bc496c135f80c71bf035fcca0687a16e27 (commit)
from db8cec0cd9505bd0ab091e6258822dcb2891338c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 8ba0a7bc496c135f80c71bf035fcca0687a16e27
Author: Mukund Sivaraman <muks at isc.org>
Date: Fri May 10 15:22:21 2013 +0530
[2850] Add tests to check that resetHeader() is called by ZoneWriter class
Initially I thought it was not possible to test this as
ZoneTableSegment::create() was used to create the zone table segment,
but it seems it's possible to do it this way using a mock class.
-----------------------------------------------------------------------
Summary of changes:
.../datasrc/tests/memory/zone_writer_unittest.cc | 31 ++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/tests/memory/zone_writer_unittest.cc b/src/lib/datasrc/tests/memory/zone_writer_unittest.cc
index 23e8e20..f4f2295 100644
--- a/src/lib/datasrc/tests/memory/zone_writer_unittest.cc
+++ b/src/lib/datasrc/tests/memory/zone_writer_unittest.cc
@@ -38,10 +38,25 @@ namespace {
class TestException {};
+class ZoneTableSegmentHelper : public ZoneTableSegmentMock {
+public:
+ ZoneTableSegmentHelper(const isc::dns::RRClass& rrclass,
+ isc::util::MemorySegment& mem_sgmt) :
+ ZoneTableSegmentMock(rrclass, mem_sgmt),
+ reset_header_called_(false)
+ {}
+
+ virtual void resetHeader() {
+ reset_header_called_ = true;
+ }
+
+ bool reset_header_called_;
+};
+
class ZoneWriterTest : public ::testing::Test {
protected:
ZoneWriterTest() :
- segment_(ZoneTableSegment::create(RRClass::IN(), "local")),
+ segment_(new ZoneTableSegmentHelper(RRClass::IN(), mem_sgmt_)),
writer_(new
ZoneWriter(*segment_,
bind(&ZoneWriterTest::loadAction, this, _1),
@@ -55,7 +70,8 @@ protected:
// Release the writer
writer_.reset();
}
- scoped_ptr<ZoneTableSegment> segment_;
+ MemorySegmentMock mem_sgmt_;
+ scoped_ptr<ZoneTableSegmentHelper> segment_;
scoped_ptr<ZoneWriter> writer_;
bool load_called_;
bool load_throw_;
@@ -123,14 +139,18 @@ TEST_F(ZoneWriterTest, constructForReadOnlySegment) {
TEST_F(ZoneWriterTest, correctCall) {
// Nothing called before we call it
EXPECT_FALSE(load_called_);
+ EXPECT_FALSE(segment_->reset_header_called_);
// Just the load gets called now
EXPECT_NO_THROW(writer_->load());
EXPECT_TRUE(load_called_);
+ EXPECT_TRUE(segment_->reset_header_called_);
load_called_ = false;
+ segment_->reset_header_called_ = false;
EXPECT_NO_THROW(writer_->install());
EXPECT_FALSE(load_called_);
+ EXPECT_TRUE(segment_->reset_header_called_);
// We don't check explicitly how this works, but call it to free memory. If
// everything is freed should be checked inside the TearDown.
@@ -141,15 +161,19 @@ TEST_F(ZoneWriterTest, loadTwice) {
// Load it the first time
EXPECT_NO_THROW(writer_->load());
EXPECT_TRUE(load_called_);
+ EXPECT_TRUE(segment_->reset_header_called_);
load_called_ = false;
+ segment_->reset_header_called_ = false;
// The second time, it should not be possible
EXPECT_THROW(writer_->load(), isc::InvalidOperation);
EXPECT_FALSE(load_called_);
+ EXPECT_FALSE(segment_->reset_header_called_);
// The object should not be damaged, try installing and clearing now
EXPECT_NO_THROW(writer_->install());
EXPECT_FALSE(load_called_);
+ EXPECT_TRUE(segment_->reset_header_called_);
// We don't check explicitly how this works, but call it to free memory. If
// everything is freed should be checked inside the TearDown.
@@ -164,15 +188,18 @@ TEST_F(ZoneWriterTest, loadLater) {
EXPECT_NO_THROW(writer_->install());
// Reset so we see nothing is called now
load_called_ = false;
+ segment_->reset_header_called_ = false;
EXPECT_THROW(writer_->load(), isc::InvalidOperation);
EXPECT_FALSE(load_called_);
+ EXPECT_FALSE(segment_->reset_header_called_);
// Cleanup and try loading again. Still shouldn't work.
EXPECT_NO_THROW(writer_->cleanup());
EXPECT_THROW(writer_->load(), isc::InvalidOperation);
EXPECT_FALSE(load_called_);
+ EXPECT_FALSE(segment_->reset_header_called_);
}
// Try calling install at various bad times
More information about the bind10-changes
mailing list