BIND 10 #1460: Define system-level tests for DDNS

BIND 10 Development do-not-reply at isc.org
Thu May 31 20:05:26 UTC 2012


#1460: Define system-level tests for DDNS
-------------------------------------+-------------------------------------
                   Reporter:  jelte  |                 Owner:  UnAssigned
                       Type:  task   |                Status:  reviewing
                   Priority:         |             Milestone:
  medium                             |  Sprint-20120612
                  Component:  DDNS   |            Resolution:
                   Keywords:         |             Sensitive:  0
            Defect Severity:  N/A    |           Sub-Project:  DNS
Feature Depending on Ticket:  DDNS   |  Estimated Difficulty:  5
        Add Hours to Ticket:  0      |           Total Hours:  6
                  Internal?:  0      |
-------------------------------------+-------------------------------------

Comment (by jinmei):

 Replying to [comment:6 jelte]:

 > I am willing to do the adds/deletes and all their special cases at some
 point if we think it is worth it, but these things are also tested in the
 unit tests. Because of that, perhaps, if we are short on time, we may only
 want to test the inter-process parts (i.e. the bind10-specific tests), and
 the TCP test and the IXFR test (which perhaps should be considered
 b10-specific too). But for now, I've left them out before I'm spending
 more than a full day on just this document :)

 I think it makes sense to focus more on tests as the entire system
 (e.g. behavior involving multiple components) and let unit tests be
 responsible for corner case checks.  Technically, unit tests and
 system (integration) tests are conceptually different and it's not a
 good practice if we omit cases just because they are covered in a
 different type of tests, but realistically we are not a very large
 organization with dedicated QA stuff, so that would be a reasonable
 compromise.

 Comments on the wiki description follow.  This kind of task can never
 be perfect, so I suggest just fixing some trivial errors and then
 closing this ticket.

 '''General'''

 I've noticed some earlier test descriptions miss corresponding RFC
 sections.

 BIND 9's system tests have their own update cases.  From a quick look,
 I've not found so many we need to incorporate from them, but you may
 also want to take a look at it.  It's
 bind9/bin/tests/system/nsupdate/tests.sh.  One thing that drew my
 attention is this:

 {{{
 # inserting an NS record without a corresponding A or AAAA record should
 fail
 $NSUPDATE -l -p 5300 -k ns1/session.key > nsupdate.out 2>&1 << END &&
 status=1
 update add other.nil. 600 in ns ns3.other.nil.
 send
 END
 grep REFUSED nsupdate.out > /dev/null 2>&1 || status=1
 }}}

 although the underlying implementation uses the generic zone
 management module, so in our case it's probably more reasonable to
 hold off until we do generic zone loading with post-load checks.

 '''Module tests'''

 - Is there any reason why we use in-memory over DB (sqlite3 in practice)?
 - note: Tests 1 will need #1986.  With #1986 completed, I think the
   RCODE can be of implementator's choice.  I'd slightly prefer NOTIMP,
   but REFUSED would also be okay considering it's one form of 'reject
   all' ACL.
 - We may want to test what should happen if a running b10-ddns is
   stopped.

 '''SOA serial tests'''

 - test 4: "e.g." should be add_1_4?

 - test 6: I think it can be implementation dependent, but BIND 9 seems
   to avoid SOA increment if the diff ends up being empty.
 {{{#!c
         /*
          * If any changes were made, increment the SOA serial number,
          * update RRSIGs and NSECs (if zone is secure), and write the
 update
          * to the journal.
          */
 }}}
 - We may want to test this, although this level of thing should also
   be covered in unit tests:
 {{{
    7.11. A zone's SOA SERIAL should never be set to zero (0) due to
    interoperability problems with some older but widely installed
    implementations of DNS.  When incrementing an SOA SERIAL, if the
    result of the increment is zero (0) (as will be true when wrapping
    around 2**32), it is necessary to increment it again or set it to one
    (1).  See [RFC1982] for more detail on this subject.
 }}}
 - There can be a case where the zone doesn't even have an SOA for
   DB-based data sources (in-memory should ensure that it never
   happens).

 '''Zone section tests'''
 - There's another case: the specified zone is a secondary.

 '''Prerequisite section tests'''

 From a quick look there doesn't seem to be anything obviously wrong,
 although I have to admit I didn't check the tests are comprehensive
 (and, in practice, we may not necessarily need to be 100%
 comprehensive in system tests as long as they are covered in unit
 tests) or they don't have any minor errors.

 '''Update section tests'''

 - it doesn't seem to contain post-prescan things.  is the intent that
   they should be covered in other cases?
 - what about special cases such as deleting apex NS?

 '''Prescan failures'''

 - Shouldn't the "additional section"s be "update section"? (the update
   section is ddns-equivalent of the answer section, btw)
 - (maybe it's more about unit-level tests) what about MAILA/MAILB?

 '''DDNS over TCP tests'''

 - note: we may need to develop our own tool for this test.

 - and, if possible, we might want to check what happens if the test
   client tries to keep the TCP connection for multiple DDNS
   transactions (I suspect b10-ddns won't support such an operation
   even after we complete #2003)

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


More information about the bind10-tickets mailing list