Browse Source

[1462] added (improved) a test case where serial number arithmetic is crucial.

JINMEI Tatuya 13 years ago
parent
commit
0fa94211a9
1 changed files with 12 additions and 9 deletions
  1. 12 9
      src/bin/xfrout/tests/xfrout_test.py.in

+ 12 - 9
src/bin/xfrout/tests/xfrout_test.py.in

@@ -110,6 +110,9 @@ class MockDataSrcClient:
             soa_rrset = create_soa(SOA_CURRENT_VERSION)
             soa_rrset = create_soa(SOA_CURRENT_VERSION)
             soa_rrset.add_rdata(soa_rrset.get_rdata()[0])
             soa_rrset.add_rdata(soa_rrset.get_rdata()[0])
             return (ZoneFinder.SUCCESS, soa_rrset)
             return (ZoneFinder.SUCCESS, soa_rrset)
+        elif name == Name('maxserial.example.com'):
+            soa_rrset = create_soa(0xffffffff)
+            return (ZoneFinder.SUCCESS, soa_rrset)
         elif rrtype == RRType.SOA():
         elif rrtype == RRType.SOA():
             return (ZoneFinder.SUCCESS, create_soa(SOA_CURRENT_VERSION))
             return (ZoneFinder.SUCCESS, create_soa(SOA_CURRENT_VERSION))
         raise ValueError('Unexpected input to mock finder: bug in test case?')
         raise ValueError('Unexpected input to mock finder: bug in test case?')
@@ -123,9 +126,6 @@ class MockDataSrcClient:
     def get_soa(self):  # emulate ZoneIterator.get_soa()
     def get_soa(self):  # emulate ZoneIterator.get_soa()
         if self._zone_name == Name('nosoa.example.com'):
         if self._zone_name == Name('nosoa.example.com'):
             return None
             return None
-        if self._zone_name == Name('serial.example.com'):
-            soa_rrset = create_soa(0xffffffff)
-            return soa_rrset
         soa_rrset = create_soa(SOA_CURRENT_VERSION)
         soa_rrset = create_soa(SOA_CURRENT_VERSION)
         if self._zone_name == Name('multisoa.example.com'):
         if self._zone_name == Name('multisoa.example.com'):
             soa_rrset.add_rdata(soa_rrset.get_rdata()[0])
             soa_rrset.add_rdata(soa_rrset.get_rdata()[0])
@@ -738,6 +738,15 @@ class TestXfroutSession(TestXfroutSessionBase):
         self.assertEqual(None, self.xfrsess._iterator)
         self.assertEqual(None, self.xfrsess._iterator)
         self.assertEqual(None, self.xfrsess._jnl_reader)
         self.assertEqual(None, self.xfrsess._jnl_reader)
 
 
+        # Similar to the previous case, but the comparison should be done
+        # based on serial number arithmetic, not as integers.
+        zone_name = Name('maxserial.example.com') # whose SOA is 0xffffffff
+        self.mdata = self.create_request_data(ixfr=1, zone_name=zone_name)
+        self.assertEqual(self.xfrsess._xfrout_setup(
+                 self.getmsg(), zone_name, TEST_RRCLASS), Rcode.NOERROR())
+        self.assertEqual(None, self.xfrsess._iterator)
+        self.assertEqual(None, self.xfrsess._jnl_reader)
+
         # The data source doesn't support journaling.  Should fallback to AXFR.
         # The data source doesn't support journaling.  Should fallback to AXFR.
         zone_name = Name('nojournal.example.com')
         zone_name = Name('nojournal.example.com')
         self.mdata = self.create_request_data(ixfr=IXFR_OK_VERSION,
         self.mdata = self.create_request_data(ixfr=IXFR_OK_VERSION,
@@ -788,12 +797,6 @@ class TestXfroutSession(TestXfroutSessionBase):
         self.assertEqual(self.xfrsess._xfrout_setup(
         self.assertEqual(self.xfrsess._xfrout_setup(
                 self.getmsg(), zone_name, TEST_RRCLASS), Rcode.FORMERR())
                 self.getmsg(), zone_name, TEST_RRCLASS), Rcode.FORMERR())
 
 
-        # the request soa is newer than the server's current serial
-        zone_name = Name('serial.example.com')
-        self.mdata = self.create_request_data(ixfr=1, zone_name=zone_name)
-        self.assertEqual(self.xfrsess._xfrout_setup(
-                 self.getmsg(), zone_name, TEST_RRCLASS), Rcode.NOERROR())
-
     def test_dns_xfrout_start_formerror(self):
     def test_dns_xfrout_start_formerror(self):
         # formerror
         # formerror
         self.xfrsess.dns_xfrout_start(self.sock, b"\xd6=\x00\x00\x00\x01\x00")
         self.xfrsess.dns_xfrout_start(self.sock, b"\xd6=\x00\x00\x00\x01\x00")