TEST REPORT

SUMMARY

Description               "scenario_inter_vlan" result report

Start Time                   2026-09-23T19:05:53.690303

Index Scenario Time Stamp Pass/Fail
1 Print Topology Image 19:06:44 1 / 0
2 Session Check 19:06:44 6 / 0
3 Check SONiC Version 19:06:44 2 / 0
4 Create VLAN 19:06:55 10 / 0
5 Add VLAN Member & Assign IP Address to VLAN 19:07:51 14 / 0
6 Assign IP Address to Host & Add Default GW 19:09:10 20 / 0
7 Test Network-link 19:09:10 1 / 0

SESSIONS

Name Connection Type Host Address Port Login User
H-1ssh10.250.0.10122ubuntu
H-2ssh10.250.0.10222ubuntu
H-3ssh10.250.0.10322ubuntu
H-4ssh10.250.0.10422ubuntu
SW-1ssh10.250.0.1022admin
SW-2ssh10.250.0.1122admin

RESULT

Index Action Session Time Stamp Pass/Fail
1 print topo img caller 19:06:44 Pass
Parameter topo-L2-Inter-VLAN.jpg
Response /data/NetAutoTestFW/tests/converter_report/topology_img/topo-L2-Inter-VLAN.jpg
 
2 session check SW-1 SW-1 19:06:44 Pass
Parameter None
Response Linux SW-1 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 (2025-01-02) x86_64
You are on
____ ___ _ _ _ ____
/ ___| / _ \| \ | (_)/ ___|
\___ \| | | | \| | | |
___) | |_| | |\ | | |___
|____/ \___/|_| \_|_|\____|

-- Software for Open Networking in the Cloud --

Unauthorized access and/or use are prohibited.
All access and/or use are subject to monitoring.

Help: https://sonic-net.github.io/SONiC/

Last login: Wed Sep 23 18:53:40 2026

admin@SW-1:~$
3 session check SW-2 SW-2 19:06:44 Pass
Parameter None
Response Linux SW-2 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 (2025-01-02) x86_64
You are on
____ ___ _ _ _ ____
/ ___| / _ \| \ | (_)/ ___|
\___ \| | | | \| | | |
___) | |_| | |\ | | |___
|____/ \___/|_| \_|_|\____|

-- Software for Open Networking in the Cloud --

Unauthorized access and/or use are prohibited.
All access and/or use are subject to monitoring.

Help: https://sonic-net.github.io/SONiC/

Last login: Wed Sep 23 18:53:47 2026

admin@SW-2:~$
4 session check H-1 H-1 19:06:44 Pass
Parameter None
Response Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro

System information as of Wed Sep 23 10:06:29 UTC 2026

System load: 0.01 Processes: 144
Usage of /: 9.0% of 19.20GB Users logged in: 0
Memory usage: 6% IPv4 address for mgmt: 10.250.0.101
Swap usage: 0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '22.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


*** System restart required ***
ubuntu@H-1:~$
5 session check H-2 H-2 19:06:44 Pass
Parameter None
Response Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro

System information as of Wed Sep 23 10:06:32 UTC 2026

System load: 0.0 Processes: 143
Usage of /: 9.0% of 19.20GB Users logged in: 0
Memory usage: 6% IPv4 address for mgmt: 10.250.0.102
Swap usage: 0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '22.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


*** System restart required ***
ubuntu@H-2:~$
6 session check H-3 H-3 19:06:44 Pass
Parameter None
Response Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro

System information as of Wed Sep 23 10:06:34 UTC 2026

System load: 0.0 Processes: 143
Usage of /: 9.0% of 19.20GB Users logged in: 0
Memory usage: 6% IPv4 address for mgmt: 10.250.0.103
Swap usage: 0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '22.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


*** System restart required ***
ubuntu@H-3:~$
7 session check H-4 H-4 19:06:44 Pass
Parameter None
Response Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro

System information as of Wed Sep 23 10:06:36 UTC 2026

System load: 0.0 Processes: 143
Usage of /: 9.0% of 19.20GB Users logged in: 0
Memory usage: 6% IPv4 address for mgmt: 10.250.0.104
Swap usage: 0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '22.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


*** System restart required ***
ubuntu@H-4:~$
 
8 Check SONiC OS Version SW-1 19:06:44 Pass
Parameter ~$ show version
Response
SONiC Software Version: SONiC.202505.926279-b7206d85a
SONiC OS Version: 12
Distribution: Debian 12.11
Kernel: 6.1.0-29-2-amd64
Build commit: b7206d85a
Build date: Tue Aug 19 14:16:31 UTC 2025
Built by: azureuser@d674752fc000000

Platform: x86_64-kvm_x86_64-r0
HwSKU: Etri-SONiC
ASIC: vs
ASIC Count: 1
Serial Number: N/A
Model Number: N/A
Hardware Revision: N/A
Uptime: 19:06:44 up 17 min, 1 user, load average: 1.18, 1.77, 1.41
Date: Wed 23 Sep 2026 19:06:44

Docker images:
REPOSITORY TAG IMAGE ID SIZE
docker-macsec 202505.926279-b7206d85a eb3fac1f1e14 347MB
docker-macsec latest eb3fac1f1e14 347MB
docker-orchagent 202505.926279-b7206d85a 1d3a6e9b7605 356MB
docker-orchagent latest 1d3a6e9b7605 356MB
docker-sflow 202505.926279-b7206d85a f7c21d48ff02 345MB
docker-sflow latest f7c21d48ff02 345MB
docker-teamd 202505.926279-b7206d85a 219394382f06 344MB
docker-teamd latest 219394382f06 344MB
docker-fpm-frr 202505.926279-b7206d85a 231b5d766152 393MB
docker-fpm-frr latest 231b5d766152 393MB
docker-nat 202505.926279-b7206d85a 553569c2ed1a 347MB
docker-nat latest 553569c2ed1a 347MB
docker-dash-ha 202505.926279-b7206d85a eadcbe8a318f 357MB
docker-dash-ha latest eadcbe8a318f 357MB
docker-syncd-vs 202505.926279-b7206d85a d6f77d7d5c73 2.18GB
docker-syncd-vs latest d6f77d7d5c73 2.18GB
docker-gbsyncd-vs 202505.926279-b7206d85a e1b2e95f057b 2.18GB
docker-gbsyncd-vs latest e1b2e95f057b 2.18GB
docker-sonic-bmp 202505.926279-b7206d85a 773e76990a92 315MB
docker-sonic-bmp latest 773e76990a92 315MB
docker-dhcp-relay 202505.926279-b7206d85a b82ba73b313a 323MB
docker-dhcp-relay latest b82ba73b313a 323MB
docker-platform-monitor 202505.926279-b7206d85a dff6c6e2ea25 447MB
docker-platform-monitor latest dff6c6e2ea25 447MB
docker-snmp 202505.926279-b7206d85a f813952ac4d7 358MB
docker-snmp latest f813952ac4d7 358MB
docker-router-advertiser 202505.926279-b7206d85a e8cbc5b10fff 314MB
docker-router-advertiser latest e8cbc5b10fff 314MB
docker-mux 202505.926279-b7206d85a a6ccc3ca8b81 366MB
docker-mux latest a6ccc3ca8b81 366MB
docker-gnmi-watchdog 202505.926279-b7206d85a 9871849025e5 314MB
docker-gnmi-watchdog latest 9871849025e5 314MB
docker-lldp 202505.926279-b7206d85a ee7a4d514875 360MB
docker-lldp latest ee7a4d514875 360MB
docker-sonic-gnmi 202505.926279-b7206d85a 9f8ed5aefa5d 427MB
docker-sonic-gnmi latest 9f8ed5aefa5d 427MB
docker-bmp-watchdog 202505.926279-b7206d85a 62eb09ee3d7e 314MB
docker-bmp-watchdog latest 62eb09ee3d7e 314MB
docker-eventd 202505.926279-b7206d85a b5707e85d1ec 314MB
docker-eventd latest b5707e85d1ec 314MB
docker-database 202505.926279-b7206d85a 6d85154e4f52 321MB
docker-database latest 6d85154e4f52 321MB
docker-auditd-watchdog 202505.926279-b7206d85a 92489e94897e 314MB
docker-auditd-watchdog latest 92489e94897e 314MB
docker-auditd 202505.926279-b7206d85a 5e7f418566b0 314MB
docker-auditd latest 5e7f418566b0 314MB
docker-dash-engine 202505.926279-b7206d85a 9b719283bb99 697MB
docker-dash-engine latest 9b719283bb99 697MB
docker-sonic-mgmt-framework 202505.926279-b7206d85a 347d1879e56e 403MB
docker-sonic-mgmt-framework latest 347d1879e56e 403MB
docker-sysmgr 202505.926279-b7206d85a acdc8191fd32 326MB
docker-sysmgr latest acdc8191fd32 326MB
Judgement Success

