BIND 10 trac2853, updated. 3cc9fc1217967770551c6acb3ba8f6c6a0387864 [2853] Add get_status() test where segment type is mapped and state is SEGMENT_WAITING
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Jun 12 10:18:03 UTC 2013
The branch, trac2853 has been updated
via 3cc9fc1217967770551c6acb3ba8f6c6a0387864 (commit)
via fbe7def71c07f6f36af8f3d71f1bc83cb14c9e3a (commit)
from 171e04fdad35ccb630a4255efba73af01536f9de (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 3cc9fc1217967770551c6acb3ba8f6c6a0387864
Author: Mukund Sivaraman <muks at isc.org>
Date: Wed Jun 12 15:45:25 2013 +0530
[2853] Add get_status() test where segment type is mapped and state is SEGMENT_WAITING
commit fbe7def71c07f6f36af8f3d71f1bc83cb14c9e3a
Author: Mukund Sivaraman <muks at isc.org>
Date: Wed Jun 12 15:40:55 2013 +0530
[2853] Update getStatus() C++ method
* Return the correct segment type
* Return SEGMENT_WAITING when the segment is not usable
* Update tests
-----------------------------------------------------------------------
Summary of changes:
src/lib/datasrc/client_list.cc | 21 ++++++++++++----
src/lib/datasrc/tests/client_list_unittest.cc | 20 ++++++++++++++++
.../python/isc/datasrc/tests/clientlist_test.py | 25 ++++++++++++++++++++
3 files changed, 61 insertions(+), 5 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/client_list.cc b/src/lib/datasrc/client_list.cc
index 01f59f4..d1bef5a 100644
--- a/src/lib/datasrc/client_list.cc
+++ b/src/lib/datasrc/client_list.cc
@@ -410,11 +410,22 @@ vector<DataSourceStatus>
ConfigurableClientList::getStatus() const {
vector<DataSourceStatus> result;
BOOST_FOREACH(const DataSourceInfo& info, data_sources_) {
- // TODO: Once we support mapped cache, decide when we need the
- // SEGMENT_WAITING.
- result.push_back(DataSourceStatus(info.name_, info.cache_ ?
- SEGMENT_INUSE : SEGMENT_UNUSED,
- "local"));
+ MemorySegmentState segment_state = SEGMENT_UNUSED;
+ if (info.cache_) {
+ if (info.ztable_segment_ && info.ztable_segment_->isUsable()) {
+ segment_state = SEGMENT_INUSE;
+ } else {
+ segment_state = SEGMENT_WAITING;
+ }
+ }
+
+ std::string segment_type;
+ if (info.ztable_segment_) {
+ segment_type = info.ztable_segment_->getImplType();
+ }
+
+ result.push_back(DataSourceStatus(info.name_, segment_state,
+ segment_type));
}
return (result);
}
diff --git a/src/lib/datasrc/tests/client_list_unittest.cc b/src/lib/datasrc/tests/client_list_unittest.cc
index f649e5c..815e953 100644
--- a/src/lib/datasrc/tests/client_list_unittest.cc
+++ b/src/lib/datasrc/tests/client_list_unittest.cc
@@ -116,6 +116,7 @@ public:
const std::string& datasrc_name,
ZoneTableSegment::MemorySegmentOpenMode mode,
ConstElementPtr config_params) = 0;
+ virtual std::string getType() = 0;
};
class ListTest : public ::testing::TestWithParam<SegmentType*> {
@@ -332,6 +333,9 @@ public:
ConstElementPtr) {
// We must not call reset on local ZoneTableSegments.
}
+ virtual std::string getType() {
+ return ("local");
+ }
};
LocalSegmentType local_segment_type;
@@ -360,6 +364,9 @@ public:
ConstElementPtr config_params) {
list.resetMemorySegment(datasrc_name, mode, config_params);
}
+ virtual std::string getType() {
+ return ("mapped");
+ }
};
MappedSegmentType mapped_segment_type;
@@ -1002,6 +1009,13 @@ ListTest::doReload(const Name& origin, const string& datasrc_name) {
// Test we can reload a zone
TEST_P(ListTest, reloadSuccess) {
list_->configure(config_elem_zones_, true);
+
+ const vector<DataSourceStatus> statii_before(list_->getStatus());
+ ASSERT_EQ(1, statii_before.size());
+ EXPECT_EQ("test_type", statii_before[0].getName());
+ EXPECT_EQ(SEGMENT_UNUSED, statii_before[0].getSegmentState());
+ EXPECT_THROW(statii_before[0].getSegmentType(), isc::InvalidOperation);
+
const Name name("example.org");
prepareCache(0, name);
// The cache currently contains a tweaked version of zone, which
@@ -1017,6 +1031,12 @@ TEST_P(ListTest, reloadSuccess) {
list_->find(name).finder_->
find(Name("tstzonedata").concatenate(name),
RRType::A())->code);
+
+ const vector<DataSourceStatus> statii_after(list_->getStatus());
+ ASSERT_EQ(1, statii_after.size());
+ EXPECT_EQ("test_type", statii_after[0].getName());
+ EXPECT_EQ(SEGMENT_INUSE, statii_after[0].getSegmentState());
+ EXPECT_EQ(GetParam()->getType(), statii_after[0].getSegmentType());
}
// The cache is not enabled. The load should be rejected.
diff --git a/src/lib/python/isc/datasrc/tests/clientlist_test.py b/src/lib/python/isc/datasrc/tests/clientlist_test.py
index 1e6c3c9..1fb581c 100644
--- a/src/lib/python/isc/datasrc/tests/clientlist_test.py
+++ b/src/lib/python/isc/datasrc/tests/clientlist_test.py
@@ -255,6 +255,31 @@ class ClientListTest(unittest.TestCase):
isc.datasrc.ConfigurableClientList.SEGMENT_INUSE),
status[0])
+ def test_get_status_waiting(self):
+ """
+ Test getting status when segment type is mapped and it has not
+ been reset yet.
+ """
+
+ self.clist = isc.datasrc.ConfigurableClientList(isc.dns.RRClass.IN)
+ self.clist.configure('''[{
+ "type": "MasterFiles",
+ "params": {
+ "example.org": "''' + TESTDATA_PATH + '''example.org.zone"
+ },
+ "cache-enable": true,
+ "cache-type": "mapped"
+ }]''', True)
+
+ status = self.clist.get_status()
+ self.assertIsNotNone(status)
+ self.assertIsInstance(status, list)
+ self.assertEqual(1, len(status))
+ self.assertIsInstance(status[0], tuple)
+ self.assertTupleEqual(('MasterFiles', 'mapped',
+ isc.datasrc.ConfigurableClientList.SEGMENT_WAITING),
+ status[0])
+
if __name__ == "__main__":
isc.log.init("bind10")
isc.log.resetUnitTestRootLogger()
More information about the bind10-changes
mailing list