mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-30 04:33:00 +02:00
test/case: simplify AsciiDoc image references
This commit greatly simplifies AsciiDoc image references in generated Readme.adoc files. The two focused use-cases that remain after this change are working references in: - Generated output/images/test-report.pdf - Viewing test's Readme.adoc from GitHub Previously we aimed to have working images also when the test's Readme was included in the parent directory's Readme.adoc. This, however, is not supported as of this commit. It seems unlikely also to ever be a supported feature of AsciiDoc on GitHub, for details, see the following issue: <https://github.com/github/markup/issues/1095> Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_hardware/usb]
|
||||
|
||||
=== USB configuration
|
||||
==== Description
|
||||
This test checks if the configuration is consistent with hardware state,
|
||||
@@ -11,18 +13,9 @@ If this pass you can be certain that the configuration of the USB
|
||||
port is handled correctly.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_hardware/usb/topology.svg[USB configuration topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::usb/topology.svg[USB configuration topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[USB configuration topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[USB configuration topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Unlock all USB ports
|
||||
. Verify that all USB ports are unlocked
|
||||
@@ -36,5 +29,3 @@ endif::topdoc[]
|
||||
. Verify USB port remain unlocked after reboot
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,21 +1,14 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_hardware/usb_two_ports]
|
||||
|
||||
=== USB configuration with two USB ports
|
||||
==== Description
|
||||
Test that the USB locked/unlocked configuration is consistent
|
||||
when having two USB ports.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_hardware/usb_two_ports/topology.svg[USB configuration with two USB ports topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::usb_two_ports/topology.svg[USB configuration with two USB ports topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[USB configuration with two USB ports topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[USB configuration with two USB ports topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Lock the first USB port and unlock the second USB port
|
||||
. Verify that the correct port is locked and the correct one is unlocked
|
||||
@@ -23,5 +16,3 @@ endif::topdoc[]
|
||||
. Verify that the correct port is locked and the correct one is unlocked
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
- name: bridge_basic
|
||||
case: bridge_basic/test.py
|
||||
|
||||
- name: dual_bridge
|
||||
case: dual_bridge/test.py
|
||||
|
||||
- name: bridge_veth
|
||||
case: bridge_veth/test.py
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/bridge_basic]
|
||||
|
||||
=== Bridge basic
|
||||
==== Description
|
||||
Test basic connectivity to a bridge
|
||||
@@ -11,22 +13,11 @@ Test basic connectivity to a bridge
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/bridge_basic/topology.svg[Bridge basic topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::bridge_basic/topology.svg[Bridge basic topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Bridge basic topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Bridge basic topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure single bridge with a single physical port, bridge @ IP 10.0.0.2
|
||||
. Verify ping 10.0.0.2 is possible from host:data
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/bridge_fwd_dual_dut]
|
||||
|
||||
=== Bridge forwarding dual DUTs
|
||||
==== Description
|
||||
Ping through two bridges on two different DUTs.
|
||||
@@ -23,22 +25,11 @@ Ping through two bridges on two different DUTs.
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/bridge_fwd_dual_dut/topology.svg[Bridge forwarding dual DUTs topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::bridge_fwd_dual_dut/topology.svg[Bridge forwarding dual DUTs topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Bridge forwarding dual DUTs topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Bridge forwarding dual DUTs topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure a bridge with triple physical port
|
||||
. Verify ping 10.0.0.3 and 10.0.0.4 from host:data11
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/bridge_fwd_sgl_dut]
|
||||
|
||||
=== Bridge forwarding single DUTs
|
||||
==== Description
|
||||
Tests forwarding through a DUT with two bridged interfaces on one DUT.
|
||||
@@ -23,22 +25,11 @@ Tests forwarding through a DUT with two bridged interfaces on one DUT.
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/bridge_fwd_sgl_dut/topology.svg[Bridge forwarding single DUTs topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::bridge_fwd_sgl_dut/topology.svg[Bridge forwarding single DUTs topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Bridge forwarding single DUTs topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Bridge forwarding single DUTs topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure a bridge with dual physical port
|
||||
. Verify ping from host:data1 to 10.0.0.2
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/bridge_stp_basic]
|
||||
|
||||
=== Bridge STP Basic
|
||||
==== Description
|
||||
First, verify that a fully connected mesh of 4 DUTs is pruned to a
|
||||
@@ -12,18 +14,9 @@ that a spanning tree rooted at A is formed, with B, C, and D all
|
||||
directly connected to A.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/bridge_stp_basic/topology.svg[Bridge STP Basic topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::bridge_stp_basic/topology.svg[Bridge STP Basic topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Bridge STP Basic topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Bridge STP Basic topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure a bridge with spanning tree eneabled on dut a, b, c, and d
|
||||
. Add an IP address to each host interface in the 10.0.0.0/24 subnet
|
||||
@@ -35,5 +28,3 @@ endif::topdoc[]
|
||||
. Verify that host:a can reach host:{b,c,d}
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/bridge_veth]
|
||||
|
||||
=== Bridge with a physical port and a veth
|
||||
==== Description
|
||||
This tests the possibility to add software added interfaces, in this case
|
||||
@@ -13,22 +15,11 @@ PING --> br0
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/bridge_veth/topology.svg[Bridge with a physical port and a veth topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::bridge_veth/topology.svg[Bridge with a physical port and a veth topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Bridge with a physical port and a veth topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Bridge with a physical port and a veth topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure bridged eth port and veth pair with IP 10.0.0.2
|
||||
. Verify ping from host:data to 10.0.0.2
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,38 +1,19 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/bridge_vlan]
|
||||
|
||||
=== Bridge VLAN
|
||||
==== Description
|
||||
Verify VLAN filtering bridge, with a VLAN trunk to a neighboring device,
|
||||
which in turn untags one VLAN outisde a non-VLAN filtering bridge.
|
||||
|
||||
.Logical network setup
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/bridge_vlan/bridge-vlan.svg[]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::bridge_vlan/bridge-vlan.svg[]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::bridge-vlan.svg[]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
image::bridge-vlan.svg[align=center, scaledwidth=75%]
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/bridge_vlan/topology.svg[Bridge VLAN topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::bridge_vlan/topology.svg[Bridge VLAN topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Bridge VLAN topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Bridge VLAN topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure DUTs
|
||||
. Verify ping from host:data to 10.0.0.2 and 10.0.0.3
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ Verify VLAN filtering bridge, with a VLAN trunk to a neighboring device,
|
||||
which in turn untags one VLAN outisde a non-VLAN filtering bridge.
|
||||
|
||||
.Logical network setup
|
||||
image::bridge-vlan.svg[]
|
||||
image::bridge-vlan.svg[align=center, scaledwidth=75%]
|
||||
|
||||
"""
|
||||
import infamy
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/bridge_vlan_separation]
|
||||
|
||||
=== Bridge VLAN separation
|
||||
==== Description
|
||||
Test that two VLANs are correctly separated in the bridge
|
||||
@@ -22,18 +24,9 @@ Test that two VLANs are correctly separated in the bridge
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/bridge_vlan_separation/topology.svg[Bridge VLAN separation topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::bridge_vlan_separation/topology.svg[Bridge VLAN separation topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Bridge VLAN separation topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Bridge VLAN separation topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure DUTs
|
||||
. Verify ping 10.0.0.3 from host:data10
|
||||
@@ -45,5 +38,3 @@ endif::topdoc[]
|
||||
. Verify broadcast is NOT received on host:data11 and host:data21
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/dual_bridge]
|
||||
|
||||
=== Dual bridges on one device
|
||||
==== Description
|
||||
Verify that it is possible to ping through a bridge to another bridge via VETH interfaces.
|
||||
Verify that it is possible to ping through a bridge to another bridge
|
||||
via a VETH pair connected to both.
|
||||
|
||||
....
|
||||
PING --> br0 br1 10.0.0.2
|
||||
@@ -9,22 +12,11 @@ PC - target:data veth0a - veth0b
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/dual_bridge/topology.svg[Dual bridges on one device topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::dual_bridge/topology.svg[Dual bridges on one device topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Dual bridges on one device topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Dual bridges on one device topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure two bridges linked and a veth pair
|
||||
. Verify ping from host:data to 10.0.0.2
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
"""Dual bridges on one device
|
||||
|
||||
"""
|
||||
Dual bridges on one device
|
||||
|
||||
Verify that it is possible to ping through a bridge to another bridge via VETH interfaces.
|
||||
Verify that it is possible to ping through a bridge to another bridge
|
||||
via a VETH pair connected to both.
|
||||
|
||||
....
|
||||
PING --> br0 br1 10.0.0.2
|
||||
/ \\ /
|
||||
PC - target:data veth0a - veth0b
|
||||
....
|
||||
|
||||
"""
|
||||
import infamy
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/iface_enable_disable]
|
||||
|
||||
=== Interface status
|
||||
==== Description
|
||||
Verify interface status properly propagate changes when an interface
|
||||
@@ -6,18 +8,9 @@ is disabled and then re-enabled.
|
||||
Both admin-status and oper-status are verified.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/iface_enable_disable/topology.svg[Interface status topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::iface_enable_disable/topology.svg[Interface status topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Interface status topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Interface status topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure bridge and associated interfaces in target1
|
||||
. Disable interface in target2
|
||||
@@ -27,5 +20,3 @@ endif::topdoc[]
|
||||
. Verify it is possible to ping the interface
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/iface_phys_address]
|
||||
|
||||
=== Custom MAC address on interface
|
||||
==== Description
|
||||
Verify support for setting and removing a custom MAC address on interfaces.
|
||||
@@ -5,18 +7,9 @@ Both static MAC address and derived from the chassis MAC with, or without,
|
||||
an offset applied.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/iface_phys_address/topology.svg[Custom MAC address on interface topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::iface_phys_address/topology.svg[Custom MAC address on interface topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Custom MAC address on interface topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Custom MAC address on interface topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Set target:data static MAC address '02:01:00:c0:ff:ee'
|
||||
. Verify target:data has MAC address '02:01:00:c0:ff:ee'
|
||||
@@ -30,5 +23,3 @@ endif::topdoc[]
|
||||
. Verify target:data MAC address is reset to default
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,25 +1,16 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/ifalias]
|
||||
|
||||
=== Interface Description (ifAlias)
|
||||
==== Description
|
||||
Verify interface description (ifAlias) can be set on an interface and
|
||||
then be read back from the operational datastore.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/ifalias/topology.svg[Interface Description (ifAlias) topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ifalias/topology.svg[Interface Description (ifAlias) topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Interface Description (ifAlias) topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Interface Description (ifAlias) topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Set up interface target:data with description
|
||||
. Verify description can be read back from operational
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/igmp_basic]
|
||||
|
||||
=== IGMP basic
|
||||
==== Description
|
||||
Verify that all multicast get flooded when no IGMP join exists in the system and
|
||||
@@ -17,18 +19,9 @@ the flooding stops as soon a join arrives
|
||||
HOST
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/igmp_basic/topology.svg[IGMP basic topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::igmp_basic/topology.svg[IGMP basic topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[IGMP basic topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[IGMP basic topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure device
|
||||
. Start multicast sender on host:data0, group 224.1.1.1
|
||||
@@ -38,5 +31,3 @@ endif::topdoc[]
|
||||
. Verify that the group 224.1.1.1 is no longer received on host:data3
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/igmp_vlan]
|
||||
|
||||
=== IGMP VLAN
|
||||
==== Description
|
||||
Test tagged IGMP control traffic and that VLAN separation is respected for multicast
|
||||
@@ -20,18 +22,9 @@ Test tagged IGMP control traffic and that VLAN separation is respected for multi
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/igmp_vlan/topology.svg[IGMP VLAN topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::igmp_vlan/topology.svg[IGMP VLAN topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[IGMP VLAN topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[IGMP VLAN topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure device
|
||||
. Start multicast sender on host:data11, group 224.2.2.2
|
||||
@@ -45,5 +38,3 @@ endif::topdoc[]
|
||||
. Verify group 224.1.1.1 is forwarded to host:data12
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,20 +1,13 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/ipv4_address]
|
||||
|
||||
=== Interface with IPv4
|
||||
==== Description
|
||||
Test that it is possible to set and remove the IPv4 address on an interface
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/ipv4_address/topology.svg[Interface with IPv4 topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ipv4_address/topology.svg[Interface with IPv4 topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Interface with IPv4 topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Interface with IPv4 topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure IPv4 address 10.10.10.20/24 on target:mgmt
|
||||
. Verify '10.10.10.20/24' exists on target:mgmt
|
||||
@@ -22,5 +15,3 @@ endif::topdoc[]
|
||||
. Verify target:mgmt no longer has the address 10.10.10.20
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/ipv4_autoconf]
|
||||
|
||||
=== IPv4 link-local
|
||||
==== Description
|
||||
Verifies that link-local (IPv4LL/ZeroConf) address assignment work as
|
||||
@@ -5,18 +7,9 @@ expected. Checks random address, the request-address setting, and
|
||||
address removal on autoconf disable.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/ipv4_autoconf/topology.svg[IPv4 link-local topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ipv4_autoconf/topology.svg[IPv4 link-local topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[IPv4 link-local topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[IPv4 link-local topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure interface target:data with IPv4 ZeroConf IP
|
||||
. Verify link-local address exist on target:data
|
||||
@@ -26,5 +19,3 @@ endif::topdoc[]
|
||||
. Verify link-local addresses has been removed from target:data
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,25 +1,16 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/ipv6_address]
|
||||
|
||||
=== Interface IPv6 autoconf for bridges
|
||||
==== Description
|
||||
Verify IPv6 autoconf on a bridge is properly set up for global prefix.
|
||||
See issue #473 for details.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/ipv6_address/topology.svg[Interface IPv6 autoconf for bridges topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ipv6_address/topology.svg[Interface IPv6 autoconf for bridges topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Interface IPv6 autoconf for bridges topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Interface IPv6 autoconf for bridges topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Setting up bridge with IPv6 SLAAC for global prefix on target:data
|
||||
. Verify using sysctl that 'net.ipv6.conf.br0.autoconf' is 1 on target
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,37 +1,20 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/lag_basic]
|
||||
|
||||
=== Ling Aggregation Basic
|
||||
==== Description
|
||||
Verify communication over a link aggregate in static and LACP operating
|
||||
modes during basic failure scenarios.
|
||||
|
||||
.Internal network setup, PC verifies connectivity with dut2 via dut1
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/lag_basic/lag-basic.svg[Internal networks]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::lag_basic/lag-basic.svg[Internal networks]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::lag-basic.svg[Internal networks]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
image::lag-basic.svg[align=center, scaledwidth=75%]
|
||||
|
||||
The host verifies connectivity with dut2 via dut1 over the aggregate for
|
||||
each test step using the `mon` interface.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/lag_basic/topology.svg[Ling Aggregation Basic topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::lag_basic/topology.svg[Ling Aggregation Basic topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Ling Aggregation Basic topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Ling Aggregation Basic topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Set up LACP link aggregate, lag0, on dut1 and dut2
|
||||
. Verify failure modes for lacp mode
|
||||
@@ -39,5 +22,3 @@ endif::topdoc[]
|
||||
. Verify failure modes for static mode
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ Verify communication over a link aggregate in static and LACP operating
|
||||
modes during basic failure scenarios.
|
||||
|
||||
.Internal network setup, PC verifies connectivity with dut2 via dut1
|
||||
image::lag-basic.svg[Internal networks]
|
||||
image::lag-basic.svg[align=center, scaledwidth=75%]
|
||||
|
||||
The host verifies connectivity with dut2 via dut1 over the aggregate for
|
||||
each test step using the `mon` interface.
|
||||
|
||||
@@ -1,42 +1,23 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/lag_failure]
|
||||
|
||||
=== LACP Aggregate w/ Degraded Link
|
||||
==== Description
|
||||
Verify communication over an LACP link aggregate when individual member
|
||||
links stop forwarding traffic, without carrier loss.
|
||||
|
||||
.Logical network setup, link breakers (lb1 & lb2) here managed by host PC
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/lag_failure/lag-failure.svg[]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::lag_failure/lag-failure.svg[]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::lag-failure.svg[]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
image::lag-failure.svg[align=center, scaledwidth=75%]
|
||||
|
||||
The host verifies connectivity with dut2 via dut1 over the aggregate for
|
||||
each failure mode step using the `mon` interface.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/lag_failure/topology.svg[LACP Aggregate w/ Degraded Link topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::lag_failure/topology.svg[LACP Aggregate w/ Degraded Link topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[LACP Aggregate w/ Degraded Link topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[LACP Aggregate w/ Degraded Link topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Set up link aggregate, lag0, between dut1 and dut2
|
||||
. Initial connectivity check ...
|
||||
. Verify failure modes
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ Verify communication over an LACP link aggregate when individual member
|
||||
links stop forwarding traffic, without carrier loss.
|
||||
|
||||
.Logical network setup, link breakers (lb1 & lb2) here managed by host PC
|
||||
image::lag-failure.svg[]
|
||||
image::lag-failure.svg[align=center, scaledwidth=75%]
|
||||
|
||||
The host verifies connectivity with dut2 via dut1 over the aggregate for
|
||||
each failure mode step using the `mon` interface.
|
||||
|
||||
@@ -1,21 +1,14 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/routing_basic]
|
||||
|
||||
=== Routing basic
|
||||
==== Description
|
||||
Verify routing between interfaces is possible. That enable/disable routing
|
||||
in configuration has the expected result.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/routing_basic/topology.svg[Routing basic topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::routing_basic/topology.svg[Routing basic topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Routing basic topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Routing basic topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Setup host
|
||||
. Enable forwarding on target:data1 and target:data2
|
||||
@@ -25,5 +18,3 @@ endif::topdoc[]
|
||||
. Verify ping does not work host:data1 to 10.0.0.10 and host:data2 to 192.168.0.10
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/speed_duplex_copper]
|
||||
|
||||
=== Interface Speed Duplex (Copper)
|
||||
==== Description
|
||||
Verify that the interface operates at the expected speed/duplex in two scenarios:
|
||||
@@ -7,18 +9,9 @@ Verify that the interface operates at the expected speed/duplex in two scenarios
|
||||
to the highest common speed/duplex.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/speed_duplex_copper/topology.svg[Interface Speed Duplex (Copper) topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::speed_duplex_copper/topology.svg[Interface Speed Duplex (Copper) topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Interface Speed Duplex (Copper) topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Interface Speed Duplex (Copper) topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Enable target interface
|
||||
. Verify fixed 10/full
|
||||
@@ -34,5 +27,3 @@ endif::topdoc[]
|
||||
. Verify auto-negotiation to 10/half + 10/full + 100/half + 100/full + 1000/full
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/static_multicast_filters]
|
||||
|
||||
=== Static multicast filters
|
||||
==== Description
|
||||
Verify that static multicast filters work (remember that snooping needs to
|
||||
@@ -19,18 +21,9 @@ enabled when using static multicast filters)
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/static_multicast_filters/topology.svg[Static multicast filters topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::static_multicast_filters/topology.svg[Static multicast filters topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Static multicast filters topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Static multicast filters topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure device without static filter
|
||||
. Start multicast sender on host:data1, group 224.1.1.1
|
||||
@@ -45,5 +38,3 @@ endif::topdoc[]
|
||||
. Verify that the MAC group is no longer forwarded to host:data3
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
include::gre_basic.adoc[]
|
||||
|
||||
<<<
|
||||
|
||||
include::gretap_basic.adoc[]
|
||||
|
||||
<<<
|
||||
|
||||
include::vxlan_basic.adoc[]
|
||||
|
||||
|
||||
@@ -1,26 +1,17 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/tunnel_basic]
|
||||
|
||||
=== GRE point-to-point
|
||||
==== Description
|
||||
Test setting up gre tunnels using IPv4 and IPv6,
|
||||
and ends with a connectivity test.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/tunnel_basic/topology.svg[GRE point-to-point topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::tunnel_basic/topology.svg[GRE point-to-point topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[GRE point-to-point topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[GRE point-to-point topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure DUTs
|
||||
. Verify connectivity host:data to 10.0.0.2
|
||||
. Verify connectivity host:data to 2001:db8::c0a8:0a02
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,26 +1,17 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/tunnel_basic]
|
||||
|
||||
=== GRETAP point-to-point
|
||||
==== Description
|
||||
Test setting up gretap tunnels using IPv4 and IPv6,
|
||||
and ends with a connectivity test.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/tunnel_basic/topology.svg[GRETAP point-to-point topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::tunnel_basic/topology.svg[GRETAP point-to-point topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[GRETAP point-to-point topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[GRETAP point-to-point topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure DUTs
|
||||
. Verify connectivity host:data to 10.0.0.2
|
||||
. Verify connectivity host:data to 2001:db8::c0a8:0a02
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,26 +1,17 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/tunnel_basic]
|
||||
|
||||
=== VXLAN point-to-point
|
||||
==== Description
|
||||
Test setting up vxlan tunnels using IPv4 and IPv6,
|
||||
and ends with a connectivity test.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/tunnel_basic/topology.svg[VXLAN point-to-point topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::tunnel_basic/topology.svg[VXLAN point-to-point topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[VXLAN point-to-point topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[VXLAN point-to-point topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure DUTs
|
||||
. Verify connectivity host:data to 10.0.0.2
|
||||
. Verify connectivity host:data to 2001:db8::c0a8:0a02
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
include::gretap_bridged.adoc[]
|
||||
|
||||
<<<
|
||||
|
||||
include::vxlan_bridged.adoc[]
|
||||
|
||||
|
||||
@@ -1,24 +1,15 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/tunnel_bridged]
|
||||
|
||||
=== GRETAP bridged with physical interface
|
||||
==== Description
|
||||
Test that gretap works as it should and that it possible to bridge it.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/tunnel_bridged/topology.svg[GRETAP bridged with physical interface topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::tunnel_bridged/topology.svg[GRETAP bridged with physical interface topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[GRETAP bridged with physical interface topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[GRETAP bridged with physical interface topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure DUTs
|
||||
. Test connectivity host:data to right:gretap0 at 192.168.10.2
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,24 +1,15 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/tunnel_bridged]
|
||||
|
||||
=== VXLAN bridged with physical interface
|
||||
==== Description
|
||||
Test that vxlan works as it should and that it possible to bridge it.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/tunnel_bridged/topology.svg[VXLAN bridged with physical interface topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::tunnel_bridged/topology.svg[VXLAN bridged with physical interface topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[VXLAN bridged with physical interface topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[VXLAN bridged with physical interface topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure DUTs
|
||||
. Test connectivity host:data to right:vxlan0 at 192.168.10.2
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
+5
-14
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/verify_all_interface_types]
|
||||
|
||||
=== Verify that all interface types can be created
|
||||
==== Description
|
||||
This test verifies that all interface types can be created and also
|
||||
@@ -15,18 +17,9 @@ slightly longer than sending the entire configuration at once.
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/verify_all_interface_types/topology.svg[Verify that all interface types can be created topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::verify_all_interface_types/topology.svg[Verify that all interface types can be created topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Verify that all interface types can be created topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Verify that all interface types can be created topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure an empty bridge br-0
|
||||
. Configure bridge br-X and associated interfaces
|
||||
@@ -44,5 +37,3 @@ endif::topdoc[]
|
||||
. Verify VxLAN interfaces 'vxlan-v4' and 'vxlan-v6'
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/veth_delete]
|
||||
|
||||
=== Verify that VETH pairs can be deleted
|
||||
==== Description
|
||||
```
|
||||
@@ -9,18 +11,9 @@ Each test step to create, add address, or delete an interace is distinct
|
||||
from any other step. This to trigger a new configuration "generation".
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/veth_delete/topology.svg[Verify that VETH pairs can be deleted topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::veth_delete/topology.svg[Verify that VETH pairs can be deleted topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Verify that VETH pairs can be deleted topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Verify that VETH pairs can be deleted topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Create VETH pair
|
||||
. Verify interfaces 'veth0a' and 'veth0b' exist
|
||||
@@ -31,5 +24,3 @@ endif::topdoc[]
|
||||
. Verify VETH pair have been removed
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/vlan_iface_termination]
|
||||
|
||||
=== VLAN Interface Termination
|
||||
==== Description
|
||||
Verify that VLANs stacked on top of an interfaces that are also
|
||||
@@ -26,18 +28,9 @@ both `data1` and `data2`, _bridging_ of packets from one to the other
|
||||
must _not_ be allowed.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/vlan_iface_termination/topology.svg[VLAN Interface Termination topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::vlan_iface_termination/topology.svg[VLAN Interface Termination topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[VLAN Interface Termination topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[VLAN Interface Termination topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target
|
||||
. Configure bridge and VLAN interfaces on target
|
||||
. Configure IP addresses and VLAN interfaces on host
|
||||
@@ -47,5 +40,3 @@ endif::topdoc[]
|
||||
. Verify that host:data2 can reach target on VLAN 10
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,20 +1,13 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/vlan_ping]
|
||||
|
||||
=== VLAN ping connectivity
|
||||
==== Description
|
||||
Very basic test if the VLAN interface configuration works.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/vlan_ping/topology.svg[VLAN ping connectivity topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::vlan_ping/topology.svg[VLAN ping connectivity topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[VLAN ping connectivity topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[VLAN ping connectivity topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Set up VLAN interface on host:data with IP 10.0.0.1
|
||||
. Configure VLAN 10 interface on target:data with IP 10.0.0.2
|
||||
@@ -24,5 +17,3 @@ endif::topdoc[]
|
||||
. Verify that host:data can no longer reach 10.0.0.2
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_interfaces/vlan_qos]
|
||||
|
||||
=== VLAN Interface Ingress/Egress QoS
|
||||
==== Description
|
||||
Inject different packets from the host and verify that the VLAN priority
|
||||
@@ -15,18 +17,9 @@ correctly to PCP on egress ('from internal priority' or static '0..7').
|
||||
{ "id": 6, "pcp": 6, "ingress": "from-pcp", "egress": "from-priority", "expect": 6 },
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_interfaces/vlan_qos/topology.svg[VLAN Interface Ingress/Egress QoS topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::vlan_qos/topology.svg[VLAN Interface Ingress/Egress QoS topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[VLAN Interface Ingress/Egress QoS topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[VLAN Interface Ingress/Egress QoS topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Apply initial config without priority mapping
|
||||
. Setup host VLANs
|
||||
@@ -38,5 +31,3 @@ endif::topdoc[]
|
||||
. Verify that packet with id=6 egressed with pcp=6
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,26 +1,17 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_routing/ospf_basic]
|
||||
|
||||
=== OSPF Basic
|
||||
==== Description
|
||||
Very basic OSPF test just test that OSPF sends HELLO packets between the DUTs
|
||||
and that they exchange routes, ending with a simple connectivity check.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_routing/ospf_basic/topology.svg[OSPF Basic topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ospf_basic/topology.svg[OSPF Basic topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[OSPF Basic topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[OSPF Basic topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure targets
|
||||
. Wait for OSPF routes
|
||||
. Test connectivity from PC:data to 192.168.200.1
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_routing/ospf_bfd]
|
||||
|
||||
=== OSPF BFD
|
||||
==== Description
|
||||
Verify that a router running OSPF, with Bidirectional Forwarding
|
||||
@@ -9,18 +11,9 @@ perspective, is made up of multiple physical links containing media
|
||||
converters without link fault forwarding.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_routing/ospf_bfd/topology.svg[OSPF BFD topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ospf_bfd/topology.svg[OSPF BFD topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[OSPF BFD topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[OSPF BFD topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Setup TPMR between R1fast and R2fast
|
||||
. Configure R1 and R2
|
||||
@@ -31,5 +24,3 @@ endif::topdoc[]
|
||||
. Verify connectivity from PC:src to PC:dst via slow link
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
+5
-14
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_routing/ospf_default_route_advertise]
|
||||
|
||||
=== OSPF Default route advertise
|
||||
==== Description
|
||||
Verify _default-route-advertising_ in OSPF, sometimes called 'redistribute origin'. Verify both
|
||||
@@ -28,18 +30,9 @@ unless _always_ is set for _default-route-advertising_.
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_routing/ospf_default_route_advertise/topology.svg[OSPF Default route advertise topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ospf_default_route_advertise/topology.svg[OSPF Default route advertise topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[OSPF Default route advertise topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[OSPF Default route advertise topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure targets
|
||||
. Verify R2 has a default route and 192.168.100.1/32 from OSPF
|
||||
@@ -53,5 +46,3 @@ endif::topdoc[]
|
||||
. Verify connectivity from PC:data2 to 10.10.10.10
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_routing/ospf_multiarea]
|
||||
|
||||
=== OSPF with multiple areas
|
||||
==== Description
|
||||
This test evaluates various OSPF features across three areas (one NSSA area, with no summary)
|
||||
@@ -23,18 +25,9 @@ explicit router-id.
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_routing/ospf_multiarea/topology.svg[OSPF with multiple areas topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ospf_multiarea/topology.svg[OSPF with multiple areas topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[OSPF with multiple areas topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[OSPF with multiple areas topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure targets
|
||||
. Wait for all neighbors to peer
|
||||
@@ -49,5 +42,3 @@ endif::topdoc[]
|
||||
. Verify that the route to 10.0.0.3 from PC:data4, go through 10.0.24.1
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_routing/ospf_unnumbered_interface]
|
||||
|
||||
=== OSPF unnumbered interfaces
|
||||
==== Description
|
||||
This test that a configuration expecting unnumbered interfaces
|
||||
@@ -8,18 +10,9 @@ When this test pass, you can expect unnumbered interfaces, interface type
|
||||
configuration and passive to function
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_routing/ospf_unnumbered_interface/topology.svg[OSPF unnumbered interfaces topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ospf_unnumbered_interface/topology.svg[OSPF unnumbered interfaces topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[OSPF unnumbered interfaces topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[OSPF unnumbered interfaces topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure targets
|
||||
. Wait for OSPF routes
|
||||
@@ -28,5 +21,3 @@ endif::topdoc[]
|
||||
. Test connectivity from PC:data to 192.168.200.1
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_routing/route_pref_255]
|
||||
|
||||
=== Route preference: Static Route Activation and Maximum Distance
|
||||
==== Description
|
||||
This test configures a device with a static route to a destination with
|
||||
@@ -6,18 +8,9 @@ Then, the routing preference is increased to the maximum value (255),
|
||||
which should prevent the route from becoming active.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_routing/route_pref_255/topology.svg[Route preference: Static Route Activation and Maximum Distance topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::route_pref_255/topology.svg[Route preference: Static Route Activation and Maximum Distance topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Route preference: Static Route Activation and Maximum Distance topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Route preference: Static Route Activation and Maximum Distance topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure targets with active static route
|
||||
. Verify that static route with preference 254 is active
|
||||
@@ -25,5 +18,3 @@ endif::topdoc[]
|
||||
. Verify that high-preference static route (255) does not become active
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_routing/route_pref_dhcp]
|
||||
|
||||
=== Route preference: DHCP vs Static
|
||||
==== Description
|
||||
This test configures a device with both a DHCP-acquired route on a
|
||||
@@ -9,18 +11,9 @@ route takes precedence by adjusting the routing preference value
|
||||
to the one lower than DHCP.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_routing/route_pref_dhcp/topology.svg[Route preference: DHCP vs Static topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::route_pref_dhcp/topology.svg[Route preference: DHCP vs Static topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Route preference: DHCP vs Static topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Route preference: DHCP vs Static topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure targets. Assign higher priority to the dhcp route
|
||||
. Wait for DHCP and static routes
|
||||
@@ -29,5 +22,3 @@ endif::topdoc[]
|
||||
. Verify connectivity from PC:data12 to R2:lo via static route
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_routing/route_pref_ospf]
|
||||
|
||||
=== Route preference: OSPF vs Static
|
||||
==== Description
|
||||
This test configures a device with both an OSPF-acquired route on a
|
||||
@@ -9,18 +11,9 @@ Initially, the device should prefer the OSPF route; if the OSPF route
|
||||
becomes unavailable, the static route should take over.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_routing/route_pref_ospf/topology.svg[Route preference: OSPF vs Static topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::route_pref_ospf/topology.svg[Route preference: OSPF vs Static topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Route preference: OSPF vs Static topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Route preference: OSPF vs Static topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Set up TPMR between R1ospf and R2ospf
|
||||
. Configure targets
|
||||
@@ -31,5 +24,3 @@ endif::topdoc[]
|
||||
. Verify connectivity via static route after OSPF failover
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,21 +1,14 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_routing/static_routing]
|
||||
|
||||
=== Static routing
|
||||
==== Description
|
||||
Verify that it is possible to add static routes, both IPv4 and IPv6, and
|
||||
that data forwarding works as expected via an intermediate device.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_routing/static_routing/topology.svg[Static routing topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::static_routing/topology.svg[Static routing topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Static routing topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Static routing topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure targets
|
||||
. Wait for routes
|
||||
@@ -26,5 +19,3 @@ endif::topdoc[]
|
||||
. Verify R2 is no longer reachable on either IPv4 or IPv6 from PC:data
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,24 +1,15 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_syslog/basic]
|
||||
|
||||
=== Syslog Basic
|
||||
==== Description
|
||||
Add syslog actions to log to local files, then verify new log files have been created.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_syslog/basic/topology.svg[Syslog Basic topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::basic/topology.svg[Syslog Basic topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Syslog Basic topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Syslog Basic topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure syslog on DUT to log to files '/log/bar.log' (absolute path) and 'foo' (non-absolute).
|
||||
. Verify log files /var/log/foo and /var/log/bar.log have been created
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,25 +1,16 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_syslog/remote]
|
||||
|
||||
=== Remote syslog
|
||||
==== Description
|
||||
Verify logging to remote, acting as a remote, and RFC5424 log format.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_syslog/remote/topology.svg[Remote syslog topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::remote/topology.svg[Remote syslog topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Remote syslog topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Remote syslog topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to client and server DUTs
|
||||
. Configure client DUT as syslog client with server DUT as remote, and configure server DUT as syslog server
|
||||
. Send security:notice log message from client
|
||||
. Verify reception of client log message, incl. sorting to /log/security on server
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,21 +1,14 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_system/add_delete_user]
|
||||
|
||||
=== Add/delete user
|
||||
==== Description
|
||||
Verify that it is possible to add/delete a user. The user password is hashed
|
||||
with yescrypt.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_system/add_delete_user/topology.svg[Add/delete user topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::add_delete_user/topology.svg[Add/delete user topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Add/delete user topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Add/delete user topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Add new user 'newuser01' with password 'newuser01password'
|
||||
. Verify user 'newuser01' exist in operational
|
||||
@@ -25,5 +18,3 @@ endif::topdoc[]
|
||||
. Verify that 'newuser01' is removed from /etc/passwd
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_system/hostname]
|
||||
|
||||
=== Set hostname
|
||||
==== Description
|
||||
Verify that it is possible to change hostname both normal
|
||||
@@ -9,18 +11,9 @@ where MAC is the last three bytes of the base MAC address.
|
||||
e.g. ix-01-01-01.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_system/hostname/topology.svg[Set hostname topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::hostname/topology.svg[Set hostname topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Set hostname topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Set hostname topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Set hostname to 'h0stn4m3'
|
||||
. Verify new hostname 'h0stn4m3'
|
||||
@@ -29,5 +22,3 @@ endif::topdoc[]
|
||||
. Verify hostname format in operational
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,25 +1,16 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_system/ntp_client]
|
||||
|
||||
=== Basic NTP client test
|
||||
==== Description
|
||||
Verify NTP client with multiple servers, ensure one get selected.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_system/ntp_client/topology.svg[Basic NTP client test topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ntp_client/topology.svg[Basic NTP client test topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Basic NTP client test topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Basic NTP client test topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure NTP client on 'target'
|
||||
. Verify one source is in 'selected' state on 'target'
|
||||
. Verify three sources exist in NTP client on 'target'
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,24 +1,15 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_system/timezone]
|
||||
|
||||
=== Set timezone using timezone name
|
||||
==== Description
|
||||
Verify that it is possible to set timezone using timezone names.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_system/timezone/topology.svg[Set timezone using timezone name topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::timezone/topology.svg[Set timezone using timezone name topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Set timezone using timezone name topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Set timezone using timezone name topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Set timezone to Australia/Perth
|
||||
. Verify timezone is Australia/Perth
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,24 +1,15 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_system/timezone_utc_offset]
|
||||
|
||||
=== Set timezone with UTC offset
|
||||
==== Description
|
||||
Verify that it is possible to set timezone using UTC offset
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_system/timezone_utc_offset/topology.svg[Set timezone with UTC offset topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::timezone_utc_offset/topology.svg[Set timezone with UTC offset topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Set timezone with UTC offset topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Set timezone with UTC offset topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Set timezone UTC offset to +12
|
||||
. Verify current timezone is UTC+12:00
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,20 +1,13 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_system/upgrade]
|
||||
|
||||
=== Upgrade
|
||||
==== Description
|
||||
Verify it is possible to upgrade.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_system/upgrade/topology.svg[Upgrade topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::upgrade/topology.svg[Upgrade topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Upgrade topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Upgrade topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Start installation of selected package
|
||||
. Wait for upgrade to finish
|
||||
@@ -22,5 +15,3 @@ endif::topdoc[]
|
||||
. Verify that the partition is the booted
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,21 +1,14 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/ietf_system/user_admin]
|
||||
|
||||
=== Add admin user
|
||||
==== Description
|
||||
Test that a non-admin user is not an admin in Linux, and
|
||||
check that it when added as admin it is also the case in Linux.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/ietf_system/user_admin/topology.svg[Add admin user topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::user_admin/topology.svg[Add admin user topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Add admin user topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Add admin user topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Add new user 'jacky' with no NACM access
|
||||
. Verify regular user jacky exists
|
||||
@@ -29,5 +22,3 @@ endif::topdoc[]
|
||||
. Verify user jacky can log in with SSH
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_containers/container_basic]
|
||||
|
||||
=== Container basic
|
||||
==== Description
|
||||
Verify that a simple web server container can be configured to run
|
||||
@@ -7,18 +9,9 @@ simple GET request for index.html and checking for a key phrase.
|
||||
The RPC actions: stop + start, and restart are also verified.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_containers/container_basic/topology.svg[Container basic topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::container_basic/topology.svg[Container basic topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Container basic topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Container basic topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Set hostname to 'container-host'
|
||||
. Create container 'web' from bundled OCI image
|
||||
@@ -30,5 +23,3 @@ endif::topdoc[]
|
||||
. Verify container 'web' is reachable on http://container-host.local:91
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_containers/container_bridge]
|
||||
|
||||
=== Container with bridge network
|
||||
==== Description
|
||||
Verify connectivity with a simple web server container from behind a
|
||||
@@ -8,18 +10,9 @@ This also verifies port forwarding from container internal port to a
|
||||
port accessed from the host.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_containers/container_bridge/topology.svg[Container with bridge network topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::container_bridge/topology.svg[Container with bridge network topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Container with bridge network topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Container with bridge network topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Create httpd container from bundled OCI image
|
||||
. Verify container has started
|
||||
@@ -27,5 +20,3 @@ endif::topdoc[]
|
||||
. Verify container is reachable on http://10.0.0.2:8080
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_containers/container_enabled]
|
||||
|
||||
=== Container enabled/disabled
|
||||
==== Description
|
||||
Verify that a container can be enabled and disabled via configuration.
|
||||
@@ -10,28 +12,16 @@ Tests the 'enabled' leaf functionality by:
|
||||
Uses operational datastore to verify container running status.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_containers/container_enabled/topology.svg[Container enabled/disabled topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::container_enabled/topology.svg[Container enabled/disabled topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Container enabled/disabled topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Container enabled/disabled topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Set hostname to 'container-host'
|
||||
. Create enabled container from bundled OCI image
|
||||
. Verify container has started
|
||||
. Let container settle
|
||||
. Disable container
|
||||
. Verify container has stopped
|
||||
. Re-enable container
|
||||
. Verify container has started again
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,36 +1,23 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_containers/container_environment]
|
||||
|
||||
=== Container environment variables
|
||||
==== Description
|
||||
Verify that environment variables can be set in container configuration
|
||||
and are available inside the running container. Tests the 'env' list
|
||||
functionality by:
|
||||
and are available inside the running container.
|
||||
|
||||
1. Creating a container with multiple environment variables
|
||||
2. Using a custom script to extract env vars and serve them via HTTP
|
||||
3. Fetching the served content to verify environment variables are set correctly
|
||||
|
||||
Uses the nftables container image with custom rc.local script.
|
||||
1 Set up a container config with multiple environment variables
|
||||
2. Serve variables back to host using a CGI script in container
|
||||
3. Verify served content against environment variables
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_containers/container_environment/topology.svg[Container environment variables topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::container_environment/topology.svg[Container environment variables topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Container environment variables topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Container environment variables topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure data interface with static IPv4
|
||||
. Create container with environment variables
|
||||
. Set up container with environment variables
|
||||
. Verify container has started
|
||||
. Verify environment variables are available via HTTP
|
||||
. Verify basic connectivity to data interface
|
||||
. Verify environment variables in HTTP response
|
||||
. Verify environment variables in CGI response
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_containers/container_firewall_basic]
|
||||
|
||||
=== Basic Firewall Container
|
||||
==== Description
|
||||
Verify that an nftables container can be used for IP masquerading and
|
||||
@@ -26,18 +28,9 @@ phrase, is only reachable from the public interface `ext0`, on
|
||||
192.168.0.1:8080.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_containers/container_firewall_basic/topology.svg[Basic Firewall Container topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::container_firewall_basic/topology.svg[Basic Firewall Container topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Basic Firewall Container topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Basic Firewall Container topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Set hostname to 'container-host'
|
||||
. Create VETH pair for web server container
|
||||
@@ -50,5 +43,3 @@ endif::topdoc[]
|
||||
. Verify 'web' is reachable on http://container-host.local:8080
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_containers/container_host_commands]
|
||||
|
||||
=== Host Command Execution from Container
|
||||
==== Description
|
||||
This test verifies that a container running on Infix can execute commands
|
||||
@@ -5,18 +7,9 @@ that affect the host system. Specifically, it confirms that the container
|
||||
can change the hostname of the host.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_containers/container_host_commands/topology.svg[Host Command Execution from Container topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::container_host_commands/topology.svg[Host Command Execution from Container topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Host Command Execution from Container topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Host Command Execution from Container topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Set initial hostname
|
||||
. Verify initial hostname in operational
|
||||
@@ -25,5 +18,3 @@ endif::topdoc[]
|
||||
. Verify the new hostname set by the container
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,21 +1,14 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_containers/container_phys]
|
||||
|
||||
=== Container with physical interface
|
||||
==== Description
|
||||
Verify connectivity with a simple web server container that's been
|
||||
given a physical interface instead of an end of a VETH pair.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_containers/container_phys/topology.svg[Container with physical interface topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::container_phys/topology.svg[Container with physical interface topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Container with physical interface topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Container with physical interface topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Create httpd container from bundled OCI image
|
||||
. Verify container has started
|
||||
@@ -25,5 +18,3 @@ endif::topdoc[]
|
||||
. Verify server is restarted and returns new content
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_containers/container_veth]
|
||||
|
||||
=== Container with VETH pair
|
||||
==== Description
|
||||
Verify connectivity with a simple web server container from behind a
|
||||
@@ -14,18 +16,9 @@ regular bridge, a VETH pair connects the container to the bridge.
|
||||
....
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_containers/container_veth/topology.svg[Container with VETH pair topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::container_veth/topology.svg[Container with VETH pair topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Container with VETH pair topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Container with VETH pair topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Create 'web-br0-veth' container from bundled OCI image
|
||||
. Verify container 'web-br0-veth' has started
|
||||
@@ -33,5 +26,3 @@ endif::topdoc[]
|
||||
. Verify container 'web-br0-veth' is reachable on http://10.0.0.2:91
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_containers/container_volume]
|
||||
|
||||
=== Container Volume Persistence
|
||||
==== Description
|
||||
Verify that a container created from a local OCI archive, with a volume
|
||||
@@ -5,18 +7,9 @@ for persistent content, can be upgraded at runtime, without losing the
|
||||
content in the volume on restart.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_containers/container_volume/topology.svg[Container Volume Persistence topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::container_volume/topology.svg[Container Volume Persistence topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Container Volume Persistence topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Container Volume Persistence topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Create container with volume from bundled OCI image
|
||||
. Verify container has started
|
||||
@@ -26,5 +19,3 @@ endif::topdoc[]
|
||||
. Verify container volume content survived upgrade
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_dhcp/client_basic]
|
||||
|
||||
=== DHCP Basic
|
||||
==== Description
|
||||
This is a very basic DHCP test that requests an IPv4 lease
|
||||
@@ -5,21 +7,10 @@ from a DHCP server and checks that the lease is set on the
|
||||
interface.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_dhcp/client_basic/topology.svg[DHCP Basic topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::client_basic/topology.svg[DHCP Basic topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[DHCP Basic topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[DHCP Basic topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Initialize
|
||||
. Verify client lease for 10.0.0.42
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
=== DHCP Basic
|
||||
==== Description
|
||||
This is a very basic DHCP test that requests an IPv4 lease
|
||||
from a DHCP server and checks that the lease is set on the
|
||||
interface.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_dhcp/dhcp_basic/topology.svg[DHCP Basic topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::dhcp_basic/topology.svg[DHCP Basic topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[DHCP Basic topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
. Initialize
|
||||
. Verify client get DHCP lease for 10.0.0.42 on client:data
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_dhcp/client_default_gw]
|
||||
|
||||
=== DHCP router
|
||||
==== Description
|
||||
Verify that the DHCP client receives default gateway (DHCP option 3,
|
||||
@@ -6,22 +8,11 @@ server runs at 192.168.0.1 but should hand out option 3 to clients
|
||||
with address 192.168.0.254.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_dhcp/client_default_gw/topology.svg[DHCP router topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::client_default_gw/topology.svg[DHCP router topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[DHCP router topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[DHCP router topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Initialize
|
||||
. Set up DHCP server as 192.168.0.1, option 3: 192.168.0.254
|
||||
. Verify DHCP client has default route via 192.168.0.254
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_dhcp/client_routes]
|
||||
|
||||
=== DHCP option 121 vs option 3
|
||||
==== Description
|
||||
Verify that DHCP option 121 (classless static routes) is used over the
|
||||
@@ -15,18 +17,9 @@ The DHCP server is set up to hand out both a default router (option 3)
|
||||
via 192.168.0.1 and a default route (option 121) via 192.168.0.254.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_dhcp/client_routes/topology.svg[DHCP option 121 vs option 3 topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::client_routes/topology.svg[DHCP option 121 vs option 3 topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[DHCP option 121 vs option 3 topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[DHCP option 121 vs option 3 topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Setting up canary route, 20.0.0.0/24 via 192.168.0.2
|
||||
. Enabling DHCP client, allow option 3 and 121
|
||||
. Verify client has route 10.0.0.0/24 via 192.168.0.254 (option 121)
|
||||
@@ -34,5 +27,3 @@ endif::topdoc[]
|
||||
. Verify client still has canary route to 20.0.0.0/24 via 192.168.0.2
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_dhcp/server_basic]
|
||||
|
||||
=== DHCP Server Basic
|
||||
==== Description
|
||||
Verify basic DHCP server functionality. The server is set up to only
|
||||
@@ -7,18 +9,9 @@ other options are sent by checking, e.g., that the client has not set up
|
||||
a default route to the server.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_dhcp/server_basic/topology.svg[DHCP Server Basic topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::server_basic/topology.svg[DHCP Server Basic topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[DHCP Server Basic topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[DHCP Server Basic topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to client and server DUTs
|
||||
. Configure DHCP server and client
|
||||
. Verify DHCP client's original hostname
|
||||
@@ -27,5 +20,3 @@ endif::topdoc[]
|
||||
. Verify DHCP client has no default route
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_dhcp/server_host]
|
||||
|
||||
=== DHCP Server Static Host
|
||||
==== Description
|
||||
Verify DHCP server can hand out static host leases based on client-id,
|
||||
@@ -5,18 +7,9 @@ both hexadecimal and a very long string, ensuring no pool address is
|
||||
handed out instead.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_dhcp/server_host/topology.svg[DHCP Server Static Host topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::server_host/topology.svg[DHCP Server Static Host topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[DHCP Server Static Host topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[DHCP Server Static Host topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to client and server DUTs
|
||||
. Configure DHCP client and server DUTs
|
||||
. Verify DHCP client1 static lease
|
||||
@@ -27,5 +20,3 @@ endif::topdoc[]
|
||||
. Verify DHCP client2 has default gateway
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_dhcp/server_subnets]
|
||||
|
||||
=== DHCP Server Multiple Subnets
|
||||
==== Description
|
||||
Verify that the DHCP server is capble of acting on more than one subnet,
|
||||
@@ -6,17 +8,7 @@ subnet, and host-specific options are honored and do not leak between
|
||||
subnets.
|
||||
|
||||
.Internal network setup, client2 and client3 are on the same LAN
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_dhcp/server_subnets/dhcp-subnets.svg[Internal networks]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::server_subnets/dhcp-subnets.svg[Internal networks]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::dhcp-subnets.svg[Internal networks]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
image::dhcp-subnets.svg[align=center, scaledwidth=75%]
|
||||
|
||||
To verify isolation of subnet settings, a few "decoys" are added to the
|
||||
configuration of each subnet. These are then checked for on each of the
|
||||
@@ -30,18 +22,9 @@ The test is concluded by the server trying to reach each client using
|
||||
ping of the hostname.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_dhcp/server_subnets/topology.svg[DHCP Server Multiple Subnets topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::server_subnets/topology.svg[DHCP Server Multiple Subnets topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[DHCP Server Multiple Subnets topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[DHCP Server Multiple Subnets topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to client and server DUTs
|
||||
. Configure DHCP server and clients
|
||||
. Verify DHCP client1 get correct lease
|
||||
@@ -55,5 +38,3 @@ endif::topdoc[]
|
||||
. Verify DHCP client3 has correct DNS and NTP server(s)
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ subnet, and host-specific options are honored and do not leak between
|
||||
subnets.
|
||||
|
||||
.Internal network setup, client2 and client3 are on the same LAN
|
||||
image::dhcp-subnets.svg[Internal networks]
|
||||
image::dhcp-subnets.svg[align=center, scaledwidth=75%]
|
||||
|
||||
To verify isolation of subnet settings, a few "decoys" are added to the
|
||||
configuration of each subnet. These are then checked for on each of the
|
||||
|
||||
@@ -1,20 +1,13 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_services/lldp/lldp_admin_status]
|
||||
|
||||
=== LLDP admin status
|
||||
==== Description
|
||||
Verify that LLDP admin status is set properly by lldpd
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_services/lldp/lldp_admin_status/topology.svg[LLDP admin status topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::lldp/lldp_admin_status/topology.svg[LLDP admin status topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[LLDP admin status topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[LLDP admin status topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Enable target interface and enable LLDP
|
||||
. Verify admin-status: 'rx-only'
|
||||
@@ -23,5 +16,3 @@ endif::topdoc[]
|
||||
. Verify admin-status: 'tx-and-rx'
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,21 +1,14 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_services/lldp/lldp_enable_disable]
|
||||
|
||||
=== LLDP enable disable
|
||||
==== Description
|
||||
Verify that LLDP can be enabled and disabled.
|
||||
Operation and non-operation are confirmed using tcpdump.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_services/lldp/lldp_enable_disable/topology.svg[LLDP enable disable topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::lldp/lldp_enable_disable/topology.svg[LLDP enable disable topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[LLDP enable disable topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[LLDP enable disable topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Enable target interface and disable LLDP
|
||||
. Enable LLDP
|
||||
@@ -24,5 +17,3 @@ endif::topdoc[]
|
||||
. Verify no LLDP packets on host:data
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,21 +1,14 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_services/lldp/lldp_ieee_group_forward]
|
||||
|
||||
=== LLDP IEEE Group Forward
|
||||
==== Description
|
||||
Verify that LLDP packets can be flooded to all ports on a bridge.
|
||||
Operation and non-operation are confirmed using tcpdump.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_services/lldp/lldp_ieee_group_forward/topology.svg[LLDP IEEE Group Forward topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::lldp/lldp_ieee_group_forward/topology.svg[LLDP IEEE Group Forward topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[LLDP IEEE Group Forward topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[LLDP IEEE Group Forward topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure interfaces and disable LLDP daemon
|
||||
. Verify LLDP absence on host:data2
|
||||
@@ -23,5 +16,3 @@ endif::topdoc[]
|
||||
. Verify LLDP arrival on host:data2
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_services/mdns/mdns_allow_deny]
|
||||
|
||||
=== mDNS allow/deny interfaces
|
||||
==== Description
|
||||
Verify the mDNS responder interface allow/deny configuration. Both
|
||||
@@ -9,18 +11,9 @@ with three scenarios:
|
||||
3. Allow p1 and p3, deny p2 and p3, traffic only on p1
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_services/mdns/mdns_allow_deny/topology.svg[mDNS allow/deny interfaces topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::mdns/mdns_allow_deny/topology.svg[mDNS allow/deny interfaces topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[mDNS allow/deny interfaces topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[mDNS allow/deny interfaces topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Configure device
|
||||
. Allow mDNS on a single interface: p2
|
||||
@@ -28,5 +21,3 @@ endif::topdoc[]
|
||||
. Allow mDNS on p1, p3 deny on p2, p3
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,21 +1,14 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_services/mdns/mdns_enable_disable]
|
||||
|
||||
=== mDNS enable disable
|
||||
==== Description
|
||||
Verify that mDNS can be enabled and disabled.
|
||||
Operation and non-operation are confirmed using tcpdump.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_services/mdns/mdns_enable_disable/topology.svg[mDNS enable disable topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::mdns/mdns_enable_disable/topology.svg[mDNS enable disable topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[mDNS enable disable topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[mDNS enable disable topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Set IPv4 address 10.0.0.10/24 on target:data and disable mDNS
|
||||
. Enable mDNS
|
||||
@@ -24,5 +17,3 @@ endif::topdoc[]
|
||||
. Verify on host:data there are no packets from 10.0.0.10:5354 (mDNS)
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,20 +1,13 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_services/ssh/ssh_key_authentication]
|
||||
|
||||
=== Generate ssh key pair
|
||||
==== Description
|
||||
Verify that 'guest' user can fetch data using only the 'public' key
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_services/ssh/ssh_key_authentication/topology.svg[Generate ssh key pair topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ssh/ssh_key_authentication/topology.svg[Generate ssh key pair topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Generate ssh key pair topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Generate ssh key pair topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Connect to the target device
|
||||
. Create a guest user on the target device
|
||||
. Wait until SSH server is ready to accept connections
|
||||
@@ -22,5 +15,3 @@ endif::topdoc[]
|
||||
. Verify it is possible to fetch syslog data using public key
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/infix_services/ssh/ssh_server_config]
|
||||
|
||||
=== SSH server configuration
|
||||
==== Description
|
||||
Test SSH server functionality with pre-defined key pair:
|
||||
@@ -6,18 +8,9 @@ Test SSH server functionality with pre-defined key pair:
|
||||
3. Validate connectivity using static key pair.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/infix_services/ssh/ssh_server_config/topology.svg[SSH server configuration topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ssh/ssh_server_config/topology.svg[SSH server configuration topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[SSH server configuration topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[SSH server configuration topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Setup topology and attach to the target
|
||||
. Configure SSH server
|
||||
. Wait until SSH server is ready to accept connections
|
||||
@@ -26,5 +19,3 @@ endif::topdoc[]
|
||||
. Disable SSH server
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,24 +1,15 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/misc/operational_all]
|
||||
|
||||
=== Get operational
|
||||
==== Description
|
||||
Basic test just to get operational from test-config without errors.
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/misc/operational_all/topology.svg[Get operational topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::operational_all/topology.svg[Get operational topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[Get operational topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[Get operational topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Copy test-config to running configuration
|
||||
. Get all Operational data from 'target', verify there are no errors
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ifdef::topdoc[:imagesdir: {topdoc}../../test/case/use_case/ospf_container]
|
||||
|
||||
=== OSPF Container
|
||||
==== Description
|
||||
This use-case test verifies connectivity in an OSPF network to services
|
||||
@@ -9,17 +11,7 @@ PC, which can act as a link breaker.
|
||||
|
||||
.Use-case overview.
|
||||
[#img-overview]
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/use_case/ospf_container/overview.svg[]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ospf_container/overview.svg[]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::overview.svg[]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
|
||||
The DUTs are connected in a routed topology inside their own OSPF area.
|
||||
A single area border router (ABR) is used to access the controller
|
||||
@@ -50,17 +42,7 @@ second bridge, `br1`, only use IPv6 link-local addresses.
|
||||
|
||||
.Internal network setup, here router R1 on subnet 10.1.1.1/24.
|
||||
[#img-setup]
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/use_case/ospf_container/internal-network.svg[Internal networks]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ospf_container/internal-network.svg[Internal networks]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::internal-network.svg[Internal networks]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
|
||||
- *Container A* runs a very basic web server, it runs on port 80 inside
|
||||
the container, and `br0`, but is accessible outside on port 8080.
|
||||
@@ -74,18 +56,9 @@ endif::topdoc[]
|
||||
will have a unique hostname derived from the chassis MAC address
|
||||
|
||||
==== Topology
|
||||
ifdef::topdoc[]
|
||||
image::{topdoc}../../test/case/use_case/ospf_container/topology.svg[OSPF Container topology]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::ospf_container/topology.svg[OSPF Container topology]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::topology.svg[OSPF Container topology]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
image::topology.svg[OSPF Container topology, align=center, scaledwidth=75%]
|
||||
|
||||
==== Sequence
|
||||
. Set up topology and attach to target DUTs
|
||||
. Configure DUTs
|
||||
. Wait for all routers to peer
|
||||
@@ -94,5 +67,3 @@ endif::topdoc[]
|
||||
. Verify ABR:data can access container A on R3 (10.1.3.101)
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
|
||||
+17
-43
@@ -12,32 +12,6 @@ from pathlib import Path
|
||||
import graphviz
|
||||
|
||||
|
||||
def replace_image_tag(text, test_dir):
|
||||
"""
|
||||
Convert images added in the description and replace with the required ifdefs to work
|
||||
generating the test specifcation as well.
|
||||
"""
|
||||
|
||||
pattern = r"image::(?P<image_name>\S+)\[(?P<label>[^\]]*)\]"
|
||||
|
||||
def repl(match):
|
||||
image_name = match.group("image_name")
|
||||
label = match.group("label")
|
||||
|
||||
return f"""ifdef::topdoc[]
|
||||
image::{{topdoc}}../../{test_dir}/{image_name}[{label}]
|
||||
endif::topdoc[]
|
||||
ifndef::topdoc[]
|
||||
ifdef::testgroup[]
|
||||
image::{'/'.join(Path(test_dir).parts[3:])}/{image_name}[{label}]
|
||||
endif::testgroup[]
|
||||
ifndef::testgroup[]
|
||||
image::{image_name}[{label}]
|
||||
endif::testgroup[]
|
||||
endif::topdoc[]"""
|
||||
|
||||
return re.sub(pattern, repl, text)
|
||||
|
||||
class TestStepVisitor(ast.NodeVisitor):
|
||||
"""
|
||||
A custom test step visitor to grab the test description (docstring)
|
||||
@@ -163,32 +137,27 @@ class TestCase:
|
||||
name = visitor.name
|
||||
|
||||
self.generate_topology()
|
||||
description = replace_image_tag(description, self.test_dir)
|
||||
with open(spec_path, "w") as spec:
|
||||
spec.write(f"=== {name}\n")
|
||||
|
||||
with open(spec_path, "w", encoding='utf-8') as spec:
|
||||
# When included in another document, e.g., the test-report.pdf,
|
||||
# AsciiDoc needs to know where iamges are located. For other
|
||||
# use-cases, e.g., browsing in GitHub '.' is implied.
|
||||
spec.write(f"ifdef::topdoc[:imagesdir: {{topdoc}}../../{self.test_dir}]\n")
|
||||
spec.write(f"\n=== {name}\n")
|
||||
spec.write("==== Description\n")
|
||||
spec.write(description + "\n\n")
|
||||
spec.write("==== Topology\n")
|
||||
spec.write("ifdef::topdoc[]\n")
|
||||
spec.write(f"image::{{topdoc}}../../{self.test_dir}/topology.svg[{name} topology]\n")
|
||||
spec.write("endif::topdoc[]\n")
|
||||
spec.write("ifndef::topdoc[]\n")
|
||||
spec.write("ifdef::testgroup[]\n")
|
||||
spec.write(f"image::{Path(*self.test_dir.parts[3:])}/topology.svg[{name} topology]\n")
|
||||
spec.write("endif::testgroup[]\n")
|
||||
spec.write("ifndef::testgroup[]\n")
|
||||
spec.write(f"image::topology.svg[{name} topology]\n")
|
||||
spec.write("endif::testgroup[]\n")
|
||||
spec.write("endif::topdoc[]\n")
|
||||
spec.write("==== Test sequence\n")
|
||||
spec.write(f"image::topology.svg[{name} topology, align=center, scaledwidth=75%]\n\n")
|
||||
spec.write("==== Sequence\n")
|
||||
spec.writelines([f". {step}\n" for step in test_steps])
|
||||
spec.write("\n\n<<<\n\n") # need empty lines to pagebreak
|
||||
spec.write("\n\n")
|
||||
|
||||
|
||||
def parse_suite(directory, root, suitefile):
|
||||
"""Parse 9pm .yaml suite file"""
|
||||
test_spec = None
|
||||
readme = None
|
||||
first_test = True
|
||||
|
||||
with open(suitefile, "r", encoding='utf-8') as f:
|
||||
data = yaml.safe_load(f)
|
||||
@@ -217,7 +186,12 @@ def parse_suite(directory, root, suitefile):
|
||||
test_spec = f"{directory}/{path}/{test_case_id}.adoc"
|
||||
test_case = TestCase(f"{directory}/{path}", root)
|
||||
test_case.generate_specification(test_title, test_file, test_spec, variables)
|
||||
readme.write(f"include::{path}{test_case_id}.adoc[]\n\n")
|
||||
if first_test:
|
||||
readme.write(f"include::{path}{test_case_id}.adoc[]\n\n")
|
||||
first_test = False
|
||||
else:
|
||||
readme.write(f"<<<\n\n") # Page break before subsequent tests
|
||||
readme.write(f"include::{path}{test_case_id}.adoc[]\n\n")
|
||||
if path != "":
|
||||
lnk = f"{directory}/{path}/Readme.adoc"
|
||||
readme.close()
|
||||
|
||||
Reference in New Issue
Block a user