Introduction ============ The directories in-1 to in-4 implement the following tests of the IXFR-in capability of BIND 10. in-1: Check that BIND 10 can receive IXFR in a single UDP packet. in-2: Check that BIND 10 can receive IXFR via TCP. in-3: Check that BIND 10 will request AXFR if the server does not support IXFR. in-4: Check that BIND 10 will request IXFR when its SOA refresh times out The tests are described more fully in the document: http://bind10.isc.org/wiki/IxfrSystemTests Overview ======== All the tests use two nameservers: * A BIND 9 nameserver acting as the IXFR server (using the nomenclature of RFC 1995). * A BIND 10 nameserver acting at the IXFR client. In general, the tests attempt to set up the server and client independently. Communication is established between the systems by updating their configurations and a notification sent to the client. This should cause the client to request an IXFR from the server. (The exception is test 4, where the request is a result of the expiration of the SOA refresh time.) A check of zone files - or in these tests, of SOA serial number - can only reveal that a transfer has taken place. To check what has happened, e.g. whether the transfer was via UDP or whether a TCP request took place, the BIND 10 log file is searched for known message IDs. The searching of the log files for message IDs is one of the reasons that, unlike other system tests, the IXFR set of tests is broken up into separate tests that require the stopping and starting of nameservers (and tidying up of log files) between each test. Doing this means that only the existence of a particular message ID needs to be checked - there is no risk that another test produced it. The other reason is that the each IXFR test requires the nameservers to be in a specific state at the start of the test; this is easier to assure if they are not updating one another as the result of configuration settings established in the previous test. Test Files ========== Data Files ---------- (All within tests/system/ixfr. Some .in files are processed to substitute for build variables in the build process to give the files listed here.) db.example.nX. These files hold the RRs for a zone for which should not fit within a single UDP packet. The files are different versions of the zone - the N-0 version (i.e. the latest version - "N" - the "-0" is present so that the files have a consistent name), N-2 etc. (See the full description of the tests for the meaning of N-2 etc.) db.example.common: A set of RRs to bulk out the zone to be larger than can be contained in a single UDP packet. db.example.n2.refresh: The N-2 version of the zone, but with a small SOA refresh time (for test 4). named_xxxx.conf: Various BIND 9 configuration files with NOTIFYs and/or IXFR enabled or disabled. Directories ----------- The tests/system/ixfr directory holds the IXFR tests. Within that directory are subdirectories in-1 through in-4 for each test. And within each test directory are the directories ns1 (for the BIND 9 nameserver) and nsx2 (for the BIND 10 nameserver). Shell Scripts ------------- The IXFR tests use the same framework as the rest of the system tests, being based around shell scripts. Many have a ".in" form as they require substitution of build variables before they can be used, and so are listed in configure.ac. The files specific to the IXFR tests are: tests/system/ixfr/ixfr_init.sh.in: defines environment variables and shell subroutines used in the tests. (This references system/conf.sh.in which defines most of them.) tests/system/ixfr/common_tests.sh.in: tests in-1 and in-2 are virtually identical - this holds the common code.