inter-conditional operator : or
contain string: SONiC OS Version: 12
contain string: SONiC Software Version: SONiC.master.775830-a7eb965c8
not contain string: Error:
9 Check SONiC OS Version SW-2 19:06:49 Pass
Parameter ~$ show version
Response
SONiC Software Version: SONiC.202505.926279-b7206d85a
SONiC OS Version: 12
Distribution: Debian 12.11
Kernel: 6.1.0-29-2-amd64
Build commit: b7206d85a
Build date: Tue Aug 19 14:16:31 UTC 2025
Built by: azureuser@d674752fc000000

Platform: x86_64-kvm_x86_64-r0
HwSKU: Etri-SONiC
ASIC: vs
ASIC Count: 1
Serial Number: N/A
Model Number: N/A
Hardware Revision: N/A
Uptime: 19:06:49 up 17 min, 1 user, load average: 0.50, 1.49, 1.29
Date: Wed 23 Sep 2026 19:06:49

Docker images:
REPOSITORY TAG IMAGE ID SIZE
docker-macsec 202505.926279-b7206d85a eb3fac1f1e14 347MB
docker-macsec latest eb3fac1f1e14 347MB
docker-orchagent 202505.926279-b7206d85a 1d3a6e9b7605 356MB
docker-orchagent latest 1d3a6e9b7605 356MB
docker-sflow 202505.926279-b7206d85a f7c21d48ff02 345MB
docker-sflow latest f7c21d48ff02 345MB
docker-teamd 202505.926279-b7206d85a 219394382f06 344MB
docker-teamd latest 219394382f06 344MB
docker-fpm-frr 202505.926279-b7206d85a 231b5d766152 393MB
docker-fpm-frr latest 231b5d766152 393MB
docker-nat 202505.926279-b7206d85a 553569c2ed1a 347MB
docker-nat latest 553569c2ed1a 347MB
docker-dash-ha 202505.926279-b7206d85a eadcbe8a318f 357MB
docker-dash-ha latest eadcbe8a318f 357MB
docker-gbsyncd-vs 202505.926279-b7206d85a e1b2e95f057b 2.18GB
docker-gbsyncd-vs latest e1b2e95f057b 2.18GB
docker-syncd-vs 202505.926279-b7206d85a d6f77d7d5c73 2.18GB
docker-syncd-vs latest d6f77d7d5c73 2.18GB
docker-sonic-bmp 202505.926279-b7206d85a 773e76990a92 315MB
docker-sonic-bmp latest 773e76990a92 315MB
docker-dhcp-relay 202505.926279-b7206d85a b82ba73b313a 323MB
docker-dhcp-relay latest b82ba73b313a 323MB
docker-platform-monitor 202505.926279-b7206d85a dff6c6e2ea25 447MB
docker-platform-monitor latest dff6c6e2ea25 447MB
docker-snmp 202505.926279-b7206d85a f813952ac4d7 358MB
docker-snmp latest f813952ac4d7 358MB
docker-router-advertiser 202505.926279-b7206d85a e8cbc5b10fff 314MB
docker-router-advertiser latest e8cbc5b10fff 314MB
docker-mux 202505.926279-b7206d85a a6ccc3ca8b81 366MB
docker-mux latest a6ccc3ca8b81 366MB
docker-gnmi-watchdog 202505.926279-b7206d85a 9871849025e5 314MB
docker-gnmi-watchdog latest 9871849025e5 314MB
docker-lldp 202505.926279-b7206d85a ee7a4d514875 360MB
docker-lldp latest ee7a4d514875 360MB
docker-sonic-gnmi 202505.926279-b7206d85a 9f8ed5aefa5d 427MB
docker-sonic-gnmi latest 9f8ed5aefa5d 427MB
docker-bmp-watchdog 202505.926279-b7206d85a 62eb09ee3d7e 314MB
docker-bmp-watchdog latest 62eb09ee3d7e 314MB
docker-eventd 202505.926279-b7206d85a b5707e85d1ec 314MB
docker-eventd latest b5707e85d1ec 314MB
docker-database 202505.926279-b7206d85a 6d85154e4f52 321MB
docker-database latest 6d85154e4f52 321MB
docker-auditd-watchdog 202505.926279-b7206d85a 92489e94897e 314MB
docker-auditd-watchdog latest 92489e94897e 314MB
docker-auditd 202505.926279-b7206d85a 5e7f418566b0 314MB
docker-auditd latest 5e7f418566b0 314MB
docker-dash-engine 202505.926279-b7206d85a 9b719283bb99 697MB
docker-dash-engine latest 9b719283bb99 697MB
docker-sonic-mgmt-framework 202505.926279-b7206d85a 347d1879e56e 403MB
docker-sonic-mgmt-framework latest 347d1879e56e 403MB
docker-sysmgr 202505.926279-b7206d85a acdc8191fd32 326MB
docker-sysmgr latest acdc8191fd32 326MB
Judgement Success

inter-conditional operator : or
contain string: SONiC OS Version: 12
contain string: SONiC Software Version: SONiC.master.775830-a7eb965c8
not contain string: Error:
 
10 Check VLAN exist on SW-1 SW-1 19:06:55 Pass
Parameter ~$ show vlan config
Response Name VID Member Mode
------ ----- -------- ------
Judgement Success

inter-conditional operator : and

not contain string: Error:
11 Check VLAN exist on SW-2 SW-2 19:07:01 Pass
Parameter ~$ show vlan config
Response Name VID Member Mode
------ ----- -------- ------
Judgement Success

inter-conditional operator : and

