BIND 10 trac1484, updated. f59e0c5bab84c830f6922c5982c0ae61f028597e [1484] Trivial fixes

BIND 10 source code commits bind10-changes at lists.isc.org
Wed Dec 21 11:07:03 UTC 2011


The branch, trac1484 has been updated
       via  f59e0c5bab84c830f6922c5982c0ae61f028597e (commit)
       via  d907907c7dfaeca2ace318cb67d70c4445974b6f (commit)
       via  a1b7e0e81d17c607fdf1f3c4c9b3bc578b9269eb (commit)
      from  3e851b72d4869bd4e7ede881aac0470da39aef3a (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 f59e0c5bab84c830f6922c5982c0ae61f028597e
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date:   Wed Dec 21 12:06:13 2011 +0100

    [1484] Trivial fixes
    
    * Removed comment that is no longer relevant
    * Parentheses

commit d907907c7dfaeca2ace318cb67d70c4445974b6f
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date:   Wed Dec 21 12:04:33 2011 +0100

    [1484] Fix and enhance tests
    
    * They pass now
    * Repeated code is there only once
    * Uses rrsets_equal to compare rrsets
    * Checks reference counts on the result

commit a1b7e0e81d17c607fdf1f3c4c9b3bc578b9269eb
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date:   Wed Dec 21 12:03:53 2011 +0100

    [1484] Simplify calls to find()

-----------------------------------------------------------------------

Summary of changes:
 src/bin/xfrin/xfrin.py.in                        |    3 +-
 src/bin/xfrout/xfrout.py.in                      |    3 +-
 src/lib/datasrc/zone.h                           |    4 -
 src/lib/python/isc/datasrc/finder_inc.cc         |    4 -
 src/lib/python/isc/datasrc/finder_python.cc      |    4 +-
 src/lib/python/isc/datasrc/tests/datasrc_test.py |  123 ++++++++++++----------
 6 files changed, 71 insertions(+), 70 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/bin/xfrin/xfrin.py.in b/src/bin/xfrin/xfrin.py.in
index 18c9ed0..7b70b52 100755
--- a/src/bin/xfrin/xfrin.py.in
+++ b/src/bin/xfrin/xfrin.py.in
@@ -583,8 +583,7 @@ class XfrinConnection(asyncore.dispatcher):
             result, finder = self._datasrc_client.find_zone(self._zone_name)
         if result != DataSourceClient.SUCCESS:
             return None
-        result, soa_rrset = finder.find(self._zone_name, RRType.SOA(),
-                                        ZoneFinder.FIND_DEFAULT)
+        result, soa_rrset = finder.find(self._zone_name, RRType.SOA())
         if result != ZoneFinder.SUCCESS:
             logger.info(XFRIN_ZONE_NO_SOA, self.zone_str())
             return None
diff --git a/src/bin/xfrout/xfrout.py.in b/src/bin/xfrout/xfrout.py.in
index b536e4c..d1fdbb2 100755
--- a/src/bin/xfrout/xfrout.py.in
+++ b/src/bin/xfrout/xfrout.py.in
@@ -336,8 +336,7 @@ class XfroutSession():
         result, finder = self._datasrc_client.find_zone(zone_name)
         if result != DataSourceClient.SUCCESS:
             return (Rcode.NOTAUTH(), None)
-        result, soa_rrset = finder.find(zone_name, RRType.SOA(),
-                                        ZoneFinder.FIND_DEFAULT)
+        result, soa_rrset = finder.find(zone_name, RRType.SOA())
         if result != ZoneFinder.SUCCESS:
             return (Rcode.SERVFAIL(), None)
         # Especially for database-based zones, a working zone may be in
diff --git a/src/lib/datasrc/zone.h b/src/lib/datasrc/zone.h
index 485eeda..9a37d03 100644
--- a/src/lib/datasrc/zone.h
+++ b/src/lib/datasrc/zone.h
@@ -238,10 +238,6 @@ public:
     /// - If the search name matches a delegation point of DNAME, it returns
     ///   the code of \c DNAME and that DNAME RR.
     ///
-    /// \note This behavior is controversial as we discussed in
-    /// https://lists.isc.org/pipermail/bind10-dev/2011-January/001918.html
-    /// We should revisit the interface before we heavily rely on it.
-    ///
     /// The \c options parameter specifies customized behavior of the search.
     /// Their semantics is as follows (they are or bit-field):
     ///
diff --git a/src/lib/python/isc/datasrc/finder_inc.cc b/src/lib/python/isc/datasrc/finder_inc.cc
index f0c0b86..22fabfa 100644
--- a/src/lib/python/isc/datasrc/finder_inc.cc
+++ b/src/lib/python/isc/datasrc/finder_inc.cc
@@ -72,10 +72,6 @@ answer for the search key. Specifically,\n\
 - If the search name matches a delegation point of DNAME, it returns\n\
   the code of DNAME and that DNAME RR.\n\
 \n\
-Note: This behavior is controversial as we discussed in\n\
-https://lists.isc.org/pipermail/bind10-dev/2011-January/001918.html We\n\
-should revisit the interface before we heavily rely on it.\n\
-\n\
 The options parameter specifies customized behavior of the search.\n\
 Their semantics is as follows (they are or bit-field):\n\
 \n\
diff --git a/src/lib/python/isc/datasrc/finder_python.cc b/src/lib/python/isc/datasrc/finder_python.cc
index 19868f5..dcd9a76 100644
--- a/src/lib/python/isc/datasrc/finder_python.cc
+++ b/src/lib/python/isc/datasrc/finder_python.cc
@@ -91,7 +91,7 @@ PyObject* ZoneFinder_helper(ZoneFinder* finder, PyObject* args) {
     } else {
         return (NULL);
     }
-    return Py_BuildValue("I", 1);
+    return (Py_BuildValue("I", 1));
 }
 
 PyObject* ZoneFinder_helper_all(ZoneFinder* finder, PyObject* args) {
@@ -146,7 +146,7 @@ PyObject* ZoneFinder_helper_all(ZoneFinder* finder, PyObject* args) {
     } else {
         return (NULL);
     }
-    return Py_BuildValue("I", 1);
+    return (Py_BuildValue("I", 1));
 }
 
 } // end namespace internal
