Nameserver06

Status: Final

Purpose

  • Verify that NS names discovered from delegation/child data can be resolved to at least one IP address.

Preconditions And Inputs

  • Preconditions:
    • A zone.Zone object is available.
  • Required inputs:
  • Profile/config knobs that affect behavior:
    • No direct profile knob in this testcase.

Algorithm And Decision Flow

  1. Emit TEST_CASE_START.
  2. Read names from z.GlueNames (delegation) and z.ApexNSNames (child), lowercase each name, and build unique union allNames.
  3. Read resolved nameserver list from AllNameservers , lowercase each nameserver name, and build set withIP.
  4. Build sorted withoutIP list for names in allNames that are not present in withIP.
  5. Emit one of:
    • CAN_NOT_BE_RESOLVED when withoutIP is non-empty and withIP is non-empty.
    • NO_RESOLUTION when withIP is empty.
    • CAN_BE_RESOLVED otherwise.
  6. Emit TEST_CASE_END.

Emitted Tags (Possible Set)

TagEmitted when
CAN_BE_RESOLVEDAll discovered names are resolved under current method outputs.
CAN_NOT_BE_RESOLVEDAt least one discovered nameserver name failed to resolve and at least one resolved successfully.
NO_RESOLUTIONNo resolved nameserver entries were available.
TEST_CASE_ENDTestcase completion marker is emitted.
TEST_CASE_STARTTestcase start marker is emitted.

Tag Arguments

TagArgument keyTypeMeaning
CAN_BE_RESOLVED--No arguments.
CAN_NOT_BE_RESOLVEDserversarray<object>Structured unresolved nameserver names as {ns} items (lowercase, sorted).
NO_RESOLUTIONnamesstringComma-delimited unresolved NS names (lowercase, sorted).
TEST_CASE_ENDtestcasestringTestcase display name (Nameserver06).
TEST_CASE_STARTtestcasestringTestcase display name (Nameserver06).

Severity Levels Per Tag

TagLevelNotes
CAN_BE_RESOLVEDINFODefault from share/profile.json (test_levels.NAMESERVER).
CAN_NOT_BE_RESOLVEDERRORDefault from share/profile.json (test_levels.NAMESERVER).
NO_RESOLUTIONERRORDefault from share/profile.json (test_levels.NAMESERVER).
TEST_CASE_ENDDEBUGDefault from share/profile.json (test_levels.NAMESERVER).
TEST_CASE_STARTDEBUGDefault from share/profile.json (test_levels.NAMESERVER).

Differences From Upstream

  • Differences (Upstream vs Gonemaster):
    • Upstream: describes failure when any nameserver name does not resolve. Gonemaster: distinguishes partial failure (CAN_NOT_BE_RESOLVED) from complete failure (NO_RESOLUTION) and also emits explicit success (CAN_BE_RESOLVED).
    • Upstream: special requirements mention transport-disable handling. Gonemaster: has no direct transport-disabled branch in this testcase; it uses resolved data produced by methods.
    • Upstream: does not explicitly describe testcase boundary markers. Gonemaster: emits TEST_CASE_START and TEST_CASE_END.
  • Potential upstream report:
    • no

Edge Cases And Limitations

  • Name comparisons are case-insensitive (all names lowercased before set operations).
  • If both allNames and withIP are empty, NO_RESOLUTION is emitted with empty names.
  • Resolution quality depends entirely on upstream method outputs (z.GlueNames , z.ApexNSNames , AllNameservers ).