[multi-dut] Added fixtures for selecting nodes from multi-duts based on card type and hwsku #2693
Merged
wangxin merged 3 commits intosonic-net:masterfrom Jan 7, 2021
Merged
Conversation
wangxin
reviewed
Jan 6, 2021
…/hwsku.
Added the following fixtures that can be used for parameterizing tests for chassis:
- rand_one_frontend_dut_hostname - returns a random dut that is a frontend node.
- enum_supervisor_dut_hostname - returns a dut that is a supervisor node. For pizza box (single dut) this will the pizza box itself.
- A supervisor node is defined as having 'type' variable in the inventory as 'supervisor'
- For pizza box (single dut) the single dut itself will be the supervisor node.
- enum_frontend_dut_hostname - returns all duts that are frontend nodes
- A frontend node is defined as a node that is not a supervisor.
- enum_rand_one_per_hwsku_frontend_hostname - returns 1 random frontend dut per hwsksu amongst all the frontend nodes.
- hwsku for a node is derived from the 'hwsku' or 'sonic_hwsku' variable in the inventory for the node.
To achieve the above:
- Added dut_utils under common/helpers to:
- get_inventory_variable - get the value of a variable in the inventory for a given node.
- is_supervisor_node - check if 'type' variable is defined in the inventory for the node and is 'supervisor'
- is_frontend_node - check if node is not a supervisor node.
- Modified SonicHost.is_supervisor_node to use dut_utils.is_supervisor_node.
- Pulling common code of getting duts in testbed into a function.
- There was code to create TestbedInfo by parsing the testbed-file and getting the testbed info for a testbed.
This code was repeated in tbinfo fixture and all the parameterization helper methods.
Moved this into another function 'get_tbinfo' and made other functions/fixtures call this function.
- Review comments:
- When selecting a frontend node, if we find that none of the DUTs in the testbed
are frontend nodes, then we should fail.
- scope of parameterized fixtures
- By default, all the 'enum_dut*' fixtures in pytest_generate_tests were created with scope 'function'.
This made these fixtures not usable in other fixtures that have 'module' scope.
- Added scope to be 'module' to all the 'enum_dut*' fixtures in 'pytest_generate_tests'.
|
This pull request introduces 2 alerts when merging 0abe36e into 985eec2 - view on LGTM.com new alerts:
|
wangxin
approved these changes
Jan 7, 2021
kazinator-arista
pushed a commit
to kazinator-arista/sonic-mgmt
that referenced
this pull request
Mar 4, 2026
…atically (sonic-net#15422) #### Why I did it src/sonic-utilities ``` * 1246bc81 - (HEAD -> 202211, origin/202211) [config reload]Config Reload Enhancement (sonic-net#2693) (sonic-net#2863) (2 days ago) [Sudharsan Dhamal Gopalarathnam] * d69aae4d - [vlan][dhcp_relay] Clear dhcpv6 relay counter while deleting vlan (sonic-net#2852) (2 days ago) [Yaqiang Zhu] * 0f6bf8ac - [config]: Dynamically start and stop ndppd (sonic-net#2814) (2 days ago) [Lawrence Lee] * 48a63ff1 - Fix issue: out of range sflow polling interval is accepted and stored in config_db (sonic-net#2847) (2 days ago) [Junchao-Mellanox] ``` #### How I did it #### How to verify it #### Description for the changelog
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description of PR
Summary:
Fixes # (issue)
Type of change
Approach
What is the motivation for this PR?
When dealing with SONiC Chassis you have cards of different type
Also, you could have linecards with different hwsku's in the same chassis.
When using the parameterized approach for multi-dut to select test cases to run on a chassis, we need to make sure that we parameterize the tests to provide all the required coverage.
How did you do it?
Added the following fixtures that can be used for parameterizing tests for chassis:
- hwsku for a node is derived from the 'hwsku' or 'sonic_hwsku' variable in the inventory for the node.
To achieve the above:
Added dut_utils under common/helpers to:
Modified SonicHost.is_supervisor_node to use dut_utils.is_supervisor_node.
How did you verify/test it?
Created a sample test case to exercise the selection of DUT's in a multi-dut testbed.
The test were run against a Chassis testbed with the following cads:
The pytest results of running the sample test above against the testbed above is shown below.
Any platform specific information?
Supported testbed topology if it's a new test case?
Documentation