not contain string: Error:
12 Create VLAN 10 on SW-1 SW-1 19:07:06 Pass
Parameter ~$ sudo config vlan add 10
Response Success
13 Create VLAN 10 on SW-1 SW-1 19:07:12 Pass
Parameter ~$ show vlan config
Response Name VID Member Mode
------ ----- -------- ------
Vlan10 10
Judgement Success

inter-conditional operator : and
contain string: Vlan10 10
not contain string: Error:
14 Create VLAN 10 on SW-2 SW-2 19:07:17 Pass
Parameter ~$ sudo config vlan add 10
Response Success
15 Create VLAN 10 on SW-2 SW-2 19:07:23 Pass
Parameter ~$ show vlan config
Response Name VID Member Mode
------ ----- -------- ------
Vlan10 10
Judgement Success

inter-conditional operator : and
contain string: Vlan10 10
not contain string: Error:
16 Create VLAN 20 on SW-1 SW-1 19:07:28 Pass
Parameter ~$ sudo config vlan add 20
Response Success
17 Create VLAN 20 on SW-1 SW-1 19:07:34 Pass
Parameter ~$ show vlan config
Response Name VID Member Mode
------ ----- -------- ------
Vlan10 10
Vlan20 20
Judgement Success

inter-conditional operator : and
contain string: Vlan20 20
not contain string: Error:
18 Create VLAN 20 on SW-2 SW-2 19:07:40 Pass
Parameter ~$ sudo config vlan add 20
Response Success
19 Create VLAN 20 on SW-2 SW-2 19:07:45 Pass
Parameter ~$ show vlan config
Response Name VID Member Mode
------ ----- -------- ------
Vlan10 10
Vlan20 20
Judgement Success

inter-conditional operator : and
contain string: Vlan20 20
not contain string: Error:
 
20 Add VLAN 10 & VLAN 20 member on SW-1 SW-1 19:07:51 Pass
Parameter ~$ sudo config vlan member add 10 Ethernet8
Response Success
21 Add VLAN 10 & VLAN 20 member on SW-1 SW-1 19:07:57 Pass
Parameter ~$ sudo config vlan member add 20 Ethernet8
Response Success
22 Add VLAN 10 & VLAN 20 member on SW-1 SW-1 19:08:02 Pass
Parameter ~$ sudo config vlan member add 10 -u Ethernet16
Response Success
23 Add VLAN 10 & VLAN 20 member on SW-1 SW-1 19:08:08 Pass
Parameter ~$ sudo config vlan member add 20 -u Ethernet20
Response Success
24 Add VLAN 10 & VLAN 20 member on SW-1 SW-1 19:08:13 Pass
Parameter ~$ show vlan config
Response Name VID Member Mode
------ ----- ---------- --------
Vlan10 10 Ethernet8 tagged
Vlan10 10 Ethernet16 untagged
Vlan20 20 Ethernet8 tagged
Vlan20 20 Ethernet20 untagged
Judgement Success

inter-conditional operator : and
contain string: Vlan10 10 Ethernet8 tagged
contain string: Vlan10 10 Ethernet16 untagged
contain string: Vlan20 20 Ethernet8 tagged
contain string: Vlan20 20 Ethernet20 untagged
not contain string: Error:
25 Add VLAN 10 IP Address SW-1 19:08:19 Pass
Parameter ~$ sudo config interface ip add Vlan10 10.0.100.1/24
Response Success
26 Add VLAN 10 IP Address SW-1 19:08:25 Pass
Parameter ~$ sudo config interface ip add Vlan20 10.0.200.1/24
Response Success
27 Add VLAN 10 & VLAN 20 member on SW-2 SW-2 19:08:30 Pass
Parameter ~$ sudo config vlan member add 10 Ethernet4
Response Success
28 Add VLAN 10 & VLAN 20 member on SW-2 SW-2 19:08:36 Pass
Parameter ~$ sudo config vlan member add 20 Ethernet4
Response Success
29 Add VLAN 10 & VLAN 20 member on SW-2 SW-2 19:08:41 Pass
Parameter ~$ sudo config vlan member add 10 -u Ethernet12
Response Success
30 Add VLAN 10 & VLAN 20 member on SW-2 SW-2 19:08:47 Pass
Parameter ~$ sudo config vlan member add 20 -u Ethernet16
Response Success
31 Add VLAN 10 & VLAN 20 member on SW-2 SW-2 19:08:53 Pass
Parameter ~$ show vlan config
Response Name VID Member Mode
------ ----- ---------- --------
Vlan10 10 Ethernet4 tagged
Vlan10 10 Ethernet12 untagged
Vlan20 20 Ethernet4 tagged
Vlan20 20 Ethernet16 untagged
Judgement Success

inter-conditional operator : and
contain string: Vlan10 10 Ethernet4 tagged
contain string: Vlan10 10 Ethernet12 untagged
contain string: Vlan20 20 Ethernet4 tagged
contain string: Vlan20 20 Ethernet16 untagged
not contain string: Error:
32 Add VLAN 10 IP Address SW-2 19:08:58 Pass
Parameter ~$ sudo config interface ip add Vlan10 10.0.100.1/24
Response Success
33 Add VLAN 10 IP Address SW-2 19:09:04 Pass
Parameter ~$ sudo config interface ip add Vlan20 10.0.200.1/24
Response Success
 
34 Set Eth1 IPv4 Address on H-1 H-1 19:09:10 Pass
Parameter ~$ sudo ip address add 10.0.100.10/24 dev Eth1
Response Success
35 Set Eth1 IPv4 Address on H-1 H-1 19:09:10 Pass
Parameter ~$ ip address show Eth1
Response 3: Eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:10:02:01 brd ff:ff:ff:ff:ff:ff
inet 10.0.100.10/24 brd 10.0.100.255 scope global Eth1
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe10:201/64 scope link
valid_lft forever preferred_lft forever
Judgement Success

inter-conditional operator : and
contain string: inet 10.0.100.10/24
not contain string: DOWN
36 Change default gw H-1 19:09:10 Pass
Parameter ~$ sudo ip route del default
Response Success
37 Change default gw H-1 19:09:10 Pass
Parameter ~$ sudo ip route add default via 10.0.100.1 dev Eth1
Response Success
38 Change default gw H-1 19:09:10 Pass
Parameter ~$ ip route show
Response default via 10.0.100.1 dev Eth1
10.0.100.0/24 dev Eth1 proto kernel scope link src 10.0.100.10
10.250.0.0/24 dev mgmt proto kernel scope link src 10.250.0.101
40.0.100.0/24 via 10.0.100.1 dev Eth1 proto static
Judgement Success

inter-conditional operator : and
contain string: default via 10.0.100.1 dev Eth1
not contain string: default via 10.250.0.1 dev mgmt proto static
39 Set Eth1 IPv4 Address on H-2 H-2 19:09:10 Pass
Parameter ~$ sudo ip address add 10.0.100.11/24 dev Eth1
Response Success
40 Set Eth1 IPv4 Address on H-2 H-2 19:09:10 Pass
Parameter ~$ ip address show Eth1
Response 3: Eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:10:02:02 brd ff:ff:ff:ff:ff:ff
inet 10.0.100.11/24 brd 10.0.100.255 scope global Eth1
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe10:202/64 scope link
valid_lft forever preferred_lft forever
Judgement Success

