BIND 10 trac1758, updated. 2bb6957f057d02e70338d1c8586d53bbda7f7d33 [1758] Future test support.
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Mar 15 15:19:58 UTC 2012
The branch, trac1758 has been updated
via 2bb6957f057d02e70338d1c8586d53bbda7f7d33 (commit)
from c6bb0438548d5a7eaa6b2e7cc27f801f7c156cd8 (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 2bb6957f057d02e70338d1c8586d53bbda7f7d33
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date: Thu Mar 15 16:19:12 2012 +0100
[1758] Future test support.
-----------------------------------------------------------------------
Summary of changes:
src/lib/datasrc/tests/database_unittest.cc | 68 ++++++++++++++++++++++++++++
1 files changed, 68 insertions(+), 0 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/tests/database_unittest.cc b/src/lib/datasrc/tests/database_unittest.cc
index b4306e4..8a019a2 100644
--- a/src/lib/datasrc/tests/database_unittest.cc
+++ b/src/lib/datasrc/tests/database_unittest.cc
@@ -205,6 +205,13 @@ const char* const TEST_RECORDS[][5] = {
{NULL, NULL, NULL, NULL, NULL},
};
+// FIXME: Taken from a different test. Fill with proper data when creating a test.
+const char* TEST_NSEC3_RECORDS[][5] = {
+ {"1BB7SO0452U1QHL98UISNDD9218GELR5", "NSEC3", "3600", "", "1 0 10 FEEDABEE 4KLSVDE8KH8G95VU68R7AHBE1CPQN38J"},
+ {"1BB7SO0452U1QHL98UISNDD9218GELR5", "RRSIG", "3600", "", "NSEC3 5 4 7200 20100410172647 20100311172647 63192 example.org. gNIVj4T8t51fEU6kOPpvK7HOGBFZGbalN5ZK mInyrww6UWZsUNdw07ge6/U6HfG+/s61RZ/L is2M6yUWHyXbNbj/QqwqgadG5dhxTArfuR02 xP600x0fWX8LXzW4yLMdKVxGbzYT+vvGz71o 8gHSY5vYTtothcZQa4BMKhmGQEk="},
+ {NULL, NULL, NULL, NULL, NULL}
+};
+
/*
* An accessor with minimum implementation, keeping the original
* "NotImplemented" methods.
@@ -383,6 +390,28 @@ public:
}
private:
+ class DomainIterator : public IteratorContext {
+ public:
+ DomainIterator(const std::vector<std::vector<std::string> >& domain) :
+ domain_(domain),
+ position_(domain_.begin())
+ {}
+ virtual bool getNext(std::string (&columns)[COLUMN_COUNT]) {
+ if (position_ == domain_.end()) {
+ return (false);
+ } else {
+ for (size_t i(0); i < COLUMN_COUNT; ++ i) {
+ columns[i] = (*position_)[i];
+ }
+ ++ position_;
+ return (true);
+ }
+ }
+ private:
+ const std::vector<std::vector<std::string> > domain_;
+ std::vector<std::vector<std::string> >::const_iterator position_;
+ };
+
class MockNameIteratorContext : public IteratorContext {
public:
MockNameIteratorContext(const MockAccessor& mock_accessor, int zone_id,
@@ -615,6 +644,17 @@ public:
}
}
+ virtual IteratorContextPtr getNSEC3Records(const std::string& hash,
+ int) const
+ {
+ Domains::const_iterator it(nsec_namespace_.find(hash));
+ if (it == nsec_namespace_.end()) {
+ return (IteratorContextPtr(new EmptyIteratorContext()));
+ } else {
+ return (IteratorContextPtr(new DomainIterator(it->second)));
+ }
+ }
+
virtual pair<bool, int> startUpdateZone(const std::string& zone_name,
bool replace)
{
@@ -835,6 +875,9 @@ private:
const Domains empty_records_master_;
const Domains* empty_records_;
+ // The NSEC3 namespace. The above trick will be added once it is needed.
+ Domains nsec_namespace_;
+
// The journal data
std::vector<JournalEntry> journal_entries_master_;
std::vector<JournalEntry>* journal_entries_;
@@ -895,6 +938,20 @@ private:
cur_name_.clear();
}
+ // Works in a similar way to addCurName, but it is added to
+ // the NSEC3 namespace. You don't provide the full name, only
+ // the hash part.
+ void addCurHash(const std::string& hash) {
+ ASSERT_EQ(0, nsec_namespace_.count(hash));
+ // Append the name to all of them
+ for (std::vector<std::vector<std::string> >::iterator
+ i = cur_name_.begin(); i != cur_name_.end(); ++ i) {
+ i->push_back(hash);
+ }
+ (*readonly_records_)[hash] = cur_name_;
+ cur_name_.clear();
+ }
+
// Fills the database with zone data.
// This method constructs a number of resource records (with addRecord),
// which will all be added for one domain name to the fake database
@@ -917,6 +974,17 @@ private:
TEST_RECORDS[i][3], TEST_RECORDS[i][4]);
}
addCurName(prev_name);
+ prev_name = NULL;
+ for (int i = 0; TEST_NSEC3_RECORDS[i][0] != NULL; ++i) {
+ if (prev_name != NULL &&
+ strcmp(prev_name, TEST_NSEC3_RECORDS[i][0]) != 0) {
+ addCurHash(prev_name);
+ }
+ prev_name = TEST_NSEC3_RECORDS[i][0];
+ addRecord(TEST_NSEC3_RECORDS[i][1], TEST_NSEC3_RECORDS[i][2],
+ TEST_NSEC3_RECORDS[i][3], TEST_NSEC3_RECORDS[i][4]);
+ }
+ addCurHash(prev_name);
}
};
More information about the bind10-changes
mailing list