BIND 10 #1314: IXFR-out system tests

BIND 10 Development do-not-reply at isc.org
Wed Dec 7 02:10:05 UTC 2011


#1314: IXFR-out system tests
-------------------------------------+-------------------------------------
                   Reporter:         |                 Owner:  jinmei
  stephen                            |                Status:  reviewing
                       Type:  task   |             Milestone:
                   Priority:  major  |  Sprint-20111220
                  Component:         |            Resolution:
  Unclassified                       |             Sensitive:  0
                   Keywords:         |           Sub-Project:  DNS
            Defect Severity:  N/A    |  Estimated Difficulty:  7
Feature Depending on Ticket:  IXFR-  |           Total Hours:  5
  out                                |
        Add Hours to Ticket:         |
                  Internal?:  0      |
-------------------------------------+-------------------------------------

Comment (by jinmei):

 First off, the test did not always succeed (but sometimes it
 succeeded).  I often saw this:

 {{{
     When I do an IXFR transfer of example.com 14 over tcp
 # features/terrain/transfer.py:81
     The transfer result should have 14 RRs
 # features/terrain/transfer.py:107
     Traceback (most recent call last):
       File "/Library/Python/2.6/site-
 packages/lettuce-0.1.33-py2.6.egg/lettuce/core.py", line 117, in __call__
         ret = self.function(self.step, *args, **kw)
       File
 "/Users/jinmei/src/isc/git/bind10-1314/tests/lettuce/features/terrain/transfer.py",
 line 119, in check_transfer_result_count
         " records, expected " + str(number_of_rrs)
     AssertionError: Got 0 records, expected 14
 }}}

 And, when it failed, I found this in lettuce/output/IXFR...stderr:
 {{{
 Traceback (most recent call last):
   File "/Users/jinmei/src/isc/git/bind10-1314/src/bin/xfrout/b10-xfrout",
 line 1008, in <module>
     xfrout_server = XfroutServer()
   File "/Users/jinmei/src/isc/git/bind10-1314/src/bin/xfrout/b10-xfrout",
 line 896, in __init__
     self._cc.start()
   File
 "/Users/jinmei/src/isc/git/bind10-1314/src/lib/python/isc/config/ccsession.py",
 line 210, in start
     self.__send_spec()
   File
 "/Users/jinmei/src/isc/git/bind10-1314/src/lib/python/isc/config/ccsession.py",
 line 370, in __send_spec
     answer, env = self._session.group_recvmsg(False, seq)
   File
 "/Users/jinmei/src/isc/git/bind10-1314/src/lib/python/isc/cc/session.py",
 line 266, in group_recvmsg
     env, msg  = self.recvmsg(nonblock, seq)
   File
 "/Users/jinmei/src/isc/git/bind10-1314/src/lib/python/isc/cc/session.py",
 line 121, in recvmsg
     data = self._receive_full_buffer(nonblock)
   File
 "/Users/jinmei/src/isc/git/bind10-1314/src/lib/python/isc/cc/session.py",
 line 203, in _receive_full_buffer
     self._receive_len_data()
   File
 "/Users/jinmei/src/isc/git/bind10-1314/src/lib/python/isc/cc/session.py",
 line 163, in _receive_len_data
     new_data = self._receive_bytes(self._recv_len_size)
   File
 "/Users/jinmei/src/isc/git/bind10-1314/src/lib/python/isc/cc/session.py",
 line 151, in _receive_bytes
     raise ProtocolError("Read of 0 bytes: connection closed")
 isc.cc.session.ProtocolError: Read of 0 bytes: connection closed
 }}}

 (This exception itself seems to be a kind of bug but that aside) This
 seems to suggest that b10-xfrout did not fully start up when the IXFR
 query was made.   If that always succeeds in your environment, maybe
 you can try it with adding some intentional delay (e.g.) between
 these:
 {{{
         set_signal_handler()
         xfrout_server = XfroutServer()
 }}}

 If my guess is correct, maybe we'll need something similar to
 wait_for_auth.

 Second, I made a couple of editorial fixes and pushed them.

 '''lettuce/README.tutorial'''

 (not a subject of this ticket but I first read the READMEs to
 understand the test and noticed these)

 - is this a typo?  The first 'no' should be removed perhaps?
 {{{
 The one scenario we have no has no steps,
 }}}
 - s/fire of/fire off/?
 {{{
 This is not good enough; it will fire of the process, but setting up
 }}}

 '''transfer.py'''

 I didn't understand what kind of magic was used for 'step.multiline'
 {{{#!python
     expect = re.sub("[ \t]+", " ", step.multiline)
 }}}
 but with common sense it looks okay.

 '''ixfr_out_bind10.feature'''

 I have to admit I've not read the commented out tests.  The enabled
 tests seem to be okay (except that they didn't always succeed as
 discussed above).

-- 
Ticket URL: <http://bind10.isc.org/ticket/1314#comment:11>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list