inter-conditional operator : and
contain string: inet 10.0.100.11/24
not contain string: DOWN
41 Change default gw H-2 19:09:10 Pass
Parameter ~$ sudo ip route del default
Response Success
42 Change default gw H-2 19:09:10 Pass
Parameter ~$ sudo ip route add default via 10.0.100.1 dev Eth1
Response Success
43 Change default gw H-2 19:09:10 Pass
Parameter ~$ ip route show
Response default via 10.0.100.1 dev Eth1
10.0.100.0/24 dev Eth1 proto kernel scope link src 10.0.100.11
10.250.0.0/24 dev mgmt proto kernel scope link src 10.250.0.102
40.0.100.0/24 via 10.0.100.1 dev Eth1 proto static
Judgement Success

inter-conditional operator : and
contain string: default via 10.0.100.1 dev Eth1
not contain string: default via 10.250.0.1 dev mgmt proto static
44 Set Eth1 IPv4 Address on H-3 H-3 19:09:10 Pass
Parameter ~$ sudo ip address add 10.0.200.10/24 dev Eth1
Response Success
45 Set Eth1 IPv4 Address on H-3 H-3 19:09:10 Pass
Parameter ~$ ip address show Eth1
Response 3: Eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:10:02:03 brd ff:ff:ff:ff:ff:ff
inet 10.0.100.12/24 brd 10.0.100.255 scope global Eth1
valid_lft forever preferred_lft forever
inet 10.0.200.10/24 scope global Eth1
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe10:203/64 scope link
valid_lft forever preferred_lft forever
Judgement Success

inter-conditional operator : and
contain string: inet 10.0.200.10/24
not contain string: DOWN
46 Change default gw H-3 19:09:10 Pass
Parameter ~$ sudo ip route del default
Response Success
47 Change default gw H-3 19:09:10 Pass
Parameter ~$ sudo ip route add default via 10.0.200.1 dev Eth1
Response Success
48 Change default gw H-3 19:09:10 Pass
Parameter ~$ ip route show
Response default via 10.0.200.1 dev Eth1
10.0.100.0/24 dev Eth1 proto kernel scope link src 10.0.100.12
10.0.200.0/24 dev Eth1 proto kernel scope link src 10.0.200.10
10.250.0.0/24 dev mgmt proto kernel scope link src 10.250.0.103
40.0.100.0/24 via 10.0.100.1 dev Eth1 proto static
Judgement Success

inter-conditional operator : and
contain string: default via 10.0.200.1 dev Eth1
not contain string: default via 10.250.0.1 dev mgmt proto static
49 Set Eth1 IPv4 Address on H-4 H-4 19:09:10 Pass
Parameter ~$ sudo ip address add 10.0.200.11/24 dev Eth1
Response Success
50 Set Eth1 IPv4 Address on H-4 H-4 19:09:10 Pass
Parameter ~$ ip address show Eth1
Response 3: Eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:10:02:04 brd ff:ff:ff:ff:ff:ff
inet 10.0.100.13/24 brd 10.0.100.255 scope global Eth1
valid_lft forever preferred_lft forever
inet 10.0.200.11/24 scope global Eth1
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe10:204/64 scope link
valid_lft forever preferred_lft forever
Judgement Success

inter-conditional operator : and
contain string: inet 10.0.200.11/24
not contain string: DOWN
51 Change default gw H-4 19:09:10 Pass
Parameter ~$ sudo ip route del default
Response Success
52 Change default gw H-4 19:09:10 Pass
Parameter ~$ sudo ip route add default via 10.0.200.1 dev Eth1
Response Success
53 Change default gw H-4 19:09:10 Pass
Parameter ~$ ip route show
Response default via 10.0.200.1 dev Eth1
10.0.100.0/24 dev Eth1 proto kernel scope link src 10.0.100.13
10.0.200.0/24 dev Eth1 proto kernel scope link src 10.0.200.11
10.250.0.0/24 dev mgmt proto kernel scope link src 10.250.0.104
40.0.100.0/24 via 10.0.100.1 dev Eth1 proto static
Judgement Success

inter-conditional operator : and
contain string: default via 10.0.200.1 dev Eth1
not contain string: default via 10.250.0.1 dev mgmt proto static
 
54 Ping from H-1 to H-2 H-1 19:09:10 Pass
Parameter ~$ ping -c 4 10.0.100.11
Response PING 10.0.100.11 (10.0.100.11) 56(84) bytes of data.
64 bytes from 10.0.100.11: icmp_seq=1 ttl=64 time=5.16 ms
64 bytes from 10.0.100.11: icmp_seq=2 ttl=64 time=2.16 ms
64 bytes from 10.0.100.11: icmp_seq=3 ttl=64 time=2.33 ms
64 bytes from 10.0.100.11: icmp_seq=4 ttl=64 time=2.02 ms

--- 10.0.100.11 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.015/2.915/5.159/1.300 ms
Judgement Success

inter-conditional operator : and
contain string: 64 bytes from 10.0.100.11
contain string: 4 packets transmitted, 4 received, 0% packet loss
not contain string: From 10.0.100.10
 
Parameter AssertionError: Test failed after 5 retries for command: ping -c 4 -I Eth1 10.0.200.10
Cause duthosts = [<MultiAsicSonicHost SW-1>, <MultiAsicSonicHost SW-2>]
ubuntus = [<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c9122e0>, <tests.common.devices.ubuntu.UbuntuHost object at ...devices.ubuntu.UbuntuHost object at 0x75ed7c9127c0>, <tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c912670>]
vmhost = <tests.common.devices.vmhost.VMHost object at 0x75ed7ea467c0>
parse_scenario = <tests.common.parse_scenario.ParseScenario object at 0x75ed7e96fc70>
record_property = <function record_property.<locals>.append_property at 0x75ed7e9d6820>
reload_config = None
sonic_paramiko_ssh = (['SW-1', 'SW-2'], ['Linux SW-1 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 (2025-01-02) x86_64\r\nYou ar....\r\n\r\nHelp: https://sonic-net.github.io/SONiC/\r\n\r\nLast login: Wed Sep 23 18:53:47 2026\r\r\nadmin@SW-2:~$ '])
ubuntu_paramiko_ssh = (['H-1', 'H-2', 'H-3', 'H-4'], ["Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n\r\n * Document...vailable.\r\nRun 'do-release-upgrade' to upgrade to it.\r\n\r\n\r\n*** System restart required ***\r\nubuntu@H-4:~$ "])

def test_scenario(duthosts, ubuntus, vmhost, parse_scenario, record_property, reload_config, sonic_paramiko_ssh, ubuntu_paramiko_ssh):
sonicHostname, sonic_ssh_prompt = sonic_paramiko_ssh
ubuntuHostname, ubuntu_ssh_prompt = ubuntu_paramiko_ssh
> run_scenario(duthosts, ubuntus, vmhost, parse_scenario, record_property, reload_config, sonicHostname, sonic_ssh_prompt, ubuntuHostname, ubuntu_ssh_prompt)

