Zone03 (zone03)

Status: Final

Purpose

  • Validate ordering relationship between SOA timers: refresh should be greater than retry.

Preconditions And Inputs

  • Preconditions:
    • A zone.Zone object is available.
  • Required inputs:
    • Child nameserver addresses from methods.Method5.
    • One authoritative SOA response for the child zone apex (if obtainable).
  • Profile/config knobs that affect behavior:
    • net.ipv4 and net.ipv6 affect transport availability during SOA retrieval.

Algorithm And Decision Flow

  1. Emit TEST_CASE_START.
  2. Retrieve SOA from child nameservers using shared helper logic:
    • iterate Method5 nameservers in order;
    • skip disabled transports;
    • return the first response that has SOA in answer and AA=true.
  3. If no qualifying SOA response is found, emit NO_RESPONSE_SOA_QUERY.
  4. Else read SOA refresh and retry:
    • if retry >= refresh, emit REFRESH_LOWER_THAN_RETRY;
    • else emit REFRESH_HIGHER_THAN_RETRY.
  5. Emit TEST_CASE_END.

Emitted Tags (Possible Set)

TagEmitted when
NO_RESPONSE_SOA_QUERYNo authoritative SOA response containing an SOA answer record was received from any queried nameserver.
REFRESH_HIGHER_THAN_RETRYSOA refresh is greater than SOA retry.
REFRESH_LOWER_THAN_RETRYSOA retry is greater than or equal to SOA refresh.
TEST_CASE_ENDTestcase completion marker is emitted.
TEST_CASE_STARTTestcase start marker is emitted.

Tag Arguments

TagArgument keyTypeMeaning
NO_RESPONSE_SOA_QUERY--No arguments.
REFRESH_HIGHER_THAN_RETRYretryintObserved SOA retry value.
REFRESH_HIGHER_THAN_RETRYrefreshintObserved SOA refresh value.
REFRESH_LOWER_THAN_RETRYretryintObserved SOA retry value.
REFRESH_LOWER_THAN_RETRYrefreshintObserved SOA refresh value.
TEST_CASE_ENDtestcasestringTestcase display name (Zone03).
TEST_CASE_STARTtestcasestringTestcase display name (Zone03).

Severity Levels Per Tag

TagLevelNotes
NO_RESPONSE_SOA_QUERYDEBUGDefault from share/profile.json (test_levels.ZONE).
REFRESH_HIGHER_THAN_RETRYINFODefault from share/profile.json (test_levels.ZONE).
REFRESH_LOWER_THAN_RETRYINFODefault from share/profile.json (test_levels.ZONE).
TEST_CASE_ENDDEBUGDefault from share/profile.json (test_levels.ZONE).
TEST_CASE_STARTDEBUGDefault from share/profile.json (test_levels.ZONE).

Differences From Upstream

  • Upstream reference: zone03.md
  • Differences (Upstream vs Gonemaster):
    • Upstream: describes retry >= refresh as testcase failure. Gonemaster: emits REFRESH_LOWER_THAN_RETRY with default severity INFO.
    • Upstream: does not define explicit result tag for retrieval failure. Gonemaster: emits NO_RESPONSE_SOA_QUERY.
    • Upstream: does not describe testcase boundary debug markers. Gonemaster: emits TEST_CASE_START and TEST_CASE_END.
  • Potential upstream report:
    • yes
  • If yes, include:
    • Upstream expected behavior: Upstream prose defines retry >= refresh as failure condition.
    • Gonemaster observed behavior: The failure branch is an informational tag (REFRESH_LOWER_THAN_RETRY) under default profile.
    • evidence: docs/specifications/upstream/tests/Zone-TP/zone03.md, engine/test/zone/zone.go, share/profile.json
    • report status: not filed

Edge Cases And Limitations

  • The shared retrieval helper emits IPV4_DISABLED or IPV6_DISABLED when the corresponding transport is disabled; these tags are not declared in this testcase’s Metadata() function.
  • If helper cannot find an authoritative SOA answer, timer-order comparison is not attempted.