Skip to content

Test#1

Merged
yutongzhang-microsoft merged 180 commits intofeature/skip/20220517from
master
Aug 1, 2022
Merged

Test#1
yutongzhang-microsoft merged 180 commits intofeature/skip/20220517from
master

Conversation

@yutongzhang-microsoft
Copy link
Copy Markdown
Owner

Description of PR

Summary:
Fixes # (issue)

Type of change

  • Bug fix
  • Testbed and Framework(new/improvement)
  • Test case(new/improvement)

Back port request

  • 201911
  • 202012

Approach

What is the motivation for this PR?

How did you do it?

How did you verify/test it?

Any platform specific information?

Supported testbed topology if it's a new test case?

Documentation

ZhaohuiS and others added 30 commits June 21, 2022 09:19
Check ICMP reachability of server and ptf for testbeds as well. Add several new columns for testbed health info table in Kusto.
The final data looks like this:

    [
        {
            "TestbedName": "vms1-1",
            "DutIP": "10.10.10.10",
            "ServerName": "server-1",
            "ServerIcmpReachability": 1,
            "DutName": "str-1",
            "DutIcmpReachability": 1,
            "PtfIP": "20.20.20.20",
            "ServerIP": "30.30.30.30",
            "DutConsoleReachability": null,
            "PtfName": "ptf-1",
            "DutSshReachability": null,
            "PtfIcmpReachability": 1
        }
    ]
How did you do it?
Improve health_checker.py to check icmp for all hosts in inventory files.
Then parse testbed.yaml file to get all testbeds.
Check the ping result of dut/server/ptf from output json file generated by devutils.
Each duthost has one row in testbed health info table in Kusto

How did you verify/test it?
Trigger testbed healht poller pipeline.

Signed-off-by: Zhaohui Sun <zhaohuisun@microsoft.com>
Approach
What is the motivation for this PR?
On dualtor testbed, test_radv_ipv6_ra complains about not able to find fixture cable_type.
The root cause is that request.getfixturevalue doesn't support parameterized fixtures.

How did you do it?
Direct call toggle_all_simulator_ports_to_upper_tor instead.

How did you verify/test it?
What is the motivation for this PR?
The output is different on master and 202012 with CLI "show mac -p <port>" while the <port> doesn't exist.

How did you do it?
Use "show mac" rather than "show mac -p <port>", and find the target mac from the output to see if the target mac exists.

How did you verify/test it?
Run pfc/test_unknown_mac.py

Signed-off-by: Kevin Wang <shengkaiwang@microsoft.com>
What is the motivation for this PR?
The t0-sonic pool has been fixed, so add it back to azp checker.

How did you do it?
Remove continueOnError in run-test-template.yml.

Signed-off-by: Ze Gan <ganze718@gmail.com>
* Fix junit xml parser failure in nightly test

What is the motivation for this PR?
We added start and end timestamp for testcases in test report, and we
will parse start and end timestamp in junit xml parser.
However, some tests will not contain start and end timestamp, but the
parser will directly parse report file without checking, so it will fail

How did you do it?
Paser parses start and end timestamp only if they exist

How did you verify/test it?
Run a test

Any platform specific information?
Supported testbed topology if it's a new test case?

* Fix expression error
What is the motivation for this PR?
Fix the issue reported in sonic-net#4867, failures: TypeError: () takes exactly 2 arguments (1 given)
The fix in sonic-net#5605 still uses lambda which is not easy to read and may have compatibility issue.

How did you do it?
Use for loop and concentrate string together and append them to a list.

How did you verify/test it?
run tests/test_qos_sai.py

Signed-off-by: Zhaohui Sun <zhaohuisun@microsoft.com>
Summary: Suspect test bug in test_eth_interface.py. Skip for now and request further investigation.
What is the motivation for this PR?
The internal BGP sessions were not coming up in multi-asic VS because Loopback4096 interface was not added for ASICs in multi-asic minigraph if ansible/lab was used in inventory file.

sonic-mgmt/tests/kvmtest.sh uses ./testbed-cli.sh -t vtestbed.yaml -m veos_vtb deploy-mg vms-kvm-four-asic-t1-lag lab password.txt to generate the minigraph .
Rerefence:
https://github.com/Azure/sonic-buildimage/blob/87425a5b2b02ecd75f3de7e5174e37e053e31790/src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py#L128

How did you do it?
Add loopback_4096 ip addresses for asic in ansible/lab inventory

How did you verify/test it?
Bring up multi-asic KVM testbed.
./testbed-cli.sh -t vtestbed.yaml -m veos_vtb -k ceos add-topo vms-kvm-four-asic-t1-lag password.txt
./testbed-cli.sh -t vtestbed.yaml -m veos_vtb -k ceos add-topo vms-kvm-four-asic-t1-lag password.txt
Ensure all BGP sessions are up
…t#5834)

Fix test-gap to address a recently discovered issue where ipinip decap functionality failed after CPA teardown (teardown of vxlan tunnel + mirror acls).
A recent warmboot issue highlighted that decap functionality will fail after CPA (control plane assistant) session was teardown. Although CPA is relevant during warmboot, but this issue does not necessarily require warmboot.
Just setting up and teardown CPA session will trigger this.
I this PR, a new param vxlan to test_decap is added. Now all the cases in decap will run with or without a prestep of vxlan set-and-unset.

Changes made:
Before running decap test, if vxlan set_unset knob is enabled, create a CPA session and then tear it down.
Also, do not apply the config from template. This will ensure new tables are not created, and hence the test will run with default config loaded on the device.
Approach
What is the motivation for this PR?
ARP packet from the server should be duplicated to both ToRs.

Signed-off-by: Longxiang Lyu lolv@microsoft.com

How did you do it?
Add a flow to duplicate the ARP

How did you verify/test it?
Verify both ToRs has the ARP entry for the server.
The tests within the test_fan_drawer_fans script were all failing because a function call was throwing an exception. On further inspection it was discovered that the function that was being called was an unsupported API in the 201911 and 201811 SONiC OS versions. Code was added to skip those tests if either of these OSes were encountered.
…-net#5867)

What is the motivation for this PR?
We found some issues in nightly and smoke test because of adding timestamp and changing in junit xml parser:
1)Some xml report didn't contain "start" but contain "end"
2)Test will fail if xml and json files do not contain "start" and "end"

How did you do it?
Revert changes and fix

How did you verify/test it?
Run a test

Any platform specific information?
Supported testbed topology if it's a new test case?
Update the ignore of PBH tests.
The feature was introduced in branch 202111. All later branches support this feature.

Signed-off-by: Anton <antonh@nvidia.com>
…nic-net#5843)

The test_update_speed case now uses hard coded speed parameters, the speed params may not be supported by some DUTs (e.g. 20G speed is not supported by all nvidia platforms), need to be fixed.
This PR combines multiple commits in sonic-net#5766 (Closed)

- What is the motivation for this PR?
The test_update_speed case now uses hard coded speed parameters, the speed params may not be supported by some DUTs(e.g. 20G speed is not supported by all nvidia platforms). In order to run this case on all testbeds, need to use supported speeds got from the dut instead of the hardcoded speeds.

- How did you do it?
Add a function to get the supported speeds from the dut, and use them in the test case.
The fix uses 2 valid speeds(randomly selected from all supported speeds) and 1 invalid speed(the value is not changed) just as it was before.
For vs setups, because there is no actual supported speed to get, still use the original hard coded valid speed params(20000, 40000).