duthosts = [<MultiAsicSonicHost SW-1>, <MultiAsicSonicHost SW-2>]
parse_scenario = <tests.common.parse_scenario.ParseScenario object at 0x75ed7e96fc70>
record_property = <function record_property.<locals>.append_property at 0x75ed7e9d6820>
reload_config = None
sonicHostname = ['SW-1', 'SW-2']
sonic_paramiko_ssh = (['SW-1', 'SW-2'],
['Linux SW-1 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 '
'(2025-01-02) x86_64\r\n'
'You are on\r\n'
' ____ ___ _ _ _ ____\r\n'
' / ___| / _ \\| \\ | (_)/ ___|\r\n'
' \\___ \\| | | | \\| | | |\r\n'
' ___) | |_| | |\\ | | |___\r\n'
' |____/ \\___/|_| \\_|_|\\____|\r\n'
'\r\n'
'-- Software for Open Networking in the Cloud --\r\n'
'\r\n'
'Unauthorized access and/or use are prohibited.\r\n'
'All access and/or use are subject to monitoring.\r\n'
'\r\n'
'Help: https://sonic-net.github.io/SONiC/\r\n'
'\r\n'
'Last login: Wed Sep 23 18:53:40 2026\r'
'\r\n'
'admin@SW-1:~$ ',
'Linux SW-2 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 '
'(2025-01-02) x86_64\r\n'
'You are on\r\n'
' ____ ___ _ _ _ ____\r\n'
' / ___| / _ \\| \\ | (_)/ ___|\r\n'
' \\___ \\| | | | \\| | | |\r\n'
' ___) | |_| | |\\ | | |___\r\n'
' |____/ \\___/|_| \\_|_|\\____|\r\n'
'\r\n'
'-- Software for Open Networking in the Cloud --\r\n'
'\r\n'
'Unauthorized access and/or use are prohibited.\r\n'
'All access and/or use are subject to monitoring.\r\n'
'\r\n'
'Help: https://sonic-net.github.io/SONiC/\r\n'
'\r\n'
'Last login: Wed Sep 23 18:53:47 2026\r'
'\r\n'
'admin@SW-2:~$ '])
sonic_ssh_prompt = ['Linux SW-1 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 '
'(2025-01-02) x86_64\r\n'
'You are on\r\n'
' ____ ___ _ _ _ ____\r\n'
' / ___| / _ \\| \\ | (_)/ ___|\r\n'
' \\___ \\| | | | \\| | | |\r\n'
' ___) | |_| | |\\ | | |___\r\n'
' |____/ \\___/|_| \\_|_|\\____|\r\n'
'\r\n'
'-- Software for Open Networking in the Cloud --\r\n'
'\r\n'
'Unauthorized access and/or use are prohibited.\r\n'
'All access and/or use are subject to monitoring.\r\n'
'\r\n'
'Help: https://sonic-net.github.io/SONiC/\r\n'
'\r\n'
'Last login: Wed Sep 23 18:53:40 2026\r'
'\r\n'
'admin@SW-1:~$ ',
'Linux SW-2 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 '
'(2025-01-02) x86_64\r\n'
'You are on\r\n'
' ____ ___ _ _ _ ____\r\n'
' / ___| / _ \\| \\ | (_)/ ___|\r\n'
' \\___ \\| | | | \\| | | |\r\n'
' ___) | |_| | |\\ | | |___\r\n'
' |____/ \\___/|_| \\_|_|\\____|\r\n'
'\r\n'
'-- Software for Open Networking in the Cloud --\r\n'
'\r\n'
'Unauthorized access and/or use are prohibited.\r\n'
'All access and/or use are subject to monitoring.\r\n'
'\r\n'
'Help: https://sonic-net.github.io/SONiC/\r\n'
'\r\n'
'Last login: Wed Sep 23 18:53:47 2026\r'
'\r\n'
'admin@SW-2:~$ ']
ubuntuHostname = ['H-1', 'H-2', 'H-3', 'H-4']
ubuntu_paramiko_ssh = (['H-1', 'H-2', 'H-3', 'H-4'],
['Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:29 UTC 2026\r\n'
'\r\n'
' System load: 0.01 Processes: 144\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.101\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-1:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:32 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.102\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-2:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:34 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.103\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-3:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:36 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.104\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-4:~$ '])
ubuntu_ssh_prompt = ['Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:29 UTC 2026\r\n'
'\r\n'
' System load: 0.01 Processes: 144\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.101\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-1:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:32 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.102\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-2:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:34 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.103\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-3:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:36 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.104\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-4:~$ ']
ubuntus = [<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c9122e0>,
<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c912790>,
<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c9127c0>,
<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c912670>]
vmhost = <tests.common.devices.vmhost.VMHost object at 0x75ed7ea467c0>

test_sonic/test_sonic.py:413:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

duthosts = [<MultiAsicSonicHost SW-1>, <MultiAsicSonicHost SW-2>]
ubuntus = [<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c9122e0>, <tests.common.devices.ubuntu.UbuntuHost object at ...devices.ubuntu.UbuntuHost object at 0x75ed7c9127c0>, <tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c912670>]
vmhost = <tests.common.devices.vmhost.VMHost object at 0x75ed7ea467c0>
parse_scenario = <tests.common.parse_scenario.ParseScenario object at 0x75ed7e96fc70>
record_property = <function record_property.<locals>.append_property at 0x75ed7e9d6820>
reload_config = None, sonicHostname = ['SW-1', 'SW-2']
sonic_ssh_prompt = ['Linux SW-1 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 (2025-01-02) x86_64\r\nYou are on\r\n ____ __...g.\r\n\r\nHelp: https://sonic-net.github.io/SONiC/\r\n\r\nLast login: Wed Sep 23 18:53:47 2026\r\r\nadmin@SW-2:~$ ']
ubuntuHostname = ['H-1', 'H-2', 'H-3', 'H-4']
ubuntu_ssh_prompt = ["Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n\r\n * Documentation: https://help.ubuntu.com...available.\r\nRun 'do-release-upgrade' to upgrade to it.\r\n\r\n\r\n*** System restart required ***\r\nubuntu@H-4:~$ "]

def run_scenario(duthosts, ubuntus, vmhost, parse_scenario, record_property, reload_config, sonicHostname, sonic_ssh_prompt, ubuntuHostname, ubuntu_ssh_prompt):
duthost = duthosts
ubuntu = ubuntus
server = vmhost

logger.info('test device hostname: {}'.format(duthost.hostname))
logger.info('server hostname: {}'.format(server.hostname))

# Parsing Scenario data
scenario = parse_scenario
logger.info('step 0) scenario_data:\n{}'.format(scenario))

# This Section, parsed data save to variable for test
for keys in scenario:
scenario_name = keys['scenario_name']
logger.info('\nstep 1) scenario name:{}'.format(scenario_name))
record_property("Scenario_name","{}".format(scenario_name))
for tasks in keys['steps']:
sub_scenario_name = tasks['name']
if scenario_name == "Print Topology Image":
topo_img_path = tasks['img_path']
topo_img_name = tasks['img_name']
sum_img_path = topo_img_path + '/' + topo_img_name

start_time = datetime.now().strftime('%H:%M:%S')

assert sum_img_path, record_property("Fail", "Fail")

record_property('Action', sub_scenario_name)
record_property('Session','caller')
record_property('Time Stamp',start_time)
record_property('Pass/Fail','Pass')
record_property('Parameter',topo_img_name)
record_property('Response',sum_img_path)

elif scenario_name == "Session Check":
session_node_name = tasks['node']
logger.info('nodes: {}'.format(session_node_name))