diff --git a/src/lib/python/isc/datasrc/tests/datasrc_test.py b/src/lib/python/isc/datasrc/tests/datasrc_test.py
index b682652..8b2a8c5 100644
--- a/src/lib/python/isc/datasrc/tests/datasrc_test.py
+++ b/src/lib/python/isc/datasrc/tests/datasrc_test.py
@@ -57,6 +57,61 @@ def create_soa(serial):
                         str(serial) + ' 3600 1800 2419200 7200'))
     return soa
 
+def test_findall_common(self, tested):
+    """
+    Common part of the find_all test. It tests a find_all method on the passed
+    object.
+    """
+    # Some "failure" responses
+    result, rrset = tested.find_all(isc.dns.Name("www.sql1.example.com"),
+                                    ZoneFinder.FIND_DEFAULT)
+    self.assertEqual(ZoneFinder.DELEGATION, result)
+    expected = RRset(Name('sql1.example.com.'), RRClass.IN(), RRType.NS(),
+                     RRTTL(3600))
+    expected.add_rdata(Rdata(RRType.NS(), RRClass.IN(),
+                             'dns01.example.com.'))
+    expected.add_rdata(Rdata(RRType.NS(), RRClass.IN(),
+                             'dns02.example.com.'))
+    expected.add_rdata(Rdata(RRType.NS(), RRClass.IN(),
+                             'dns03.example.com.'))
+    self.assertTrue(rrsets_equal(expected, rrset))
+
+    result, rrset = tested.find_all(isc.dns.Name("nxdomain.example.com"),
+                                     ZoneFinder.FIND_DEFAULT)
+    self.assertEqual(ZoneFinder.NXDOMAIN, result)
+    self.assertIsNone(None, rrset)
+
+    # A success. It should return the list now.
+    # This also tests we can ommit the options parameter
+    result, rrsets = tested.find_all(isc.dns.Name("mix.example.com."))
+    self.assertEqual(ZoneFinder.SUCCESS, result)
+    self.assertEqual(2, len(rrsets))
+    rrsets.sort(key=lambda rrset: rrset.get_type().to_text())
+    expected = [
+        RRset(Name('mix.example.com.'), RRClass.IN(), RRType.A(),
+              RRTTL(3600)),
+        RRset(Name('mix.example.com.'), RRClass.IN(), RRType.AAAA(),
+              RRTTL(3600))
+    ]
+    expected[0].add_rdata(Rdata(RRType.A(), RRClass.IN(), "192.0.2.1"))
+    expected[0].add_rdata(Rdata(RRType.A(), RRClass.IN(), "192.0.2.2"))
+    expected[1].add_rdata(Rdata(RRType.AAAA(), RRClass.IN(),
+                                "2001:db8::1"))
+    expected[1].add_rdata(Rdata(RRType.AAAA(), RRClass.IN(),
+                                "2001:db8::2"))
+    for (rrset, exp) in zip(rrsets, expected):
+        self.assertTrue(rrsets_equal(exp, rrset))
+
+    # Check the reference counts on them. The getrefcount returns one more,
+    # as for the reference in its own parameter - see its docs.
+
+    # Two - one for the variable, one for parameter
+    self.assertEqual(2, sys.getrefcount(rrsets))
+    for rrset in rrsets:
+        # 3 - one as the element of list, one for the rrset variable
+        # and one for the parameter.
+        self.assertEqual(3, sys.getrefcount(rrset))
+
 class DataSrcClient(unittest.TestCase):
 
     def test_(self):
