mirror of
https://github.com/Telecominfraproject/wlan-testing.git
synced 2025-11-02 20:07:57 +00:00
* Improved Firmware Upgrade/Downgrade Tests Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Improved description in the Firmware Downgrade and Upgrade test Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Modified logic for get_least_three_release_images_from_current_image method Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> --------- Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>
290 lines
15 KiB
Python
290 lines
15 KiB
Python
"""
|
|
|
|
UCentral FMS Services Rest API Tests
|
|
|
|
"""
|
|
|
|
import allure
|
|
import pytest
|
|
import importlib
|
|
import time
|
|
logging = importlib.import_module("logging")
|
|
|
|
|
|
@pytest.mark.uc_sanity
|
|
@pytest.mark.ow_sdk_load_tests
|
|
@pytest.mark.owfms_api_tests
|
|
@allure.parent_suite("SDK Tests")
|
|
@allure.suite("FMS Service Tests")
|
|
class TestUcentralFMSService(object):
|
|
|
|
@pytest.mark.fms_list_of_firmwares
|
|
@allure.title("Get list of firmwares")
|
|
@allure.testcase(name="WIFI-12559",
|
|
url="https://telecominfraproject.atlassian.net/browse/WIFI-12559")
|
|
def test_fms_list_of_firmwares(self, get_target_object):
|
|
"""
|
|
Get list of firmwares
|
|
Unique marker: pytest -m "fms_list_of_firmwares"
|
|
"""
|
|
system_info = get_target_object.controller_library_object.get_list_of_firmwares()
|
|
assert system_info.status_code == 200
|
|
|
|
@pytest.mark.fms_different_values_from_the_running_service
|
|
@allure.title("Get different values from the running service")
|
|
@allure.testcase(name="WIFI-12560",
|
|
url="https://telecominfraproject.atlassian.net/browse/WIFI-12560")
|
|
def test_fms_different_values_from_the_running_service(self, get_target_object):
|
|
"""
|
|
Get different values from the running service
|
|
Unique marker: pytest -m "fms_different_values_from_the_running_service"
|
|
"""
|
|
system_info = get_target_object.controller_library_object.get_different_values_from_the_running_service()
|
|
assert system_info.status_code == 200
|
|
|
|
@pytest.mark.fms_system_wide_commands
|
|
@allure.title("Perform some system wide commands")
|
|
@allure.testcase(name="WIFI-12647",
|
|
url="https://telecominfraproject.atlassian.net/browse/WIFI-12647")
|
|
def test_fms_system_wide_commands(self, get_target_object):
|
|
"""
|
|
Perform some system wide commands
|
|
Unique marker: pytest -m "fms_system_wide_commands"
|
|
"""
|
|
payload = {
|
|
"command": "setloglevel",
|
|
"subsystems": [
|
|
{
|
|
"tag": "",
|
|
"value": ""
|
|
}
|
|
]
|
|
}
|
|
system_info = get_target_object.controller_library_object.perform_system_wide_commands(payload)
|
|
assert system_info.status_code == 200
|
|
|
|
@pytest.mark.fms_list_all_the_defined_device_revision_history
|
|
@allure.title("Get list all the defined device revision history")
|
|
@allure.testcase(name="WIFI-12561",
|
|
url="https://telecominfraproject.atlassian.net/browse/WIFI-12561")
|
|
def test_fms_list_all_the_defined_device_revision_history(self, get_target_object, get_testbed_details):
|
|
"""
|
|
Get list all the defined device revision history
|
|
Unique marker: pytest -m "fms_list_all_the_defined_device_revision_history"
|
|
"""
|
|
device_name = get_testbed_details['device_under_tests'][0]['identifier']
|
|
system_info = get_target_object.controller_library_object.get_list_all_the_defined_device_revision_history(
|
|
device_name)
|
|
assert system_info.status_code == 200
|
|
|
|
@pytest.mark.fms_list_of_connected_devices_and_some_values
|
|
@allure.title("Get list of connected devices and some values")
|
|
@allure.testcase(name="WIFI-12562",
|
|
url="https://telecominfraproject.atlassian.net/browse/WIFI-12562")
|
|
def test_fms_list_of_connected_devices_and_some_values(self, get_target_object, get_testbed_details):
|
|
"""
|
|
Get list of connected devices and some values
|
|
Unique marker: pytest -m "fms_list_of_connected_devices_and_some_values"
|
|
"""
|
|
system_info = get_target_object.controller_library_object.get_list_of_connected_devices_and_some_values()
|
|
assert system_info.status_code == 200
|
|
|
|
@pytest.mark.fms_status_of_connected_device
|
|
@allure.title("Get status of a connected device")
|
|
@allure.testcase(name="WIFI-12563",
|
|
url="https://telecominfraproject.atlassian.net/browse/WIFI-12563")
|
|
def test_fms_status_of_connected_device(self, get_target_object, get_testbed_details):
|
|
"""
|
|
Get status of a connected device
|
|
Unique marker: pytest -m "fms_status_of_connected_device"
|
|
"""
|
|
device_name = get_testbed_details['device_under_tests'][0]['identifier']
|
|
system_info = get_target_object.controller_library_object.get_status_of_connected_device(
|
|
device_name)
|
|
assert system_info.status_code == 200
|
|
|
|
@pytest.mark.fms_analysis_of_the_existing_devices_we_know_about
|
|
@allure.title("Get an analysis of the existing devices we know about")
|
|
@allure.testcase(name="WIFI-12564",
|
|
url="https://telecominfraproject.atlassian.net/browse/WIFI-12564")
|
|
def test_fms_analysis_of_the_existing_devices_we_know_about(self, get_target_object, get_testbed_details):
|
|
"""
|
|
Get an analysis of the existing devices we know about
|
|
Unique marker: pytest -m "fms_analysis_of_the_existing_devices_we_know_about"
|
|
"""
|
|
system_info = get_target_object.controller_library_object.get_analysis_of_the_existing_devices_we_know_about()
|
|
assert system_info.status_code == 200
|
|
|
|
@pytest.mark.fms_receive_a_report_on_single_decide
|
|
@allure.title("Get a report on a single decide")
|
|
@allure.testcase(name="WIFI-12565",
|
|
url="https://telecominfraproject.atlassian.net/browse/WIFI-12565")
|
|
def test_fms_receive_a_report_on_single_decide(self, get_target_object, get_testbed_details):
|
|
"""
|
|
Get a report on a single decide
|
|
Unique marker: pytest -m "fms_receive_a_report_on_single_decide"
|
|
"""
|
|
device_name = get_testbed_details['device_under_tests'][0]['identifier']
|
|
system_info = get_target_object.controller_library_object.get_receive_a_report_on_single_decide(
|
|
device_name)
|
|
assert system_info.status_code == 200
|
|
|
|
@pytest.mark.fms_system_configuration_items
|
|
@allure.title("Get system configuration items")
|
|
@allure.testcase(name="WIFI-12566",
|
|
url="https://telecominfraproject.atlassian.net/browse/WIFI-12566")
|
|
def test_fms_system_configuration_items(self, get_target_object, get_testbed_details):
|
|
"""
|
|
Get system configuration items
|
|
Unique marker: pytest -m "fms_system_configuration_items"
|
|
"""
|
|
entries = "info"
|
|
system_info = get_target_object.controller_library_object.get_system_configuration_items(entries)
|
|
assert system_info.status_code == 200
|
|
|
|
|
|
"""Test cases for Firmware Upgrade/Downgrade"""
|
|
|
|
|
|
@pytest.mark.firmware_upgrade_downgrade
|
|
@pytest.mark.ow_regression_lf
|
|
@allure.parent_suite("Firmware Tests")
|
|
@allure.suite("Firmware Upgrade/Downgrade Tests")
|
|
class TestFirmwareUpgradeDowngrade(object):
|
|
@pytest.mark.upgrade_downgrade_test
|
|
@allure.title("Firmware Downgrade and Upgrade test")
|
|
@allure.testcase(name="WIFI-13007",
|
|
url="https://telecominfraproject.atlassian.net/browse/WIFI-13012")
|
|
def test_upgrade_downgrade_tests(self, get_target_object, get_testbed_details):
|
|
for ap in range(len(get_target_object.device_under_tests_info)):
|
|
firmware_list = get_target_object.firmware_library_object.get_firmwares(
|
|
model=get_target_object.device_under_tests_info[ap]['model'],
|
|
branch="",
|
|
commit_id='',
|
|
limit='',
|
|
offset='3000')
|
|
# check the current AP Revision (F1)
|
|
ap_version_f1 = get_target_object.dut_library_object.get_ap_version(idx=ap)
|
|
|
|
current_version = str(ap_version_f1).split("/")[1].replace(" ", "").splitlines()[0]
|
|
f1_version = current_version
|
|
# Finding uri for current image
|
|
for i in firmware_list:
|
|
if f1_version in i["revision"]:
|
|
ap_version_f1 = i
|
|
break
|
|
latest_3_release_images = get_target_object.firmware_library_object.get_least_three_release_images_from_current_image(
|
|
firmware_list=firmware_list, current_image=current_version)
|
|
if len(latest_3_release_images) == 0:
|
|
pytest.skip("Least 1 release image from current image is not available on GW")
|
|
# Dynamic description for the testcase
|
|
if len(latest_3_release_images) == 1:
|
|
description_ = """
|
|
To validate the reliability and correctness of the firmware downgrade and upgrade process
|
|
on Access Points (APs) for One consecutive release, ensuring no functionality issues.
|
|
Unique marker: pytest -m "upgrade_downgrade_test"
|
|
F1 - Current AP firmware
|
|
F2 - One lower release image
|
|
Flow:
|
|
AP is on F1 (If F1 is current AP image)
|
|
AP downgrade to F2
|
|
AP upgrade from F2 to F1
|
|
"""
|
|
allure.dynamic.description(description_)
|
|
elif len(latest_3_release_images) == 2:
|
|
description_ = """
|
|
To validate the reliability and correctness of the firmware downgrade and upgrade process
|
|
on Access Points (APs) for Two consecutive releases, ensuring no functionality issues.
|
|
Unique marker: pytest -m "upgrade_downgrade_test"
|
|
F1 - Current AP firmware
|
|
F2 - One lower release image
|
|
F3 - Two lower release image
|
|
Flow:
|
|
AP is on F1 (If F1 is current AP image)
|
|
AP downgrade to F2
|
|
AP upgrade from F2 to F1
|
|
AP downgrade from F1 to F3
|
|
AP upgrade from F3 to F1
|
|
"""
|
|
allure.dynamic.description(description_)
|
|
elif len(latest_3_release_images) == 3:
|
|
description_ = """
|
|
To validate the reliability and correctness of the firmware downgrade and upgrade process
|
|
on Access Points (APs) for Three consecutive releases, ensuring no functionality issues.
|
|
Unique marker: pytest -m "upgrade_downgrade_test"
|
|
F1 - Current AP firmware
|
|
F2 - One lower release image
|
|
F3 - Two lower release image
|
|
F4 - Three lower release image
|
|
Flow:
|
|
AP is on F1 (If F1 is current AP image)
|
|
AP downgrade to F2
|
|
AP upgrade from F2 to F1
|
|
AP downgrade from F1 to F3
|
|
AP upgrade from F3 to F1
|
|
AP downgrade from F1 to F4
|
|
AP upgrade from F4 to F1
|
|
"""
|
|
allure.dynamic.description(description_)
|
|
|
|
allure.attach(name="Current Firmware Image(F1): ",
|
|
body=str(ap_version_f1))
|
|
logging.info("Current Firmware Image(F1): " + str(ap_version_f1))
|
|
for i in latest_3_release_images:
|
|
allure.attach(name=f"F{str(latest_3_release_images.index(i)+2)} Firmware Image: ",
|
|
body=str(i))
|
|
logging.info(f"F{str(latest_3_release_images.index(i)+2)} Firmware Image: " + str(i))
|
|
f1_version = current_version
|
|
for i in latest_3_release_images:
|
|
release_version = i['revision'].split("/")[1].replace(" ", "")
|
|
# Downgrade
|
|
logging.info(f"---------- Downgrading F1 to F{str(latest_3_release_images.index(i)+2)}----------")
|
|
get_target_object.firmware_library_object.upgrade_firmware(
|
|
serial=get_target_object.device_under_tests_info[ap]['identifier'],
|
|
url=str(i['uri']))
|
|
# wait for 300 seconds after firmware upgrade
|
|
logging.info("Waiting for 300 Sec for Firmware Downgrade")
|
|
time.sleep(300)
|
|
# check the current AP Revision again
|
|
ap_version = get_target_object.dut_library_object.get_ap_version(idx=ap)
|
|
current_version = str(ap_version).split("/")[1].replace(" ", "").splitlines()[0]
|
|
# print and report the Firmware versions after upgrade
|
|
allure.attach(name=f"After Firmware Downgrade Request to F{str(latest_3_release_images.index(i)+2)} from F1: ",
|
|
body="Current revision: " + current_version + f"\nF{str(latest_3_release_images.index(i)+2)} revision: " + release_version)
|
|
logging.info("current revision: " + str(current_version) +
|
|
f"\nF{str(latest_3_release_images.index(i)+2)} revision: " + str(release_version))
|
|
|
|
if current_version == release_version:
|
|
logging.info(f"firmware Downgrade successfully to F{str(latest_3_release_images.index(i)+2)}: " + release_version)
|
|
else:
|
|
logging.info(f"firmware Downgrade failed to F{str(latest_3_release_images.index(i)+2)}: " + release_version)
|
|
pytest.fail(f"firmware Downgrade failed to F{str(latest_3_release_images.index(i)+2)}: " + release_version)
|
|
|
|
# Upgrade
|
|
logging.info(f"---------- Upgrading F{str(latest_3_release_images.index(i)+2)} to F1----------")
|
|
get_target_object.firmware_library_object.upgrade_firmware(
|
|
serial=get_target_object.device_under_tests_info[ap]['identifier'],
|
|
url=str(ap_version_f1['uri']))
|
|
# wait for 300 seconds after firmware upgrade
|
|
logging.info("Waiting for 300 Sec for Firmware Downgrade")
|
|
time.sleep(300)
|
|
|
|
# check the current AP Revision again
|
|
ap_version = get_target_object.dut_library_object.get_ap_version(idx=ap)
|
|
current_version = str(ap_version).split("/")[1].replace(" ", "").splitlines()[0]
|
|
# print and report the Firmware versions after upgrade
|
|
allure.attach(name=f"After Firmware Upgrade Request to F1 from F{str(latest_3_release_images.index(i)+2)}: ",
|
|
body="Current revision: " + current_version + "\nF1 revision: " + f1_version)
|
|
logging.info("current revision: " + str(current_version) +
|
|
"\nF1 revision: " + str(f1_version))
|
|
|
|
if current_version == f1_version:
|
|
logging.info("firmware Upgrade successfully to F1: " + f1_version)
|
|
else:
|
|
logging.info("firmware Upgrade failed to F1: " + f1_version)
|
|
pytest.fail("firmware Upgrade failed to F1: " + f1_version)
|
|
|
|
|
|
|
|
|