device = sonicHostname + ubuntuHostname
ssh_prompt = sonic_ssh_prompt + ubuntu_ssh_prompt

for dev, ssh in zip(device, ssh_prompt):
if dev == session_node_name:
logger.info('step 1)\nHostname:\n{}\nnode name:\n{}'.format(dev, session_node_name))
logger.info('step 2)\nssh_prompt:\n{}'.format(ssh))

start_time = datetime.now().strftime('%H:%M:%S')

assert dev == session_node_name, record_property("Fail", "Fail")
logger.info('step 3)\n pass')
record_property("Action", sub_scenario_name)
record_property("Session","{}".format(dev))
record_property("Time Stamp",start_time)
record_property("Pass/Fail","Pass")
record_property("Parameter","None")
record_property("Response","{}".format(ssh))

elif 'source' in tasks and 'packet' in tasks:
# Duck-typing: If a step has 'source' and 'packet', it is a Traffic Generation test
logger.info('\nstep 1) Traffic Generation test detected: {}'.format(sub_scenario_name))
start_time = datetime.now().strftime('%H:%M:%S')
execute_traffic_step(tasks, duthost, ubuntu)

# If it successfully returns without assertion failure, we record PASS
record_property("Action", sub_scenario_name)
record_property("Session", tasks['source']['node'])
record_property("Time Stamp", start_time)
record_property("Pass/Fail", "Pass")
record_property("Parameter", "Snappi TRex Traffic ({} pkts)".format(tasks['packet']['tx_packets']))
record_property("Response", "Traffic validation succeeded")
record_property("Judgement", "Success")

else:
node_name = tasks['node']
logger.info('\nstep 1-1) sub scenario name: {}\nnode name: {}'.format(sub_scenario_name, node_name))

if 'template' in tasks:
import yaml
from jinja2 import Template

scenario_path = getattr(parse_scenario, 'scenario_filename', '')
if "bgp/" in scenario_path or "bgp_policy/" in scenario_path:
ip_profile = "bgp_ip"
elif "ospf_routemap_redistribute/" in scenario_path:
ip_profile = "ospf_redist_ip"
else:
ip_profile = "common_ip"

if "vlan/" in scenario_path or "lacp/" in scenario_path or "ip/" in scenario_path:
start_daemons = False
else:
start_daemons = True

try:
with open("/data/NetAutoTestFW/ansible/vsonic_vtb", "r") as f:
vtb = yaml.safe_load(f)
ip_map = vtb['all']['children']['sonic_r']['vars'].get(ip_profile, {})
target_ips = ip_map.get(node_name, [])
except Exception as e:
logger.error(f"Failed to load IP profile from vsonic_vtb: {e}")
target_ips = []

template_path = tasks['template']
with open(f"/data/NetAutoTestFW/{template_path}", "r") as f:
template_content = f.read()

rendered = Template(template_content).render(ip_list=target_ips, start_daemons=start_daemons)
cmds = [cmd.strip() for cmd in rendered.strip().split('\n') if cmd.strip() and not cmd.strip().startswith('#')]

tasks['actions'] = [{'command': cmd} for cmd in cmds]
tasks['expect'] = {'mode': 'and', 'values': [[] for _ in cmds]}
tasks['not_expect'] = {'mode': 'and', 'values': [[] for _ in cmds]}

sub_scenario_actions = tasks['actions']
sub_scenario_expect = tasks.get('expect', {'mode': 'and', 'values': []})
sub_scenario_not_expect = tasks.get('not_expect', {'mode': 'and', 'values': []})
sub_scenario_retries = tasks.get('retries', 5)
sub_scenario_delay = tasks.get('delay', 1)

sub_sce_exp_mode = sub_scenario_expect.get('mode', 'and')
sub_sce_exp_values = sub_scenario_expect.get('values', [])
sub_sce_not_exp_values = sub_scenario_not_expect.get('values', [])

logger.info('\nstep 1-2) sub scenario actions: {}\nsub scenario expect mode: {}\nsub scenario expect values: {}\nsub scenario not expect values: {}\nsub scenario retries: {}\nsub scenario delay: {}'.format(sub_scenario_actions, sub_sce_exp_mode, sub_sce_exp_values, sub_sce_not_exp_values, sub_scenario_retries, sub_scenario_delay))

# This Section, command execute to SONiC Test Device
for dut in duthost:
if node_name == dut.hostname:
for act_command, expect_values, not_expect_values in zip(sub_scenario_actions, sub_sce_exp_values, sub_sce_not_exp_values):
logger.info('\nstep 1-3) act command: {}\nexpect values: {}\nnot expect values: {}'.format(act_command, expect_values, not_expect_values))

single_command = act_command.get('command')
timestamps = datetime.now().strftime('%H:%M:%S')
contain_str = '\n'.join("contain string: {}".format(v) for v in expect_values)
not_contain_str = '\n'.join("not contain string: {}".format(n) for n in not_expect_values)

# trace success function
trace_success = False
output = ""

# This Section, repeat until the output contains the intended value.
for attempt in range(sub_scenario_retries):
execute_cmd = dut.shell(single_command, module_ignore_errors=True)
time.sleep(5)
stdout = execute_cmd.get('stdout', '')
stderr = execute_cmd.get('stderr', '')
output = stdout + '\n' + stderr
nomalized_lines = [' '.join(line.split()) for line in output.splitlines()]

logger.info('\nexecute command result:\n{}'.format(output))
logger.info('\nexpect value in result:\n{}'.format(expect_values))

import re
if 'neighbor' in single_command and 'remote-as' in single_command:
match = re.search(r'neighbor\s+([0-9\.]+)\s+remote-as', single_command)
if match:
neighbor_ip = match.group(1)
logger.info(f"[{node_name}] Auto Ping Verification to neighbor: {neighbor_ip}")
ping_result = dut.shell(f"ping {neighbor_ip} -c 3", module_ignore_errors=True)
logger.info(f"[{node_name}] Ping result:\n{ping_result.get('stdout', '')}")
if ping_result.get('rc', -1) != 0:
logger.warning(f"[{node_name}] Ping failed to {neighbor_ip}")

expect_ok = False

if not expect_values:
expect_ok = True
elif sub_sce_exp_mode == "and":
expect_ok = all(any(val in line for line in nomalized_lines) for val in expect_values)
elif sub_sce_exp_mode == "or":
expect_ok = any(any(val in line for line in nomalized_lines) for val in expect_values)

not_expect_ok = not not_expect_values or all(all(val not in line for line in nomalized_lines) for val in not_expect_values)

condition_met = expect_ok and not_expect_ok

if condition_met:
logger.info('The expected value is included in the printed result.\noutput:\n{}'.format(output))

trace_success = True

