fix fixture order issue in ipv6_mgmt tacacs and telemetry cases#12825
fix fixture order issue in ipv6_mgmt tacacs and telemetry cases#12825yejianquan merged 1 commit intosonic-net:masterfrom
Conversation
|
Here are some issues observed in the past due to setup/teardown sequence issue:
The root case is: in current test case definition, the fixture setup sequence is:
The
|
|
one of the example issue seen related to telemetry case is: The reason for this failure is slightly different. We see it happened for As a workaround for this issue, I duplicated |
|
@sdszhang PR conflicts with 202305 branch |
|
@sdszhang PR conflicts with 202311 branch |
…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 sonic-net#1 in this PR as the new 'function' scope fixture can be reused by other cases. Option sonic-net#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
…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 sonic-net#1 in this PR as the new 'function' scope fixture can be reused by other cases. Option sonic-net#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
…y cases (#12825) (#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 #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
…y cases (#12825) (#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 #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
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:
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:
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 #12705
Type of change
Back port request
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.
How did you verify/test it?
Run it on kvm testbed, all passed.
Any platform specific information?
Supported testbed topology if it's a new test case?
Documentation