@@ -275,66 +330,12 @@ class DataSrcClient(unittest.TestCase):
         """
         dsc = isc.datasrc.DataSourceClient("sqlite3", READ_ZONE_DB_CONFIG)
         result, finder = dsc.find_zone(isc.dns.Name("example.com"))
+
         self.assertEqual(finder.SUCCESS, result)
         self.assertEqual(isc.dns.RRClass.IN(), finder.get_class())
         self.assertEqual("example.com.", finder.get_origin().to_text())
 
-        # Some "failure" responses
-        result, rrset = finder.find_all(isc.dns.Name("www.sql1.example.com"),
-                                        finder.FIND_DEFAULT)
-        self.assertEqual(finder.DELEGATION, result)
-        self.assertEqual("sql1.example.com. 3600 IN NS dns01.example.com.\n" +
-                         "sql1.example.com. 3600 IN NS dns02.example.com.\n" +
-                         "sql1.example.com. 3600 IN NS dns03.example.com.\n",
-                         rrset.to_text())
-
-        result, rrset = finder.find_all(isc.dns.Name("nxdomain.example.com"),
-                                        finder.FIND_DEFAULT)
-        self.assertEqual(finder.NXDOMAIN, result)
-        self.assertIsNone(None, rrset)
-
-        # A success. It should return the list now.
-        result, rrsets = finder.find_all(isc.dns.Name("mix.example.com."))
-        self.assertEqual(ZoneFinder.SUCCESS, result)
-        self.assertEqual(2, len(rrsets))
-        self.assertEqual(sorted(map(lambda rrset: rrset.get_type().to_text(),
-                                    rrsets)), sorted(["A", "AAAA"]))
-        rdatas = []
-        for rrset in rrsets:
-            rdatas.extend(rrset.get_rdata())
-        self.assertEqual(sorted(map(lambda rdata: rdata.to_text(), rdatas)),
-                         sorted(["192.0.2.1", "192.0.2.2", "2001:db8::1",
-                                 "2001:db8::2"]))
-        # The same, but on an updater
-        dsc = isc.datasrc.DataSourceClient("sqlite3", WRITE_ZONE_DB_CONFIG)
-        updater = dsc.get_updater(isc.dns.Name("example.com"), False)
-
-        # Some "failure" responses
-        result, rrset = updater.find_all(isc.dns.Name("www.sql1.example.com"),
-                                        finder.FIND_DEFAULT)
-        self.assertEqual(finder.DELEGATION, result)
-        self.assertEqual("sql1.example.com. 3600 IN NS dns01.example.com.\n" +
-                         "sql1.example.com. 3600 IN NS dns02.example.com.\n" +
-                         "sql1.example.com. 3600 IN NS dns03.example.com.\n",
-                         rrset.to_text())
-
-        result, rrset = updater.find_all(isc.dns.Name("nxdomain.example.com"),
-                                         finder.FIND_DEFAULT)
-        self.assertEqual(finder.NXDOMAIN, result)
-        self.assertIsNone(None, rrset)
-
-        # A success. It should return the list now.
-        result, rrsets = updater.find_all(isc.dns.Name("mix.example.com."))
-        self.assertEqual(ZoneFinder.SUCCESS, result)
-        self.assertEqual(2, len(rrsets))
-        self.assertEqual(sorted(map(lambda rrset: rrset.get_type().to_text(),
-                                    rrsets)), sorted(["A", "AAAA"]))
-        rdatas = []
-        for rrset in rrsets:
-            rdatas.extend(rrset.get_rdata())
-        self.assertEqual(sorted(map(lambda rdata: rdata.to_text(), rdatas)),
-                         sorted(["192.0.2.1", "192.0.2.2", "2001:db8::1",
-                                 "2001:db8::2"]))
+        test_findall_common(self, finder)
 
     def test_find(self):
         dsc = isc.datasrc.DataSourceClient("sqlite3", READ_ZONE_DB_CONFIG)
@@ -444,6 +445,16 @@ class DataSrcUpdater(unittest.TestCase):
         # Make a fresh copy of the writable database with all original content
         shutil.copyfile(READ_ZONE_DB_FILE, WRITE_ZONE_DB_FILE)
 
+    def test_findall(self):
+        """
+        The same test as DataSrcClient.test_findall, but on an updater
+        instead of a finder.
+        """
+        dsc = isc.datasrc.DataSourceClient("sqlite3", WRITE_ZONE_DB_CONFIG)
+        updater = dsc.get_updater(isc.dns.Name("example.com"), False)
+
+        test_findall_common(self, updater)
+
     def test_construct(self):
         # can't construct directly
         self.assertRaises(TypeError, isc.datasrc.ZoneUpdater)




More information about the bind10-changes mailing list