if isinstance(output, str) and output.strip():
if not_expect_values == "":
exist_only_expect_values(sub_scenario_name, node_name, timestamps, single_command, output, sub_sce_exp_mode, contain_str, record_property)
elif not_expect_values != "" and expect_values == "":
exist_only_not_expect_values(sub_scenario_name, node_name, timestamps, single_command, output, sub_sce_exp_mode, not_contain_str, record_property)
elif not_expect_values != "" and expect_values != "":
exist_not_expect_and_expect_values(sub_scenario_name, node_name, timestamps, single_command, output, sub_sce_exp_mode, contain_str, not_contain_str, record_property)
else:
empty_expect_and_not_expect_values(sub_scenario_name, node_name, timestamps, single_command, record_property)
break
else:
logger.info('Contidion not met. Retrying in {} seconds...(({}/{} attempts)'.format(sub_scenario_delay, attempt + 1, sub_scenario_retries))
time.sleep(sub_scenario_delay)
if not trace_success:
# If generated AssertionError when test failed
error_message = "Test failed after {} retries for command: {}".format(sub_scenario_retries, single_command)
logger.error(error_message)
logger.error("Final output was:\n{}".format(output))
assert False, error_message

# This Section, When you are testing network-link on Test Device(SONiC), under line command to ubuntu host
for u_host in ubuntu:
if node_name == u_host.hostname:
for act_command, expect_values, not_expect_values in zip(sub_scenario_actions, sub_sce_exp_values, sub_sce_not_exp_values):
logger.info('\nstep 1-3) act command: {}\nexpect values: {}\nnot expect values: {}'.format(act_command, expect_values, not_expect_values))

single_command = act_command.get('command')
timestamps = datetime.now().strftime('%H:%M:%S')
contain_str = '\n'.join("contain string: {}".format(v) for v in expect_values)
not_contain_str = '\n'.join("not contain string: {}".format(n) for n in not_expect_values)

# trace success function
trace_success = False
output = ""

for attempt in range(sub_scenario_retries):
execute_cmd = u_host.shell(single_command)
output = execute_cmd.get('stdout', '')
nomalized_lines = [' '.join(line.split()) for line in output.splitlines()]

logger.info('\nexecute command result:\n{}'.format(output))
logger.info('\nexpect value in result:\n{}'.format(expect_values))

expect_ok = False

if not expect_values:
expect_ok = True
elif sub_sce_exp_mode == "and":
expect_ok = all(any(val in line for line in nomalized_lines) for val in expect_values)
elif sub_sce_exp_mode == "or":
expect_ok = any(any(val in line for line in nomalized_lines) for val in expect_values)

not_expect_ok = not not_expect_values or all(all(val not in line for line in nomalized_lines) for val in not_expect_values)

condition_met = expect_ok and not_expect_ok

if condition_met:
logger.info('The expected value is included in the printed result.\noutput:\n{}'.format(output))

trace_success = True

# Assert
if isinstance(output, str) and output.strip():
if not_expect_values == "":
exist_only_expect_values(sub_scenario_name, node_name, timestamps, single_command, output, sub_sce_exp_mode, contain_str, record_property)
elif not_expect_values != "" and expect_values == "":
exist_only_not_expect_values(sub_scenario_name, node_name, timestamps, single_command, output, sub_sce_exp_mode, not_contain_str, record_property)
elif not_expect_values != "" and expect_values != "":
exist_not_expect_and_expect_values(sub_scenario_name, node_name, timestamps, single_command, output, sub_sce_exp_mode, contain_str, not_contain_str, record_property)
else:
empty_expect_and_not_expect_values(sub_scenario_name, node_name, timestamps, single_command, record_property)
break
else:
logger.info('Contidion not met. Retrying in {} seconds...(({}/{} attempts)'.format(sub_scenario_delay, attempt + 1, sub_scenario_retries))
time.sleep(sub_scenario_delay)
if not trace_success:
# If generated AssertionError when test failed
error_message = "Test failed after {} retries for command: {}".format(sub_scenario_retries, single_command)
logger.error(error_message)
logger.error("Final output was:\n{}".format(output))
> assert False, error_message
E AssertionError: Test failed after 5 retries for command: ping -c 4 -I Eth1 10.0.200.10

