diff --git a/test/case/ietf_hardware/usb/Readme.adoc b/test/case/ietf_hardware/usb/Readme.adoc index 431205e3..fb2fd906 100644 --- a/test/case/ietf_hardware/usb/Readme.adoc +++ b/test/case/ietf_hardware/usb/Readme.adoc @@ -23,7 +23,7 @@ image::topology.png[USB configuration topology] endif::testgroup[] endif::topdoc[] ==== Test sequence -. Initialize +. Set up topology and attach to target DUT . Unlock all USB ports . Verify that all USB ports are unlocked . Lock all USB ports diff --git a/test/case/ietf_hardware/usb/test.py b/test/case/ietf_hardware/usb/test.py index 638c350c..ff88e3a8 100755 --- a/test/case/ietf_hardware/usb/test.py +++ b/test/case/ietf_hardware/usb/test.py @@ -20,7 +20,7 @@ import infamy.netconf as netconf from infamy.util import until, wait_boot with infamy.Test() as test: - with test.step("Initialize"): + with test.step("Set up topology and attach to target DUT"): env = infamy.Env() target = env.attach("target", "mgmt") available = usb.get_usb_ports(target) diff --git a/test/case/ietf_hardware/usb/topology.png b/test/case/ietf_hardware/usb/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/ietf_hardware/usb/topology.png and b/test/case/ietf_hardware/usb/topology.png differ diff --git a/test/case/ietf_hardware/usb_two_ports/Readme.adoc b/test/case/ietf_hardware/usb_two_ports/Readme.adoc index e4d02565..4e474831 100644 --- a/test/case/ietf_hardware/usb_two_ports/Readme.adoc +++ b/test/case/ietf_hardware/usb_two_ports/Readme.adoc @@ -16,8 +16,8 @@ image::topology.png[USB configuration with two USB ports topology] endif::testgroup[] endif::topdoc[] ==== Test sequence -. Initialize -. Lock the first USB port, and unlock the second USB port +. 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 . Unlock the first USB port, and lock the second USB port . Verify that the correct port is locked and the correct one is unlocked diff --git a/test/case/ietf_hardware/usb_two_ports/test.py b/test/case/ietf_hardware/usb_two_ports/test.py index 8ad3b986..1b815558 100755 --- a/test/case/ietf_hardware/usb_two_ports/test.py +++ b/test/case/ietf_hardware/usb_two_ports/test.py @@ -13,7 +13,7 @@ import infamy.netconf as netconf from infamy.util import until,wait_boot with infamy.Test() as test: - with test.step("Initialize"): + with test.step("Set up topology and attach to target DUTs"): env = infamy.Env() target = env.attach("target", "mgmt") available=usb.get_usb_ports(target) @@ -21,7 +21,7 @@ with infamy.Test() as test: if len(available) < 2: test.skip() - with test.step("Lock the first USB port, and unlock the second USB port"): + with test.step("Lock the first USB port and unlock the second USB port"): components = [] component = { "name": available[0], diff --git a/test/case/ietf_hardware/usb_two_ports/topology.png b/test/case/ietf_hardware/usb_two_ports/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/ietf_hardware/usb_two_ports/topology.png and b/test/case/ietf_hardware/usb_two_ports/topology.png differ diff --git a/test/case/ietf_interfaces/bridge_basic/topology.dot b/test/case/ietf_interfaces/bridge_basic/topology.dot index 38968cb0..448f1b45 100644 --- a/test/case/ietf_interfaces/bridge_basic/topology.dot +++ b/test/case/ietf_interfaces/bridge_basic/topology.dot @@ -13,12 +13,12 @@ graph "1x2" { ]; target [ - label="{ mgmt | data } | target", + label="{ mgmt | data } | target\n10.0.0.2/24 (br0)", pos="10,12!", kind="infix", ]; - host:mgmt -- target:mgmt [kind=mgmt, color=lightgrey] + host:mgmt -- target:mgmt [kind=mgmt, color="lightgray"] host:data -- target:data [color=black, fontcolor=black, taillabel="10.0.0.1/24"] } diff --git a/test/case/ietf_interfaces/bridge_basic/topology.png b/test/case/ietf_interfaces/bridge_basic/topology.png index e717c549..b1209598 100644 Binary files a/test/case/ietf_interfaces/bridge_basic/topology.png and b/test/case/ietf_interfaces/bridge_basic/topology.png differ diff --git a/test/case/ietf_interfaces/bridge_fwd_dual_dut/Readme.adoc b/test/case/ietf_interfaces/bridge_fwd_dual_dut/Readme.adoc index 374ec3a4..d3b3f5f4 100644 --- a/test/case/ietf_interfaces/bridge_fwd_dual_dut/Readme.adoc +++ b/test/case/ietf_interfaces/bridge_fwd_dual_dut/Readme.adoc @@ -4,21 +4,20 @@ Ping through two bridges on two different DUTs. .... - ,-------------------------------------, ,-------------------------------------, - | dut1:link | | dut2:link | - | br0 ----------|-------|--------- br0 | - | / | | / \ | - |dut1:mgmt dut1:data1 | | dut2:data1 dut2:data2 dut2:mgmt | - '-------------------------------------' '-------------------------------------' - | | | | | - | | | | | -,-----------------------------------------------------------------------------------------, -| host:mgmt1 host:data11 host:data21 host:data22 host:mgmt2 | -| [10.0.0.2] [10.0.0.3] [10.0.0.4] | -| (ns11) (ns20) (ns21) | -| | -| [ HOST ] | -'-----------------------------------------------------------------------------------------' + ,-------------------------------------, ,-------------------------------------, + | dut1:link | | dut2:link | + | br0 ----------|---|--------- br0 | + | / | | / \ | + |dut1:mgmt dut1:data1 | | dut2:data1 dut2:data2 dut2:mgmt | + '-------------------------------------' '-------------------------------------' + | | | | | + | | | | | +,-----------------------------------------------------------------------------------, +| host:mgmt1 host:data11 host:data21 host:data22 host:mgmt2 | +| [10.0.0.2] [10.0.0.3] [10.0.0.4] | +| (ns11) (ns20) (ns21) | +| [ HOST ] | +'-----------------------------------------------------------------------------------' .... diff --git a/test/case/ietf_interfaces/bridge_fwd_dual_dut/test.py b/test/case/ietf_interfaces/bridge_fwd_dual_dut/test.py index d91c16a5..299dfc59 100755 --- a/test/case/ietf_interfaces/bridge_fwd_dual_dut/test.py +++ b/test/case/ietf_interfaces/bridge_fwd_dual_dut/test.py @@ -6,21 +6,20 @@ Ping through two bridges on two different DUTs. .... - ,-------------------------------------, ,-------------------------------------, - | dut1:link | | dut2:link | - | br0 ----------|-------|--------- br0 | - | / | | / \ | - |dut1:mgmt dut1:data1 | | dut2:data1 dut2:data2 dut2:mgmt | - '-------------------------------------' '-------------------------------------' - | | | | | - | | | | | -,-----------------------------------------------------------------------------------------, -| host:mgmt1 host:data11 host:data21 host:data22 host:mgmt2 | -| [10.0.0.2] [10.0.0.3] [10.0.0.4] | -| (ns11) (ns20) (ns21) | -| | -| [ HOST ] | -'-----------------------------------------------------------------------------------------' + ,-------------------------------------, ,-------------------------------------, + | dut1:link | | dut2:link | + | br0 ----------|---|--------- br0 | + | / | | / \ | + |dut1:mgmt dut1:data1 | | dut2:data1 dut2:data2 dut2:mgmt | + '-------------------------------------' '-------------------------------------' + | | | | | + | | | | | +,-----------------------------------------------------------------------------------, +| host:mgmt1 host:data11 host:data21 host:data22 host:mgmt2 | +| [10.0.0.2] [10.0.0.3] [10.0.0.4] | +| (ns11) (ns20) (ns21) | +| [ HOST ] | +'-----------------------------------------------------------------------------------' .... diff --git a/test/case/ietf_interfaces/bridge_fwd_dual_dut/topology.png b/test/case/ietf_interfaces/bridge_fwd_dual_dut/topology.png index ef229365..ee212c69 100644 Binary files a/test/case/ietf_interfaces/bridge_fwd_dual_dut/topology.png and b/test/case/ietf_interfaces/bridge_fwd_dual_dut/topology.png differ diff --git a/test/case/ietf_interfaces/bridge_veth/Readme.adoc b/test/case/ietf_interfaces/bridge_veth/Readme.adoc index ceeb7605..9df98675 100644 --- a/test/case/ietf_interfaces/bridge_veth/Readme.adoc +++ b/test/case/ietf_interfaces/bridge_veth/Readme.adoc @@ -3,6 +3,15 @@ This tests the possibility to add software added interfaces, in this case VETH and bridge it with a physical interface +.... + +PING --> br0 + / \ + PC- target:data veth0a -- veth0b + 10.0.0.1 10.0.0.2 + +.... + ==== Topology ifdef::topdoc[] image::../../test/case/ietf_interfaces/bridge_veth/topology.png[Bridge with a physical port and a veth topology] @@ -16,7 +25,7 @@ image::topology.png[Bridge with a physical port and a veth topology] endif::testgroup[] endif::topdoc[] ==== Test sequence -. Initialize +. 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 diff --git a/test/case/ietf_interfaces/bridge_veth/test.py b/test/case/ietf_interfaces/bridge_veth/test.py index ea6ef829..dc97e63c 100755 --- a/test/case/ietf_interfaces/bridge_veth/test.py +++ b/test/case/ietf_interfaces/bridge_veth/test.py @@ -1,19 +1,25 @@ #!/usr/bin/env python3 -# -# PING --> br0 -# / \ -# PC ---- e0 veth 10.0.0.2 -# """ Bridge with a physical port and a veth This tests the possibility to add software added interfaces, in this case VETH and bridge it with a physical interface + +.... + +PING --> br0 + / \\ + PC- target:data veth0a -- veth0b + 10.0.0.1 10.0.0.2 + +.... + + """ import infamy with infamy.Test() as test: - with test.step("Initialize"): + with test.step("Set up topology and attach to target DUT"): env = infamy.Env() target = env.attach("target", "mgmt") diff --git a/test/case/ietf_interfaces/bridge_veth/topology.dot b/test/case/ietf_interfaces/bridge_veth/topology.dot index f058adc4..393a1078 100644 --- a/test/case/ietf_interfaces/bridge_veth/topology.dot +++ b/test/case/ietf_interfaces/bridge_veth/topology.dot @@ -7,7 +7,7 @@ graph "1x2" { edge [color="cornflowerblue", penwidth="2"]; host [ - label="host | { tgt | data }", + label="host | { mgmt | data }", pos="0,12!", kind="controller", ]; @@ -19,6 +19,6 @@ graph "1x2" { kind="infix", ]; - host:tgt -- target:mgmt [kind=mgmt] + host:mgmt -- target:mgmt [kind=mgmt, color="lightgray"] host:data -- target:data [color=black, fontcolor=black, taillabel="10.0.0.1/24"] } diff --git a/test/case/ietf_interfaces/bridge_veth/topology.png b/test/case/ietf_interfaces/bridge_veth/topology.png index 34c1de01..3f01d919 100644 Binary files a/test/case/ietf_interfaces/bridge_veth/topology.png and b/test/case/ietf_interfaces/bridge_veth/topology.png differ diff --git a/test/case/ietf_interfaces/bridge_vlan/Readme.adoc b/test/case/ietf_interfaces/bridge_vlan/Readme.adoc index 7984389f..8a97a556 100644 --- a/test/case/ietf_interfaces/bridge_vlan/Readme.adoc +++ b/test/case/ietf_interfaces/bridge_vlan/Readme.adoc @@ -1,6 +1,15 @@ === Bridge VLAN ==== Description -Basic test of VLAN functionality in a bridge +Basic test of VLAN functionality in a bridge, tagged/untagged traffic and a VLAN interface in the bridge. +.... + ¦ ¦ + ¦ vlan10 IP:10.0.0.2 ¦ br0 IP:10.0.0.3 + ¦ / ¦ / + ¦ br0 <-- VLAN filtering ¦ link.10 + ¦ u/ \t ¦ / + PC ------data link -----------------|-- link + ¦ dut1 ¦ dut2 +.... ==== Topology ifdef::topdoc[] @@ -15,8 +24,9 @@ image::topology.png[Bridge VLAN topology] endif::testgroup[] endif::topdoc[] ==== Test sequence +. Set up topology and attach to target DUT . Configure DUTs -. Verify ping from host:data1 to 10.0.0.2 and 10.0.0.3 +. Verify ping from host:data to 10.0.0.2 and 10.0.0.3 <<< diff --git a/test/case/ietf_interfaces/bridge_vlan/test.py b/test/case/ietf_interfaces/bridge_vlan/test.py index 5ccf228e..98714329 100755 --- a/test/case/ietf_interfaces/bridge_vlan/test.py +++ b/test/case/ietf_interfaces/bridge_vlan/test.py @@ -1,29 +1,33 @@ #!/usr/bin/env python3 -# ¦ ¦ -# ¦ vlan10 IP:10.0.0.2 ¦ br0 IP:10.0.0.3 -# ¦ / ¦ / -# ¦ br0 <-- VLAN filtering ¦ e0.10 -# ¦ u/ \t ¦ / -# PC ------- e0 e1 ---------------------- e0 -# PING --> ¦ dut1 ¦ dut2 -# + """ Bridge VLAN -Basic test of VLAN functionality in a bridge +Basic test of VLAN functionality in a bridge, tagged/untagged traffic and a VLAN interface in the bridge. +.... + ¦ ¦ + ¦ vlan10 IP:10.0.0.2 ¦ br0 IP:10.0.0.3 + ¦ / ¦ / + ¦ br0 <-- VLAN filtering ¦ link.10 + ¦ u/ \\t ¦ / + PC ------data link -----------------|-- link + ¦ dut1 ¦ dut2 +.... + """ import infamy with infamy.Test() as test: - with test.step("Configure DUTs"): + with test.step("Set up topology and attach to target DUT"): env = infamy.Env() dut1 = env.attach("dut1", "mgmt") dut2 = env.attach("dut2", "mgmt") _, dut1_e0 = env.ltop.xlate("dut1", "data") - _, dut1_e1 = env.ltop.xlate("dut1", "to_dut2") - _, dut2_e0 = env.ltop.xlate("dut2", "to_dut1") + _, dut1_e1 = env.ltop.xlate("dut1", "link") + _, dut2_e0 = env.ltop.xlate("dut2", "link") + with test.step("Configure DUTs"): dut1.put_config_dict("ietf-interfaces", { "interfaces": { "interface": [ @@ -117,8 +121,8 @@ with infamy.Test() as test: } }) - with test.step("Verify ping from host:data1 to 10.0.0.2 and 10.0.0.3"): - _, hport = env.ltop.xlate("host", "data1") + with test.step("Verify ping from host:data to 10.0.0.2 and 10.0.0.3"): + _, hport = env.ltop.xlate("host", "data") with infamy.IsolatedMacVlan(hport) as ns: ns.addip("10.0.0.1") diff --git a/test/case/ietf_interfaces/bridge_vlan/topology.dot b/test/case/ietf_interfaces/bridge_vlan/topology.dot index 84d90c79..c64c6e85 100644 --- a/test/case/ietf_interfaces/bridge_vlan/topology.dot +++ b/test/case/ietf_interfaces/bridge_vlan/topology.dot @@ -7,26 +7,26 @@ graph "2x2" { edge [color="cornflowerblue", penwidth="2"]; host [ - label="host | { mgmt1 | data1 | mgmt2 }", + label="host | { mgmt1 | data | mgmt2 }", pos="0,16!", kind="controller", ]; dut1 [ - label="{ mgmt | data | to_dut2} | dut1\n(10.0.0.2) ", + label="{ mgmt | data | link} | dut1\n(10.0.0.2) ", pos="10,16!", kind="infix", ]; dut2 [ - label="{ to_dut1 | mgmt } | dut2\n(10.0.0.3)", + label="{ link | mgmt } | dut2\n(10.0.0.3)", pos="10,12!", kind="infix", ]; - host:mgmt1 -- dut1:mgmt [kind=mgmt] - host:mgmt2 -- dut2:mgmt [kind=mgmt] - host:data1 -- dut1:data [color=black] + host:mgmt1 -- dut1:mgmt [kind=mgmt, color="lightgray"] + host:mgmt2 -- dut2:mgmt [kind=mgmt, color="lightgray"] + host:data -- dut1:data [color=black] - dut1:to_dut2 -- dut2:to_dut1 + dut1:link -- dut2:link [color=black] } diff --git a/test/case/ietf_interfaces/bridge_vlan/topology.png b/test/case/ietf_interfaces/bridge_vlan/topology.png index ff6fadcd..12d93da8 100644 Binary files a/test/case/ietf_interfaces/bridge_vlan/topology.png and b/test/case/ietf_interfaces/bridge_vlan/topology.png differ diff --git a/test/case/ietf_interfaces/bridge_vlan_separation/Readme.adoc b/test/case/ietf_interfaces/bridge_vlan_separation/Readme.adoc index aa4851a4..1d8e6ea5 100644 --- a/test/case/ietf_interfaces/bridge_vlan_separation/Readme.adoc +++ b/test/case/ietf_interfaces/bridge_vlan_separation/Readme.adoc @@ -2,6 +2,25 @@ ==== Description Test that two VLANs are correctly separated in the bridge +.... + ,-----------------------------------, ,----------------------------------, + | dut1:link | | dut2:link | + | br0 --------|---|--------- br0 | + | / \ | | / \ | + |dut1:mgmt dut1:data1 dut1:data2 | | dut2:data1 dut2:data2 dut2:mgmt | + '-----------------------------------' '----------------------------------' + | | | | | | + | | | | | | + ,------------------------------------------------------------------------------, + | host:mgmt0 host:data10 host:data11 host:data20 host:data21 host:mgmt1 | + | [10.0.0.1] [10.0.0.2] [10.0.0.3] [10.0.0.4] | + | (ns10) (ns11) (s20) (ns21) | + | | + | [ HOST ] | + '------------------------------------------------------------------------------' + +.... + ==== Topology ifdef::topdoc[] image::../../test/case/ietf_interfaces/bridge_vlan_separation/topology.png[Bridge VLAN separation topology] @@ -15,7 +34,7 @@ image::topology.png[Bridge VLAN separation topology] endif::testgroup[] endif::topdoc[] ==== Test sequence -. Initialize +. Set up topology and attach to target DUT . Configure DUTs . Verify ping 10.0.0.3 from host:data10 . Verify ping 10.0.0.4 from host:data11 diff --git a/test/case/ietf_interfaces/bridge_vlan_separation/test.py b/test/case/ietf_interfaces/bridge_vlan_separation/test.py index d2dd18ab..78dd71d9 100755 --- a/test/case/ietf_interfaces/bridge_vlan_separation/test.py +++ b/test/case/ietf_interfaces/bridge_vlan_separation/test.py @@ -1,39 +1,43 @@ #!/usr/bin/env python3 -# ,-------------------------------------, ,-------------------------------------, -# | dut1:data2 | | dut2:data2 | -# | br0 ----------|-------|--------- br0 | -# | / \ | | / \ | -# |dut1:mgmt dut1:data0 dut1:data1 | | dut2:data0 dut2:data1 dut2:mgmt | -# '-------------------------------------' '-------------------------------------' -# | | | | | | -# | | | | | | -# ,-----------------------------------------------------------------------------------------, -# | host:mgmt0 host:data0 host:data1 host:data2 host:data3 host:mgmt1 | -# | [10.0.0.1] [10.0.0.2] [10.0.0.3] [10.0.0.4] | -# | (ns10) (ns11) (ns20) (ns21) | -# | | -# | [ HOST ] | -# '-----------------------------------------------------------------------------------------' -""" +r""" Bridge VLAN separation Test that two VLANs are correctly separated in the bridge + +.... + ,-----------------------------------, ,----------------------------------, + | dut1:link | | dut2:link | + | br0 --------|---|--------- br0 | + | / \ | | / \ | + |dut1:mgmt dut1:data1 dut1:data2 | | dut2:data1 dut2:data2 dut2:mgmt | + '-----------------------------------' '----------------------------------' + | | | | | | + | | | | | | + ,------------------------------------------------------------------------------, + | host:mgmt0 host:data10 host:data11 host:data20 host:data21 host:mgmt1 | + | [10.0.0.1] [10.0.0.2] [10.0.0.3] [10.0.0.4] | + | (ns10) (ns11) (s20) (ns21) | + | | + | [ HOST ] | + '------------------------------------------------------------------------------' + +.... """ import infamy with infamy.Test() as test: - with test.step("Initialize"): + with test.step("Set up topology and attach to target DUT"): env = infamy.Env() dut1 = env.attach("dut1", "mgmt") dut2 = env.attach("dut2", "mgmt") with test.step("Configure DUTs"): - _, tport10 = env.ltop.xlate("dut1", "data0") - _, tport11 = env.ltop.xlate("dut1", "data1") - _, tport12 = env.ltop.xlate("dut1", "data2") - _, tport20 = env.ltop.xlate("dut2", "data0") - _, tport21 = env.ltop.xlate("dut2", "data1") - _, tport22 = env.ltop.xlate("dut2", "data2") + _, tport10 = env.ltop.xlate("dut1", "data1") + _, tport11 = env.ltop.xlate("dut1", "data2") + _, tport12 = env.ltop.xlate("dut1", "link") + _, tport20 = env.ltop.xlate("dut2", "data1") + _, tport21 = env.ltop.xlate("dut2", "data2") + _, tport22 = env.ltop.xlate("dut2", "link") dut1.put_config_dict("ietf-interfaces", { "interfaces": { diff --git a/test/case/ietf_interfaces/bridge_vlan_separation/topology.dot b/test/case/ietf_interfaces/bridge_vlan_separation/topology.dot index ce4cbbb9..78fe1c7c 100644 --- a/test/case/ietf_interfaces/bridge_vlan_separation/topology.dot +++ b/test/case/ietf_interfaces/bridge_vlan_separation/topology.dot @@ -13,26 +13,26 @@ graph "2x4" { ]; dut1 [ - label="{ mgmt | data0 | data1 } | { \n dut1 \n\n | data2 }", + label="{ mgmt | data1 | data2 } | { \n dut1 \n\n | link }", pos="2,15.25!", fontsize=12, kind="infix", ]; dut2 [ - label="{ mgmt | data0 | data1 } | { data2 | \n dut2 \n\n }", + label="{ mgmt | data1| data2 } | { link | \n dut2 \n\n }", pos="2,14.75!", fontsize=12, kind="infix", ]; - host:mgmt1 -- dut1:mgmt [kind=mgmt] - host:data10 -- dut1:data0 [color=purple, fontcolor=purple, taillabel="10.0.0.1", headlabel="VLAN10 U"] - host:data11 -- dut1:data1 [color=darkgreen, fontcolor=darkgreen, taillabel="10.0.0.2", headlabel="VLAN20 U"] + host:mgmt1 -- dut1:mgmt [kind=mgmt, color="lightgray"] + host:data10 -- dut1:data1 [color=purple, fontcolor=purple, taillabel="10.0.0.1", headlabel="VLAN10 U"] + host:data11 -- dut1:data2 [color=darkgreen, fontcolor=darkgreen, taillabel="10.0.0.2", headlabel="VLAN20 U"] - host:mgmt2 -- dut2:mgmt [kind=mgmt] - host:data20 -- dut2:data0 [color=purple, fontcolor=purple, taillabel="10.0.0.3", headlabel="VLAN10 U"] - host:data21 -- dut2:data1 [color=darkgreen, fontcolor=darkgreen, taillabel="10.0.0.4", headlabel="VLAN20 U"] + host:mgmt2 -- dut2:mgmt [kind=mgmt color="lightgrey"] + host:data20 -- dut2:data1 [color=purple, fontcolor=purple, taillabel="10.0.0.3", headlabel="VLAN10 U"] + host:data21 -- dut2:data2 [color=darkgreen, fontcolor=darkgreen, taillabel="10.0.0.4", headlabel="VLAN20 U"] - dut1:data2 -- dut2:data2 [color=black, fontcolor=black, fontsize=12, label="VLAN 10,20 T"] + dut1:link -- dut2:link [color=black, fontcolor=black, fontsize=12, label="VLAN 10,20 T"] } \ No newline at end of file diff --git a/test/case/ietf_interfaces/bridge_vlan_separation/topology.png b/test/case/ietf_interfaces/bridge_vlan_separation/topology.png index e587d097..5650b929 100644 Binary files a/test/case/ietf_interfaces/bridge_vlan_separation/topology.png and b/test/case/ietf_interfaces/bridge_vlan_separation/topology.png differ diff --git a/test/case/ietf_interfaces/dual_bridge/Readme.adoc b/test/case/ietf_interfaces/dual_bridge/Readme.adoc index fc83b191..0b30402f 100644 --- a/test/case/ietf_interfaces/dual_bridge/Readme.adoc +++ b/test/case/ietf_interfaces/dual_bridge/Readme.adoc @@ -1,22 +1,28 @@ -=== Dual bridges +=== Dual bridges on one device ==== Description Verify that it is possible to ping through a bridge to another bridge via VETH interfaces. +.... + PING --> br0 br1 10.0.0.2 + / \ / +PC - target:data veth0a - veth0b +.... + ==== Topology ifdef::topdoc[] -image::../../test/case/ietf_interfaces/dual_bridge/topology.png[Dual bridges topology] +image::../../test/case/ietf_interfaces/dual_bridge/topology.png[Dual bridges on one device topology] endif::topdoc[] ifndef::topdoc[] ifdef::testgroup[] -image::dual_bridge/topology.png[Dual bridges topology] +image::dual_bridge/topology.png[Dual bridges on one device topology] endif::testgroup[] ifndef::testgroup[] -image::topology.png[Dual bridges topology] +image::topology.png[Dual bridges on one device topology] endif::testgroup[] endif::topdoc[] ==== Test sequence -. Initialize -. Configure two bridges linked with a veth pair furthest bridge has IP 10.0.0.2 +. 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 diff --git a/test/case/ietf_interfaces/dual_bridge/test.py b/test/case/ietf_interfaces/dual_bridge/test.py index ff490579..93cbdfa7 100755 --- a/test/case/ietf_interfaces/dual_bridge/test.py +++ b/test/case/ietf_interfaces/dual_bridge/test.py @@ -1,22 +1,25 @@ #!/usr/bin/env python3 # -# PING --> br0 br1 10.0.0.2 -# / \ / -# PC ---- e0 veth -# + """ -Dual bridges +Dual bridges on one device Verify that it is possible to ping through a bridge to another bridge via VETH interfaces. + +.... + PING --> br0 br1 10.0.0.2 + / \\ / +PC - target:data veth0a - veth0b +.... """ import infamy with infamy.Test() as test: - with test.step("Initialize"): + with test.step("Set up topology and attach to target DUTs"): env = infamy.Env() target = env.attach("target", "mgmt") - with test.step("Configure two bridges linked with a veth pair furthest bridge has IP 10.0.0.2"): + with test.step("Configure two bridges linked and a veth pair"): _, tport = env.ltop.xlate("target", "data") target.put_config_dict("ietf-interfaces", { diff --git a/test/case/ietf_interfaces/dual_bridge/topology.dot b/test/case/ietf_interfaces/dual_bridge/topology.dot index a7fee698..4f53d15a 120000 --- a/test/case/ietf_interfaces/dual_bridge/topology.dot +++ b/test/case/ietf_interfaces/dual_bridge/topology.dot @@ -1 +1 @@ -../bridge_basic/topology.dot \ No newline at end of file +../../../infamy/topologies/1x2.dot \ No newline at end of file diff --git a/test/case/ietf_interfaces/dual_bridge/topology.png b/test/case/ietf_interfaces/dual_bridge/topology.png index e717c549..5444e060 100644 Binary files a/test/case/ietf_interfaces/dual_bridge/topology.png and b/test/case/ietf_interfaces/dual_bridge/topology.png differ diff --git a/test/case/ietf_interfaces/igmp_basic/Readme.adoc b/test/case/ietf_interfaces/igmp_basic/Readme.adoc index 1036cb01..49a7b2bc 100644 --- a/test/case/ietf_interfaces/igmp_basic/Readme.adoc +++ b/test/case/ietf_interfaces/igmp_basic/Readme.adoc @@ -1,8 +1,21 @@ === IGMP basic ==== Description -Test that all multicast gets flooded when IGMP is disabled and +Verify that all multicast get flooded when no IGMP join exists in the system and the flooding stops as soon a join arrives + .1 + .---------------------------. + | DUT | + '-data1-----data2-----data3-' + | | | + | | | 10.0.0.0/24 + | | | + .-data1-. .-data2-. .-data3-. + | msend | | mrecv | | !memb | + '-------' '-------' '-------' + .2 .3 .4 + HOST + ==== Topology ifdef::topdoc[] image::../../test/case/ietf_interfaces/igmp_basic/topology.png[IGMP basic topology] @@ -16,13 +29,13 @@ image::topology.png[IGMP basic topology] endif::testgroup[] endif::topdoc[] ==== Test sequence -. Initialize +. Set up topology and attach to target DUTs . Configure device . Start multicast sender on host:data0, group 224.1.1.1 -. Verify that the group 224.1.1.1 is flooded on host:data1 and host:data2 -. Join multicast group 224.1.1.1 on host:data1 -. Verify group 224.1.1.1 is received on host:data1 -. Verify that the group 224.1.1.1 is no longer received to host:data2 +. Verify that the group 224.1.1.1 is flooded on host:data2 and host:data3 +. Join multicast group 224.1.1.1 on host:data2 +. Verify group 224.1.1.1 is received on host:data2 +. Verify that the group 224.1.1.1 is no longer received on host:data3 <<< diff --git a/test/case/ietf_interfaces/igmp_basic/test.py b/test/case/ietf_interfaces/igmp_basic/test.py index 1f2d3249..3b0011e0 100755 --- a/test/case/ietf_interfaces/igmp_basic/test.py +++ b/test/case/ietf_interfaces/igmp_basic/test.py @@ -4,23 +4,26 @@ # group from `msend`, verify that `mrecv` receives it and that `!memb` # does not. # -# .1 -# .---------------------------. -# | DUT | -# '-data0-----data1-----data2-' -# | | | -# | | | 10.0.0.0/24 -# | | | -# .-data0-. .-data1-. .-data2-. -# | msend | | mrecv | | !memb | -# '-------' '-------' '-------' -# .2 .3 .4 """ IGMP basic -Test that all multicast gets flooded when IGMP is disabled and +Verify that all multicast get flooded when no IGMP join exists in the system and the flooding stops as soon a join arrives + + .1 + .---------------------------. + | DUT | + '-data1-----data2-----data3-' + | | | + | | | 10.0.0.0/24 + | | | + .-data1-. .-data2-. .-data3-. + | msend | | mrecv | | !memb | + '-------' '-------' '-------' + .2 .3 .4 + HOST + """ import infamy @@ -30,12 +33,12 @@ import infamy.multicast as mcast query_interval = 4 with infamy.Test() as test: - with test.step("Initialize"): + with test.step("Set up topology and attach to target DUTs"): env = infamy.Env() target = env.attach("target", "mgmt") - _, msend = env.ltop.xlate("target", "data0") - _, mreceive = env.ltop.xlate("target", "data1") - _, nojoin = env.ltop.xlate("target", "data2") + _, msend = env.ltop.xlate("target", "data1") + _, mreceive = env.ltop.xlate("target", "data2") + _, nojoin = env.ltop.xlate("target", "data3") with test.step("Configure device"): target.put_config_dict("ietf-interfaces", @@ -89,9 +92,9 @@ with infamy.Test() as test: } }) - _, hsend = env.ltop.xlate("host", "data0") - _, hreceive = env.ltop.xlate("host", "data1") - _, hnojoin = env.ltop.xlate("host", "data2") + _, hsend = env.ltop.xlate("host", "data1") + _, hreceive = env.ltop.xlate("host", "data2") + _, hnojoin = env.ltop.xlate("host", "data3") with infamy.IsolatedMacVlan(hsend) as send_ns, \ infamy.IsolatedMacVlan(hreceive) as receive_ns, \ infamy.IsolatedMacVlan(hnojoin) as nojoin_ns: @@ -105,16 +108,16 @@ with infamy.Test() as test: nojoin_ns.must_reach("10.0.0.1") with mcast.MCastSender(send_ns, "224.1.1.1"): - with test.step("Verify that the group 224.1.1.1 is flooded on host:data1 and host:data2"): + with test.step("Verify that the group 224.1.1.1 is flooded on host:data2 and host:data3"): infamy.parallel(lambda: receive_ns.must_receive("ip dst 224.1.1.1"), lambda: nojoin_ns.must_receive("ip dst 224.1.1.1")) - with test.step("Join multicast group 224.1.1.1 on host:data1"): + with test.step("Join multicast group 224.1.1.1 on host:data2"): with mcast.MCastReceiver(receive_ns, "224.1.1.1"): - with test.step("Verify group 224.1.1.1 is received on host:data1"): + with test.step("Verify group 224.1.1.1 is received on host:data2"): receive_ns.must_receive("ip dst 224.1.1.1") - with test.step("Verify that the group 224.1.1.1 is no longer received to host:data2"): + with test.step("Verify that the group 224.1.1.1 is no longer received on host:data3"): attempt = 0 # This retry loop exists to handle the case where the first query is lost due diff --git a/test/case/ietf_interfaces/igmp_basic/topology.dot b/test/case/ietf_interfaces/igmp_basic/topology.dot index 87542739..673f9e2c 100644 --- a/test/case/ietf_interfaces/igmp_basic/topology.dot +++ b/test/case/ietf_interfaces/igmp_basic/topology.dot @@ -7,20 +7,20 @@ graph "1x4" { edge [color="cornflowerblue", penwidth="2"]; host [ - label="host | { tgt | data0 | data1 | data2 }", + label="host | { mgmt | data1 | data2 | data3 }", pos="0,12!", kind="controller", ]; target [ - label="{ mgmt | data0 | data1 | data2 } | target \n\n(br0)\n10.0.0.1/24", + label="{ mgmt | data1 | data2 | data3 } | target \n\n(br0)\n10.0.0.1/24", pos="10,12!", kind="infix", ]; - host:tgt -- target:mgmt [kind=mgmt] - host:data0 -- target:data0 [color=black, fontcolor=black, taillabel="10.0.0.2/24"] - host:data1 -- target:data1 [color=black, fontcolor=black, taillabel="10.0.0.3/24"] - host:data2 -- target:data2 [color=black, fontcolor=black, taillabel="10.0.0.4/24"] + host:mgmt -- target:mgmt [kind=mgmt, color="lightgray"] + host:data1 -- target:data1 [color=black, fontcolor=black, taillabel="10.0.0.2/24"] + host:data2 -- target:data2 [color=black, fontcolor=black, taillabel="10.0.0.3/24"] + host:data3 -- target:data3 [color=black, fontcolor=black, taillabel="10.0.0.4/24"] } diff --git a/test/case/ietf_interfaces/igmp_basic/topology.png b/test/case/ietf_interfaces/igmp_basic/topology.png index f5d94967..91657527 100644 Binary files a/test/case/ietf_interfaces/igmp_basic/topology.png and b/test/case/ietf_interfaces/igmp_basic/topology.png differ diff --git a/test/case/ietf_interfaces/ipv4_address/topology.png b/test/case/ietf_interfaces/ipv4_address/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/ietf_interfaces/ipv4_address/topology.png and b/test/case/ietf_interfaces/ipv4_address/topology.png differ diff --git a/test/case/ietf_interfaces/ipv4_autoconf/topology.png b/test/case/ietf_interfaces/ipv4_autoconf/topology.png index 5444e060..b1209598 100644 Binary files a/test/case/ietf_interfaces/ipv4_autoconf/topology.png and b/test/case/ietf_interfaces/ipv4_autoconf/topology.png differ diff --git a/test/case/ietf_interfaces/routing_basic/Readme.adoc b/test/case/ietf_interfaces/routing_basic/Readme.adoc index 78b54ddc..5699d9c9 100644 --- a/test/case/ietf_interfaces/routing_basic/Readme.adoc +++ b/test/case/ietf_interfaces/routing_basic/Readme.adoc @@ -16,13 +16,13 @@ image::topology.png[Routing basic topology] endif::testgroup[] endif::topdoc[] ==== Test sequence -. Initialize +. Set up topology and attach to target DUTs . Setup host -. Enable forwarding on target:data0 and target:data1 -. Verify ping from host:data0 to 10.0.0.10 -. Verify ping from host:data1 to 192.168.0.10 -. Disable forwarding on target:data0 and target:data1 -. Verify ping does not work host:data0 to 10.0.0.10 and host:data1 to 192.168.0.10 +. Enable forwarding on target:data1 and target:data2 +. Verify ping from host:data1 to 10.0.0.10 +. Verify ping from host:data2 to 192.168.0.10 +. Disable forwarding on target:data1 and target:data2 +. Verify ping does not work host:data1 to 10.0.0.10 and host:data2 to 192.168.0.10 <<< diff --git a/test/case/ietf_interfaces/routing_basic/test.py b/test/case/ietf_interfaces/routing_basic/test.py index 9c14dbbb..01e2ae3f 100755 --- a/test/case/ietf_interfaces/routing_basic/test.py +++ b/test/case/ietf_interfaces/routing_basic/test.py @@ -55,14 +55,14 @@ def config_target(target, tport0, tport1, enable_fwd): }) with infamy.Test() as test: - with test.step("Initialize"): + with test.step("Set up topology and attach to target DUTs"): env = infamy.Env() target = env.attach("target", "mgmt") - _, tport0 = env.ltop.xlate("target", "data0") - _, tport1 = env.ltop.xlate("target", "data1") + _, tport0 = env.ltop.xlate("target", "data1") + _, tport1 = env.ltop.xlate("target", "data2") - _, hport0 = env.ltop.xlate("host", "data0") - _, hport1 = env.ltop.xlate("host", "data1") + _, hport0 = env.ltop.xlate("host", "data1") + _, hport1 = env.ltop.xlate("host", "data2") with infamy.IsolatedMacVlan(hport0) as ns0, \ infamy.IsolatedMacVlan(hport1) as ns1 : @@ -74,19 +74,19 @@ with infamy.Test() as test: ns1.addip("10.0.0.10") ns1.addroute("default", "10.0.0.1") - with test.step("Enable forwarding on target:data0 and target:data1"): + with test.step("Enable forwarding on target:data1 and target:data2"): config_target(target, tport0, tport1, True) - with test.step("Verify ping from host:data0 to 10.0.0.10"): + with test.step("Verify ping from host:data1 to 10.0.0.10"): ns0.must_reach("10.0.0.10") - with test.step("Verify ping from host:data1 to 192.168.0.10"): + with test.step("Verify ping from host:data2 to 192.168.0.10"): ns1.must_reach("192.168.0.10") - with test.step("Disable forwarding on target:data0 and target:data1"): + with test.step("Disable forwarding on target:data1 and target:data2"): config_target(target, tport0, tport1, False) - with test.step("Verify ping does not work host:data0 to 10.0.0.10 and host:data1 to 192.168.0.10"): + with test.step("Verify ping does not work host:data1 to 10.0.0.10 and host:data2 to 192.168.0.10"): infamy.parallel(lambda: ns0.must_not_reach("10.0.0.10"), lambda: ns1.must_not_reach("192.168.0.10")) diff --git a/test/case/ietf_interfaces/routing_basic/topology.dot b/test/case/ietf_interfaces/routing_basic/topology.dot index a189749a..a4ba84da 100644 --- a/test/case/ietf_interfaces/routing_basic/topology.dot +++ b/test/case/ietf_interfaces/routing_basic/topology.dot @@ -7,19 +7,19 @@ graph "1x3" { edge [color="cornflowerblue", penwidth="2"]; host [ - label="host | { tgt | data0 | data1 }", + label="host | { mgmt | data1 | data2 }", pos="0,12!", kind="controller", ]; target [ - label="{ mgmt | data0 | data1 } | target", + label="{ mgmt | data1 | data2 } | target", pos="10,12!", kind="infix", ]; - host:tgt -- target:mgmt [kind=mgmt] - host:data0 -- target:data0 [color=black, fontcolor=black, fontsize=12, taillabel="192.168.0.10", headlabel="192.168.0.1"] - host:data1 -- target:data1 [color=black, fontcolor=black, fontsize=12, taillabel="10.0.0.10", headlabel="10.0.0.1"] + host:mgmt -- target:mgmt [kind=mgmt, color="lightgray"] + host:data1 -- target:data1 [color=black, fontcolor=black, fontsize=12, taillabel=".10", label="192.168.0.0/24" headlabel=".1"] + host:data2 -- target:data2 [color=black, fontcolor=black, fontsize=12, taillabel=".10", label="10.0.0.0/24" headlabel=".1"] } \ No newline at end of file diff --git a/test/case/ietf_interfaces/routing_basic/topology.png b/test/case/ietf_interfaces/routing_basic/topology.png index 0d9fdb75..9e2d5555 100644 Binary files a/test/case/ietf_interfaces/routing_basic/topology.png and b/test/case/ietf_interfaces/routing_basic/topology.png differ diff --git a/test/case/ietf_interfaces/static_multicast_filters/Readme.adoc b/test/case/ietf_interfaces/static_multicast_filters/Readme.adoc index 6a8fa29d..8a9f0085 100644 --- a/test/case/ietf_interfaces/static_multicast_filters/Readme.adoc +++ b/test/case/ietf_interfaces/static_multicast_filters/Readme.adoc @@ -3,6 +3,21 @@ Verify that static multicast filters work (remember that snooping needs to enabled when using static multicast filters) +.... + .1 + .---------------------------. + | DUT | + '-data1-----data2-----data3-' + | | | + | | | 10.0.0.0/24 + | | | + .-data1-. .-data2-. .-data3-. + | msend | | mrecv | | !memb | + '-------' '-------' '-------' + .2 .3 .4 + HOST +.... + ==== Topology ifdef::topdoc[] image::../../test/case/ietf_interfaces/static_multicast_filters/topology.png[Static multicast filters topology] @@ -16,13 +31,13 @@ image::topology.png[Static multicast filters topology] endif::testgroup[] endif::topdoc[] ==== Test sequence -. Initialize +. Set up topology and attach to target DUTs . Configure device without static filter -. Start multicast sender on host:data0, group 224.1.1.1 -. Verify that 224.1.1.1 is flooded to host:data1 and host:data2 -. Enable multicast filter on host:data1, group 224.1.1.1 -. Verify that the group is still forwarded host:data1 -. Verify that the group is no longer forwarded host:data2 +. Start multicast sender on host:data1, group 224.1.1.1 +. Verify that 224.1.1.1 is flooded to host:data2 and host:data3 +. Enable multicast filter on host:data2, group 224.1.1.1 +. Verify that the group is still forwarded to host:data2 +. Verify that the group is no longer forwarded to host:data3 <<< diff --git a/test/case/ietf_interfaces/static_multicast_filters/test.py b/test/case/ietf_interfaces/static_multicast_filters/test.py index 28a2361b..5a5d99da 100755 --- a/test/case/ietf_interfaces/static_multicast_filters/test.py +++ b/test/case/ietf_interfaces/static_multicast_filters/test.py @@ -3,24 +3,27 @@ # Add static filter on DUT for 224.1.1.1 containing only data1. Send # to that group from `msend`, verify that `mrecv` receives it and that # `!memb` does not. -# -# .1 -# .---------------------------. -# | DUT | -# '-data0-----data1-----data2-' -# | | | -# | | | 10.0.0.0/24 -# | | | -# .-data0-. .-data1-. .-data2-. -# | msend | | mrecv | | !memb | -# '-------' '-------' '-------' -# .2 .3 .4 """ Static multicast filters Verify that static multicast filters work (remember that snooping needs to enabled when using static multicast filters) + +.... + .1 + .---------------------------. + | DUT | + '-data1-----data2-----data3-' + | | | + | | | 10.0.0.0/24 + | | | + .-data1-. .-data2-. .-data3-. + | msend | | mrecv | | !memb | + '-------' '-------' '-------' + .2 .3 .4 + HOST +.... """ import infamy import time @@ -54,12 +57,12 @@ def set_static_multicast_filter(target, address, port): }) with infamy.Test() as test: - with test.step("Initialize"): + with test.step("Set up topology and attach to target DUTs"): env = infamy.Env() target = env.attach("target", "mgmt") - _, msend = env.ltop.xlate("target", "data0") - _, mreceive = env.ltop.xlate("target", "data1") - _, nojoin = env.ltop.xlate("target", "data2") + _, msend = env.ltop.xlate("target", "data1") + _, mreceive = env.ltop.xlate("target", "data2") + _, nojoin = env.ltop.xlate("target", "data3") with test.step("Configure device without static filter"): target.put_config_dict("ietf-interfaces", @@ -110,14 +113,14 @@ with infamy.Test() as test: } }) - _, hsend = env.ltop.xlate("host", "data0") - _, hreceive = env.ltop.xlate("host", "data1") - _, hnojoin = env.ltop.xlate("host", "data2") + _, hsend = env.ltop.xlate("host", "data1") + _, hreceive = env.ltop.xlate("host", "data2") + _, hnojoin = env.ltop.xlate("host", "data3") with infamy.IsolatedMacVlan(hsend) as send_ns, \ infamy.IsolatedMacVlan(hreceive) as receive_ns, \ infamy.IsolatedMacVlan(hnojoin) as nojoin_ns: - with test.step("Start multicast sender on host:data0, group 224.1.1.1"): + with test.step("Start multicast sender on host:data1, group 224.1.1.1"): send_ns.addip("10.0.0.2") receive_ns.addip("10.0.0.3") nojoin_ns.addip("10.0.0.4") @@ -127,18 +130,18 @@ with infamy.Test() as test: print("Starting sender") with mcast.MCastSender(send_ns, "224.1.1.1"): - with test.step("Verify that 224.1.1.1 is flooded to host:data1 and host:data2"): + with test.step("Verify that 224.1.1.1 is flooded to host:data2 and host:data3"): infamy.parallel(lambda: receive_ns.must_receive("ip dst 224.1.1.1"), lambda: nojoin_ns.must_receive("ip dst 224.1.1.1")) - with test.step("Enable multicast filter on host:data1, group 224.1.1.1"): + with test.step("Enable multicast filter on host:data2, group 224.1.1.1"): set_static_multicast_filter(target, "224.1.1.1", mreceive) until(lambda: iface.exist_bridge_multicast_filter(target, "224.1.1.1", mreceive, "br0")) - with test.step("Verify that the group is still forwarded host:data1"): + with test.step("Verify that the group is still forwarded to host:data2"): receive_ns.must_receive("ip dst 224.1.1.1") - with test.step("Verify that the group is no longer forwarded host:data2"): + with test.step("Verify that the group is no longer forwarded to host:data3"): nojoin_ns.must_not_receive("ip dst 224.1.1.1") test.succeed() diff --git a/test/case/ietf_interfaces/static_multicast_filters/topology.png b/test/case/ietf_interfaces/static_multicast_filters/topology.png index f5d94967..91657527 100644 Binary files a/test/case/ietf_interfaces/static_multicast_filters/topology.png and b/test/case/ietf_interfaces/static_multicast_filters/topology.png differ diff --git a/test/case/ietf_interfaces/vlan_ping/Readme.adoc b/test/case/ietf_interfaces/vlan_ping/Readme.adoc index 41d0d8b7..0e610f7f 100644 --- a/test/case/ietf_interfaces/vlan_ping/Readme.adoc +++ b/test/case/ietf_interfaces/vlan_ping/Readme.adoc @@ -15,6 +15,7 @@ image::topology.png[VLAN ping connectivity topology] endif::testgroup[] endif::topdoc[] ==== Test sequence +. Set up topology and attach to target DUT . Configure VLAN 10 interface on target:data with IP 10.0.0.2 . Waiting for links to come up . Ping 10.0.0.2 from VLAN 10 on host:data with IP 10.0.0.1 diff --git a/test/case/ietf_interfaces/vlan_ping/test.py b/test/case/ietf_interfaces/vlan_ping/test.py index 09838f25..8220d3de 100755 --- a/test/case/ietf_interfaces/vlan_ping/test.py +++ b/test/case/ietf_interfaces/vlan_ping/test.py @@ -25,49 +25,50 @@ def test_ping(hport, should_pass): ns.must_not_reach("10.0.0.2") with infamy.Test() as test: - with test.step("Configure VLAN 10 interface on target:data with IP 10.0.0.2"): - env = infamy.Env() - target = env.attach("target", "mgmt") - _, tport = env.ltop.xlate("target", "data") + with test.step("Set up topology and attach to target DUT"): + env = infamy.Env() + target = env.attach("target", "mgmt") + _, tport = env.ltop.xlate("target", "data") - target.put_config_dict("ietf-interfaces", { - "interfaces": { - "interface": [ - { - "name": tport, - "enabled": True, - }, - { - "name": f"{tport}.10", - "type": "infix-if-type:vlan", - "vlan": { - "id": 10, - "lower-layer-if": tport, - }, - "ipv4": { - "address": [ - { - "ip": "10.0.0.2", - "prefix-length": 24, - } - ] - } - }, - ] - } - }) + with test.step("Configure VLAN 10 interface on target:data with IP 10.0.0.2"): + target.put_config_dict("ietf-interfaces", { + "interfaces": { + "interface": [ + { + "name": tport, + "enabled": True, + }, + { + "name": f"{tport}.10", + "type": "infix-if-type:vlan", + "vlan": { + "id": 10, + "lower-layer-if": tport, + }, + "ipv4": { + "address": [ + { + "ip": "10.0.0.2", + "prefix-length": 24, + } + ] + } + }, + ] + } + }) - with test.step("Waiting for links to come up"): - until(lambda: iface.get_oper_up(target, tport)) + with test.step("Waiting for links to come up"): + until(lambda: iface.get_oper_up(target, tport)) - with test.step("Ping 10.0.0.2 from VLAN 10 on host:data with IP 10.0.0.1"): - _, hport = env.ltop.xlate("host", "data") - test_ping(hport,True) + with test.step("Ping 10.0.0.2 from VLAN 10 on host:data with IP 10.0.0.1"): + _, hport = env.ltop.xlate("host", "data") + test_ping(hport,True) - with test.step("Remove VLAN interface from target:data, and test again (should not be able to ping)"): - target.delete_xpath(f"/ietf-interfaces:interfaces/interface[name='{tport}.10']") - _, hport = env.ltop.xlate("host", "data") - test_ping(hport,False) + with test.step("Remove VLAN interface from target:data, and test again (should not be able to ping)"): + target.delete_xpath(f"/ietf-interfaces:interfaces/interface[name='{tport}.10']") + _, hport = env.ltop.xlate("host", "data") + test_ping(hport,False) - test.succeed() + test.succeed() diff --git a/test/case/ietf_interfaces/vlan_ping/topology.dot b/test/case/ietf_interfaces/vlan_ping/topology.dot index 679be6d8..a8f87f8b 100644 --- a/test/case/ietf_interfaces/vlan_ping/topology.dot +++ b/test/case/ietf_interfaces/vlan_ping/topology.dot @@ -7,7 +7,7 @@ graph "1x2" { edge [color="cornflowerblue", penwidth="2"]; host [ - label="host | { tgt | data\n(vlan10) }", + label="host | { mgmt | data\n(vlan10) }", pos="0,12!", kind="controller", ]; @@ -19,6 +19,6 @@ graph "1x2" { kind="infix", ]; - host:tgt -- target:mgmt [kind=mgmt] + host:mgmt -- target:mgmt [kind=mgmt, color="lightgray"] host:data -- target:data [color=black, fontcolor=black, fontsize=12, taillabel="10.0.0.1/24", headlabel="10.0.0.2/24"] } diff --git a/test/case/ietf_interfaces/vlan_ping/topology.png b/test/case/ietf_interfaces/vlan_ping/topology.png index 3ba8882d..0d8ce220 100644 Binary files a/test/case/ietf_interfaces/vlan_ping/topology.png and b/test/case/ietf_interfaces/vlan_ping/topology.png differ diff --git a/test/case/ietf_routing/ospf_basic/Readme.adoc b/test/case/ietf_routing/ospf_basic/Readme.adoc index 356e5eea..732fce2d 100644 --- a/test/case/ietf_routing/ospf_basic/Readme.adoc +++ b/test/case/ietf_routing/ospf_basic/Readme.adoc @@ -16,6 +16,7 @@ image::topology.png[OSPF Basic topology] endif::testgroup[] endif::topdoc[] ==== Test 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 diff --git a/test/case/ietf_routing/ospf_basic/test.py b/test/case/ietf_routing/ospf_basic/test.py index 432a2787..f3a9a1f0 100755 --- a/test/case/ietf_routing/ospf_basic/test.py +++ b/test/case/ietf_routing/ospf_basic/test.py @@ -158,11 +158,12 @@ def config_target2(target, link): }) with infamy.Test() as test: - with test.step("Configure targets"): + with test.step("Set up topology and attach to target DUTs"): env = infamy.Env() R1 = env.attach("R1", "mgmt") R2 = env.attach("R2", "mgmt") + with test.step("Configure targets"): _, R1data = env.ltop.xlate("R1", "data") _, R2link = env.ltop.xlate("R2", "link") _, R1link= env.ltop.xlate("R1", "link") diff --git a/test/case/ietf_routing/ospf_basic/topology.dot b/test/case/ietf_routing/ospf_basic/topology.dot index fa2677bc..1f27fd5c 100644 --- a/test/case/ietf_routing/ospf_basic/topology.dot +++ b/test/case/ietf_routing/ospf_basic/topology.dot @@ -25,8 +25,8 @@ graph "2x2" { kind="infix", ]; - PC:mgmt1 -- R1:mgmt [kind=mgmt] - PC:mgmt2 -- R2:mgmt [kind=mgmt] - PC:data -- R1:data [color="black", headlabel="192.168.10.1/24", taillabel="192.168.10.2/24", fontcolor="black"] - R1:link -- R2:link [headlabel="192.168.50.2/24", taillabel="192.168.50.1/24", labeldistance=1, fontcolor="black", color="black"] + PC:mgmt1 -- R1:mgmt [kind=mgmt, color="lightgray"] + PC:mgmt2 -- R2:mgmt [kind=mgmt, color="lightgray"] + PC:data -- R1:data [color="black", headlabel="192.168.10.1/24", taillabel="192.168.10.2/24", fontcolor="black"] + R1:link -- R2:link [headlabel="192.168.50.2/24", taillabel="192.168.50.1/24", labeldistance=1, fontcolor="black", color="black"] } diff --git a/test/case/ietf_routing/ospf_basic/topology.png b/test/case/ietf_routing/ospf_basic/topology.png index 323a1957..fe90b6a1 100644 Binary files a/test/case/ietf_routing/ospf_basic/topology.png and b/test/case/ietf_routing/ospf_basic/topology.png differ diff --git a/test/case/ietf_routing/ospf_multiarea/Readme.adoc b/test/case/ietf_routing/ospf_multiarea/Readme.adoc index ecc32ad4..08fdb64a 100644 --- a/test/case/ietf_routing/ospf_multiarea/Readme.adoc +++ b/test/case/ietf_routing/ospf_multiarea/Readme.adoc @@ -7,6 +7,21 @@ failures using BFD, though BFD is not yet implemented in test framework (Infamy) This test also verifies broadcast and point-to-point interface types on /30 network, and explicit router-id. +.... + +-------------+ +---------------+ +-------------+ +---------------+ + | R1 | | R2 | | R3 | | R4 | + | 10.0.0.1/32 | | 10.0.0.2/32 | | 10.0.0.3/32 | | 10.0.0.4/32 | + | (lo) | | 11.0.9.1/24 | | (lo) | | (lo) | + +-------------+ | 11.0.10.1/24 | +-------------+ +---------------+ + | 11.0.11.1/24 | + | 11.0.12.1/24 | + | 11.0.13.1/24 | + | 11.0.14.1/24 | + | 11.0.15.1/24 | + | (lo) | + +---------------+ +.... + ==== Topology ifdef::topdoc[] image::../../test/case/ietf_routing/ospf_multiarea/topology.png[OSPF with multiple areas topology] @@ -20,6 +35,7 @@ image::topology.png[OSPF with multiple areas topology] endif::testgroup[] endif::topdoc[] ==== Test sequence +. Set up topology and attach to target DUTs . Configure targets . Wait for all neighbors to peer . Wait for routes from OSPF on all routers diff --git a/test/case/ietf_routing/ospf_multiarea/test.py b/test/case/ietf_routing/ospf_multiarea/test.py index fad3ea7b..bbde5f1d 100755 --- a/test/case/ietf_routing/ospf_multiarea/test.py +++ b/test/case/ietf_routing/ospf_multiarea/test.py @@ -34,6 +34,20 @@ failures using BFD, though BFD is not yet implemented in test framework (Infamy) This test also verifies broadcast and point-to-point interface types on /30 network, and explicit router-id. +.... + +-------------+ +---------------+ +-------------+ +---------------+ + | R1 | | R2 | | R3 | | R4 | + | 10.0.0.1/32 | | 10.0.0.2/32 | | 10.0.0.3/32 | | 10.0.0.4/32 | + | (lo) | | 11.0.9.1/24 | | (lo) | | (lo) | + +-------------+ | 11.0.10.1/24 | +-------------+ +---------------+ + | 11.0.11.1/24 | + | 11.0.12.1/24 | + | 11.0.13.1/24 | + | 11.0.14.1/24 | + | 11.0.15.1/24 | + | (lo) | + +---------------+ +.... """ import infamy @@ -71,11 +85,7 @@ def config_target1(target, ring1, ring2, cross): "address": [{ "ip": "10.0.13.1", "prefix-length": 30 - }, - { - "ip": "10.0.0.1", - "prefix-length": 32 - }] + }] } }, { @@ -85,7 +95,11 @@ def config_target1(target, ring1, ring2, cross): "address": [{ "ip": "11.0.8.1", "prefix-length": 24 - }] + }, + { + "ip": "10.0.0.1", + "prefix-length": 32 + }] } } ] @@ -128,7 +142,12 @@ def config_target1(target, ring1, ring2, cross): "hello-interval": 1, "enabled": True, "cost": 2000 + }, + { + "name": "lo", + "enabled": True }] + } },{ "area-id": "0.0.0.2", @@ -142,10 +161,6 @@ def config_target1(target, ring1, ring2, cross): "hello-interval": 1, "enabled": True, "interface-type": "point-to-point" - }, - { - "name": "lo", - "enabled": True }] } }] @@ -513,7 +528,7 @@ def disable_link(target, link): with infamy.Test() as test: - with test.step("Configure targets"): + with test.step("Set up topology and attach to target DUTs"): env = infamy.Env() R1 = env.attach("R1", "mgmt") R2 = env.attach("R2", "mgmt") @@ -534,6 +549,8 @@ with infamy.Test() as test: _, R2cross = env.ltop.xlate("R2", "cross") _, R3cross = env.ltop.xlate("R3", "cross") _, R4cross = env.ltop.xlate("R4", "cross") + + with test.step("Configure targets"): parallel(config_target1(R1, R1ring1, R1ring2, R1cross), config_target2(R2, R2ring1, R2ring2, R2cross), config_target3(R3, R3ring2, R3cross, R3data), diff --git a/test/case/ietf_routing/ospf_multiarea/topology.dot b/test/case/ietf_routing/ospf_multiarea/topology.dot index b27d237e..46aae2d2 100644 --- a/test/case/ietf_routing/ospf_multiarea/topology.dot +++ b/test/case/ietf_routing/ospf_multiarea/topology.dot @@ -45,8 +45,8 @@ graph "ring-4-duts" { PC:mgmt4 -- R4:mgmt [kind=mgmt, color="lightgray", overlap=false, weight=0.1] # PC-Dut links - PC:data3 -- R3:data [color="darkgreen", headlabel=".1", label="192.168.3.0/24", taillabel=".2", labeldistance=2, fontcolor="darkgreen"] - PC:data4 -- R4:data [color="darkgreen", headlabel=".1", label="192.168.4.0/24 ", taillabel=".2", labeldistance=2, fontcolor="darkgreen"] + PC:data3 -- R3:data [color="purple", headlabel=".1", label="192.168.3.0/24\n(Area 1)", taillabel=".2", labeldistance=2, fontcolor="purple"] + PC:data4 -- R4:data [color="black", headlabel=".1", label="192.168.4.0/24 ", taillabel=".2", labeldistance=2, fontcolor="black"] # Ring R1:ring1 -- R2:ring2 [color="blue", headlabel=".2", label="(Area 0)\n10.0.12.0/30", taillabel=".1", labeldistance=2, fontcolor="blue"] diff --git a/test/case/ietf_routing/ospf_multiarea/topology.png b/test/case/ietf_routing/ospf_multiarea/topology.png index a5f32668..166544fb 100644 Binary files a/test/case/ietf_routing/ospf_multiarea/topology.png and b/test/case/ietf_routing/ospf_multiarea/topology.png differ diff --git a/test/case/ietf_routing/ospf_unnumbered_interface/Readme.adoc b/test/case/ietf_routing/ospf_unnumbered_interface/Readme.adoc index 95919593..75b744fa 100644 --- a/test/case/ietf_routing/ospf_unnumbered_interface/Readme.adoc +++ b/test/case/ietf_routing/ospf_unnumbered_interface/Readme.adoc @@ -20,9 +20,10 @@ image::topology.png[OSPF unnumbered interfaces topology] endif::testgroup[] endif::topdoc[] ==== Test sequence +. Set up topology and attach to target DUTs . Configure targets . Wait for OSPF routes -. Check interface type +. Verify interface type on R1:link and R2:link is point-to-point . Verify there are no OSPF HELLO packets on PC:data . Test connectivity from PC:data to 192.168.200.1 diff --git a/test/case/ietf_routing/ospf_unnumbered_interface/test.py b/test/case/ietf_routing/ospf_unnumbered_interface/test.py index 01290d7d..9f66d3d5 100755 --- a/test/case/ietf_routing/ospf_unnumbered_interface/test.py +++ b/test/case/ietf_routing/ospf_unnumbered_interface/test.py @@ -153,7 +153,7 @@ def config_target2(target, link): with infamy.Test() as test: - with test.step("Configure targets"): + with test.step("Set up topology and attach to target DUTs"): env = infamy.Env() R1 = env.attach("R1", "mgmt") R2 = env.attach("R2", "mgmt") @@ -162,15 +162,17 @@ with infamy.Test() as test: _, R2link = env.ltop.xlate("R2", "link") _, R1link = env.ltop.xlate("R1", "link") + with test.step("Configure targets"): parallel(lambda: config_target1(R1, R1data, R1link), lambda: config_target2(R2, R2link)) + with test.step("Wait for OSPF routes"): print("Waiting for OSPF routes..") until(lambda: route.ipv4_route_exist(R1, "192.168.200.1/32", proto="ietf-ospf:ospfv2"), attempts=200) until(lambda: route.ipv4_route_exist(R2, "192.168.100.1/32", proto="ietf-ospf:ospfv2"), attempts=200) until(lambda: route.ipv4_route_exist(R2, "192.168.10.0/24", proto="ietf-ospf:ospfv2"), attempts=200) - with test.step("Check interface type"): + with test.step("Verify interface type on R1:link and R2:link is point-to-point"): assert(route.ospf_get_interface_type(R1, "0.0.0.0", R1link) == "point-to-point") assert(route.ospf_get_interface_type(R2, "0.0.0.0", R2link) == "point-to-point") diff --git a/test/case/ietf_routing/ospf_unnumbered_interface/topology.dot b/test/case/ietf_routing/ospf_unnumbered_interface/topology.dot index 314aac1c..8d4be9bf 100644 --- a/test/case/ietf_routing/ospf_unnumbered_interface/topology.dot +++ b/test/case/ietf_routing/ospf_unnumbered_interface/topology.dot @@ -25,8 +25,8 @@ graph "2x2" { kind="infix", ]; - PC:mgmt1 -- R1:mgmt [kind=mgmt] - PC:mgmt2 -- R2:mgmt [kind=mgmt] + PC:mgmt1 -- R1:mgmt [kind=mgmt, color="lightgray"] + PC:mgmt2 -- R2:mgmt [kind=mgmt, color="lightgray"] PC:data -- R1:data [color="black", headlabel="192.168.10.1/24", taillabel="192.168.10.2/24", fontcolor="black"] R1:link -- R2:link [headlabel="10.0.0.2/32", taillabel="10.0.0.1/32", labeldistance=1, fontcolor="black", color="black"] } diff --git a/test/case/ietf_routing/ospf_unnumbered_interface/topology.png b/test/case/ietf_routing/ospf_unnumbered_interface/topology.png index e6428aca..0ac22484 100644 Binary files a/test/case/ietf_routing/ospf_unnumbered_interface/topology.png and b/test/case/ietf_routing/ospf_unnumbered_interface/topology.png differ diff --git a/test/case/ietf_routing/static_routing/Readme.adoc b/test/case/ietf_routing/static_routing/Readme.adoc index 322faa67..9f61574c 100644 --- a/test/case/ietf_routing/static_routing/Readme.adoc +++ b/test/case/ietf_routing/static_routing/Readme.adoc @@ -16,6 +16,7 @@ image::topology.png[Static routing topology] endif::testgroup[] endif::topdoc[] ==== Test sequence +. Set up topology and attach to target DUTs . Configure targets . Wait for routes . Configure host addresses and routes diff --git a/test/case/ietf_routing/static_routing/test.py b/test/case/ietf_routing/static_routing/test.py index 4e744cb6..3b2d22ee 100755 --- a/test/case/ietf_routing/static_routing/test.py +++ b/test/case/ietf_routing/static_routing/test.py @@ -190,7 +190,7 @@ def config_target2(target, link): with infamy.Test() as test: - with test.step("Configure targets"): + with test.step("Set up topology and attach to target DUTs"): env = infamy.Env() R1 = env.attach("R1", "mgmt") R2 = env.attach("R2", "mgmt") @@ -199,6 +199,7 @@ with infamy.Test() as test: _, R2link = env.ltop.xlate("R2", "link") _, R1link = env.ltop.xlate("R1", "link") + with test.step("Configure targets"): parallel(config_target1(R1, R1data, R1link), config_target2(R2, R2link)) diff --git a/test/case/ietf_routing/static_routing/topology.dot b/test/case/ietf_routing/static_routing/topology.dot index 0a81e0a8..0da68982 100644 --- a/test/case/ietf_routing/static_routing/topology.dot +++ b/test/case/ietf_routing/static_routing/topology.dot @@ -25,8 +25,8 @@ graph "2x2" { kind="infix", ]; - PC:mgmt1 -- R1:mgmt [kind=mgmt] - PC:mgmt2 -- R2:mgmt [kind=mgmt] - PC:data -- R1:data [headlabel=".2", taillabel=".1", label="192.168.10.0/24", fontcolor="black", color="black"] + PC:mgmt1 -- R1:mgmt [kind=mgmt, color="lightgray"] + PC:mgmt2 -- R2:mgmt [kind=mgmt, color="lightgray"] + PC:data -- R1:data [headlabel=".1", taillabel=".2", label="192.168.10.0/24", fontcolor="black", color="black"] R1:link -- R2:link [headlabel=".2", taillabel=".1", label="192.168.50.0/24", labeldistance=1, fontcolor="black", color="black"] } diff --git a/test/case/ietf_routing/static_routing/topology.png b/test/case/ietf_routing/static_routing/topology.png index 609c9d42..54c5ac27 100644 Binary files a/test/case/ietf_routing/static_routing/topology.png and b/test/case/ietf_routing/static_routing/topology.png differ diff --git a/test/case/ietf_syslog/basic/topology.png b/test/case/ietf_syslog/basic/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/ietf_syslog/basic/topology.png and b/test/case/ietf_syslog/basic/topology.png differ diff --git a/test/case/ietf_system/add_delete_user/topology.png b/test/case/ietf_system/add_delete_user/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/ietf_system/add_delete_user/topology.png and b/test/case/ietf_system/add_delete_user/topology.png differ diff --git a/test/case/ietf_system/hostname/topology.png b/test/case/ietf_system/hostname/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/ietf_system/hostname/topology.png and b/test/case/ietf_system/hostname/topology.png differ diff --git a/test/case/ietf_system/ssh_key_authentication/topology.png b/test/case/ietf_system/ssh_key_authentication/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/ietf_system/ssh_key_authentication/topology.png and b/test/case/ietf_system/ssh_key_authentication/topology.png differ diff --git a/test/case/ietf_system/timezone/topology.png b/test/case/ietf_system/timezone/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/ietf_system/timezone/topology.png and b/test/case/ietf_system/timezone/topology.png differ diff --git a/test/case/ietf_system/timezone_utc_offset/topology.png b/test/case/ietf_system/timezone_utc_offset/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/ietf_system/timezone_utc_offset/topology.png and b/test/case/ietf_system/timezone_utc_offset/topology.png differ diff --git a/test/case/ietf_system/user_admin/topology.png b/test/case/ietf_system/user_admin/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/ietf_system/user_admin/topology.png and b/test/case/ietf_system/user_admin/topology.png differ diff --git a/test/case/infix_containers/container_basic/topology.png b/test/case/infix_containers/container_basic/topology.png index 44837422..5444e060 100644 Binary files a/test/case/infix_containers/container_basic/topology.png and b/test/case/infix_containers/container_basic/topology.png differ diff --git a/test/case/misc/operational_all/Readme.adoc b/test/case/misc/operational_all/Readme.adoc index 6ed0acbe..efb5cd54 100644 --- a/test/case/misc/operational_all/Readme.adoc +++ b/test/case/misc/operational_all/Readme.adoc @@ -1,22 +1,23 @@ -=== Get all operational +=== Get operational ==== Description -Basic test just to get all operational. +Basic test just to get operational from test-config without errors. ==== Topology ifdef::topdoc[] -image::../../test/case/misc/operational_all/topology.png[Get all operational topology] +image::../../test/case/misc/operational_all/topology.png[Get operational topology] endif::topdoc[] ifndef::topdoc[] ifdef::testgroup[] -image::operational_all/topology.png[Get all operational topology] +image::operational_all/topology.png[Get operational topology] endif::testgroup[] ifndef::testgroup[] -image::topology.png[Get all operational topology] +image::topology.png[Get operational topology] endif::testgroup[] endif::topdoc[] ==== Test sequence . Set up topology and attach to target DUT -. Get all Operational data from 'target' +. Copy test-config to running configuration +. Get all Operational data from 'target', verify there are no errors <<< diff --git a/test/case/misc/operational_all/test.py b/test/case/misc/operational_all/test.py index 0b446379..aec0f188 100755 --- a/test/case/misc/operational_all/test.py +++ b/test/case/misc/operational_all/test.py @@ -2,9 +2,9 @@ # Test that it is possible to get all operational data """ -Get all operational +Get operational -Basic test just to get all operational. +Basic test just to get operational from test-config without errors. """ import infamy import infamy.iface as iface @@ -14,7 +14,10 @@ with infamy.Test() as test: env = infamy.Env() target = env.attach("target", "mgmt") - with test.step("Get all Operational data from 'target'"): + with test.step("Copy test-config to running configuration"): + pass + + with test.step("Get all Operational data from 'target', verify there are no errors"): target.get_data(parse=False) test.succeed() diff --git a/test/case/misc/operational_all/topology.png b/test/case/misc/operational_all/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/misc/operational_all/topology.png and b/test/case/misc/operational_all/topology.png differ diff --git a/test/case/misc/start_from_startup/Readme.adoc b/test/case/misc/start_from_startup/Readme.adoc index 15f0801f..fc8d5294 100644 --- a/test/case/misc/start_from_startup/Readme.adoc +++ b/test/case/misc/start_from_startup/Readme.adoc @@ -18,7 +18,8 @@ endif::topdoc[] . Initialize . Configure . Reboot and wait for the unit to come back -. Verify hostname +. Verify user admin is now in wheel group +. Verify user admin is now in sys-cli group <<< diff --git a/test/case/misc/start_from_startup/test.py b/test/case/misc/start_from_startup/test.py index 5c8a6698..92a0c967 100755 --- a/test/case/misc/start_from_startup/test.py +++ b/test/case/misc/start_from_startup/test.py @@ -9,12 +9,6 @@ with infamy.Test() as test: target = env.attach("target", "mgmt") with test.step("Configure"): - target.put_config_dict("ietf-system", { - "system": { - "hostname": "test" - } - }) - target.delete_xpath("/ietf-hardware:hardware/component") target.copy("running", "startup") with test.step("Reboot and wait for the unit to come back"): @@ -23,10 +17,15 @@ with infamy.Test() as test: target.reboot() if not wait_boot(target, env): test.fail() - target = env.attach("target", "mgmt", test_default=False) + target = env.attach("target", "mgmt", test_reset=False) + tgtssh = env.attach("target", "mgmt", "ssh") - with test.step("Verify hostname"): - data = target.get_dict("/ietf-system:system/hostname") - assert data["system"]["hostname"] == "test" + with test.step("Verify user admin is now in wheel group"): + if not tgtssh.runsh("grep wheel /etc/group | grep 'admin'"): + test.fail() + + with test.step("Verify user admin is now in sys-cli group"): + if not tgtssh.runsh("grep sys-cli /etc/group | grep 'admin'"): + test.fail() test.succeed() diff --git a/test/case/misc/start_from_startup/topology.png b/test/case/misc/start_from_startup/topology.png index 21661c18..a9abc191 100644 Binary files a/test/case/misc/start_from_startup/topology.png and b/test/case/misc/start_from_startup/topology.png differ diff --git a/test/infamy/topologies/1x1.dot b/test/infamy/topologies/1x1.dot index 5acfcc57..d841c63c 100644 --- a/test/infamy/topologies/1x1.dot +++ b/test/infamy/topologies/1x1.dot @@ -7,7 +7,7 @@ graph "1x1" { edge [color="cornflowerblue", penwidth="2"]; host [ - label="host | { tgt }", + label="host | { mgmt }", pos="0,12!", kind="controller", ]; @@ -19,5 +19,5 @@ graph "1x1" { kind="infix", ]; - host:tgt -- target:mgmt [kind=mgmt] + host:mgmt -- target:mgmt [kind=mgmt, color="lightgray"] }