- How did you verify/test it?
Have run this case on 2 different testbeds with nvidia switches, all passed.
…cked (sonic-net#5814)

Some errors are ignored for test test_show_platform_temperature_mocked in a previous PR: sonic-net#5750
But there was one error missing, need to ignore it too.

- What is the motivation for this PR?
Add missing error log to ignore for PR: sonic-net#5750

- How did you do it?
Add one new error log to ignore list for case test_show_platform_temperature_mocked

- How did you verify/test it?
Manual run
* Fix to get the test_link_flap run with vsonic peer
…markers (sonic-net#5865)

* [log analyzer] Support ignore log analyzer by decorating a function

Enhance log analyzer to support ignoring syslog temporarily by setting ignore markers
Provide a new decorator to ignore all the syslog during the decorated function elegantly
Ignore the syslog during config_reload

What is the motivation for this PR?
Loganalyzer captures all the syslog in our test session, and raise exception whenever an unexpected err log is found.
Sometimes a config_reload is required during the test case, a config_reload would raise some err log which is expected and acceptable, but the err log significantly misleads the loganalyzer.
So we need a mechanism in loganalyzer to be muted temporarily.

How did you do it?
Enhance log analyzer to support ignoring syslog temporarily by setting ignore markers
Provide a new decorator to ignore all the syslog during the decorated function elegantly
Ignore the syslog during config_reload
How did you verify/test it?
Run on physical testbeds, it works as expected.

Signed-off-by: Jianquan Ye<jianquanye@microsoft.com>
…ess_level to reduce test time (sonic-net#5846)

* [po/test_lag_2.py && enum_dut_portchannel] Support completeness_level to reduce test time

Reduce the test time of pc/test_lag_2.py by supporting different completeness_level
Approach
What is the motivation for this PR?
pc/test_lag_2.py will enumerate all PCs on the DUTs, it could take 52+ mins on a large topology.
We need to support different completeness_level, like:

Run with 'confident' level every weekday, it enumerates at most 4 PCs.
Run with 'thorought' level every weekend, it enumerates all PCs.

How did you do it?
Modify tests/conftest.py and pc/test_lag_2.py to support different completeness_level.
If completeness_level is not set, run as default level('thorough'), it's the same behavior as before this pr.

How did you verify/test it?
Run on a physical testbed and it runs as expected.

Signed-off-by: Jianquan Ye<jianquanye@microsoft.com>
What is the motivation for this PR?
migrate sflow and vlan to python3

How did you do it?
Check syntax format for slow and vlan code, move them to py3 folder.
Add is_python3 parameter for test_sflow.py

How did you verify/test it?
Run test_sflow.py

Signed-off-by: Zhaohui Sun <zhaohuisun@microsoft.com>
…ent (sonic-net#5868)

Summary: Add module-level config reload in case it breaks test env.
…n skip for Cisco (sonic-net#5875)

What is the motivation for this PR?
When delete xfail, mis delete one case which is necessary for Cisco devices in PR https://github.com/Azure/sonic-mgmt/pull/5777/files, to add it back in this PR.

How did you do it?
How did you verify/test it?
Any platform specific information?
Supported testbed topology if it's a new test case?
PR sonic-net#5456 updated the return
value of fixture `single_fib_for_duts`. It is no longer just True of False. The
new value will be different strings.

The fib_test.py ptf script has been updated for this change. However, the
hash_test.py ptf script was not.

This change udpated the fib_test.py script accordingly. Now the fib hash
testing can pass on dualtor testbed.

Signed-off-by: Xin Wang <xiwang5@microsoft.com>
What is the motivation for this PR?
Test case test_tunnel_memory_leak sometimes failed with error "AssertionError: No dev found for neighbor 192.168.0.3".
It's because toggle_all_simulator_ports_to_upper_tor runs after run_arp_responder and garp_service, so low Tor may be active Tor and receives arp responder packets and garp packets before toggling, ip neighbors may exist in low Tor.
But we check ip neighbors on upper Tor and delete them.

How did you do it?
If there is no neighbor on upper Tor, we should not fail the test case, it doesn't impact test function. tunnel_packet_handler will trigger neighbor added back.
Just delete neighbor if neighbor exists, otherwise ignore it and continue the test.

How did you verify/test it?
Run dualtor/test_tunnel_memory_leak.py

Signed-off-by: Zhaohui Sun <zhaohuisun@microsoft.com>
…c-net#5883)

4600C was using wrong thermal profile and it displays 2 CPU core thermal in show platform temperature output, there should be 4 CPU core thermal. The PR in sonic-buildimage has fixed this: sonic-net/sonic-buildimage#10258
The sonic-mgmt platform thermal test should also be fixed to align with the output change.

- What is the motivation for this PR?
Fix cpu core number for 4600c in platform info thermal test.

- How did you do it?
Correcting the thermal cpu core number for 4600c to 4 in tests/common/mellanox_data.py.

- How did you verify/test it?
Run test case in master and 202012 branch on 4600c by automation, all passed.

- Any platform specific information?
The change is only for 4600c.
The host vlan test now configures a new mac address(00:11:22:33:44:55) other than the switch mac on a vlan interface.
But for Mellanox asics, there is a restriction that we don't support this kind of mac address, because this address is not under the same prefix(36-38 bits) of the switch mac.
So need to add a new logic to get a valid mac address for the vlan interface on Mellanox duts.

- What is the motivation for this PR?
Run host vlan test successfully on Mellanox asics.

- How did you do it?
Adding a new logic, if the asic is Mellanox, flap the bits in the last octet to generate a new mac address for the test instead of "00:11:22:33:44:55".

- How did you verify/test it?
Run test on spc1/spc2/spc3 duts, all passed.
… supported encap type (sonic-net#5858)

Separate configuration and teardown for each supported encapsulation type: ['v4_in_v4', 'v4_in_v6', 'v6_in_v4', 'v6_in_v6']

- What is the motivation for this PR?
Fix the test issue when two types of tunnels (v4 and v6) configured at the same time

- How did you do it?
By using an additional fixture, which allows to do setup and teardown for each encap type

- How did you verify/test it?
By running test in the nightly regression
svelamal and others added 7 commits July 28, 2022 13:20
In test_orchagent_standby_tor_downstream.py, DF bit is set from Cisco-8000 silicon one ASIC since fragmentation on the encapsulated packet is not supported and the expected packet doesn't have it set. This causes the tests to fail despite receiving the complete expected packets.

In reference to https://datatracker.ietf.org/doc/html/rfc2003, the outer packet can have the DF bit set when the inner packet does not.

Identification, Flags, Fragment Offset
These three fields are set as specified in [10]. However, if the "Don't Fragment" bit is set in the inner IP header, it MUST be set in the outer IP header; if the "Don't Fragment" bit is not set in the inner IP header, it MAY be set in the outer IP header, as described in Section 5.1.
Vrf tests cases fail with KeyError 'target_dest_mac', this issue started to appear after PR - 5456
Changes made in this PR should fix KeyError issue in vrf TC

"fib_test.FibTest ... ERROR",
"",
"======================================================================",
"ERROR: fib_test.FibTest",
"----------------------------------------------------------------------",
"Traceback (most recent call last):",
" File \"ptftests/fib_test.py\", line 458, in runTest",
" self.check_ip_ranges()",
" File \"ptftests/fib_test.py\", line 163, in check_ip_ranges",
" self.check_ip_range(ip_range, dut_index, ipv4)",
" File \"ptftests/fib_test.py\", line 204, in check_ip_range",
" self.check_ip_route(src_port, dst_ip, exp_ports, ipv4)",
" File \"ptftests/fib_test.py\", line 237, in check_ip_route",
" res = self.check_ipv4_route(src_port, dst_ip_addr, dst_port_list)",
" File \"ptftests/fib_test.py\", line 267, in check_ipv4_route",
" router_mac = self.ptf_test_port_map[str(src_port)]['target_dest_mac']",
"KeyError: 'target_dest_mac'",

Signed-off-by: Andrii-Yosafat Lozovyi <andrii-yosafatx.lozovyi@intel.com>
Description of PR
Summary:
Transfer organization from Azure to sonic-net
PR sonic-net#5923 updated fixture dualtor_info to add active_tor_mac. However, it caused issue for some other test cases because the return dict is directly passed to check_tunnel_balance, and the function complained that
```
  File "/azp/agent/_work/5/s/tests/dualtor/test_orchagent_standby_tor_downstream.py", line 204, in test_standby_tor_downstream_loopback_route_readded
    check_tunnel_balance(**params)
TypeError: check_tunnel_balance() got an unexpected keyword argument 'active_tor_mac'
```
This PR addressed the issue by removing active_tor_mac from the fixture. The variable is added for test case test_encap_dscp_rewrite and test_bounced_back_traffic_in_expected_queue

What is the motivation for this PR?
This PR is to fix issue caused by updating fixture dualtor_info.

How did you do it?
Remove the newly added variable active_tor_mac from fixture dualtor_info.

How did you verify/test it?
The change is verified by running test cases test_standby_tor_downstream_loopback_route_readded and test_tunnel_qos_remap.py.
What is the motivation for this PR?
Currently the pipeline has both PR and CI testing enabled. After a PR is merged,
the pipeline is triggered again. This is a waste of resource.

How did you do it?
This change disabled CI testing. The PR testing will be still triggered as usual.

Signed-off-by: Xin Wang <xiwang5@microsoft.com>
…ic-net#6058)

What is the motivation for this PR?
test_lag_db_status_with_po_update can ran success on master image. But failed for image 202012.
Because for 202012, there is no netdev_oper_status key in PORT_TABLE ofSTATE_DB, the test case chooses oper_status in APPL_DB , but sync time seems to be different, after shutdown, it checks the status of oper_status immediately, it should wait for a while until the status is correct.
Revert these 2 cases firstly, will submit a new PR to add them after enough verification on 202012 and master image.

How did you do it?
Two changes in this PR:

Revert test_lag_db_status and test_lag_db_status_with_po_update.
Use --completeness_level=confident to reduce running time, it will pick up 4 ports, not all of them for t1-lag.
How did you verify/test it?
Run pc/test_lag_2.py

Signed-off-by: Zhaohui Sun <zhaohuisun@microsoft.com>
@yutongzhang-microsoft yutongzhang-microsoft merged commit d25e599 into feature/skip/20220517 Aug 1, 2022
yutongzhang-microsoft pushed a commit that referenced this pull request Feb 18, 2024
From the ovs doc, if mod-flow is used without --strict, priority is not
used in matching.
This will cause problem for downstream set_drop when
duplicate_nic_upstream is disabled.

For example:

When set_drop is applied to upstream_nic_flow(#1), mod-flow will match both
flow #2 and flow  #3 as priority is not used in flow match.

So let's enforce strict match for mod-flow.

Signed-off-by: Longxiang Lyu <lolv@microsoft.com>
yutongzhang-microsoft pushed a commit that referenced this pull request Apr 8, 2024
From the ovs doc, if mod-flow is used without --strict, priority is not
used in matching.
This will cause problem for downstream set_drop when
duplicate_nic_upstream is disabled.

For example:

When set_drop is applied to upstream_nic_flow(#1), mod-flow will match both
flow #2 and flow  #3 as priority is not used in flow match.

So let's enforce strict match for mod-flow.

Signed-off-by: Longxiang Lyu <lolv@microsoft.com>
yutongzhang-microsoft pushed a commit that referenced this pull request Apr 9, 2024
From the ovs doc, if mod-flow is used without --strict, priority is not
used in matching.
This will cause problem for downstream set_drop when
duplicate_nic_upstream is disabled.

For example:

When set_drop is applied to upstream_nic_flow(#1), mod-flow will match both
flow #2 and flow  #3 as priority is not used in flow match.

So let's enforce strict match for mod-flow.

Signed-off-by: Longxiang Lyu <lolv@microsoft.com>
yutongzhang-microsoft pushed a commit that referenced this pull request May 14, 2024
…y cases (sonic-net#12825)

Description of PR
This PR is to address the fixture setup sequence issue, and teardown out of sequence issue.

In convert_and_restore_config_db_to_ipv6_only, it will do a "config reload -y" during fixture setup or teardown.

For feature test cases where config is not saved into config_db.json, this reload needs to be done before feature fixture setup and after feature teardown, such as: tacacs_v6, setup_streaming_telemetry, or setup_ntp.

According to https://docs.pytest.org/en/latest/reference/fixtures.html#reference-fixtures, it only considers the following when deciding the fixture orders:

scope
dependencies
autouse
We shouldn't use autouse in this test module. So only two options to let convert_and_restore_config_db_to_ipv6_only runs before other fixtures:

define other fixtures in 'function' scope.
define the feature fixture to request convert_and_restore_config_db_to_ipv6_only explicit.
Using option #1 in this PR as the new 'function' scope fixture can be reused by other cases. Option #2 has good readability, but will limit the new fixture to be used by ipv6_only cases.

Summary:
Fixes sonic-net#12705


Approach
What is the motivation for this PR?
Multiple errors were observed in mgmt_ipv6 are related to fixture setup/teardown sequence.

How did you do it?
Added two 'function' scope fixture: check_tacacs_v6_func and setup_streaming_telemetry_func.
And modified 3 tests cases to use 'function' scope fixture.

test_ro_user_ipv6_only
test_rw_user_ipv6_only
test_telemetry_output_ipv6_only

co-authorized by: jianquanye@microsoft.com
yutongzhang-microsoft pushed a commit that referenced this pull request Aug 15, 2024
…y cases (sonic-net#12825) (sonic-net#12846)

Description of PR
This PR is to address the fixture setup sequence issue, and teardown out of sequence issue.

In convert_and_restore_config_db_to_ipv6_only, it will do a "config reload -y" during fixture setup or teardown.

For feature test cases where config is not saved into config_db.json, this reload needs to be done before feature fixture setup and after feature teardown, such as: tacacs_v6, setup_streaming_telemetry, or setup_ntp.

According to https://docs.pytest.org/en/latest/reference/fixtures.html#reference-fixtures, it only considers the following when deciding the fixture orders:

scope
dependencies
autouse
We shouldn't use autouse in this test module. So only two options to let convert_and_restore_config_db_to_ipv6_only runs before other fixtures:

define other fixtures in 'function' scope.
define the feature fixture to request convert_and_restore_config_db_to_ipv6_only explicit.
Using option #1 in this PR as the new 'function' scope fixture can be reused by other cases. Option #2 has good readability, but will limit the new fixture to be used by ipv6_only cases.

Summary:
Fixes sonic-net#12705

Approach
What is the motivation for this PR?
Multiple errors were observed in mgmt_ipv6 are related to fixture setup/teardown sequence.

How did you do it?
Added two 'function' scope fixture: check_tacacs_v6_func and setup_streaming_telemetry_func.
And modified 3 tests cases to use 'function' scope fixture.

test_ro_user_ipv6_only
test_rw_user_ipv6_only
test_telemetry_output_ipv6_only

co-authorized by: jianquanye@microsoft.com
yutongzhang-microsoft pushed a commit that referenced this pull request Sep 13, 2024
Description of PR
Summary: Fixing ecnconfig command where -q was missing
Fixes # (issue)
sonic-net#14126

Approach
What is the motivation for this PR?
How did you do it?
How did you verify/test it?
Any platform specific information?
Supported testbed topology if it's a new test case?
Documentation
###OUTPUT
============================= test session starts ==============================
platform linux -- Python 3.8.10, pytest-7.4.0, pluggy-1.3.0 -- /usr/bin/python3
cachedir: .pytest_cache
metadata: {'Python': '3.8.10', 'Platform': 'Linux-5.4.0-150-generic-x86_64-with-glibc2.29', 'Packages': {'pytest': '7.4.0', 'pluggy': '1.3.0'}, 'Plugins': {'allure-pytest': '2.8.22', 'ansible': '4.0.0', 'forked': '1.6.0', 'html': '4.1.0', 'metadata': '3.0.0', 'repeat': '0.9.3', 'xdist': '1.28.0'}}
ansible: 2.13.13
rootdir: /var/AzDevOps/sonic-mgmt/tests
configfile: pytest.ini
plugins: allure-pytest-2.8.22, ansible-4.0.0, forked-1.6.0, html-4.1.0, metadata-3.0.0, repeat-0.9.3, xdist-1.28.0
collecting ...
----------------------------- live log collection ------------------------------
22:57:46 conftest.generate_params_dut_hostname L1210 INFO | Using DUTs ['sonic-s6100-dut1'] in testbed 'vms-snappi-sonic'
22:57:46 conftest.set_rand_one_dut_hostname L0418 INFO | Randomly select dut sonic-s6100-dut1 for testing
22:57:46 init.pytest_collection_modifyitems L0581 INFO | Available basic facts that can be used in conditional skip:
{
"topo_type": "ptf",
"topo_name": "ptf64",
"testbed": "vms-snappi-sonic"
}
collected 1 item

snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
-------------------------------- live log setup --------------------------------
22:57:46 init.set_default L0053 INFO | Completeness level not set during test execution. Setting to default level: CompletenessLevel.basic
22:57:46 init.check_test_completeness L0151 INFO | Test has no defined levels. Continue without test completeness checks
22:57:46 conftest.enhance_inventory L0245 INFO | Inventory file: ['../ansible/snappi-sonic']
22:57:52 ptfhost_utils.run_icmp_responder_session L0239 INFO | Skip running icmp_responder at session level, it is only for dualtor testbed with active-active mux ports.
22:57:52 conftest.core_dump_and_config_check L2154 INFO | Dumping Disk and Memory Space informataion before test on sonic-s6100-dut1
22:57:52 conftest.core_dump_and_config_check L2158 INFO | Collecting core dumps before test on sonic-s6100-dut1
22:57:53 conftest.core_dump_and_config_check L2167 INFO | Collecting running config before test on sonic-s6100-dut1
22:57:55 init.sanity_check L0306 INFO | Skip sanity check according to command line argument
22:57:55 init._fixture_generator_decorator L0081 INFO | -------------------- fixture enable_packet_aging_after_test setup starts --------------------
22:57:55 init._fixture_generator_decorator L0085 INFO | -------------------- fixture enable_packet_aging_after_test setup ends --------------------
22:57:55 init._fixture_generator_decorator L0081 INFO | -------------------- fixture rand_lossless_prio setup starts --------------------
22:57:55 init._fixture_generator_decorator L0085 INFO | -------------------- fixture rand_lossless_prio setup ends --------------------
22:57:55 init._fixture_generator_decorator L0081 INFO | -------------------- fixture rand_lossy_prio setup starts --------------------
22:57:55 init._fixture_generator_decorator L0085 INFO | -------------------- fixture rand_lossy_prio setup ends --------------------
22:57:55 init._fixture_generator_decorator L0081 INFO | -------------------- fixture start_pfcwd_after_test setup starts --------------------
22:57:55 init._fixture_generator_decorator L0085 INFO | -------------------- fixture start_pfcwd_after_test setup ends --------------------
22:57:55 init._fixture_func_decorator L0069 INFO | -------------------- fixture snappi_api_serv_ip setup starts --------------------
22:57:55 init._fixture_func_decorator L0076 INFO | -------------------- fixture snappi_api_serv_ip setup ends --------------------
22:57:55 init._fixture_func_decorator L0069 INFO | -------------------- fixture snappi_api_serv_port setup starts --------------------
22:57:55 init._fixture_func_decorator L0076 INFO | -------------------- fixture snappi_api_serv_port setup ends --------------------
22:57:55 init._fixture_generator_decorator L0081 INFO | -------------------- fixture snappi_api setup starts --------------------
22:57:55 init._fixture_generator_decorator L0085 INFO | -------------------- fixture snappi_api setup ends --------------------
22:57:55 conftest.rand_one_dut_front_end_hostname L0450 INFO | Randomly select dut sonic-s6100-dut1 for testing
22:57:56 conftest.generate_port_lists L1279 INFO | Generate dut_port_map: {'sonic-s6100-dut1': ['sonic-s6100-dut1|Ethernet0', 'sonic-s6100-dut1|Ethernet4']}
22:57:56 conftest.generate_port_lists L1302 INFO | Generate port_list: ['sonic-s6100-dut1|Ethernet0', 'sonic-s6100-dut1|Ethernet4']
22:57:56 init._fixture_func_decorator L0069 INFO | -------------------- fixture prio_dscp_map setup starts --------------------
22:57:56 init._fixture_func_decorator L0076 INFO | -------------------- fixture prio_dscp_map setup ends --------------------
22:57:56 init.loganalyzer L0051 INFO | Log analyzer is disabled
22:57:56 init.memory_utilization L0091 INFO | Hostname: sonic-s6100-dut1, Hwsku: Accton-AS7726-32X, Platform: x86_64-accton_as7726_32x-r0
22:57:56 init.store_fixture_values L0017 INFO | store memory_utilization test_dequeue_ecn
22:57:56 init._fixture_func_decorator L0069 INFO | -------------------- fixture snappi_testbed_config setup starts --------------------
22:57:57 init._fixture_func_decorator L0076 INFO | -------------------- fixture snappi_testbed_config setup ends --------------------
22:57:57 init.pytest_runtest_setup L0024 INFO | collect memory before test test_dequeue_ecn
22:57:58 init.pytest_runtest_setup L0044 INFO | Before test: collected memory_values {'before_test': {'sonic-s6100-dut1': {'monit': {'memory_usage': 15.3}}}, 'after_test': {'sonic-s6100-dut1': {}}}
-------------------------------- live log call ---------------------------------
22:57:58 test_dequeue_ecn_with_snappi.test_dequeu L0066 INFO | Running ECN dequeue test with params: {'kmin': 50000, 'kmax': 51000, 'pmax': 100}
22:57:58 helper.run_ecn_test L0058 INFO | Stopping PFC watchdog
22:57:58 helper.run_ecn_test L0060 INFO | Disabling packet aging if necessary
22:57:58 helper.run_ecn_test L0064 INFO | Configuring WRED and ECN thresholds
22:58:00 helper.run_ecn_test L0072 INFO | Enabling ECN markings
22:58:03 helper.run_ecn_test L0081 INFO | Waiting on ECN and dynamic buffer configuration to take effect. Sleeping for 10 seconds.
22:58:13 helper.run_ecn_test L0097 INFO | Generating base flow config
22:58:13 helper.run_ecn_test L0102 INFO | Setting test flow config params
22:58:13 helper.run_ecn_test L0110 INFO | Setting pause flow config params
22:58:13 helper.run_ecn_test L0124 INFO | Generating test flows
22:58:13 helper.run_ecn_test L0130 INFO | Generating pause flows
22:58:13 helper.run_ecn_test L0141 INFO | Setting packet capture port to Port 1
22:58:13 helper.run_ecn_test L0145 INFO | Running 1 iteration(s)
22:58:13 helper.run_ecn_test L0147 INFO | Running iteration 0
22:58:13 helper.run_ecn_test L0149 INFO | Packet capture file: ECN_cap-0.pcapng
22:58:13 helper.run_ecn_test L0156 INFO | Running traffic
22:58:13 connection._warn L0246 WARNING| Verification of certificates is disabled
22:58:13 connection._info L0243 INFO | Determining the platform and rest_port using the 10.36.78.59 address...
22:58:13 connection._warn L0246 WARNING| Unable to connect to http://10.36.78.59:443.
22:58:13 connection._info L0243 INFO | Connection established to https://10.36.78.59:443 on linux
22:58:36 connection._info L0243 INFO | Using IxNetwork api server version 10.20.2403.2
22:58:36 connection._info L0243 INFO | User info IxNetwork/ixnetworkweb/admin-62-23797
22:58:37 snappi_api.info L1132 INFO | snappi-0.9.1
22:58:37 snappi_api.info L1132 INFO | snappi_ixnetwork-0.8.2
22:58:37 snappi_api.info L1132 INFO | ixnetwork_restpy-1.0.64
22:58:38 snappi_api.info L1132 INFO | Config validation 0.013s
22:58:41 snappi_api.info L1132 INFO | Ports configuration 2.098s
22:58:41 snappi_api.info L1132 INFO | Captures configuration 0.631s
22:58:44 snappi_api.info L1132 INFO | Add location hosts [10.36.78.96] 2.458s
22:58:49 snappi_api.info L1132 INFO | Location hosts ready [10.36.78.96] 4.298s
22:58:49 snappi_api.info L1132 INFO | Speed conversion is not require for (port.name, speed) : [('Port 0', 'novusHundredGigNonFanOut'), ('Port 1', 'novusHundredGigNonFanOut')]
22:58:49 snappi_api.info L1132 INFO | Aggregation mode speed change 0.549s
22:58:54 snappi_api.info L1132 INFO | Location preemption [10.36.78.96;1;5, 10.36.78.96;1;6] 0.241s
22:59:17 snappi_api.info L1132 INFO | Location connect [Port 0, Port 1] 22.595s
22:59:17 snappi_api.warning L1138 WARNING| Port 0 connectedLinkDown
22:59:17 snappi_api.warning L1138 WARNING| Port 1 connectedLinkDown
22:59:17 snappi_api.info L1132 INFO | Location state check [Port 0, Port 1] 0.455s
22:59:17 snappi_api.info L1132 INFO | Location configuration 35.939s
22:59:27 snappi_api.info L1132 INFO | Layer1 configuration 9.982s
22:59:28 snappi_api.info L1132 INFO | Lag Configuration 0.160s
22:59:28 snappi_api.info L1132 INFO | Convert device config : 0.412s
22:59:28 snappi_api.info L1132 INFO | Create IxNetwork device config : 0.000s
22:59:29 snappi_api.info L1132 INFO | Push IxNetwork device config : 0.849s
22:59:29 snappi_api.info L1132 INFO | Devices configuration 1.397s
22:59:33 snappi_api.info L1132 INFO | Flows configuration 4.227s
22:59:44 snappi_api.info L1132 INFO | Start interfaces 10.798s
22:59:45 snappi_api.info L1132 INFO | IxNet - The Traffic Item was modified. Please perform a Traffic Generate to update the associated traffic Flow Groups
22:59:45 traffic_generation.run_traffic L0322 INFO | Wait for Arp to Resolve ...
22:59:47 traffic_generation.run_traffic L0333 INFO | Starting packet capture ...
22:59:49 snappi_api.info L1132 INFO | Captures start 1.911s
22:59:53 traffic_generation.run_traffic L0343 INFO | Starting transmit on all flows ...
22:59:58 snappi_api.info L1132 INFO | Flows generate/apply 4.230s
23:00:10 snappi_api.info L1132 INFO | Flows clear statistics 11.831s
23:00:11 snappi_api.info L1132 INFO | Captures start 1.086s
23:00:15 snappi_api.info L1132 INFO | Flows start 3.528s
23:00:16 traffic_generation.run_traffic L0380 INFO | Polling TGEN for in-flight traffic statistics...
23:00:20 traffic_generation.run_traffic L0388 INFO | Checking if all flows have stopped. Attempt #1
23:00:22 traffic_generation.run_traffic L0395 INFO | All test and background traffic flows stopped
23:00:24 traffic_generation.run_traffic L0406 INFO | Stopping packet capture ...
23:00:26 snappi_api.info L1132 INFO | Captures stop 1.348s
23:00:26 traffic_generation.run_traffic L0412 INFO | Retrieving and saving packet capture to ECN_cap-0.pcapng
23:03:05 snappi_api.warning L1138 WARNING| Capture was not stopped for this port Port 1
23:03:05 snappi_api.info L1132 INFO | Captures stop 158.173s
23:03:08 traffic_generation.run_traffic L0418 INFO | Dumping per-flow statistics
23:03:10 traffic_generation.run_traffic L0420 INFO | Stopping transmit on all remaining flows
23:03:11 read_pcap.get_ipv4_pkts L0080 INFO | Reading packets from pcap file -> ECN_cap-0.pcapng
23:03:11 read_pcap.get_ipv4_pkts L0081 INFO | Extracting ethernet frames from pcap file
23:03:11 test_dequeue_ecn_with_snappi.test_dequeu L0085 INFO | Running verification for ECN dequeue test
23:03:11 read_pcap.is_ecn_marked L0103 INFO | Checking if the packet is ECN congestion marked
23:03:11 read_pcap.is_ecn_marked L0103 INFO | Checking if the packet is ECN congestion marked
23:03:11 test_dequeue_ecn_with_snappi.test_dequeu L0098 INFO | Reloading config to teardown ECN config
23:03:11 config_reload.config_reload L0138 INFO | reloading config_db
23:04:52 processes_utils.wait_critical_processes L0076 INFO | Wait until all critical processes are healthy in 300 sec
23:04:52 processes_utils.all_critical_processes L0045 INFO | Check critical processes status
PASSED [100%]
------------------------------ live log teardown -------------------------------
23:04:56 init.pytest_runtest_teardown L0049 INFO | collect memory after test test_dequeue_ecn
23:04:57 init.pytest_runtest_teardown L0072 INFO | After test: collected memory_values {'before_test': {'sonic-s6100-dut1': {'monit': {'memory_usage': 15.3}}}, 'after_test': {'sonic-s6100-dut1': {'monit': {'memory_usage': 5.6}}}}
23:04:57 init._fixture_generator_decorator L0093 INFO | -------------------- fixture snappi_api teardown starts --------------------
23:05:20 init._fixture_generator_decorator L0102 INFO | -------------------- fixture snappi_api teardown ends --------------------
23:05:20 init._fixture_generator_decorator L0093 INFO | -------------------- fixture start_pfcwd_after_test teardown starts --------------------
23:05:21 init._fixture_generator_decorator L0102 INFO | -------------------- fixture start_pfcwd_after_test teardown ends --------------------
23:05:21 init._fixture_generator_decorator L0093 INFO | -------------------- fixture rand_lossy_prio teardown starts --------------------
23:05:21 init._fixture_generator_decorator L0102 INFO | -------------------- fixture rand_lossy_prio teardown ends --------------------
23:05:21 init._fixture_generator_decorator L0093 INFO | -------------------- fixture rand_lossless_prio teardown starts --------------------
23:05:21 init._fixture_generator_decorator L0102 INFO | -------------------- fixture rand_lossless_prio teardown ends --------------------
23:05:21 init._fixture_generator_decorator L0093 INFO | -------------------- fixture enable_packet_aging_after_test teardown starts --------------------
23:05:21 init._fixture_generator_decorator L0102 INFO | -------------------- fixture enable_packet_aging_after_test teardown ends --------------------
23:05:21 conftest.core_dump_and_config_check L2195 INFO | Dumping Disk and Memory Space informataion after test on sonic-s6100-dut1
23:05:22 conftest.core_dump_and_config_check L2199 INFO | Collecting core dumps after test on sonic-s6100-dut1
23:05:22 conftest.core_dump_and_config_check L2216 INFO | Collecting running config after test on sonic-s6100-dut1
23:05:23 conftest.core_dump_and_config_check L2344 WARNING| Core dump or config check failed for test_dequeue_ecn_with_snappi.py, results: {"core_dump_check": {"pass": true, "new_core_dumps": {"sonic-s6100-dut1": []}}, "config_db_check": {"pass": false, "pre_only_config": {"sonic-s6100-dut1": {"null": {}}}, "cur_only_config": {"sonic-s6100-dut1": {"null": {"PFC_WD": {"GLOBAL": {"POLL_INTERVAL": "200"}}}}}, "inconsistent_config": {"sonic-s6100-dut1": {"null": {}}}}}
23:05:23 conftest.__dut_reload L2086 INFO | dut reload called on sonic-s6100-dut1
23:05:23 config_reload.config_reload L0138 INFO | reloading config_db
23:08:45 parallel.on_terminate L0085 INFO | process __dut_reload-- terminated with exit code None
23:08:45 parallel.parallel_run L0221 INFO | Completed running processes for target "__dut_reload" in 0:03:22.578938 seconds

=============================== warnings summary ===============================
../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.loganalyzer
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.sanity_check
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.test_completeness
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.dualtor
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/paramiko/transport.py:236
/usr/local/lib/python3.8/dist-packages/paramiko/transport.py:236: CryptographyDeprecationWarning: Blowfish has been deprecated
"class": algorithms.Blowfish,

../../../../usr/local/lib/python3.8/dist-packages/scapy/layers/ipsec.py:471
/usr/local/lib/python3.8/dist-packages/scapy/layers/ipsec.py:471: CryptographyDeprecationWarning: Blowfish has been deprecated
cipher=algorithms.Blowfish,

../../../../usr/local/lib/python3.8/dist-packages/scapy/layers/ipsec.py:485
/usr/local/lib/python3.8/dist-packages/scapy/layers/ipsec.py:485: CryptographyDeprecationWarning: CAST5 has been deprecated
cipher=algorithms.CAST5,

snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
/usr/local/lib/python3.8/dist-packages/pytest_ansible/module_dispatcher/v213.py:100: UserWarning: provided hosts list is empty, only localhost is available
warnings.warn("provided hosts list is empty, only localhost is available")

snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
/var/AzDevOps/.local/lib/python3.8/site-packages/snappi_ixnetwork/device/utils.py:2: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
from collections import namedtuple, Mapping

snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
/usr/local/lib/python3.8/dist-packages/ixnetwork_restpy/testplatform/sessions/sessions.py:59: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
elif LooseVersion(build_number) < LooseVersion('8.52'):

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
---------------------------- live log sessionfinish ----------------------------
23:08:45 init.pytest_terminal_summary L0067 INFO | Can not get Allure report URL. Please check logs
================== 1 passed, 14 warnings in 659.38s (0:10:59) ==================

co-authorized by: jianquanye@microsoft.com
yutongzhang-microsoft pushed a commit that referenced this pull request Oct 8, 2024
…onic-net#14416)

Description of PR
Summary: Adding dut counter verification for PFC Oversubscription cases
Fixes # (issue)
sonic-net#13596

Approach
Dependency
sonic-net#13848

What is the motivation for this PR?
Verifies the packet drops from the dut interface counters

How did you do it?
How did you verify/test it?
Any platform specific information?
Supported testbed topology if it's a new test case?
Documentation
Output
18:43:03 test_m2o_oversubscribe_lossless.test_m2o L0077 INFO | Running test for testbed subtype: single-dut-single-asic
18:43:03 snappi_fixtures.__intf_config_multidut L0796 INFO | Configuring Dut: sonic-s6100-dut1 with port Ethernet0 with IP 20.1.1.1/24
18:43:05 snappi_fixtures.__intf_config_multidut L0796 INFO | Configuring Dut: sonic-s6100-dut1 with port Ethernet4 with IP 20.1.2.1/24
18:43:07 snappi_fixtures.__intf_config_multidut L0796 INFO | Configuring Dut: sonic-s6100-dut1 with port Ethernet8 with IP 20.1.3.1/24
18:43:10 connection._warn L0246 WARNING| Verification of certificates is disabled
18:43:10 connection._info L0243 INFO | Determining the platform and rest_port using the 10.36.78.59 address...
18:43:10 connection._warn L0246 WARNING| Unable to connect to http://10.36.78.59:443.
18:43:10 connection._info L0243 INFO | Connection established to https://10.36.78.59:443 on linux
18:43:24 connection._info L0243 INFO | Using IxNetwork api server version 10.20.2403.2
18:43:24 connection._info L0243 INFO | User info IxNetwork/ixnetworkweb/admin-68-20480
18:43:25 snappi_api.info L1132 INFO | snappi-0.9.1
18:43:25 snappi_api.info L1132 INFO | snappi_ixnetwork-0.8.2
18:43:25 snappi_api.info L1132 INFO | ixnetwork_restpy-1.0.64
18:43:25 snappi_api.info L1132 INFO | Config validation 0.020s
18:43:27 snappi_api.info L1132 INFO | Ports configuration 1.544s
18:43:27 snappi_api.info L1132 INFO | Captures configuration 0.161s
18:43:30 snappi_api.info L1132 INFO | Add location hosts [10.36.78.53] 2.285s
18:43:34 snappi_api.info L1132 INFO | Location hosts ready [10.36.78.53] 4.212s
18:43:35 snappi_api.info L1132 INFO | Speed conversion is not require for (port.name, speed) : [('Port 0', 'novusHundredGigNonFanOut'), ('Port 1', 'novusHundredGigNonFanOut'), ('Port 2', 'novusHundredGigNonFanOut')]
18:43:35 snappi_api.info L1132 INFO | Aggregation mode speed change 0.479s
18:43:42 snappi_api.info L1132 INFO | Location preemption [10.36.78.53;6;1, 10.36.78.53;6;2, 10.36.78.53;6;3] 0.111s
18:44:07 snappi_api.info L1132 INFO | Location connect [Port 0, Port 1, Port 2] 25.066s
18:44:07 snappi_api.warning L1138 WARNING| Port 0 connectedLinkDown
18:44:07 snappi_api.warning L1138 WARNING| Port 1 connectedLinkDown
18:44:07 snappi_api.warning L1138 WARNING| Port 2 connectedLinkDown
18:44:07 snappi_api.info L1132 INFO | Location state check [Port 0, Port 1, Port 2] 0.245s
18:44:07 snappi_api.info L1132 INFO | Location configuration 39.389s
18:44:19 snappi_api.info L1132 INFO | Layer1 configuration 12.161s
18:44:19 snappi_api.info L1132 INFO | Lag Configuration 0.082s
18:44:19 snappi_api.info L1132 INFO | Convert device config : 0.224s
18:44:19 snappi_api.info L1132 INFO | Create IxNetwork device config : 0.000s
18:44:20 snappi_api.info L1132 INFO | Push IxNetwork device config : 0.641s
18:44:20 snappi_api.info L1132 INFO | Devices configuration 0.940s
18:44:25 snappi_api.info L1132 INFO | Flows configuration 5.128s
18:45:25 snappi_api.info L1132 INFO | Start interfaces 59.556s
18:45:25 snappi_api.info L1132 INFO | IxNet - The Traffic Item was modified. Please perform a Traffic Generate to update the associated traffic Flow Groups
18:45:30 traffic_generation.run_traffic L0322 INFO | Wait for Arp to Resolve ...
18:45:36 traffic_generation.run_traffic L0322 INFO | Starting transmit on all flows ...
18:48:41 snappi_api.info L1132 INFO | Flows generate/apply 184.474s
18:48:54 snappi_api.info L1132 INFO | Flows clear statistics 12.396s
18:48:54 snappi_api.info L1132 INFO | Captures start 0.000s
18:49:17 snappi_api.info L1132 INFO | Flows start 22.926s
18:49:17 traffic_generation.run_traffic L0322 INFO | Polling DUT for traffic statistics for 15 seconds ...
18:49:23 traffic_generation.run_traffic L0322 INFO | Polling TGEN for in-flight traffic statistics...
18:49:25 traffic_generation.run_traffic L0322 INFO | In-flight traffic statistics for flows: ['Test Flow 1 -> 0', 'Test Flow 2 -> 0', 'Background Flow 1 -> 0', 'Background Flow 2 -> 0']
18:49:25 traffic_generation.run_traffic L0322 INFO | In-flight TX frames: [6312174, 6312175, 6310775, 6310775]
18:49:25 traffic_generation.run_traffic L0322 INFO | In-flight RX frames: [6311444, 6311444, 6310765, 6310766]
18:49:29 traffic_generation.run_traffic L0322 INFO | DUT polling complete
18:49:29 traffic_generation.run_traffic L0322 INFO | Checking if all flows have stopped. Attempt #1
18:49:30 traffic_generation.run_traffic L0322 INFO | ['started', 'started', 'started', 'started']
18:49:31 traffic_generation.run_traffic L0322 INFO | Checking if all flows have stopped. Attempt #2
18:49:32 traffic_generation.run_traffic L0322 INFO | ['started', 'started', 'started', 'started']
18:49:33 traffic_generation.run_traffic L0322 INFO | Checking if all flows have stopped. Attempt #3
18:49:35 traffic_generation.run_traffic L0322 INFO | ['started', 'started', 'stopped', 'stopped']
18:49:36 traffic_generation.run_traffic L0322 INFO | Checking if all flows have stopped. Attempt #4
18:49:37 traffic_generation.run_traffic L0322 INFO | ['stopped', 'stopped', 'stopped', 'stopped']
18:49:37 traffic_generation.run_traffic L0322 INFO | All test and background traffic flows stopped
18:49:39 traffic_generation.run_traffic L0322 INFO | Dumping per-flow statistics
18:49:40 traffic_generation.run_traffic L0322 INFO | Stopping transmit on all remaining flows
18:49:41 snappi_fixtures.cleanup_config L0952 INFO | Removing Configuration on Dut: sonic-s6100-dut1 with port Ethernet0 with ip :20.1.1.1/24
18:49:43 snappi_fixtures.cleanup_config L0952 INFO | Removing Configuration on Dut: sonic-s6100-dut1 with port Ethernet4 with ip :20.1.2.1/24
18:49:45 snappi_fixtures.cleanup_config L0952 INFO | Removing Configuration on Dut: sonic-s6100-dut1 with port Ethernet8 with ip :20.1.3.1/24
PASSED [100%]
------------------------------------------------------------ live log teardown -------------------------------------------------------------
18:49:47 init.pytest_runtest_teardown L0049 INFO | collect memory after test test_m2o_oversubscribe_lossless[multidut_port_info0]
18:49:48 init.pytest_runtest_teardown L0072 INFO | After test: collected memory_values {'before_test': {'sonic-s6100-dut1': {'monit': {'memory_usage': 13.9}}}, 'after_test': {'sonic-s6100-dut1': {'monit': {'memory_usage': 31.3}}}}
18:49:48 init._fixture_generator_decorator L0093 INFO | -------------------- fixture snappi_api teardown starts --------------------
18:50:03 init._fixture_generator_decorator L0102 INFO | -------------------- fixture snappi_api teardown ends --------------------
18:50:03 init._fixture_generator_decorator L0093 INFO | -------------------- fixture start_pfcwd_after_test teardown starts --------------------
18:50:05 init._fixture_generator_decorator L0102 INFO | -------------------- fixture start_pfcwd_after_test teardown ends --------------------
18:50:05 init._fixture_generator_decorator L0093 INFO | -------------------- fixture rand_lossy_prio teardown starts --------------------
18:50:05 init._fixture_generator_decorator L0102 INFO | -------------------- fixture rand_lossy_prio teardown ends --------------------
18:50:05 init._fixture_generator_decorator L0093 INFO | -------------------- fixture rand_lossless_prio teardown starts --------------------
18:50:05 init._fixture_generator_decorator L0102 INFO | -------------------- fixture rand_lossless_prio teardown ends --------------------
18:50:05 init._fixture_generator_decorator L0093 INFO | -------------------- fixture enable_packet_aging_after_test teardown starts --------------------
18:50:05 init._fixture_generator_decorator L0102 INFO | -------------------- fixture enable_packet_aging_after_test teardown ends --------------------
18:50:05 conftest.core_dump_and_config_check L2203 INFO | Dumping Disk and Memory Space informataion after test on sonic-s6100-dut1
18:50:06 conftest.core_dump_and_config_check L2207 INFO | Collecting core dumps after test on sonic-s6100-dut1
18:50:07 conftest.core_dump_and_config_check L2224 INFO | Collecting running config after test on sonic-s6100-dut1
18:50:08 conftest.core_dump_and_config_check L2352 WARNING| Core dump or config check failed for test_m2o_oversubscribe_lossless.py, results: {"core_dump_check": {"pass": true, "new_core_dumps": {"sonic-s6100-dut1": []}}, "config_db_check": {"pass": false, "pre_only_config": {"sonic-s6100-dut1": {"null": {"INTERFACE": {"Ethernet0": {}, "Ethernet12": {}, "Ethernet4": {}, "Ethernet8": {}, "Ethernet0|21.1.1.1/24": {}, "Ethernet12|24.1.1.1/24": {}, "Ethernet4|22.1.1.1/24": {}, "Ethernet8|23.1.1.1/24": {}}}}}, "cur_only_config": {"sonic-s6100-dut1": {"null": {}}}, "inconsistent_config": {"sonic-s6100-dut1": {"null": {"PFC_WD": {"pre_value": {"GLOBAL": {"POLL_INTERVAL": "200"}}, "cur_value": {"Ethernet0": {"action": "drop", "detection_time": "200", "restoration_time": "200"}, "Ethernet12": {"action": "drop", "detection_time": "200", "restoration_time": "200"}, "Ethernet4": {"action": "drop", "detection_time": "200", "restoration_time": "200"}, "Ethernet8": {"action": "drop", "detection_time": "200", "restoration_time": "200"}, "GLOBAL": {"POLL_INTERVAL": "200"}}}}}}}}
18:50:08 conftest.__dut_reload L2091 INFO | dut reload called on sonic-s6100-dut1
18:50:10 parallel.on_terminate L0085 INFO | process __dut_reload-- terminated with exit code None
18:50:10 parallel.parallel_run L0221 INFO | Completed running processes for target "__dut_reload" in 0:00:01.443244 seconds
18:50:10 conftest.core_dump_and_config_check L2362 INFO | -----$$$$$$$$$$--------------- Executing config reload of config_db_bgp.json -------------$$$$$$$$$$$$$$

============================================================= warnings summary =============================================================
../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.loganalyzer
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.sanity_check
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.test_completeness
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.dualtor
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/paramiko/transport.py:236
/usr/local/lib/python3.8/dist-packages/paramiko/transport.py:236: CryptographyDeprecationWarning: Blowfish has been deprecated
"class": algorithms.Blowfish,

snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
/usr/local/lib/python3.8/dist-packages/pytest_ansible/module_dispatcher/v213.py:100: UserWarning: provided hosts list is empty, only localhost is available
warnings.warn("provided hosts list is empty, only localhost is available")

snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
/var/AzDevOps/.local/lib/python3.8/site-packages/snappi_ixnetwork/device/utils.py:2: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
from collections import namedtuple, Mapping

snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
/usr/local/lib/python3.8/dist-packages/ixnetwork_restpy/testplatform/sessions/sessions.py:59: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
elif LooseVersion(build_number) < LooseVersion('8.52'):

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
---------------------------------------------------------- live log sessionfinish ----------------------------------------------------------
18:50:41 init.pytest_terminal_summary L0067 INFO | Can not get Allure report URL. Please check logs
================================================ 1 passed, 13 warnings in 473.16s (0:07:53) ================================================

co-authorized by: jianquanye@microsoft.com
yutongzhang-microsoft pushed a commit that referenced this pull request Oct 10, 2024
Description of PR
Summary: Fixing ecnconfig command where -q was missing
Fixes # (issue)
sonic-net#14126

Approach
What is the motivation for this PR?
How did you do it?
How did you verify/test it?
Any platform specific information?
Supported testbed topology if it's a new test case?
Documentation
###OUTPUT
============================= test session starts ==============================
platform linux -- Python 3.8.10, pytest-7.4.0, pluggy-1.3.0 -- /usr/bin/python3
cachedir: .pytest_cache
metadata: {'Python': '3.8.10', 'Platform': 'Linux-5.4.0-150-generic-x86_64-with-glibc2.29', 'Packages': {'pytest': '7.4.0', 'pluggy': '1.3.0'}, 'Plugins': {'allure-pytest': '2.8.22', 'ansible': '4.0.0', 'forked': '1.6.0', 'html': '4.1.0', 'metadata': '3.0.0', 'repeat': '0.9.3', 'xdist': '1.28.0'}}
ansible: 2.13.13
rootdir: /var/AzDevOps/sonic-mgmt/tests
configfile: pytest.ini
plugins: allure-pytest-2.8.22, ansible-4.0.0, forked-1.6.0, html-4.1.0, metadata-3.0.0, repeat-0.9.3, xdist-1.28.0
collecting ...
----------------------------- live log collection ------------------------------
22:57:46 conftest.generate_params_dut_hostname L1210 INFO | Using DUTs ['sonic-s6100-dut1'] in testbed 'vms-snappi-sonic'
22:57:46 conftest.set_rand_one_dut_hostname L0418 INFO | Randomly select dut sonic-s6100-dut1 for testing
22:57:46 init.pytest_collection_modifyitems L0581 INFO | Available basic facts that can be used in conditional skip:
{
"topo_type": "ptf",
"topo_name": "ptf64",
"testbed": "vms-snappi-sonic"
}
collected 1 item

snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
-------------------------------- live log setup --------------------------------
22:57:46 init.set_default L0053 INFO | Completeness level not set during test execution. Setting to default level: CompletenessLevel.basic
22:57:46 init.check_test_completeness L0151 INFO | Test has no defined levels. Continue without test completeness checks
22:57:46 conftest.enhance_inventory L0245 INFO | Inventory file: ['../ansible/snappi-sonic']
22:57:52 ptfhost_utils.run_icmp_responder_session L0239 INFO | Skip running icmp_responder at session level, it is only for dualtor testbed with active-active mux ports.
22:57:52 conftest.core_dump_and_config_check L2154 INFO | Dumping Disk and Memory Space informataion before test on sonic-s6100-dut1
22:57:52 conftest.core_dump_and_config_check L2158 INFO | Collecting core dumps before test on sonic-s6100-dut1
22:57:53 conftest.core_dump_and_config_check L2167 INFO | Collecting running config before test on sonic-s6100-dut1
22:57:55 init.sanity_check L0306 INFO | Skip sanity check according to command line argument
22:57:55 init._fixture_generator_decorator L0081 INFO | -------------------- fixture enable_packet_aging_after_test setup starts --------------------
22:57:55 init._fixture_generator_decorator L0085 INFO | -------------------- fixture enable_packet_aging_after_test setup ends --------------------
22:57:55 init._fixture_generator_decorator L0081 INFO | -------------------- fixture rand_lossless_prio setup starts --------------------
22:57:55 init._fixture_generator_decorator L0085 INFO | -------------------- fixture rand_lossless_prio setup ends --------------------
22:57:55 init._fixture_generator_decorator L0081 INFO | -------------------- fixture rand_lossy_prio setup starts --------------------
22:57:55 init._fixture_generator_decorator L0085 INFO | -------------------- fixture rand_lossy_prio setup ends --------------------
22:57:55 init._fixture_generator_decorator L0081 INFO | -------------------- fixture start_pfcwd_after_test setup starts --------------------
22:57:55 init._fixture_generator_decorator L0085 INFO | -------------------- fixture start_pfcwd_after_test setup ends --------------------
22:57:55 init._fixture_func_decorator L0069 INFO | -------------------- fixture snappi_api_serv_ip setup starts --------------------
22:57:55 init._fixture_func_decorator L0076 INFO | -------------------- fixture snappi_api_serv_ip setup ends --------------------
22:57:55 init._fixture_func_decorator L0069 INFO | -------------------- fixture snappi_api_serv_port setup starts --------------------
22:57:55 init._fixture_func_decorator L0076 INFO | -------------------- fixture snappi_api_serv_port setup ends --------------------
22:57:55 init._fixture_generator_decorator L0081 INFO | -------------------- fixture snappi_api setup starts --------------------
22:57:55 init._fixture_generator_decorator L0085 INFO | -------------------- fixture snappi_api setup ends --------------------
22:57:55 conftest.rand_one_dut_front_end_hostname L0450 INFO | Randomly select dut sonic-s6100-dut1 for testing
22:57:56 conftest.generate_port_lists L1279 INFO | Generate dut_port_map: {'sonic-s6100-dut1': ['sonic-s6100-dut1|Ethernet0', 'sonic-s6100-dut1|Ethernet4']}
22:57:56 conftest.generate_port_lists L1302 INFO | Generate port_list: ['sonic-s6100-dut1|Ethernet0', 'sonic-s6100-dut1|Ethernet4']
22:57:56 init._fixture_func_decorator L0069 INFO | -------------------- fixture prio_dscp_map setup starts --------------------
22:57:56 init._fixture_func_decorator L0076 INFO | -------------------- fixture prio_dscp_map setup ends --------------------
22:57:56 init.loganalyzer L0051 INFO | Log analyzer is disabled
22:57:56 init.memory_utilization L0091 INFO | Hostname: sonic-s6100-dut1, Hwsku: Accton-AS7726-32X, Platform: x86_64-accton_as7726_32x-r0
22:57:56 init.store_fixture_values L0017 INFO | store memory_utilization test_dequeue_ecn
22:57:56 init._fixture_func_decorator L0069 INFO | -------------------- fixture snappi_testbed_config setup starts --------------------
22:57:57 init._fixture_func_decorator L0076 INFO | -------------------- fixture snappi_testbed_config setup ends --------------------
22:57:57 init.pytest_runtest_setup L0024 INFO | collect memory before test test_dequeue_ecn
22:57:58 init.pytest_runtest_setup L0044 INFO | Before test: collected memory_values {'before_test': {'sonic-s6100-dut1': {'monit': {'memory_usage': 15.3}}}, 'after_test': {'sonic-s6100-dut1': {}}}
-------------------------------- live log call ---------------------------------
22:57:58 test_dequeue_ecn_with_snappi.test_dequeu L0066 INFO | Running ECN dequeue test with params: {'kmin': 50000, 'kmax': 51000, 'pmax': 100}
22:57:58 helper.run_ecn_test L0058 INFO | Stopping PFC watchdog
22:57:58 helper.run_ecn_test L0060 INFO | Disabling packet aging if necessary
22:57:58 helper.run_ecn_test L0064 INFO | Configuring WRED and ECN thresholds
22:58:00 helper.run_ecn_test L0072 INFO | Enabling ECN markings
22:58:03 helper.run_ecn_test L0081 INFO | Waiting on ECN and dynamic buffer configuration to take effect. Sleeping for 10 seconds.
22:58:13 helper.run_ecn_test L0097 INFO | Generating base flow config
22:58:13 helper.run_ecn_test L0102 INFO | Setting test flow config params
22:58:13 helper.run_ecn_test L0110 INFO | Setting pause flow config params
22:58:13 helper.run_ecn_test L0124 INFO | Generating test flows
22:58:13 helper.run_ecn_test L0130 INFO | Generating pause flows
22:58:13 helper.run_ecn_test L0141 INFO | Setting packet capture port to Port 1
22:58:13 helper.run_ecn_test L0145 INFO | Running 1 iteration(s)
22:58:13 helper.run_ecn_test L0147 INFO | Running iteration 0
22:58:13 helper.run_ecn_test L0149 INFO | Packet capture file: ECN_cap-0.pcapng
22:58:13 helper.run_ecn_test L0156 INFO | Running traffic
22:58:13 connection._warn L0246 WARNING| Verification of certificates is disabled
22:58:13 connection._info L0243 INFO | Determining the platform and rest_port using the 10.36.78.59 address...
22:58:13 connection._warn L0246 WARNING| Unable to connect to http://10.36.78.59:443.
22:58:13 connection._info L0243 INFO | Connection established to https://10.36.78.59:443 on linux
22:58:36 connection._info L0243 INFO | Using IxNetwork api server version 10.20.2403.2
22:58:36 connection._info L0243 INFO | User info IxNetwork/ixnetworkweb/admin-62-23797
22:58:37 snappi_api.info L1132 INFO | snappi-0.9.1
22:58:37 snappi_api.info L1132 INFO | snappi_ixnetwork-0.8.2
22:58:37 snappi_api.info L1132 INFO | ixnetwork_restpy-1.0.64
22:58:38 snappi_api.info L1132 INFO | Config validation 0.013s
22:58:41 snappi_api.info L1132 INFO | Ports configuration 2.098s
22:58:41 snappi_api.info L1132 INFO | Captures configuration 0.631s
22:58:44 snappi_api.info L1132 INFO | Add location hosts [10.36.78.96] 2.458s
22:58:49 snappi_api.info L1132 INFO | Location hosts ready [10.36.78.96] 4.298s
22:58:49 snappi_api.info L1132 INFO | Speed conversion is not require for (port.name, speed) : [('Port 0', 'novusHundredGigNonFanOut'), ('Port 1', 'novusHundredGigNonFanOut')]
22:58:49 snappi_api.info L1132 INFO | Aggregation mode speed change 0.549s
22:58:54 snappi_api.info L1132 INFO | Location preemption [10.36.78.96;1;5, 10.36.78.96;1;6] 0.241s
22:59:17 snappi_api.info L1132 INFO | Location connect [Port 0, Port 1] 22.595s
22:59:17 snappi_api.warning L1138 WARNING| Port 0 connectedLinkDown
22:59:17 snappi_api.warning L1138 WARNING| Port 1 connectedLinkDown
22:59:17 snappi_api.info L1132 INFO | Location state check [Port 0, Port 1] 0.455s
22:59:17 snappi_api.info L1132 INFO | Location configuration 35.939s
22:59:27 snappi_api.info L1132 INFO | Layer1 configuration 9.982s
22:59:28 snappi_api.info L1132 INFO | Lag Configuration 0.160s
22:59:28 snappi_api.info L1132 INFO | Convert device config : 0.412s
22:59:28 snappi_api.info L1132 INFO | Create IxNetwork device config : 0.000s
22:59:29 snappi_api.info L1132 INFO | Push IxNetwork device config : 0.849s
22:59:29 snappi_api.info L1132 INFO | Devices configuration 1.397s
22:59:33 snappi_api.info L1132 INFO | Flows configuration 4.227s
22:59:44 snappi_api.info L1132 INFO | Start interfaces 10.798s
22:59:45 snappi_api.info L1132 INFO | IxNet - The Traffic Item was modified. Please perform a Traffic Generate to update the associated traffic Flow Groups
22:59:45 traffic_generation.run_traffic L0322 INFO | Wait for Arp to Resolve ...
22:59:47 traffic_generation.run_traffic L0333 INFO | Starting packet capture ...
22:59:49 snappi_api.info L1132 INFO | Captures start 1.911s
22:59:53 traffic_generation.run_traffic L0343 INFO | Starting transmit on all flows ...
22:59:58 snappi_api.info L1132 INFO | Flows generate/apply 4.230s
23:00:10 snappi_api.info L1132 INFO | Flows clear statistics 11.831s
23:00:11 snappi_api.info L1132 INFO | Captures start 1.086s
23:00:15 snappi_api.info L1132 INFO | Flows start 3.528s
23:00:16 traffic_generation.run_traffic L0380 INFO | Polling TGEN for in-flight traffic statistics...
23:00:20 traffic_generation.run_traffic L0388 INFO | Checking if all flows have stopped. Attempt #1
23:00:22 traffic_generation.run_traffic L0395 INFO | All test and background traffic flows stopped
23:00:24 traffic_generation.run_traffic L0406 INFO | Stopping packet capture ...
23:00:26 snappi_api.info L1132 INFO | Captures stop 1.348s
23:00:26 traffic_generation.run_traffic L0412 INFO | Retrieving and saving packet capture to ECN_cap-0.pcapng
23:03:05 snappi_api.warning L1138 WARNING| Capture was not stopped for this port Port 1
23:03:05 snappi_api.info L1132 INFO | Captures stop 158.173s
23:03:08 traffic_generation.run_traffic L0418 INFO | Dumping per-flow statistics
23:03:10 traffic_generation.run_traffic L0420 INFO | Stopping transmit on all remaining flows
23:03:11 read_pcap.get_ipv4_pkts L0080 INFO | Reading packets from pcap file -> ECN_cap-0.pcapng
23:03:11 read_pcap.get_ipv4_pkts L0081 INFO | Extracting ethernet frames from pcap file
23:03:11 test_dequeue_ecn_with_snappi.test_dequeu L0085 INFO | Running verification for ECN dequeue test
23:03:11 read_pcap.is_ecn_marked L0103 INFO | Checking if the packet is ECN congestion marked
23:03:11 read_pcap.is_ecn_marked L0103 INFO | Checking if the packet is ECN congestion marked
23:03:11 test_dequeue_ecn_with_snappi.test_dequeu L0098 INFO | Reloading config to teardown ECN config
23:03:11 config_reload.config_reload L0138 INFO | reloading config_db
23:04:52 processes_utils.wait_critical_processes L0076 INFO | Wait until all critical processes are healthy in 300 sec
23:04:52 processes_utils.all_critical_processes L0045 INFO | Check critical processes status
PASSED [100%]
------------------------------ live log teardown -------------------------------
23:04:56 init.pytest_runtest_teardown L0049 INFO | collect memory after test test_dequeue_ecn
23:04:57 init.pytest_runtest_teardown L0072 INFO | After test: collected memory_values {'before_test': {'sonic-s6100-dut1': {'monit': {'memory_usage': 15.3}}}, 'after_test': {'sonic-s6100-dut1': {'monit': {'memory_usage': 5.6}}}}
23:04:57 init._fixture_generator_decorator L0093 INFO | -------------------- fixture snappi_api teardown starts --------------------
23:05:20 init._fixture_generator_decorator L0102 INFO | -------------------- fixture snappi_api teardown ends --------------------
23:05:20 init._fixture_generator_decorator L0093 INFO | -------------------- fixture start_pfcwd_after_test teardown starts --------------------
23:05:21 init._fixture_generator_decorator L0102 INFO | -------------------- fixture start_pfcwd_after_test teardown ends --------------------
23:05:21 init._fixture_generator_decorator L0093 INFO | -------------------- fixture rand_lossy_prio teardown starts --------------------
23:05:21 init._fixture_generator_decorator L0102 INFO | -------------------- fixture rand_lossy_prio teardown ends --------------------
23:05:21 init._fixture_generator_decorator L0093 INFO | -------------------- fixture rand_lossless_prio teardown starts --------------------
23:05:21 init._fixture_generator_decorator L0102 INFO | -------------------- fixture rand_lossless_prio teardown ends --------------------
23:05:21 init._fixture_generator_decorator L0093 INFO | -------------------- fixture enable_packet_aging_after_test teardown starts --------------------
23:05:21 init._fixture_generator_decorator L0102 INFO | -------------------- fixture enable_packet_aging_after_test teardown ends --------------------
23:05:21 conftest.core_dump_and_config_check L2195 INFO | Dumping Disk and Memory Space informataion after test on sonic-s6100-dut1
23:05:22 conftest.core_dump_and_config_check L2199 INFO | Collecting core dumps after test on sonic-s6100-dut1
23:05:22 conftest.core_dump_and_config_check L2216 INFO | Collecting running config after test on sonic-s6100-dut1
23:05:23 conftest.core_dump_and_config_check L2344 WARNING| Core dump or config check failed for test_dequeue_ecn_with_snappi.py, results: {"core_dump_check": {"pass": true, "new_core_dumps": {"sonic-s6100-dut1": []}}, "config_db_check": {"pass": false, "pre_only_config": {"sonic-s6100-dut1": {"null": {}}}, "cur_only_config": {"sonic-s6100-dut1": {"null": {"PFC_WD": {"GLOBAL": {"POLL_INTERVAL": "200"}}}}}, "inconsistent_config": {"sonic-s6100-dut1": {"null": {}}}}}
23:05:23 conftest.__dut_reload L2086 INFO | dut reload called on sonic-s6100-dut1
23:05:23 config_reload.config_reload L0138 INFO | reloading config_db
23:08:45 parallel.on_terminate L0085 INFO | process __dut_reload-- terminated with exit code None
23:08:45 parallel.parallel_run L0221 INFO | Completed running processes for target "__dut_reload" in 0:03:22.578938 seconds

=============================== warnings summary ===============================
../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.loganalyzer
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.sanity_check
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.test_completeness
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.dualtor
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/paramiko/transport.py:236
/usr/local/lib/python3.8/dist-packages/paramiko/transport.py:236: CryptographyDeprecationWarning: Blowfish has been deprecated
"class": algorithms.Blowfish,

../../../../usr/local/lib/python3.8/dist-packages/scapy/layers/ipsec.py:471
/usr/local/lib/python3.8/dist-packages/scapy/layers/ipsec.py:471: CryptographyDeprecationWarning: Blowfish has been deprecated
cipher=algorithms.Blowfish,

../../../../usr/local/lib/python3.8/dist-packages/scapy/layers/ipsec.py:485
/usr/local/lib/python3.8/dist-packages/scapy/layers/ipsec.py:485: CryptographyDeprecationWarning: CAST5 has been deprecated
cipher=algorithms.CAST5,

snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
/usr/local/lib/python3.8/dist-packages/pytest_ansible/module_dispatcher/v213.py:100: UserWarning: provided hosts list is empty, only localhost is available
warnings.warn("provided hosts list is empty, only localhost is available")

snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
/var/AzDevOps/.local/lib/python3.8/site-packages/snappi_ixnetwork/device/utils.py:2: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
from collections import namedtuple, Mapping

snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
snappi_tests/ecn/test_dequeue_ecn_with_snappi.py::test_dequeue_ecn
/usr/local/lib/python3.8/dist-packages/ixnetwork_restpy/testplatform/sessions/sessions.py:59: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
elif LooseVersion(build_number) < LooseVersion('8.52'):

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
---------------------------- live log sessionfinish ----------------------------
23:08:45 init.pytest_terminal_summary L0067 INFO | Can not get Allure report URL. Please check logs
================== 1 passed, 14 warnings in 659.38s (0:10:59) ==================

co-authorized by: jianquanye@microsoft.com
yutongzhang-microsoft pushed a commit that referenced this pull request Oct 10, 2024
…onic-net#14416)

Description of PR
Summary: Adding dut counter verification for PFC Oversubscription cases
Fixes # (issue)
sonic-net#13596

Approach
Dependency
sonic-net#13848

What is the motivation for this PR?
Verifies the packet drops from the dut interface counters

How did you do it?
How did you verify/test it?
Any platform specific information?
Supported testbed topology if it's a new test case?
Documentation
Output
18:43:03 test_m2o_oversubscribe_lossless.test_m2o L0077 INFO | Running test for testbed subtype: single-dut-single-asic
18:43:03 snappi_fixtures.__intf_config_multidut L0796 INFO | Configuring Dut: sonic-s6100-dut1 with port Ethernet0 with IP 20.1.1.1/24
18:43:05 snappi_fixtures.__intf_config_multidut L0796 INFO | Configuring Dut: sonic-s6100-dut1 with port Ethernet4 with IP 20.1.2.1/24
18:43:07 snappi_fixtures.__intf_config_multidut L0796 INFO | Configuring Dut: sonic-s6100-dut1 with port Ethernet8 with IP 20.1.3.1/24
18:43:10 connection._warn L0246 WARNING| Verification of certificates is disabled
18:43:10 connection._info L0243 INFO | Determining the platform and rest_port using the 10.36.78.59 address...
18:43:10 connection._warn L0246 WARNING| Unable to connect to http://10.36.78.59:443.
18:43:10 connection._info L0243 INFO | Connection established to https://10.36.78.59:443 on linux
18:43:24 connection._info L0243 INFO | Using IxNetwork api server version 10.20.2403.2
18:43:24 connection._info L0243 INFO | User info IxNetwork/ixnetworkweb/admin-68-20480
18:43:25 snappi_api.info L1132 INFO | snappi-0.9.1
18:43:25 snappi_api.info L1132 INFO | snappi_ixnetwork-0.8.2
18:43:25 snappi_api.info L1132 INFO | ixnetwork_restpy-1.0.64
18:43:25 snappi_api.info L1132 INFO | Config validation 0.020s
18:43:27 snappi_api.info L1132 INFO | Ports configuration 1.544s
18:43:27 snappi_api.info L1132 INFO | Captures configuration 0.161s
18:43:30 snappi_api.info L1132 INFO | Add location hosts [10.36.78.53] 2.285s
18:43:34 snappi_api.info L1132 INFO | Location hosts ready [10.36.78.53] 4.212s
18:43:35 snappi_api.info L1132 INFO | Speed conversion is not require for (port.name, speed) : [('Port 0', 'novusHundredGigNonFanOut'), ('Port 1', 'novusHundredGigNonFanOut'), ('Port 2', 'novusHundredGigNonFanOut')]
18:43:35 snappi_api.info L1132 INFO | Aggregation mode speed change 0.479s
18:43:42 snappi_api.info L1132 INFO | Location preemption [10.36.78.53;6;1, 10.36.78.53;6;2, 10.36.78.53;6;3] 0.111s
18:44:07 snappi_api.info L1132 INFO | Location connect [Port 0, Port 1, Port 2] 25.066s
18:44:07 snappi_api.warning L1138 WARNING| Port 0 connectedLinkDown
18:44:07 snappi_api.warning L1138 WARNING| Port 1 connectedLinkDown
18:44:07 snappi_api.warning L1138 WARNING| Port 2 connectedLinkDown
18:44:07 snappi_api.info L1132 INFO | Location state check [Port 0, Port 1, Port 2] 0.245s
18:44:07 snappi_api.info L1132 INFO | Location configuration 39.389s
18:44:19 snappi_api.info L1132 INFO | Layer1 configuration 12.161s
18:44:19 snappi_api.info L1132 INFO | Lag Configuration 0.082s
18:44:19 snappi_api.info L1132 INFO | Convert device config : 0.224s
18:44:19 snappi_api.info L1132 INFO | Create IxNetwork device config : 0.000s
18:44:20 snappi_api.info L1132 INFO | Push IxNetwork device config : 0.641s
18:44:20 snappi_api.info L1132 INFO | Devices configuration 0.940s
18:44:25 snappi_api.info L1132 INFO | Flows configuration 5.128s
18:45:25 snappi_api.info L1132 INFO | Start interfaces 59.556s
18:45:25 snappi_api.info L1132 INFO | IxNet - The Traffic Item was modified. Please perform a Traffic Generate to update the associated traffic Flow Groups
18:45:30 traffic_generation.run_traffic L0322 INFO | Wait for Arp to Resolve ...
18:45:36 traffic_generation.run_traffic L0322 INFO | Starting transmit on all flows ...
18:48:41 snappi_api.info L1132 INFO | Flows generate/apply 184.474s
18:48:54 snappi_api.info L1132 INFO | Flows clear statistics 12.396s
18:48:54 snappi_api.info L1132 INFO | Captures start 0.000s
18:49:17 snappi_api.info L1132 INFO | Flows start 22.926s
18:49:17 traffic_generation.run_traffic L0322 INFO | Polling DUT for traffic statistics for 15 seconds ...
18:49:23 traffic_generation.run_traffic L0322 INFO | Polling TGEN for in-flight traffic statistics...
18:49:25 traffic_generation.run_traffic L0322 INFO | In-flight traffic statistics for flows: ['Test Flow 1 -> 0', 'Test Flow 2 -> 0', 'Background Flow 1 -> 0', 'Background Flow 2 -> 0']
18:49:25 traffic_generation.run_traffic L0322 INFO | In-flight TX frames: [6312174, 6312175, 6310775, 6310775]
18:49:25 traffic_generation.run_traffic L0322 INFO | In-flight RX frames: [6311444, 6311444, 6310765, 6310766]
18:49:29 traffic_generation.run_traffic L0322 INFO | DUT polling complete
18:49:29 traffic_generation.run_traffic L0322 INFO | Checking if all flows have stopped. Attempt #1
18:49:30 traffic_generation.run_traffic L0322 INFO | ['started', 'started', 'started', 'started']
18:49:31 traffic_generation.run_traffic L0322 INFO | Checking if all flows have stopped. Attempt #2
18:49:32 traffic_generation.run_traffic L0322 INFO | ['started', 'started', 'started', 'started']
18:49:33 traffic_generation.run_traffic L0322 INFO | Checking if all flows have stopped. Attempt #3
18:49:35 traffic_generation.run_traffic L0322 INFO | ['started', 'started', 'stopped', 'stopped']
18:49:36 traffic_generation.run_traffic L0322 INFO | Checking if all flows have stopped. Attempt #4
18:49:37 traffic_generation.run_traffic L0322 INFO | ['stopped', 'stopped', 'stopped', 'stopped']
18:49:37 traffic_generation.run_traffic L0322 INFO | All test and background traffic flows stopped
18:49:39 traffic_generation.run_traffic L0322 INFO | Dumping per-flow statistics
18:49:40 traffic_generation.run_traffic L0322 INFO | Stopping transmit on all remaining flows
18:49:41 snappi_fixtures.cleanup_config L0952 INFO | Removing Configuration on Dut: sonic-s6100-dut1 with port Ethernet0 with ip :20.1.1.1/24
18:49:43 snappi_fixtures.cleanup_config L0952 INFO | Removing Configuration on Dut: sonic-s6100-dut1 with port Ethernet4 with ip :20.1.2.1/24
18:49:45 snappi_fixtures.cleanup_config L0952 INFO | Removing Configuration on Dut: sonic-s6100-dut1 with port Ethernet8 with ip :20.1.3.1/24
PASSED [100%]
------------------------------------------------------------ live log teardown -------------------------------------------------------------
18:49:47 init.pytest_runtest_teardown L0049 INFO | collect memory after test test_m2o_oversubscribe_lossless[multidut_port_info0]
18:49:48 init.pytest_runtest_teardown L0072 INFO | After test: collected memory_values {'before_test': {'sonic-s6100-dut1': {'monit': {'memory_usage': 13.9}}}, 'after_test': {'sonic-s6100-dut1': {'monit': {'memory_usage': 31.3}}}}
18:49:48 init._fixture_generator_decorator L0093 INFO | -------------------- fixture snappi_api teardown starts --------------------
18:50:03 init._fixture_generator_decorator L0102 INFO | -------------------- fixture snappi_api teardown ends --------------------
18:50:03 init._fixture_generator_decorator L0093 INFO | -------------------- fixture start_pfcwd_after_test teardown starts --------------------
18:50:05 init._fixture_generator_decorator L0102 INFO | -------------------- fixture start_pfcwd_after_test teardown ends --------------------
18:50:05 init._fixture_generator_decorator L0093 INFO | -------------------- fixture rand_lossy_prio teardown starts --------------------
18:50:05 init._fixture_generator_decorator L0102 INFO | -------------------- fixture rand_lossy_prio teardown ends --------------------
18:50:05 init._fixture_generator_decorator L0093 INFO | -------------------- fixture rand_lossless_prio teardown starts --------------------
18:50:05 init._fixture_generator_decorator L0102 INFO | -------------------- fixture rand_lossless_prio teardown ends --------------------
18:50:05 init._fixture_generator_decorator L0093 INFO | -------------------- fixture enable_packet_aging_after_test teardown starts --------------------
18:50:05 init._fixture_generator_decorator L0102 INFO | -------------------- fixture enable_packet_aging_after_test teardown ends --------------------
18:50:05 conftest.core_dump_and_config_check L2203 INFO | Dumping Disk and Memory Space informataion after test on sonic-s6100-dut1
18:50:06 conftest.core_dump_and_config_check L2207 INFO | Collecting core dumps after test on sonic-s6100-dut1
18:50:07 conftest.core_dump_and_config_check L2224 INFO | Collecting running config after test on sonic-s6100-dut1
18:50:08 conftest.core_dump_and_config_check L2352 WARNING| Core dump or config check failed for test_m2o_oversubscribe_lossless.py, results: {"core_dump_check": {"pass": true, "new_core_dumps": {"sonic-s6100-dut1": []}}, "config_db_check": {"pass": false, "pre_only_config": {"sonic-s6100-dut1": {"null": {"INTERFACE": {"Ethernet0": {}, "Ethernet12": {}, "Ethernet4": {}, "Ethernet8": {}, "Ethernet0|21.1.1.1/24": {}, "Ethernet12|24.1.1.1/24": {}, "Ethernet4|22.1.1.1/24": {}, "Ethernet8|23.1.1.1/24": {}}}}}, "cur_only_config": {"sonic-s6100-dut1": {"null": {}}}, "inconsistent_config": {"sonic-s6100-dut1": {"null": {"PFC_WD": {"pre_value": {"GLOBAL": {"POLL_INTERVAL": "200"}}, "cur_value": {"Ethernet0": {"action": "drop", "detection_time": "200", "restoration_time": "200"}, "Ethernet12": {"action": "drop", "detection_time": "200", "restoration_time": "200"}, "Ethernet4": {"action": "drop", "detection_time": "200", "restoration_time": "200"}, "Ethernet8": {"action": "drop", "detection_time": "200", "restoration_time": "200"}, "GLOBAL": {"POLL_INTERVAL": "200"}}}}}}}}
18:50:08 conftest.__dut_reload L2091 INFO | dut reload called on sonic-s6100-dut1
18:50:10 parallel.on_terminate L0085 INFO | process __dut_reload-- terminated with exit code None
18:50:10 parallel.parallel_run L0221 INFO | Completed running processes for target "__dut_reload" in 0:00:01.443244 seconds
18:50:10 conftest.core_dump_and_config_check L2362 INFO | -----$$$$$$$$$$--------------- Executing config reload of config_db_bgp.json -------------$$$$$$$$$$$$$$

============================================================= warnings summary =============================================================
../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.loganalyzer
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.sanity_check
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.plugins.test_completeness
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755
/usr/local/lib/python3.8/dist-packages/_pytest/config/init.py:755: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: tests.common.dualtor
self.import_plugin(import_spec)

../../../../usr/local/lib/python3.8/dist-packages/paramiko/transport.py:236
/usr/local/lib/python3.8/dist-packages/paramiko/transport.py:236: CryptographyDeprecationWarning: Blowfish has been deprecated
"class": algorithms.Blowfish,

snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
/usr/local/lib/python3.8/dist-packages/pytest_ansible/module_dispatcher/v213.py:100: UserWarning: provided hosts list is empty, only localhost is available
warnings.warn("provided hosts list is empty, only localhost is available")

snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
/var/AzDevOps/.local/lib/python3.8/site-packages/snappi_ixnetwork/device/utils.py:2: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
from collections import namedtuple, Mapping

snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
snappi_tests/multidut/pfc/test_m2o_oversubscribe_lossless.py::test_m2o_oversubscribe_lossless[multidut_port_info0]
/usr/local/lib/python3.8/dist-packages/ixnetwork_restpy/testplatform/sessions/sessions.py:59: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
elif LooseVersion(build_number) < LooseVersion('8.52'):

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
---------------------------------------------------------- live log sessionfinish ----------------------------------------------------------
18:50:41 init.pytest_terminal_summary L0067 INFO | Can not get Allure report URL. Please check logs
================================================ 1 passed, 13 warnings in 473.16s (0:07:53) ================================================

co-authorized by: jianquanye@microsoft.com
yutongzhang-microsoft pushed a commit that referenced this pull request Oct 11, 2024
…y cases (sonic-net#12825) (sonic-net#12845)

Description of PR
This PR is to address the fixture setup sequence issue, and teardown out of sequence issue.

In convert_and_restore_config_db_to_ipv6_only, it will do a "config reload -y" during fixture setup or teardown.

For feature test cases where config is not saved into config_db.json, this reload needs to be done before feature fixture setup and after feature teardown, such as: tacacs_v6, setup_streaming_telemetry, or setup_ntp.

According to https://docs.pytest.org/en/latest/reference/fixtures.html#reference-fixtures, it only considers the following when deciding the fixture orders:

scope
dependencies
autouse
We shouldn't use autouse in this test module. So only two options to let convert_and_restore_config_db_to_ipv6_only runs before other fixtures:

define other fixtures in 'function' scope.
define the feature fixture to request convert_and_restore_config_db_to_ipv6_only explicit.
Using option #1 in this PR as the new 'function' scope fixture can be reused by other cases. Option #2 has good readability, but will limit the new fixture to be used by ipv6_only cases.

Summary:
Fixes sonic-net#12705

Approach
What is the motivation for this PR?
Multiple errors were observed in mgmt_ipv6 are related to fixture setup/teardown sequence.

How did you do it?
Added two 'function' scope fixture: check_tacacs_v6_func and setup_streaming_telemetry_func.
And modified 3 tests cases to use 'function' scope fixture.

test_ro_user_ipv6_only
test_rw_user_ipv6_only
test_telemetry_output_ipv6_only

co-authorized by: jianquanye@microsoft.com
yutongzhang-microsoft pushed a commit that referenced this pull request May 12, 2025
…in pfc_pause_lossless test (sonic-net#18105)

Description of PR
In tests/snappi_tests/pfc/test_pfc_pause_lossless_with_snappi.py, we have reboot testcases.

We disable the PFCWD and Credit-WD in the testcase and reboot the the DUT depending upon type of reboot. However, on cold-reboot, the Credit-WD is getting reset back.

This causes the lossless test flows on IXIA to continuously send traffic despite of the pause-storm. The run_traffic in traffic_generation.py is trying to determine if the test stops within a stipulated duration, which it does not and throws an assert that flows have not stopped within the given time duration and attempts.

Summary:
Fixes # (issue)
sonic-net#18082

Type of change
 Bug fix
 Testbed and Framework(new/improvement)
 New Test case
 Skipped for non-supported platforms
 Test case improvement
Back port request
 202012
 202205
 202305
 202311
 202405
 202411
Approach
What is the motivation for this PR?
The reboot_dut was called after the PFCWD and Credit-WD disable. The reboot caused the Credit-WD to reset back and hence test failed.

How did you do it?
Created a single fixture called reboot_duts_and_disable_wd to reboot the DUTs and disable Credit and PFC watch-dogs.

This fixture is added in snappi_tests/files/helper.py.

Modified the testcase - snappi_tests/pfc/test_pfc_pause_lossless_with_snappi.py to incorporate the above fixture.

How did you verify/test it?
T0/T1 setup verification:

AzDevOps@sonic_mgmt_nokia_202411:/data/sonic-mgmt/tests$ date;python3 -m pytest --inventory ../ansible/ixia-sonic --host-pattern ixr-x3b-14 --testbed ixr-aaa-14-t2 --testbed_file ../ansible/testbed.csv --log-cli-level info --log-file-level info --kube_master unset --showlocals -ra --show-capture stdout --junit-xml=/tmp/p.xml --skip_sanity --log-file=/tmp/p.log --cache-clear --topology tgen snappi_tests/pfc/test_pfc_pause_lossless_with_snappi.py -k reboot
Thu May  1 13:45:24 UTC 2025

-------------------------- curtailed output -----------------------

snappi_tests/pfc/test_pfc_pause_lossless_with_snappi.py::test_pfc_pause_single_lossless_prio_reboot[multidut_port_info0-cold-ixr-aaa-14|3] 
--------------------------------------------------------------------------------------------------- live log setup ----------------------------------------------------------------------------------------------------
13:46:03 __init__.set_default                     L0053 INFO   | Completeness level not set during test execution. Setting to default level: CompletenessLevel.basic
13:46:03 __init__.check_test_completeness         L0151 INFO   | Test has no defined levels. Continue without test completeness checks
13:46:03 __init__.loganalyzer                     L0067 INFO   | Log analyzer is disabled
13:46:03 __init__.store_fixture_values            L0020 INFO   | store memory_utilization test_pfc_pause_single_lossless_prio_reboot[multidut_port_info0-cold-ixr-aaa-14|3]
13:46:03 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture ignore_route_check_for_cisco_8000 setup starts --------------------
13:46:03 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture ignore_route_check_for_cisco_8000 setup ends --------------------
13:46:03 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture multidut_port_info setup starts --------------------
13:46:03 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture multidut_port_info setup ends --------------------
13:46:03 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture number_of_tx_rx_ports setup starts --------------------
13:46:03 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture number_of_tx_rx_ports setup ends --------------------
13:46:03 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture setup_ports_and_dut setup starts --------------------
13:46:03 helper.setup_ports_and_dut               L0111 INFO   | Running test for testbed subtype: single-dut-multi-asic-aaa
13:46:04 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture setup_ports_and_dut setup ends --------------------
13:46:04 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture reboot_duts_and_disable_wd setup starts --------------------
13:46:05 sonic.get_asic_name                      L1797 INFO   | asic: unknown
13:46:05 helper.skip_warm_reboot                  L0045 INFO   | Reboot type cold is  supported on broadcom switches
13:46:05 sonic.get_asic_name                      L1797 INFO   | asic: unknown
13:46:05 helper.skip_warm_reboot                  L0045 INFO   | Reboot type cold is  supported on broadcom switches
13:46:08 helper.save_config_and_reboot            L0210 INFO   | Issuing a cold reboot on the dut ixr-aaa-14
13:46:11 reboot.reboot                            L0271 INFO   | Reboot ixr-aaa-14: wait[120], timeout[300]
13:46:11 reboot.reboot                            L0273 INFO   | DUT ixr-aaa-14 create a file /dev/shm/test_reboot before rebooting
13:46:12 reboot.collect_console_log               L0566 INFO   | start: collect console log
13:46:12 dut_utils.creds_on_dut                   L0471 INFO   | dut ixr-aaa-14 belongs to groups ['ixia-sonic', 'sonic', 'sonic_aaa', 'fanout']
13:46:12 dut_utils.creds_on_dut                   L0496 INFO   | skip empty var file /data/sonic-mgmt/tests/common/helpers/../../../ansible/group_vars/all/corefile_uploader.yml
13:46:12 transport._log                           L1873 INFO   | Connected (version 2.0, client OpenSSH_9.2p1)
13:46:16 transport._log                           L1873 INFO   | Auth banner: b'Debian GNU/Linux 12 \\n \\l\n\n'
13:46:16 transport._log                           L1873 INFO   | Authentication (password) failed.
13:46:16 transport._log                           L1873 INFO   | Connected (version 2.0, client OpenSSH_9.2p1)
13:46:16 transport._log                           L1873 INFO   | Auth banner: b'Debian GNU/Linux 12 \\n \\l\n\n'
13:46:16 transport._log                           L1873 INFO   | Authentication (password) successful!
13:46:17 reboot.try_create_dut_console            L0559 WARNING| Fail to create dut console. Please check console config or if console works ro not. 'ManagementIp'
13:46:17 reboot.collect_console_log               L0576 WARNING| dut console is not ready, we cannot get log by console
13:46:17 reboot.wait_for_shutdown                 L0164 INFO   | waiting for ssh to drop on ixr-aaa-14
13:46:17 reboot.execute_reboot_command            L0205 INFO   | rebooting ixr-aaa-14 with command "reboot"
13:46:35 reboot.wait_for_startup                  L0185 INFO   | waiting for ssh to startup on ixr-aaa-14
13:48:05 reboot.wait_for_startup                  L0197 INFO   | ssh has started up on ixr-aaa-14
13:48:05 reboot.reboot                            L0300 INFO   | waiting for switch ixr-aaa-14 to initialize
13:52:31 processes_utils.wait_critical_processes  L0078 INFO   | Wait until all critical processes are healthy in 600 sec
13:52:31 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
13:52:40 reboot.reboot                            L0330 INFO   | cold reboot finished on ixr-aaa-14
13:52:41 reboot.reboot                            L0333 INFO   | DUT ixr-aaa-14 up since 2025-05-01 13:47:31.410000
13:52:41 helper.save_config_and_reboot            L0214 INFO   | Wait until the system is stable
13:52:47 sonic_asic.check_bgp_session_state       L0714 INFO   | bgp neighbors that match the state: ['3.3.3.2', '3333::3:2'] on namespace asic0
13:52:47 sonic_asic.check_bgp_session_state       L0715 INFO   | bgp neighbors to be checked on the state: [] on namespace asic0
13:52:48 sonic_asic.check_bgp_session_state       L0714 INFO   | bgp neighbors that match the state: ['3.3.3.1', '3333::3:1'] on namespace asic1
13:52:48 sonic_asic.check_bgp_session_state       L0715 INFO   | bgp neighbors to be checked on the state: [] on namespace asic1
13:52:48 parallel.on_terminate                    L0085 INFO   | process save_config_and_reboot--<MultiAsicSonicHost ixr-aaa-14> terminated with exit code None
13:52:48 parallel.parallel_run                    L0221 INFO   | Completed running processes for target "save_config_and_reboot" in 0:06:43.000484 seconds
13:52:54 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture reboot_duts_and_disable_wd setup ends --------------------
13:52:54 __init__.pytest_runtest_setup            L0034 INFO   | collect memory before test test_pfc_pause_single_lossless_prio_reboot[multidut_port_info0-cold-ixr-aaa-14|3]
13:52:54 __init__.pytest_runtest_setup            L0054 INFO   | Before test: collected memory_values {'before_test': {}, 'after_test': {}}

-------------------------- curtailed output -----------------------

13:57:03 traffic_generation.run_traffic           L0465 INFO   | In-flight traffic statistics for flows: ['Test Flow Prio 3', 'Background Flow Prio 1', 'Background Flow Prio 4', 'Background Flow Prio 5', 'Background Flow Prio 6', 'Background Flow Prio 2', 'Background Flow Prio 0']
13:57:03 traffic_generation.run_traffic           L0466 INFO   | In-flight TX frames: [70428, 63697318, 63697318, 63697318, 63697318, 63697318, 63697318]
13:57:03 traffic_generation.run_traffic           L0467 INFO   | In-flight RX frames: [0, 63697318, 63697318, 63697318, 63697318, 63697318, 63697318]
13:57:21 traffic_generation.run_traffic           L0468 INFO   | DUT polling complete
13:57:21 traffic_generation.run_traffic           L0479 INFO   | Checking if all flows have stopped. Attempt #1
13:57:22 traffic_generation.run_traffic           L0486 INFO   | All test and background traffic flows stopped
13:57:24 traffic_generation.run_traffic           L0514 INFO   | Dumping per-flow statistics
13:57:25 traffic_generation.run_traffic           L0516 INFO   | Stopping transmit on all remaining flows
13:57:32 snappi_api.info                          L1132 INFO   | Flows stop 6.258s
PASSED        

-------------------------- curtailed output -----------------------

snappi_tests/pfc/test_pfc_pause_lossless_with_snappi.py::test_pfc_pause_multi_lossless_prio_reboot[multidut_port_info0-cold] 
--------------------------------------------------------------------------------------------------- live log setup ----------------------------------------------------------------------------------------------------
14:17:56 __init__.set_default                     L0053 INFO   | Completeness level not set during test execution. Setting to default level: CompletenessLevel.basic
14:17:56 __init__.check_test_completeness         L0151 INFO   | Test has no defined levels. Continue without test completeness checks
14:17:56 __init__.loganalyzer                     L0067 INFO   | Log analyzer is disabled
14:17:56 __init__.store_fixture_values            L0020 INFO   | store memory_utilization test_pfc_pause_multi_lossless_prio_reboot[multidut_port_info0-cold]
14:17:56 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture ignore_route_check_for_cisco_8000 setup starts --------------------
14:17:56 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture ignore_route_check_for_cisco_8000 setup ends --------------------
14:17:56 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture multidut_port_info setup starts --------------------
14:17:56 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture multidut_port_info setup ends --------------------
14:17:56 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture number_of_tx_rx_ports setup starts --------------------
14:17:56 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture number_of_tx_rx_ports setup ends --------------------
14:17:56 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture setup_ports_and_dut setup starts --------------------
14:17:56 helper.setup_ports_and_dut               L0111 INFO   | Running test for testbed subtype: single-dut-multi-asic-aaa
14:17:57 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture setup_ports_and_dut setup ends --------------------
14:17:57 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture reboot_duts_and_disable_wd setup starts --------------------
14:17:58 sonic.get_asic_name                      L1797 INFO   | asic: unknown
14:17:58 helper.skip_warm_reboot                  L0045 INFO   | Reboot type cold is  supported on broadcom switches
14:17:58 sonic.get_asic_name                      L1797 INFO   | asic: unknown
14:17:58 helper.skip_warm_reboot                  L0045 INFO   | Reboot type cold is  supported on broadcom switches
14:18:01 helper.save_config_and_reboot            L0210 INFO   | Issuing a cold reboot on the dut ixr-aaa-14
14:18:04 reboot.reboot                            L0271 INFO   | Reboot ixr-aaa-14: wait[120], timeout[300]
14:18:04 reboot.reboot                            L0273 INFO   | DUT ixr-aaa-14 create a file /dev/shm/test_reboot before rebooting
14:18:05 reboot.collect_console_log               L0566 INFO   | start: collect console log
14:18:05 dut_utils.creds_on_dut                   L0471 INFO   | dut ixr-aaa-14 belongs to groups ['ixia-sonic', 'sonic', 'sonic_aaa', 'fanout']
14:18:05 dut_utils.creds_on_dut                   L0496 INFO   | skip empty var file /data/sonic-mgmt/tests/common/helpers/../../../ansible/group_vars/all/corefile_uploader.yml
14:18:05 transport._log                           L1873 INFO   | Connected (version 2.0, client OpenSSH_9.2p1)
14:18:07 transport._log                           L1873 INFO   | Auth banner: b'Debian GNU/Linux 12 \\n \\l\n\n'
14:18:07 transport._log                           L1873 INFO   | Authentication (password) failed.
14:18:07 transport._log                           L1873 INFO   | Connected (version 2.0, client OpenSSH_9.2p1)
14:18:07 transport._log                           L1873 INFO   | Auth banner: b'Debian GNU/Linux 12 \\n \\l\n\n'
14:18:07 transport._log                           L1873 INFO   | Authentication (password) successful!
14:18:08 reboot.try_create_dut_console            L0559 WARNING| Fail to create dut console. Please check console config or if console works ro not. 'ManagementIp'
14:18:08 reboot.collect_console_log               L0576 WARNING| dut console is not ready, we cannot get log by console
14:18:10 reboot.wait_for_shutdown                 L0164 INFO   | waiting for ssh to drop on ixr-aaa-14
14:18:10 reboot.execute_reboot_command            L0205 INFO   | rebooting ixr-aaa-14 with command "reboot"
14:18:28 reboot.wait_for_startup                  L0185 INFO   | waiting for ssh to startup on ixr-aaa-14
14:19:56 reboot.wait_for_startup                  L0197 INFO   | ssh has started up on ixr-aaa-14
14:19:56 reboot.reboot                            L0300 INFO   | waiting for switch ixr-aaa-14 to initialize
14:24:22 processes_utils.wait_critical_processes  L0078 INFO   | Wait until all critical processes are healthy in 600 sec
14:24:22 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
14:24:30 reboot.reboot                            L0330 INFO   | cold reboot finished on ixr-aaa-14
14:24:31 reboot.reboot                            L0333 INFO   | DUT ixr-aaa-14 up since 2025-05-01 14:19:23.320000
14:24:31 helper.save_config_and_reboot            L0214 INFO   | Wait until the system is stable
14:24:37 sonic_asic.check_bgp_session_state       L0714 INFO   | bgp neighbors that match the state: ['3.3.3.2', '3333::3:2'] on namespace asic0
14:24:37 sonic_asic.check_bgp_session_state       L0715 INFO   | bgp neighbors to be checked on the state: [] on namespace asic0
14:24:38 sonic_asic.check_bgp_session_state       L0714 INFO   | bgp neighbors that match the state: ['3.3.3.1', '3333::3:1'] on namespace asic1
14:24:38 sonic_asic.check_bgp_session_state       L0715 INFO   | bgp neighbors to be checked on the state: [] on namespace asic1
14:24:38 parallel.on_terminate                    L0085 INFO   | process save_config_and_reboot--<MultiAsicSonicHost ixr-aaa-14> terminated with exit code None
14:24:38 parallel.parallel_run                    L0221 INFO   | Completed running processes for target "save_config_and_reboot" in 0:06:39.645613 seconds
14:24:44 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture reboot_duts_and_disable_wd setup ends --------------------
14:24:44 __init__.pytest_runtest_setup            L0034 INFO   | collect memory before test test_pfc_pause_multi_lossless_prio_reboot[multidut_port_info0-cold]
14:24:44 __init__.pytest_runtest_setup            L0054 INFO   | Before test: collected memory_values {'before_test': {}, 'after_test': {}}
-------------------------- curtailed output -----------------------
14:28:16 traffic_generation.run_traffic           L0465 INFO   | In-flight traffic statistics for flows: ['Test Flow Prio 3', 'Test Flow Prio 4', 'Background Flow Prio 1', 'Background Flow Prio 5', 'Background Flow Prio 6', 'Background Flow Prio 2', 'Background Flow Prio 0']
14:28:16 traffic_generation.run_traffic           L0466 INFO   | In-flight TX frames: [68215, 68215, 116379310, 116379310, 116379310, 116379310, 116379310]
14:28:16 traffic_generation.run_traffic           L0467 INFO   | In-flight RX frames: [0, 0, 116379310, 116379310, 116379310, 116379310, 116379310]
14:28:49 traffic_generation.run_traffic           L0468 INFO   | DUT polling complete
14:28:49 traffic_generation.run_traffic           L0479 INFO   | Checking if all flows have stopped. Attempt #1
14:28:50 traffic_generation.run_traffic           L0486 INFO   | All test and background traffic flows stopped
14:28:52 traffic_generation.run_traffic           L0514 INFO   | Dumping per-flow statistics
14:28:53 traffic_generation.run_traffic           L0516 INFO   | Stopping transmit on all remaining flows
14:29:00 snappi_api.info                          L1132 INFO   | Flows stop 6.248s
PASSED           
T2 Verification:

AzDevOps@7c3002ea4994:/data/tests$ date;python3 -m pytest --inventory ../ansible/ixia-sonic --host-pattern board73,board74 --testbed ixre-chassis17-t2 --testbed_file ../ansible/testbed.csv --show-capture=stdout --log-cli-level info --showlocals -ra --allow_recover --junit-xml=/tmp/pfc/p.xml --skip_sanity --log-file=/tmp/pfc/p.log snappi_tests/pfc/test_pfc_pause_lossless_with_snappi.py -k reboot --pdb        
Wed Apr 30 20:44:41 UTC 2025

--------------- curtailed output ----------------

snappi_tests/pfc/test_pfc_pause_lossless_with_snappi.py::test_pfc_pause_single_lossless_prio_reboot[multidut_port_info0-cold-board71|3] 
--------------------------------------------------------------------------------------------------- live log setup ----------------------------------------------------------------------------------------------------
20:45:40 __init__.set_default                     L0053 INFO   | Completeness level not set during test execution. Setting to default level: CompletenessLevel.basic
20:45:40 __init__.check_test_completeness         L0151 INFO   | Test has no defined levels. Continue without test completeness checks
20:45:40 __init__.loganalyzer                     L0067 INFO   | Log analyzer is disabled
20:45:40 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture ignore_route_check_for_cisco_8000 setup starts --------------------
20:45:40 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture ignore_route_check_for_cisco_8000 setup ends --------------------
20:45:40 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture multidut_port_info setup starts --------------------
20:45:40 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture multidut_port_info setup ends --------------------
20:45:40 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture number_of_tx_rx_ports setup starts --------------------
20:45:40 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture number_of_tx_rx_ports setup ends --------------------
20:45:40 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture setup_ports_and_dut setup starts --------------------
20:45:40 helper.setup_ports_and_dut               L0115 INFO   | Running test for testbed subtype: multi-dut-long-to-short-link
20:45:43 snappi_fixtures.__intf_config_multidut   L0858 INFO   | Configuring Dut: board73 with port Ethernet16 with IP 20.1.1.2/31
20:45:43 snappi_fixtures.__intf_config_multidut   L0878 INFO   | Adding ip:20.1.1.2 on port:Ethernet16 on DUT:board73
20:45:44 snappi_fixtures.__intf_config_multidut   L0858 INFO   | Configuring Dut: board74 with port Ethernet0 with IP 20.1.1.0/31
20:45:44 snappi_fixtures.__intf_config_multidut   L0878 INFO   | Adding ip:20.1.1.0 on port:Ethernet0 on DUT:board74
20:45:45 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture setup_ports_and_dut setup ends --------------------
20:45:45 __init__._fixture_generator_decorator    L0081 INFO   | -------------------- fixture reboot_duts_and_disable_wd setup starts --------------------
20:45:46 sonic.get_asic_name                      L1778 INFO   | asic: unknown
20:45:46 helper.skip_warm_reboot                  L0049 INFO   | Reboot type cold is  supported on broadcom switches
20:45:46 sonic.get_asic_name                      L1778 INFO   | asic: unknown
20:45:46 helper.skip_warm_reboot                  L0049 INFO   | Reboot type cold is  supported on broadcom switches
20:45:49 helper.save_config_and_reboot            L0408 INFO   | Issuing a cold reboot on the dut board74
20:45:49 helper.save_config_and_reboot            L0408 INFO   | Issuing a cold reboot on the dut board73
20:45:52 reboot.reboot                            L0269 INFO   | Reboot board74: wait[900], timeout[600]
20:45:52 reboot.reboot                            L0271 INFO   | DUT board74 create a file /dev/shm/test_reboot before rebooting
20:45:52 reboot.reboot                            L0269 INFO   | Reboot board73: wait[900], timeout[600]
20:45:52 reboot.reboot                            L0271 INFO   | DUT board73 create a file /dev/shm/test_reboot before rebooting
20:45:54 reboot.wait_for_shutdown                 L0162 INFO   | waiting for ssh to drop on board74
20:45:54 reboot.execute_reboot_command            L0202 INFO   | rebooting board74 with command "reboot"
20:45:54 reboot.wait_for_shutdown                 L0162 INFO   | waiting for ssh to drop on board73
20:45:54 reboot.execute_reboot_command            L0202 INFO   | rebooting board73 with command "reboot"
20:46:15 reboot.wait_for_startup                  L0183 INFO   | waiting for ssh to startup on board74
20:46:16 reboot.wait_for_startup                  L0183 INFO   | waiting for ssh to startup on board73
20:48:38 reboot.wait_for_startup                  L0194 INFO   | ssh has started up on board73
20:48:38 reboot.reboot                            L0288 INFO   | waiting for switch board73 to initialize
20:48:40 reboot.wait_for_startup                  L0194 INFO   | ssh has started up on board74
20:48:40 reboot.reboot                            L0288 INFO   | waiting for switch board74 to initialize
20:52:24 processes_utils.wait_critical_processes  L0079 INFO   | Wait until all critical processes are healthy in 600 sec
20:52:24 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
20:52:25 processes_utils.wait_critical_processes  L0079 INFO   | Wait until all critical processes are healthy in 600 sec
20:52:25 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
20:52:32 processes_utils.get_critical_processes_s L0035 INFO   | The status of checking process in container 'lldp0' is: False
20:52:32 processes_utils.get_critical_processes_s L0037 INFO   | The processes not running in container 'lldp0' are: '['lldp-syncd', 'lldpmgrd']'
20:52:32 processes_utils.get_critical_processes_s L0035 INFO   | The status of checking process in container 'lldp0' is: False
20:52:32 processes_utils.get_critical_processes_s L0037 INFO   | The processes not running in container 'lldp0' are: '['lldp-syncd', 'lldpmgrd']'
20:52:52 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
20:52:52 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
20:52:59 processes_utils.get_critical_processes_s L0035 INFO   | The status of checking process in container 'lldp0' is: False
20:52:59 processes_utils.get_critical_processes_s L0037 INFO   | The processes not running in container 'lldp0' are: '['lldp-syncd', 'lldpmgrd']'
20:53:00 processes_utils.get_critical_processes_s L0035 INFO   | The status of checking process in container 'lldp0' is: False
20:53:00 processes_utils.get_critical_processes_s L0037 INFO   | The processes not running in container 'lldp0' are: '['lldp-syncd', 'lldpmgrd']'
20:53:20 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
20:53:20 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
20:53:27 reboot.reboot                            L0318 INFO   | cold reboot finished on board73
20:53:28 reboot.reboot                            L0318 INFO   | cold reboot finished on board74
20:53:28 reboot.reboot                            L0321 INFO   | DUT board73 up since 2025-04-30 20:47:22.580000
20:53:28 reboot.reboot                            L0321 INFO   | DUT board74 up since 2025-04-30 20:47:19.270000
20:53:29 helper.save_config_and_reboot            L0412 INFO   | Wait until the system is stable
20:53:29 helper.save_config_and_reboot            L0412 INFO   | Wait until the system is stable
20:53:35 sonic_asic.check_bgp_session_state       L0692 INFO   | bgp neighbors that match the state: ['3.3.3.1', '3.3.3.2', '3.3.3.6', '3.3.3.8', '3.3.3.12', '3.3.3.14', '3.3.3.20', '3333::3:1', '3333::3:2', '3333::3:6', '3333::3:8', '3333::3:12', '3333::3:14', '3333::3:20'] on namespace asic0
20:53:35 sonic_asic.check_bgp_session_state       L0693 INFO   | bgp neighbors to be checked on the state: [] on namespace asic0
20:53:35 sonic_asic.check_bgp_session_state       L0692 INFO   | bgp neighbors that match the state: ['3.3.3.1', '3.3.3.2', '3.3.3.6', '3.3.3.8', '3.3.3.14', '3.3.3.18', '3.3.3.20', '3333::3:1', '3333::3:2', '3333::3:6', '3333::3:8', '3333::3:14', '3333::3:18', '3333::3:20'] on namespace asic0
20:53:35 sonic_asic.check_bgp_session_state       L0693 INFO   | bgp neighbors to be checked on the state: [] on namespace asic0
20:53:36 sonic_asic.check_bgp_session_state       L0692 INFO   | bgp neighbors that match the state: ['3.3.3.1', '3.3.3.2', '3.3.3.6', '3.3.3.8', '3.3.3.12', '3.3.3.14', '3.3.3.18', '3333::3:1', '3333::3:2', '3333::3:6', '3333::3:8', '3333::3:12', '3333::3:14', '3333::3:18'] on namespace asic1
20:53:36 sonic_asic.check_bgp_session_state       L0693 INFO   | bgp neighbors to be checked on the state: [] on namespace asic1
20:53:36 parallel.on_terminate                    L0085 INFO   | process save_config_and_reboot--<MultiAsicSonicHost board74> terminated with exit code None
20:53:36 sonic_asic.check_bgp_session_state       L0692 INFO   | bgp neighbors that match the state: ['3.3.3.1', '3.3.3.2', '3.3.3.6', '3.3.3.8', '3.3.3.12', '3.3.3.18', '3.3.3.20', '3333::3:1', '3333::3:2', '3333::3:6', '3333::3:8', '3333::3:12', '3333::3:18', '3333::3:20'] on namespace asic1
20:53:36 sonic_asic.check_bgp_session_state       L0693 INFO   | bgp neighbors to be checked on the state: [] on namespace asic1
20:53:36 parallel.on_terminate                    L0085 INFO   | process save_config_and_reboot--<MultiAsicSonicHost board73> terminated with exit code None
20:53:36 parallel.parallel_run                    L0221 INFO   | Completed running processes for target "save_config_and_reboot" in 0:07:49.938416 seconds
20:53:50 __init__._fixture_generator_decorator    L0085 INFO   | -------------------- fixture reboot_duts_and_disable_wd setup ends --------------------

--------------- curtailed output ----------------

PASSED                                                                                                                                                                                                          [  8%]
-------------------------------------------------------------------------------------------------- live log teardown --------------------------------------------------------------------------------------------------
20:57:53 __init__._fixture_generator_decorator    L0093 INFO   | -------------------- fixture reboot_duts_and_disable_wd teardown starts --------------------
20:58:06 config_reload.config_reload              L0145 INFO   | reloading config_db
21:02:39 processes_utils.wait_critical_processes  L0079 INFO   | Wait until all critical processes are healthy in 600 sec
21:02:39 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
21:02:46 processes_utils.get_critical_processes_s L0035 INFO   | The status of checking process in container 'lldp0' is: False
21:02:46 processes_utils.get_critical_processes_s L0037 INFO   | The processes not running in container 'lldp0' are: '['lldp-syncd', 'lldpmgrd']'
21:03:06 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
21:03:14 config_reload.config_reload              L0145 INFO   | reloading config_db
21:07:44 processes_utils.wait_critical_processes  L0079 INFO   | Wait until all critical processes are healthy in 600 sec
21:07:44 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
21:07:52 processes_utils.get_critical_processes_s L0035 INFO   | The status of checking process in container 'lldp0' is: False
21:07:52 processes_utils.get_critical_processes_s L0037 INFO   | The processes not running in container 'lldp0' are: '['lldp-syncd', 'lldpmgrd']'
21:08:12 processes_utils._all_critical_processes_ L0045 INFO   | Check critical processes status
21:08:19 __init__._fixture_generator_decorator    L0102 INFO   | -------------------- fixture reboot_duts_and_disable_wd teardown ends --------------------
21:08:19 __init__._fixture_generator_decorator    L0093 INFO   | -------------------- fixture setup_ports_and_dut teardown starts --------------------
21:08:22 snappi_fixtures.__intf_config_multidut   L0858 INFO   | Configuring Dut: board73 with port Ethernet16 with IP 20.1.1.2/31
21:08:22 snappi_fixtures.__intf_config_multidut   L0880 INFO   | Removing ip:20.1.1.2 on port:Ethernet16 on DUT:board73
21:08:23 snappi_fixtures.__intf_config_multidut   L0858 INFO   | Configuring Dut: board74 with port Ethernet0 with IP 20.1.1.0/31
21:08:23 snappi_fixtures.__intf_config_multidut   L0880 INFO   | Removing ip:20.1.1.0 on port:Ethernet0 on DUT:board74
21:08:24 __init__._fixture_generator_decorator    L0102 INFO   | -------------------- fixture setup_ports_and_dut teardown ends --------------------
21:08:24 __init__._fixture_generator_decorator    L0093 INFO   | -------------------- fixture number_of_tx_rx_ports teardown starts --------------------
21:08:24 __init__._fixture_generator_decorator    L0102 INFO   | -------------------- fixture number_of_tx_rx_ports teardown ends --------------------
21:08:24 __init__._fixture_generator_decorator    L0093 INFO   | -------------------- fixture multidut_port_info teardown starts --------------------
21:08:24 __init__._fixture_generator_decorator    L0102 INFO   | -------------------- fixture multidut_port_info teardown ends --------------------
21:08:24 __init__._fixture_generator_decorator    L0093 INFO   | -------------------- fixture ignore_route_check_for_cisco_8000 teardown starts --------------------
21:08:24 __init__._fixture_generator_decorator    L0102 INFO   | -------------------- fixture ignore_route_check_for_cisco_8000 teardown ends --------------------

--------------- curtailed output ----------------

======================================================================= 8 passed, 16 skipped, 20 deselected, 71 warnings in 10116.17s (2:48:36) =======================================================================
INFO:root:Can not get Allure report URL. Please check logs

co-authorized by: jianquanye@microsoft.com
yutongzhang-microsoft pushed a commit that referenced this pull request Jun 16, 2025
sonic-net#18886)

Description of PR
Summary:
Fixes # (issue)sonic-net#13769

Type of change
 Bug fix
 Testbed and Framework(new/improvement)
 New Test case
 Skipped for non-supported platforms
 Test case improvement
Back port request
 202205
 202305
 202311
 202405
 202411
 202505
Approach
What is the motivation for this PR?
To support infra changes in snappi tests introduced by this Pull Request - sonic-net#15069

How did you do it?
We don't need the setup_ports_and_dut now and we can simply call the snappi_testbed_config in the test itself and iterate through the available ports.

How did you verify/test it?
Any platform specific information?
Supported testbed topology if it's a new test case?
Documentation
OUTPUT
snappi_tests/pfc/test_pfc_pause_lossy_with_snappi.py::test_pfc_pause_single_lossy_prio[multidut_port_info0-sonic-s6100-dut1|0-400.0-single_linecard_single_asic]
----------------------------------------------------------------------------------------------------------------------------------------- live log setup ------------------------------------------------------------------------------------------------------------------------------------------
16:01:24 init.set_default L0053 INFO | Completeness level not set during test execution. Setting to default level: CompletenessLevel.basic
16:01:24 init.check_test_completeness L0151 INFO | Test has no defined levels. Continue without test completeness checks
16:01:24 conftest.enhance_inventory L0313 INFO | Inventory file: ['../ansible/snappi-sonic']
16:01:27 ptfhost_utils.run_icmp_responder_session L0310 INFO | Skip running icmp_responder at session level, it is only for dualtor testbed with active-active mux ports.
16:01:27 init._sanity_check L0431 INFO | Skip sanity check according to command line argument
16:01:27 conftest.collect_before_test L2695 INFO | Dumping Disk and Memory Space information before test on sonic-s6100-dut1
16:01:28 conftest.collect_before_test L2699 INFO | Collecting core dumps before test on sonic-s6100-dut1
16:01:28 conftest.collect_before_test L2708 INFO | Collecting running config before test on sonic-s6100-dut1
16:01:30 conftest.temporarily_disable_route_check L2974 INFO | Skipping temporarily_disable_route_check fixture
16:01:30 conftest.generate_params_dut_hostname L1498 INFO | Using DUTs ['sonic-s6100-dut1'] in testbed 'vms-snappi-sonic'
16:01:30 conftest.set_rand_one_dut_hostname L0647 INFO | Randomly select dut sonic-s6100-dut1 for testing
16:01:30 init._fixture_generator_decorator L0081 INFO | -------------------- fixture enable_packet_aging_after_test setup starts --------------------
16:01:30 init._fixture_generator_decorator L0085 INFO | -------------------- fixture enable_packet_aging_after_test setup ends --------------------
16:01:30 init._fixture_generator_decorator L0081 INFO | -------------------- fixture rand_lossless_prio setup starts --------------------
16:01:30 init._fixture_generator_decorator L0085 INFO | -------------------- fixture rand_lossless_prio setup ends --------------------
16:01:30 init._fixture_generator_decorator L0081 INFO | -------------------- fixture rand_lossy_prio setup starts --------------------
16:01:30 init._fixture_generator_decorator L0085 INFO | -------------------- fixture rand_lossy_prio setup ends --------------------
16:01:30 init._fixture_generator_decorator L0081 INFO | -------------------- fixture start_pfcwd_after_test setup starts --------------------
16:01:30 init._fixture_generator_decorator L0085 INFO | -------------------- fixture start_pfcwd_after_test setup ends --------------------
16:01:30 init._fixture_generator_decorator L0081 INFO | -------------------- fixture disable_voq_watchdog setup starts --------------------
16:01:30 init._fixture_generator_decorator L0085 INFO | -------------------- fixture disable_voq_watchdog setup ends --------------------
16:01:30 init._fixture_generator_decorator L0081 INFO | -------------------- fixture number_of_tx_rx_ports setup starts --------------------
16:01:30 init._fixture_generator_decorator L0085 INFO | -------------------- fixture number_of_tx_rx_ports setup ends --------------------
16:01:30 init._fixture_func_decorator L0069 INFO | -------------------- fixture snappi_api_serv_ip setup starts --------------------
16:01:30 init._fixture_func_decorator L0076 INFO | -------------------- fixture snappi_api_serv_ip setup ends --------------------
16:01:30 init._fixture_func_decorator L0069 INFO | -------------------- fixture snappi_api_serv_port setup starts --------------------
16:01:30 init._fixture_func_decorator L0076 INFO | -------------------- fixture snappi_api_serv_port setup ends --------------------
16:01:30 init._fixture_generator_decorator L0081 INFO | -------------------- fixture snappi_api setup starts --------------------
16:01:30 init._fixture_generator_decorator L0085 INFO | -------------------- fixture snappi_api setup ends --------------------
16:01:31 conftest.rand_one_dut_front_end_hostname L0683 INFO | Randomly select dut sonic-s6100-dut1 for testing
16:01:31 init._fixture_func_decorator L0069 INFO | -------------------- fixture prio_dscp_map setup starts --------------------
16:01:32 init._fixture_func_decorator L0076 INFO | -------------------- fixture prio_dscp_map setup ends --------------------
16:01:32 init._fixture_func_decorator L0069 INFO | -------------------- fixture all_prio_list setup starts --------------------
16:01:32 init._fixture_func_decorator L0076 INFO | -------------------- fixture all_prio_list setup ends --------------------
16:01:32 init._fixture_func_decorator L0069 INFO | -------------------- fixture lossless_prio_list setup starts --------------------
16:01:33 init._fixture_func_decorator L0076 INFO | -------------------- fixture lossless_prio_list setup ends --------------------
16:01:33 init._fixture_func_decorator L0069 INFO | -------------------- fixture lossy_prio_list setup starts --------------------
16:01:33 init._fixture_func_decorator L0076 INFO | -------------------- fixture lossy_prio_list setup ends --------------------
16:01:33 init._fixture_func_decorator L0069 INFO | -------------------- fixture get_snappi_ports setup starts --------------------
16:01:34 conftest.generate_port_lists L1590 INFO | Generate dut_port_map: {'sonic-s6100-dut1': ['sonic-s6100-dut1|Ethernet0', 'sonic-s6100-dut1|Ethernet8', 'sonic-s6100-dut1|Ethernet16', 'sonic-s6100-dut1|Ethernet24']}
16:01:34 conftest.generate_port_lists L1613 INFO | Generate port_list: ['sonic-s6100-dut1|Ethernet0', 'sonic-s6100-dut1|Ethernet8', 'sonic-s6100-dut1|Ethernet16', 'sonic-s6100-dut1|Ethernet24']
16:01:34 init._fixture_func_decorator L0069 INFO | -------------------- fixture get_snappi_ports_single_dut setup starts --------------------
16:01:34 init._fixture_func_decorator L0076 INFO | -------------------- fixture get_snappi_ports_single_dut setup ends --------------------
16:01:34 init._fixture_func_decorator L0076 INFO | -------------------- fixture get_snappi_ports setup ends --------------------
16:01:34 init._fixture_func_decorator L0069 INFO | -------------------- fixture snappi_port_selection setup starts --------------------
16:01:34 init._fixture_func_decorator L0076 INFO | -------------------- fixture snappi_port_selection setup ends --------------------
16:01:34 init.loganalyzer L0074 INFO | Log analyzer is disabled
16:01:34 init.memory_utilization L0125 INFO | Hostname: sonic-s6100-dut1, Hwsku: Accton-AS9716-32D, Platform: x86_64-accton_as9716_32d-r0
16:01:34 memory_utilization.register_command L0023 INFO | Registering command: name=monit, cmd=sudo monit status, memory_params={'memory_usage': {'memory_increase_threshold': {'type': 'value', 'value': 10}, 'memory_high_threshold': {'type': 'value', 'value': 70}}}, memory_check=<function parse_monit_status_output at 0x7f9baa8983a0>
16:01:34 memory_utilization.register_command L0023 INFO | Registering command: name=top, cmd=top -b -n 1, memory_params={'bgpd': {'memory_increase_threshold': {'type': 'value', 'value': 128}, 'memory_high_threshold': None}, 'zebra': {'memory_increase_threshold': {'type': 'value', 'value': 64}, 'memory_high_threshold': None}}, memory_check=<function parse_top_output at 0x7f9baa88cd30>
16:01:34 memory_utilization.register_command L0023 INFO | Registering command: name=free, cmd=free -m, memory_params={'used': {'memory_increase_threshold': {'type': 'percentage', 'value': '20%'}, 'memory_high_threshold': None}}, memory_check=<function parse_free_output at 0x7f9baa898310>
16:01:34 memory_utilization.register_command L0023 INFO | Registering command: name=docker, cmd=docker stats --no-stream, memory_params={'snmp': {'memory_increase_threshold': {'type': 'value', 'value': 2}, 'memory_high_threshold': {'type': 'value', 'value': 4}}, 'pmon': {'memory_increase_threshold': {'type': 'value', 'value': 2}, 'memory_high_threshold': {'type': 'value', 'value': 8}}, 'lldp': {'memory_increase_threshold': {'type': 'value', 'value': 2}, 'memory_high_threshold': {'type': 'value', 'value': 4}}, 'gnmi': {'memory_increase_threshold': {'type': 'value', 'value': 2}, 'memory_high_threshold': {'type': 'value', 'value': 6}}, 'radv': {'memory_increase_threshold': {'type': 'value', 'value': 2}, 'memory_high_threshold': {'type': 'value', 'value': 3}}, 'syncd': {'memory_increase_threshold': {'type': 'value', 'value': 5}, 'memory_high_threshold': {'type': 'value', 'value': 18}}, 'bgp': {'memory_increase_threshold': {'type': 'value', 'value': 4}, 'memory_high_threshold': {'type': 'value', 'value': 14}}, 'teamd': {'memory_increase_threshold': {'type': 'value', 'value': 2}, 'memory_high_threshold': {'type': 'value', 'value': 5}}, 'swss': {'memory_increase_threshold': {'type': 'value', 'value': 3}, 'memory_high_threshold': {'type': 'value', 'value': 8}}, 'database': {'memory_increase_threshold': {'type': 'value', 'value': 2}, 'memory_high_threshold': {'type': 'value', 'value': 6}}}, memory_check=<function parse_docker_stats_output at 0x7f9baa898430>
16:01:34 memory_utilization.register_command L0023 INFO | Registering command: name=frr_bgp, cmd=vtysh -c "show memory bgp", memory_params={'used': {'memory_increase_threshold': [{'type': 'percentage', 'value': '50%'}, {'type': 'value', 'value': 32}], 'memory_high_threshold': {'type': 'value', 'value': 128}}}, memory_check=<function parse_frr_memory_output at 0x7f9baa8984c0>
16:01:34 memory_utilization.register_command L0023 INFO | Registering command: name=frr_zebra, cmd=vtysh -c "show memory zebra", memory_params={'used': {'memory_increase_threshold': [{'type': 'percentage', 'value': '50%'}, {'type': 'value', 'value': 16}], 'memory_high_threshold': {'type': 'value', 'value': 128}}}, memory_check=<function parse_frr_memory_output at 0x7f9baa8984c0>
16:01:34 init._fixture_generator_decorator L0081 INFO | -------------------- fixture multidut_port_info setup starts --------------------
16:01:34 init._fixture_generator_decorator L0085 INFO | -------------------- fixture multidut_port_info setup ends --------------------
16:01:34 init._fixture_generator_decorator L0081 INFO | -------------------- fixture setup_ports_and_dut setup starts --------------------
16:01:34 helper.setup_ports_and_dut L0152 INFO | Running test for testbed subtype: single-dut-single-asic
16:01:34 init._fixture_generator_decorator L0085 INFO | -------------------- fixture setup_ports_and_dut setup ends --------------------
16:01:34 init._fixture_func_decorator L0069 INFO | -------------------- fixture tgen_port_info setup starts --------------------
16:01:35 init._fixture_func_decorator L0076 INFO | -------------------- fixture tgen_port_info setup ends --------------------
16:01:40 memory_utilization.execute_command L0039 WARNING| Command 'vtysh -c "show memory bgp"' returned no output
16:01:40 memory_utilization.parse_frr_memory_outp L0481 WARNING| Empty output for FRR memory command, returning empty values
16:01:41 memory_utilization.execute_command L0039 WARNING| Command 'vtysh -c "show memory zebra"' returned no output
16:01:41 memory_utilization.parse_frr_memory_outp L0481 WARNING| Empty output for FRR memory command, returning empty values
16:01:41 init.pytest_runtest_setup L0061 INFO | Before test: collected memory_values {'before_test': {'sonic-s6100-dut1': {'monit': {'memory_usage': 7.8}, 'top': {}, 'free': {'used': 1988}, 'docker': {'radv': '0.24', 'syncd': '3.76', 'teamd': '0.26', 'swss': '0.60', 'pmon': '0.76', 'database': '0.88', 'bgp': '0.03', 'lldp': '0.10'}, 'frr_bgp': {}, 'frr_zebra': {}}}, 'after_test': {'sonic-s6100-dut1': {}}}
------------------------------------------------------------------------------------------------------------------------------------------ live log call ------------------------------------------------------------------------------------------------------------------------------------------
16:01:54 connection._warn L0336 WARNING| Verification of certificates is disabled
16:01:54 connection._info L0333 INFO | Determining the platform and rest_port using the 10.36.79.8 address...
16:01:54 connection._warn L0336 WARNING| Unable to connect to http://10.36.79.8:443.
16:01:55 connection._info L0333 INFO | Connection established to https://10.36.79.8:443 on linux
16:02:14 connection._info L0333 INFO | Using IxNetwork api server version 10.25.2406.6
16:02:14 connection._info L0333 INFO | User info IxNetwork/ixnetworkweb/admin-162-10063
16:02:16 snappi_api.info L1488 INFO | snappi-1.31.1
16:02:16 snappi_api.info L1488 INFO | snappi_ixnetwork-1.31.2
16:02:16 snappi_api.info L1488 INFO | ixnetwork_restpy-1.7.0
16:02:16 snappi_api.info L1488 INFO | Config validation 0.020s
16:02:19 snappi_api.info L1488 INFO | Ports configuration 1.715s
16:02:19 snappi_api.info L1488 INFO | Captures configuration 0.200s
16:02:22 snappi_api.info L1488 INFO | Add location hosts [10.36.79.8] 2.336s
16:02:24 snappi_api.info L1488 INFO | Location hosts ready [10.36.79.8] 2.482s
16:02:25 snappi_api.info L1488 INFO | Speed conversion is not require for (port.name, speed) : [('Port 0', 'aresOneOneByFourHundredGigNonFanOut'), ('Port 1', 'aresOneOneByFourHundredGigNonFanOut')]
16:02:25 snappi_api.info L1488 INFO | Aggregation mode speed change 0.412s
16:02:25 snappi_api.info L1488 INFO | Location preemption [10.36.79.8/3, 10.36.79.8/1] 0.143s
16:02:42 snappi_api.info L1488 INFO | Location connect [Port 0, Port 1] 16.540s
16:02:42 snappi_api.info L1488 INFO | Location state check [Port 0, Port 1] 0.363s
16:02:42 snappi_api.info L1488 INFO | Location configuration 23.254s
16:02:46 snappi_api.info L1488 INFO | Layer1 configuration 3.795s
16:02:46 snappi_api.info L1488 INFO | Lag Configuration 0.157s
16:02:47 snappi_api.info L1488 INFO | Convert device config : 0.325s
16:02:47 snappi_api.info L1488 INFO | Create IxNetwork device config : 0.000s
16:02:48 snappi_api.info L1488 INFO | Push IxNetwork device config : 0.963s
16:02:48 snappi_api.info L1488 INFO | Devices configuration 1.391s
16:02:56 snappi_api.info L1488 INFO | Flows configuration 8.034s
16:03:03 snappi_api.info L1488 INFO | Start interfaces 7.636s
16:03:04 snappi_api.info L1488 INFO | IxNet - The Traffic Item was modified. Please perform a Traffic Generate to update the associated traffic Flow Groups
16:03:04 traffic_generation.run_traffic L0433 INFO | Wait for Arp to Resolve ...
16:03:10 traffic_generation.run_traffic L0456 INFO | Starting transmit on all flows ...
16:03:14 snappi_api.info L1488 INFO | Flows generate/apply 3.528s
16:03:27 snappi_api.info L1488 INFO | Flows clear statistics 12.289s
16:03:27 snappi_api.info L1488 INFO | Captures start 0.000s
16:03:30 snappi_api.info L1488 INFO | Flows start 2.733s
16:03:30 traffic_generation.run_traffic L0472 INFO | Polling DUT for traffic statistics for 23 seconds ...
16:03:57 traffic_generation.run_traffic L0491 INFO | Polling TGEN for in-flight traffic statistics...
16:03:59 traffic_generation.run_traffic L0496 INFO | In-flight traffic statistics for flows: ['Test Flow Prio 0', 'Background Flow Prio 1', 'Background Flow Prio 3', 'Background Flow Prio 4', 'Background Flow Prio 5', 'Background Flow Prio 6', 'Background Flow Prio 2']
16:03:59 traffic_generation.run_traffic L0497 INFO | In-flight TX frames: [409482758, 63697318, 63697318, 63697318, 63697318, 63697318, 63697318]
16:03:59 traffic_generation.run_traffic L0498 INFO | In-flight RX frames: [409482758, 63697318, 63697318, 63697318, 63697318, 63697318, 63697318]
16:04:16 traffic_generation.run_traffic L0499 INFO | DUT polling complete
16:04:16 traffic_generation.run_traffic L0510 INFO | Checking if all flows have stopped. Attempt #1
16:04:18 traffic_generation.run_traffic L0517 INFO | All test and background traffic flows stopped
16:04:20 traffic_generation.run_traffic L0540 INFO | Dumping per-flow statistics
16:04:21 traffic_generation.run_traffic L0542 INFO | Stopping transmit on all remaining flows
16:04:26 snappi_api.info L1488 INFO | Flows stop 5.387s
PASSED
yutongzhang-microsoft added a commit that referenced this pull request Oct 9, 2025
Get os version and elastictest job id from correct place.
yutongzhang-microsoft added a commit that referenced this pull request Dec 22, 2025
What is the motivation for this PR?
The current telemetry framework has many serious problems:

Hard to import, because it is outside of the tests folder
No implementation, hard to try out
Hard to use and extend, because the interface is too primitive
No tests and can break easily
How did you do it?
This PR add a few things to improve the current telemetry framework:

Add new design doc with example code provided in the doc.
Implement both TS (timeseries) and DB (database) reporter, so we can try the feature easily.
How did you verify/test it?
Run all tests locally and passed.

Any platform specific information?
N/A.

Fix TS reporters.

Fix TSRepoter.

Fix TS reporter.

minor fix.

Fix example.

Reverse relationship of metrics and reporter to support more types of metrics in future.

Remove bydesign not working test.

Fix example.

Update tests.

Update TS reporter and DB repoter.

Update minor things.

Remove no required code.

Revert unexpected change.

Rename and update doc.

* Get os version and job id (#1)

Get os version and elastictest job id from correct place.

* Revert OS version change.

* Remove duplicated mock reporter fixture.

---------

Co-authored-by: Yutong Zhang <90831468+yutongzhang-microsoft@users.noreply.github.com>
yutongzhang-microsoft pushed a commit that referenced this pull request Feb 24, 2026
…nter and global_pause test-script (sonic-net#22490)

Description of PR
Added support for tgen_port_info in:
tests/snappi_tests/pfc/test_global_pause_with_snappi.py
tests/snappi_tests/pfc/test_tx_drop_counter_with_snappi.py

Summary:
Fixes # (issue)

Type of change
 Bug fix
 Testbed and Framework(new/improvement)
 New Test case
 Skipped for non-supported platforms
 Test case improvement
Back port request
 202205
 202305
 202311
 202405
 202411
 202505
 202511
Approach
What is the motivation for this PR?
The tgen_port_info was added as part of Snappi test infra improvement, which enabled users to select between static (from variables.override.yml) and dynamic (select 100 and 400Gbps ports) ports.

This was NOT included in test_tx_drop_counter and test_global_pause test-scripts under snappi_tests/pfc section.

How did you do it?
Imported the tgen_port_info from snappi_fixtures.py and removed any reference to old setup_dut_port function for both test-scripts.

How did you verify/test it?
Verification on 202511 is present in pull-request sonic-net#22380.

Verification steps for master:

azureuser@7e081020c2c7:/data/tests$ date;python3 -m pytest --inventory ../ansible/ixia-sonic --host-pattern ixre-egl-board73,ixre-egl-board74 --testbed ixre-chassis17-t2 --testbed_file ../ansible/testbed.csv --show-capture=stdout --log-cli-level info --showlocals -ra --allow_recover --junit-xml=/tmp/y.xml --skip_sanity --log-file=/tmp/y.log --topology multidut-tgen -cache-clear --disable_loganalyzer snappi_tests/pfc/test_global_pause_with_snappi.py --pdb
Fri Feb 20 00:07:16 UTC 2026
====================================================================================================================== test session starts =======================================================================================================================
platform linux -- Python 3.8.10, pytest-7.4.0, pluggy-1.5.0
---- curtailed output ----

INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Config validation 0.014s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Ports configuration 1.261s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Captures configuration 0.116s

---- curtailed output ----
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:837 DUT polling complete
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:850 Checking if all flows have stopped. Attempt #1
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:856 All test and background traffic flows stopped
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:894 Dumping per-flow statistics
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:899 Stopping transmit on all remaining flows
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Flows stop 5.353s
PASSED                                                                                                                                                                                                                                                     [ 50%]
---- curtailed output ----
INFO     tests.common.plugins.memory_utilization:__init__.py:64 Before test: collected memory_values {'before_test': {}, 'after_test': {}}
------------------------------------------------------------------------------------------------------------------------- live log call --------------------------------------------------------------------------------------------------------------------------
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Config validation 0.014s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Ports configuration 1.059s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Captures configuration 0.110s
---- curtailed output ----
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:837 DUT polling complete
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:850 Checking if all flows have stopped. Attempt #1
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:856 All test and background traffic flows stopped
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:894 Dumping per-flow statistics
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:899 Stopping transmit on all remaining flows
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Flows stop 5.514s
PASSED                                                                                                                                                                                                                                                     [100%]
---- curtailed output ----
----------------------------------------------------------------------------------------------------------------- generated xml file: /tmp/y.xml -----------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------- live log sessionfinish ---------------------------------------------------------------------------------------------------------------------
INFO     root:__init__.py:67 Can not get Allure report URL. Please check logs
=========================================================================================================== 2 passed, 9 warnings in 789.04s (0:13:09) ============================================================================================================
INFO:root:Can not get Allure report URL. Please check logs

azureuser@7e081020c2c7:/data/tests$ date;python3 -m pytest --inventory ../ansible/ixia-sonic --host-pattern ixre-egl-board73,ixre-egl-board74 --testbed ixre-chassis17-t2 --testbed_file ../ansible/testbed.csv --show-capture=stdout --log-cli-level info --showlocals -ra --allow_recover --junit-xml=/tmp/y.xml --skip_sanity --log-file=/tmp/y.log --topology multidut-tgen -cache-clear --disable_loganalyzer snappi_tests/pfc/test_tx_drop_counter_with_snappi.py --pdb
Fri Feb 20 00:21:03 UTC 2026
---- curtailed output ----
INFO     ixnetwork_restpy.connection:connection.py:329 User info IxNetwork/tgen-ixia-03/admin-112-3670867
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 snappi-1.27.1
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 snappi_ixnetwork-1.27.2
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 ixnetwork_restpy-1.6.1
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Config validation 0.000s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Ports configuration 0.213s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Captures configuration 0.122s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Aggregation mode speed change 0.000s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Location configuration 0.288s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Layer1 configuration 0.000s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Lag Configuration 0.061s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Convert device config : 0.155s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Create IxNetwork device config : 0.000s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Push IxNetwork device config : 0.093s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Devices configuration 0.299s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Flows configuration 0.120s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Start interfaces 0.155s
INFO     root:__init__.py:76 -------------------- fixture tgen_port_info setup ends --------------------
INFO     root:__init__.py:81 -------------------- fixture disable_pfcwd setup starts --------------------
INFO     root:__init__.py:85 -------------------- fixture disable_pfcwd setup ends --------------------
INFO     root:conftest.py:3818 skip setup dualtor mux cables on non-dualtor testbed
---- curtailed output ----
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Config validation 0.012s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Ports configuration 1.265s
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Captures configuration 0.112s
---- curtailed output ----
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:837 DUT polling complete
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:850 Checking if all flows have stopped. Attempt #1
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:856 All test and background traffic flows stopped
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:894 Dumping per-flow statistics
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:899 Stopping transmit on all remaining flows
---- curtailed output ----
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:837 DUT polling complete
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:850 Checking if all flows have stopped. Attempt #1
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:856 All test and background traffic flows stopped
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:894 Dumping per-flow statistics
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:899 Stopping transmit on all remaining flows
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Link State operation 0.052s
INFO     tests.snappi_tests.pfc.files.helper:helper.py:452 Snappi port Port 0 is set to DOWN
INFO     tests.snappi_tests.pfc.files.helper:helper.py:457 Sleeping for 90 seconds
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Link State operation 0.058s
INFO     tests.snappi_tests.pfc.files.helper:helper.py:469 Snappi port Port 0 is set to UP
---- curtailed output ----
INFO     root:__init__.py:67 Can not get Allure report URL. Please check logs
=========================================================================================================== 2 passed, 9 warnings in 906.71s (0:15:06) ============================================================================================================
INFO:root:Can not get Allure report URL. Please check logs

Signed-off-by: amitpawa <amit.2.pawar@nokia.com>

* snappi: issue-22363 removed multidut-port-info import from pfc tx_drop_counter testcase

Signed-off-by: amitpawa <amit.2.pawar@nokia.com>

---------

Signed-off-by: amitpawa <amit.2.pawar@nokia.com>
yutongzhang-microsoft pushed a commit that referenced this pull request Feb 24, 2026
…ion (sonic-net#22504)

Description of PR
The tgen_port_info infra function in common/snappi_tests/snappi_fixtures.py is used to select port (dynamically or statically) for the test. During static port selection, the variables.override.yml file is used to select Rx and Tx port for the test.

However, after the test, there was no explicit test clean_up code. This PR addresses it.

Summary:
Fixes sonic-net#20993

Type of change
 Bug fix
 Testbed and Framework(new/improvement)
 New Test case
 Skipped for non-supported platforms
 Test case improvement
Back port request
 202205
 202305
 202311
 202405
 202411
 202505
 202511
Approach
What is the motivation for this PR?
The tgen_port_info is used to select the Rx and Tx port for the test.

In case of static port selection, the function returned snappi_dut_base_config(duthosts, snappi_ports, snappi_api, setup=True), and there was no explicit cleanup after the test.

How did you do it?
If the 'is_override' flag is true, the static port selection code is used to select Rx and Tx ports from variables.override.yml file.
Instead of returning with function 'snappi_dut_base_config', 'yield' is called to ensure that clean-up is called at the end of the test.
Once yield returns back to the test, then 'setup_dut_ports' is called with setup=False to ensure that clean-up happens after the test.
How did you verify/test it?
For verification of this changes on 202511 branch, please refer to PR sonic-net#22441

Verification of the PR on master with multi-dut setup:

azureuser@7e081020c2c7:/data/tests$ date;python3 -m pytest --inventory ../ansible/ixia-sonic --host-pattern ixre-egl-board73,ixre-egl-board74 --testbed ixre-chassis17-t2 --testbed_file ../ansible/testbed.csv --show-capture=stdout --log-cli-level info --showlocals -ra --allow_recover --junit-xml=/tmp/y.xml --skip_sanity --log-file=/tmp/y.log --topology multidut-tgen -cache-clear --disable_loganalyzer snappi_tests/pfc/test_pfc_pause_lossless_with_snappi.py -k test_pfc_pause_multi_lossless_prio --pdb
Fri Feb 20 14:26:57 UTC 2026
================================================================================================= test session starts =================================================================================================
platform linux -- Python 3.8.10, pytest-7.4.0, pluggy-1.5.0
----------- curtailed output ----------
INFO     tests.conftest:conftest.py:691 Randomly select dut ixre-egl-board73 for testing
INFO     root:__init__.py:81 -------------------- fixture enable_packet_aging_after_test setup starts --------------------
INFO     root:__init__.py:85 -------------------- fixture enable_packet_aging_after_test setup ends --------------------
INFO     root:__init__.py:81 -------------------- fixture rand_lossless_prio setup starts --------------------
INFO     root:__init__.py:85 -------------------- fixture rand_lossless_prio setup ends --------------------
INFO     root:__init__.py:81 -------------------- fixture rand_lossy_prio setup starts --------------------
INFO     root:__init__.py:85 -------------------- fixture rand_lossy_prio setup ends --------------------
INFO     root:__init__.py:81 -------------------- fixture start_pfcwd_after_test setup starts --------------------
INFO     root:__init__.py:85 -------------------- fixture start_pfcwd_after_test setup ends --------------------
INFO     root:__init__.py:81 -------------------- fixture disable_voq_watchdog setup starts --------------------
INFO     root:__init__.py:85 -------------------- fixture disable_voq_watchdog setup ends --------------------
INFO     root:__init__.py:81 -------------------- fixture number_of_tx_rx_ports setup starts --------------------
INFO     root:__init__.py:85 -------------------- fixture number_of_tx_rx_ports setup ends --------------------
INFO     root:__init__.py:69 -------------------- fixture snappi_api_serv_ip setup starts --------------------
INFO     root:__init__.py:76 -------------------- fixture snappi_api_serv_ip setup ends --------------------
INFO     root:__init__.py:69 -------------------- fixture snappi_api_serv_port setup starts --------------------
INFO     root:__init__.py:76 -------------------- fixture snappi_api_serv_port setup ends --------------------
INFO     root:__init__.py:81 -------------------- fixture snappi_api setup starts --------------------
INFO     root:__init__.py:85 -------------------- fixture snappi_api setup ends --------------------
INFO     tests.conftest:conftest.py:727 Randomly select dut ixre-egl-board74 for testing
INFO     root:__init__.py:69 -------------------- fixture prio_dscp_map setup starts --------------------
INFO     root:__init__.py:76 -------------------- fixture prio_dscp_map setup ends --------------------
INFO     root:__init__.py:69 -------------------- fixture all_prio_list setup starts --------------------
INFO     root:__init__.py:76 -------------------- fixture all_prio_list setup ends --------------------
INFO     root:__init__.py:69 -------------------- fixture lossless_prio_list setup starts --------------------
INFO     root:__init__.py:76 -------------------- fixture lossless_prio_list setup ends --------------------
INFO     root:__init__.py:69 -------------------- fixture lossy_prio_list setup starts --------------------
INFO     root:__init__.py:76 -------------------- fixture lossy_prio_list setup ends --------------------
INFO     root:__init__.py:69 -------------------- fixture get_snappi_ports setup starts --------------------
INFO     root:__init__.py:69 -------------------- fixture get_snappi_ports_multi_dut setup starts --------------------
INFO     root:__init__.py:76 -------------------- fixture get_snappi_ports_multi_dut setup ends --------------------
INFO     root:__init__.py:76 -------------------- fixture get_snappi_ports setup ends --------------------
INFO     root:__init__.py:69 -------------------- fixture snappi_port_selection setup starts --------------------
INFO     root:__init__.py:76 -------------------- fixture snappi_port_selection setup ends --------------------
INFO     root:__init__.py:77 Log analyzer is disabled
INFO     root:__init__.py:81 -------------------- fixture disable_pfcwd setup starts --------------------
INFO     root:__init__.py:85 -------------------- fixture disable_pfcwd setup ends --------------------
INFO     root:__init__.py:81 -------------------- fixture tgen_port_info setup starts --------------------
----------- curtailed output ----------
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Start interfaces 0.164s
INFO     tests.common.snappi_tests.snappi_fixtures:snappi_fixtures.py:906 Found relevant portchannel interfaces
INFO     root:__init__.py:85 -------------------- fixture tgen_port_info setup ends --------------------
INFO     root:conftest.py:3819 skip setup dualtor mux cables on non-dualtor testbed
INFO     tests.common.plugins.memory_utilization:__init__.py:64 Before test: collected memory_values {'before_test': {}, 'after_test': {}}
----------- curtailed output ----------
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:784 Polling DUT for traffic statistics for 23 seconds ...
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:803 Polling TGEN for in-flight traffic statistics...
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:824 In-flight traffic statistics for flows: ['Test Flow Prio 3', 'Test Flow Prio 4', 'Background Flow Prio 1', 'Background Flow Prio 5', 'Background Flow Prio 6', 'Background Flow Prio 2', 'Background Flow Prio 0']
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:825 In-flight TX frames: [68216, 68215, 81896551, 81896551, 81896551, 81896551, 81896551]
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:826 In-flight RX frames: [0, 0, 81896551, 81896551, 81896551, 81896551, 81896551]
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:832 In-flight traffic statistics for flows:
----------- curtailed output ----------
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:837 DUT polling complete
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:850 Checking if all flows have stopped. Attempt #1
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:856 All test and background traffic flows stopped
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:894 Dumping per-flow statistics
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:899 Stopping transmit on all remaining flows
INFO     snappi_ixnetwork.snappi_api:snappi_api.py:1419 Flows stop 6.608s
PASSED                                                                                                                                                                                                          [ 50%]
----------- curtailed output ----------
INFO     root:__init__.py:81 -------------------- fixture disable_pfcwd setup starts --------------------
INFO     root:__init__.py:85 -------------------- fixture disable_pfcwd setup ends --------------------
INFO     root:__init__.py:81 -------------------- fixture tgen_port_info setup starts --------------------
INFO     tests.common.snappi_tests.snappi_fixtures:snappi_fixtures.py:906 Found relevant portchannel interfaces
INFO     root:__init__.py:85 -------------------- fixture tgen_port_info setup ends --------------------
INFO     root:conftest.py:3819 skip setup dualtor mux cables on non-dualtor testbed
----------- curtailed output ----------
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:784 Polling DUT for traffic statistics for 27 seconds ...
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:803 Polling TGEN for in-flight traffic statistics...
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:824 In-flight traffic statistics for flows: ['Test Flow Prio 3', 'Test Flow Prio 4', 'Background Flow Prio 1', 'Background Flow Prio 5', 'Background Flow Prio 6', 'Background Flow Prio 2', 'Background Flow Prio 0']
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:825 In-flight TX frames: [68221, 68222, 99137931, 99137931, 99137931, 99137931, 99137931]
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:826 In-flight RX frames: [0, 0, 99137931, 99137931, 99137931, 99137931, 99137931]
INFO     tests.common.snappi_tests.traffic_generation:traffic_generation.py:832 In-flight traffic statistics for flows:
----------- curtailed output ----------
INFO     tests.conftest:conftest.py:3097 Dumping Disk and Memory Space information after test on ixre-egl-board73
INFO     tests.conftest:conftest.py:3097 Dumping Disk and Memory Space information after test on ixre-egl-board74
INFO     tests.conftest:conftest.py:3101 Collecting core dumps after test on ixre-egl-board74
INFO     tests.conftest:conftest.py:3101 Collecting core dumps after test on ixre-egl-board73
INFO     tests.conftest:conftest.py:3112 Collecting running config after test on ixre-egl-board74
INFO     tests.conftest:conftest.py:3112 Collecting running config after test on ixre-egl-board73
INFO     tests.conftest:conftest.py:3259 Core dump and config check passed for test_pfc_pause_lossless_with_snappi.py
----------- curtailed output ----------
----------------------------------------------------------------------------------------------- live log sessionfinish ------------------------------------------------------------------------------------------------
INFO     root:__init__.py:67 Can not get Allure report URL. Please check logs
============================================================================== 2 passed, 14 deselected, 10 warnings in 808.66s (0:13:28) ==============================================================================
INFO:root:Can not get Allure report URL. Please check logs


Signed-off-by: amitpawa <amit.2.pawar@nokia.com>
yutongzhang-microsoft pushed a commit that referenced this pull request Mar 31, 2026
…kets not received on collector interface (sonic-net#22186)

* [sonic-mgmt] Fix sflow/test_sflow.py failures with expected sflow packets not received on collector interface

Issue #1:
In some cases (like sflow config enabled for first time, device reboot),
hsflowd daemon is taking little over 3 mins to be fully initialized and
process collector config. During this window, hsflowd service won't send
sflow packets ('CounterSample', 'FlowSample' etc) to collector interface
and thus test can fail with i) "Packets are not received in active
collector, collector\d+" and ii) "Expected Number of samples are not
collected from Interface Ethernet\d+ in collector collector\d+ , Received \d+"

hsflowd service is writing to "/etc/hsflowd.auto" once it's processed
collector configuration. Thus waiting for collector info to be present in
"/etc/hsflowd.auto" seems to be safe option before proceeding with
sflow traffic verfication.

Issue #2:
If the test expects flow samples/packets on the collector interface but they aren't
seen for some reason, then we are hitting "KeyError: 'flow_port_count'". Due to
counter samples seen on collector interface, "data['total_samples']" will not be
zero but "data['total_flow_count']" will be 0 and lead to KeyError when tried to
access "data['flow_port_count']". Fix is to have assert on "total_flow_count" and
"total_counter_count" before calling corresponding sample analyze functions.

Signed-off-by: Vinod <vkjammala@arista.com>

* Addressing review comments

1) Enhanced "wait_until_hsflowd_ready" to make it wait for all the
   collector IPs (instead of calling it sequentially for each IP)
2) Add docstring for "wait_until_hsflowd_ready" function
3) Updated "ast.literal_eval" usage to handle the case where
   "active_collectors" is passed as empty string ("" instead of "[]")

Signed-off-by: Vinod <vkjammala@arista.com>

* Fix pre-commit check failures

Signed-off-by: Vinod <vkjammala@arista.com>

* Revert PR#21674 partially to enable "sflow/test_sflow.py" test

Signed-off-by: Vinod <vkjammala@arista.com>

---------

Signed-off-by: Vinod <vkjammala@arista.com>
yutongzhang-microsoft added a commit that referenced this pull request Apr 1, 2026
- Add link to VsSetup doc in Overview
- Replace 'cEOSLab' with generic 'neighbor container' language (cEOS, cSONiC, etc.)
- Fix wording: 'large number' and 'neighbor containers' instead of 'total/cEOSLab'
- Add ASCII diagrams for standard vs Multi-VRF topology
- Change all code block language tags from buildoutcfg to yaml/bash
- Restructure Enabling section into Approach #1 (flag) and Approach #2 (manual)
- Add high-level workflow description before the steps
- Expand Test Library Changes with patterns, examples, and common infra changes
- Update Known Limitations to use generic container language

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
yutongzhang-microsoft added a commit that referenced this pull request Apr 1, 2026
- Add link to VsSetup doc in Overview
- Replace 'cEOSLab' with generic 'neighbor container' language (cEOS, cSONiC, etc.)
- Fix wording: 'large number' and 'neighbor containers' instead of 'total/cEOSLab'
- Add ASCII diagrams for standard vs Multi-VRF topology
- Change all code block language tags from buildoutcfg to yaml/bash
- Restructure Enabling section into Approach #1 (flag) and Approach #2 (manual)
- Add high-level workflow description before the steps
- Expand Test Library Changes with patterns, examples, and common infra changes
- Update Known Limitations to use generic container language

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Yutong Zhang <yutongzhang@microsoft.com>
yutongzhang-microsoft added a commit that referenced this pull request Apr 1, 2026
- Enabling Multi-VRF Mode: remove Approach #1/#2 split; manual convergence
  is now correctly described as a fallback when TestbedProcessing.py is not
  used, not an alternative approach
- Test Library Changes: rewrite based on actual code changes in PR sonic-net#22171:
  - ceos_topo_converger.py (new)
  - TestbedProcessing.py: use_converged_peers flag handling
  - topo_facts.py: get_vm_list/get_vlans for multi-VRF
  - testbed_vm_info.py: VRF-to-host mapping
  - nbrhosts fixture: multi_vrf_data dict structure
  - bgp_helpers.py: VRF-aware route checks and port resolution
  - bgp/conftest.py: VRF-scoped graceful-restart config

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
yutongzhang-microsoft added a commit that referenced this pull request Apr 1, 2026
- Add link to VsSetup doc in Overview
- Replace 'cEOSLab' with generic 'neighbor container' language (cEOS, cSONiC, etc.)
- Fix wording: 'large number' and 'neighbor containers' instead of 'total/cEOSLab'
- Add ASCII diagrams for standard vs Multi-VRF topology
- Change all code block language tags from buildoutcfg to yaml/bash
- Restructure Enabling section into Approach #1 (flag) and Approach #2 (manual)
- Add high-level workflow description before the steps
- Expand Test Library Changes with patterns, examples, and common infra changes
- Update Known Limitations to use generic container language

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Yutong Zhang <yutongzhang@microsoft.com>
yutongzhang-microsoft added a commit that referenced this pull request Apr 1, 2026
- Enabling Multi-VRF Mode: remove Approach #1/#2 split; manual convergence
  is now correctly described as a fallback when TestbedProcessing.py is not
  used, not an alternative approach
- Test Library Changes: rewrite based on actual code changes in PR sonic-net#22171:
  - ceos_topo_converger.py (new)
  - TestbedProcessing.py: use_converged_peers flag handling
  - topo_facts.py: get_vm_list/get_vlans for multi-VRF
  - testbed_vm_info.py: VRF-to-host mapping
  - nbrhosts fixture: multi_vrf_data dict structure
  - bgp_helpers.py: VRF-aware route checks and port resolution
  - bgp/conftest.py: VRF-scoped graceful-restart config

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Yutong Zhang <yutongzhang@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.