act_command = {'command': 'ping -c 4 -I Eth1 10.0.200.10'}
attempt = 4
condition_met = False
contain_str = ('contain string: 64 bytes from 10.0.200.10\n'
'contain string: 4 packets transmitted, 4 received, 0% packet loss')
dev = 'H-4'
device = ['SW-1', 'SW-2', 'H-1', 'H-2', 'H-3', 'H-4']
dut = <MultiAsicSonicHost SW-2>
duthost = [<MultiAsicSonicHost SW-1>, <MultiAsicSonicHost SW-2>]
duthosts = [<MultiAsicSonicHost SW-1>, <MultiAsicSonicHost SW-2>]
error_message = 'Test failed after 5 retries for command: ping -c 4 -I Eth1 10.0.200.10'
execute_cmd = {'stderr': '',
'stdout': 'PING 10.0.200.10 (10.0.200.10) from 10.0.100.10 Eth1: 56(84) bytes '
'of data.\n'
'\n'
'--- 10.0.200.10 ping statistics ---\n'
'4 packets transmitted, 0 received, 100% packet loss, time 3064ms\n'
'\n'}
expect_ok = False
expect_values = ['64 bytes from 10.0.200.10',
'4 packets transmitted, 4 received, 0% packet loss']
keys = {'scenario_name': 'Test Network-link',
'steps': [{'actions': [{'command': 'ping -c 4 10.0.100.11'}],
'expect': {'mode': 'and',
'values': [['64 bytes from 10.0.100.11',
'4 packets transmitted, 4 received, 0% '
'packet loss']]},
'name': 'Ping from H-1 to H-2',
'node': 'H-1',
'not_expect': {'values': [['From 10.0.100.10']]}},
{'actions': [{'command': 'ping -c 4 -I Eth1 10.0.200.10'}],
'expect': {'mode': 'and',
'values': [['64 bytes from 10.0.200.10',
'4 packets transmitted, 4 received, 0% '
'packet loss']]},
'name': 'Ping from H-1 to H-3',
'node': 'H-1',
'not_expect': {'values': [['From 10.0.100.10']]}}]}
node_name = 'H-1'
nomalized_lines = ['PING 10.0.200.10 (10.0.200.10) from 10.0.100.10 Eth1: 56(84) bytes of data.',
'',
'--- 10.0.200.10 ping statistics ---',
'4 packets transmitted, 0 received, 100% packet loss, time 3064ms',
'']
not_contain_str = 'not contain string: From 10.0.100.10'
not_expect_ok = True
not_expect_values = ['From 10.0.100.10']
output = ('PING 10.0.200.10 (10.0.200.10) from 10.0.100.10 Eth1: 56(84) bytes of data.\n'
'\n'
'--- 10.0.200.10 ping statistics ---\n'
'4 packets transmitted, 0 received, 100% packet loss, time 3064ms\n'
'\n')
parse_scenario = <tests.common.parse_scenario.ParseScenario object at 0x75ed7e96fc70>
re = <module 're' from '/usr/lib/python3.8/re.py'>
record_property = <function record_property.<locals>.append_property at 0x75ed7e9d6820>
reload_config = None
scenario = <tests.common.parse_scenario.ParseScenario object at 0x75ed7e96fc70>
scenario_name = 'Test Network-link'
server = <tests.common.devices.vmhost.VMHost object at 0x75ed7ea467c0>
session_node_name = 'H-4'
single_command = 'ping -c 4 -I Eth1 10.0.200.10'
sonicHostname = ['SW-1', 'SW-2']
sonic_ssh_prompt = ['Linux SW-1 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 '
'(2025-01-02) x86_64\r\n'
'You are on\r\n'
' ____ ___ _ _ _ ____\r\n'
' / ___| / _ \\| \\ | (_)/ ___|\r\n'
' \\___ \\| | | | \\| | | |\r\n'
' ___) | |_| | |\\ | | |___\r\n'
' |____/ \\___/|_| \\_|_|\\____|\r\n'
'\r\n'
'-- Software for Open Networking in the Cloud --\r\n'
'\r\n'
'Unauthorized access and/or use are prohibited.\r\n'
'All access and/or use are subject to monitoring.\r\n'
'\r\n'
'Help: https://sonic-net.github.io/SONiC/\r\n'
'\r\n'
'Last login: Wed Sep 23 18:53:40 2026\r'
'\r\n'
'admin@SW-1:~$ ',
'Linux SW-2 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 '
'(2025-01-02) x86_64\r\n'
'You are on\r\n'
' ____ ___ _ _ _ ____\r\n'
' / ___| / _ \\| \\ | (_)/ ___|\r\n'
' \\___ \\| | | | \\| | | |\r\n'
' ___) | |_| | |\\ | | |___\r\n'
' |____/ \\___/|_| \\_|_|\\____|\r\n'
'\r\n'
'-- Software for Open Networking in the Cloud --\r\n'
'\r\n'
'Unauthorized access and/or use are prohibited.\r\n'
'All access and/or use are subject to monitoring.\r\n'
'\r\n'
'Help: https://sonic-net.github.io/SONiC/\r\n'
'\r\n'
'Last login: Wed Sep 23 18:53:47 2026\r'
'\r\n'
'admin@SW-2:~$ ']
ssh = ('Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:36 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.104\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-4:~$ ')
ssh_prompt = ['Linux SW-1 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 '
'(2025-01-02) x86_64\r\n'
'You are on\r\n'
' ____ ___ _ _ _ ____\r\n'
' / ___| / _ \\| \\ | (_)/ ___|\r\n'
' \\___ \\| | | | \\| | | |\r\n'
' ___) | |_| | |\\ | | |___\r\n'
' |____/ \\___/|_| \\_|_|\\____|\r\n'
'\r\n'
'-- Software for Open Networking in the Cloud --\r\n'
'\r\n'
'Unauthorized access and/or use are prohibited.\r\n'
'All access and/or use are subject to monitoring.\r\n'
'\r\n'
'Help: https://sonic-net.github.io/SONiC/\r\n'
'\r\n'
'Last login: Wed Sep 23 18:53:40 2026\r'
'\r\n'
'admin@SW-1:~$ ',
'Linux SW-2 6.1.0-29-2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 '
'(2025-01-02) x86_64\r\n'
'You are on\r\n'
' ____ ___ _ _ _ ____\r\n'
' / ___| / _ \\| \\ | (_)/ ___|\r\n'
' \\___ \\| | | | \\| | | |\r\n'
' ___) | |_| | |\\ | | |___\r\n'
' |____/ \\___/|_| \\_|_|\\____|\r\n'
'\r\n'
'-- Software for Open Networking in the Cloud --\r\n'
'\r\n'
'Unauthorized access and/or use are prohibited.\r\n'
'All access and/or use are subject to monitoring.\r\n'
'\r\n'
'Help: https://sonic-net.github.io/SONiC/\r\n'
'\r\n'
'Last login: Wed Sep 23 18:53:47 2026\r'
'\r\n'
'admin@SW-2:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:29 UTC 2026\r\n'
'\r\n'
' System load: 0.01 Processes: 144\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.101\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-1:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:32 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.102\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-2:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:34 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.103\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-3:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:36 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.104\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-4:~$ ']
start_time = '19:06:44'
stderr = ''
stdout = ''
sub_sce_exp_mode = 'and'
sub_sce_exp_values = [['64 bytes from 10.0.200.10',
'4 packets transmitted, 4 received, 0% packet loss']]
sub_sce_not_exp_values = [['From 10.0.100.10']]
sub_scenario_actions = [{'command': 'ping -c 4 -I Eth1 10.0.200.10'}]
sub_scenario_delay = 1
sub_scenario_expect = {'mode': 'and',
'values': [['64 bytes from 10.0.200.10',
'4 packets transmitted, 4 received, 0% packet loss']]}
sub_scenario_name = 'Ping from H-1 to H-3'
sub_scenario_not_expect = {'values': [['From 10.0.100.10']]}
sub_scenario_retries = 5
sum_img_path = '/data/NetAutoTestFW/tests/converter_report/topology_img/topo-L2-Inter-VLAN.jpg'
tasks = {'actions': [{'command': 'ping -c 4 -I Eth1 10.0.200.10'}],
'expect': {'mode': 'and',
'values': [['64 bytes from 10.0.200.10',
'4 packets transmitted, 4 received, 0% packet loss']]},
'name': 'Ping from H-1 to H-3',
'node': 'H-1',
'not_expect': {'values': [['From 10.0.100.10']]}}
timestamps = '19:09:13'
topo_img_name = 'topo-L2-Inter-VLAN.jpg'
topo_img_path = '/data/NetAutoTestFW/tests/converter_report/topology_img'
trace_success = False
u_host = <tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c9122e0>
ubuntu = [<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c9122e0>,
<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c912790>,
<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c9127c0>,
<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c912670>]
ubuntuHostname = ['H-1', 'H-2', 'H-3', 'H-4']
ubuntu_ssh_prompt = ['Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:29 UTC 2026\r\n'
'\r\n'
' System load: 0.01 Processes: 144\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.101\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-1:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:32 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.102\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-2:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:34 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.103\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-3:~$ ',
'Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-215-generic x86_64)\r\n'
'\r\n'
' * Documentation: https://help.ubuntu.com\r\n'
' * Management: https://landscape.canonical.com\r\n'
' * Support: https://ubuntu.com/pro\r\n'
'\r\n'
' System information as of Wed Sep 23 10:06:36 UTC 2026\r\n'
'\r\n'
' System load: 0.0 Processes: 143\r\n'
' Usage of /: 9.0% of 19.20GB Users logged in: 0\r\n'
' Memory usage: 6% IPv4 address for mgmt: 10.250.0.104\r\n'
' Swap usage: 0%\r\n'
'\r\n'
'\r\n'
'Expanded Security Maintenance for Applications is not enabled.\r\n'
'\r\n'
'0 updates can be applied immediately.\r\n'
'\r\n'
'Enable ESM Apps to receive additional future security updates.\r\n'
'See https://ubuntu.com/esm or run: sudo pro status\r\n'
'\r\n'
'\r\n'
'The list of available updates is more than a week old.\r\n'
'To check for new updates run: sudo apt update\r\n'
"New release '22.04.5 LTS' available.\r\n"
"Run 'do-release-upgrade' to upgrade to it.\r\n"
'\r\n'
'\r\n'
'*** System restart required ***\r\n'
'ubuntu@H-4:~$ ']
ubuntus = [<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c9122e0>,
<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c912790>,
<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c9127c0>,
<tests.common.devices.ubuntu.UbuntuHost object at 0x75ed7c912670>]
vmhost = <tests.common.devices.vmhost.VMHost object at 0x75ed7ea467c0>

test_sonic/test_sonic.py:356: AssertionError