Several assertions held when nothing answered. Renew and rebind compared
the ACK with itself, because the step rebinds $lease before its
assertions run. tftp-escape, outside-the-aliases, monitor-is-not-tls,
postscript-unknown-client and the two credential refusals passed on a
closed port or a timeout.
Renew and rebind now compare with the earlier request, and validate
rejects an assertion on an alias its own step rebinds. Each negative
check now also requires the server to have answered: a TFTP error code,
an HTTP status, a TLS handshake, or a plain-text reply on 3002, read
from the new xcatreq field transport_error.
Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
dhcptest and provtest carried two copies of the config loader, the
assertion language, the $step.field substitution, the TAP reporter, the
error types and the CLI. The copies had already drifted: list equality,
multi-line regex and CIDR membership behaved differently in each.
blackboxtest keeps one of each. A step type table in steps.py declares
the keys, required keys and reply fields of every type, and the runner
dispatches to the DHCP client or to the dig, tftp, curl and xcatd
clients. One scenario can now use a DHCP reply in a TFTP step.
The shipped scenarios move unchanged to conf/dhcp/ and conf/prov/. Their
scenario, step and assertion lists are identical to the old ones. The
wire cases and fixtures move to autotest/testcase/blackboxtest/, and CI
runs one offline phase instead of two.
Removed because no scenario or fixture used them: the pretty and json
reports, --pcap, --mac, the discover subcommand, the decline, inform
and sleep steps, assert_all, select, and the keys dhcptest accepted and
ignored.
Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>