mirror of
https://github.com/Telecominfraproject/wlan-testing.git
synced 2025-10-30 18:38:06 +00:00
Wifi 13007 (#854)
* Added one test case for Firmware Upgrade/Downgrade Testplan Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Added get_latest_four_release_images method for Firmware Upgrade/Downgrade Test Plan Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Modified get_latest_four_release_images method Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Added five more test cases for Firmware Upgrade/Downgrade Test Plan Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Fixed issue in allure attach Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Renamed the method name as get_least_three_release_images_from_current_image and Modified the method Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Deleted 6 test cases and converted into a single test case Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Modified logic in get_least_three_release_images_from_current_image method Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> * Modified logic in test_upgrade_downgrade_tests Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com> --------- Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>
This commit is contained in:
@@ -1397,6 +1397,49 @@ class FMSUtils:
|
||||
|
||||
return "error"
|
||||
|
||||
def get_least_three_release_images_from_current_image(self, firmware_list=[], current_image=""):
|
||||
"""This method will return latest three release images"""
|
||||
image_date = []
|
||||
all_images_from_current_image = []
|
||||
current_image_index = None
|
||||
for i in firmware_list:
|
||||
image_date.append(i["imageDate"])
|
||||
image_date.sort(reverse=True)
|
||||
ordered_list_firmware = []
|
||||
for i in image_date:
|
||||
for j in firmware_list:
|
||||
if i == j["imageDate"]:
|
||||
ordered_list_firmware.append(j)
|
||||
break
|
||||
for i in range(len(ordered_list_firmware)):
|
||||
if current_image in ordered_list_firmware[i]["revision"]:
|
||||
current_image_index = i
|
||||
break
|
||||
logging.info("current_image_index: " + str(current_image_index))
|
||||
all_images_from_current_image = ordered_list_firmware[current_image_index:]
|
||||
logging.info("all_images_from_current_image" + str(all_images_from_current_image))
|
||||
release_images_all = []
|
||||
least_3_release_images = []
|
||||
for firmware in all_images_from_current_image:
|
||||
if firmware['revision'].split("/")[1].replace(" ", "").split('-')[1].__contains__('v2.'):
|
||||
if "rc" not in firmware['image']:
|
||||
release_images_all.append(firmware)
|
||||
logging.info("release_images_all" + str(release_images_all))
|
||||
latest_release_image_number = int(release_images_all[0]['image'].split(".")[1])
|
||||
latest_3_releases_list_num = [latest_release_image_number, latest_release_image_number - 1,
|
||||
latest_release_image_number - 2]
|
||||
count = 0
|
||||
# Find out List of least 3 release Image
|
||||
# Logic for least 3 release Images
|
||||
for i in release_images_all:
|
||||
if "v2." + str(latest_3_releases_list_num[count]) + "." in str(i['image']):
|
||||
least_3_release_images.append(i)
|
||||
count = count + 1
|
||||
if len(least_3_release_images) == 3:
|
||||
break
|
||||
logging.info("least three release images from current image: " + str(least_3_release_images))
|
||||
return least_3_release_images
|
||||
|
||||
|
||||
class ProvUtils:
|
||||
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
|
||||
import allure
|
||||
import pytest
|
||||
import importlib
|
||||
import time
|
||||
logging = importlib.import_module("logging")
|
||||
|
||||
|
||||
@pytest.mark.uc_sanity
|
||||
@@ -138,3 +141,217 @@ class TestUcentralFMSService(object):
|
||||
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
|
||||
@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):
|
||||
"""
|
||||
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
|
||||
"""
|
||||
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) < 3:
|
||||
pytest.fail("Least 3 release images from current image are not available on GW")
|
||||
allure.attach(name="Current Firmware Image(F1): ",
|
||||
body=str(ap_version_f1))
|
||||
logging.info("Current Firmware Image(F1): " + str(ap_version_f1))
|
||||
allure.attach(name="F2 Firmware Image: ",
|
||||
body=str(latest_3_release_images[0]))
|
||||
logging.info("F2 Firmware Image: " + str(latest_3_release_images[0]))
|
||||
allure.attach(name="F3 Firmware Image: ",
|
||||
body=str(latest_3_release_images[1]))
|
||||
logging.info("F3 Firmware Image: " + str(latest_3_release_images[1]))
|
||||
allure.attach(name="F4 Firmware Image: ",
|
||||
body=str(latest_3_release_images[2]))
|
||||
logging.info("F4 Firmware Image: " + str(latest_3_release_images[2]))
|
||||
f1_version = current_version
|
||||
f2_version = latest_3_release_images[0]['revision'].split("/")[1].replace(" ", "")
|
||||
f3_version = latest_3_release_images[1]['revision'].split("/")[1].replace(" ", "")
|
||||
f4_version = latest_3_release_images[2]['revision'].split("/")[1].replace(" ", "")
|
||||
# Downgrade F1 to F2
|
||||
logging.info("---------- Downgrading F1 to F2----------")
|
||||
get_target_object.firmware_library_object.upgrade_firmware(
|
||||
serial=get_target_object.device_under_tests_info[ap]['identifier'],
|
||||
url=str(latest_3_release_images[0]['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="After Firmware Downgrade Request to F2 from F1: ",
|
||||
body="Current revision: " + current_version + "\nF2 revision: " + f2_version)
|
||||
logging.info("current revision: " + str(current_version) +
|
||||
"\nF2 revision: " + str(f2_version))
|
||||
|
||||
if current_version == f2_version:
|
||||
logging.info("firmware Downgrade successfully to F2: " + f2_version)
|
||||
else:
|
||||
logging.info("firmware Downgrade failed to F2: " + f2_version)
|
||||
pytest.fail("firmware Downgrade failed to F2: " + f2_version)
|
||||
|
||||
# Upgrade F2 to F1
|
||||
logging.info("---------- Upgrading F2 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="After Firmware Upgrade Request to F1 from F2: ",
|
||||
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)
|
||||
|
||||
# Downgrade F1 to F3
|
||||
logging.info("---------- Downgrading F1 to F3----------")
|
||||
get_target_object.firmware_library_object.upgrade_firmware(
|
||||
serial=get_target_object.device_under_tests_info[ap]['identifier'],
|
||||
url=str(latest_3_release_images[1]['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="After Firmware Downgrade Request to F3 from F1: ",
|
||||
body="Current revision: " + current_version + "\nF3 revision: " + f3_version)
|
||||
logging.info("current revision: " + str(current_version) +
|
||||
"\nF3 revision: " + str(f3_version))
|
||||
|
||||
if current_version == f3_version:
|
||||
logging.info("firmware Downgrade successfully to F3: " + f3_version)
|
||||
else:
|
||||
logging.info("firmware Downgrade failed to F3: " + f3_version)
|
||||
pytest.fail("firmware Downgrade failed to F3: " + f3_version)
|
||||
|
||||
# Upgrade F3 to F1
|
||||
logging.info("---------- Upgrading F3 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="After Firmware Upgrade Request to F1 from F3: ",
|
||||
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)
|
||||
|
||||
# Downgrade F1 to F4
|
||||
logging.info("---------- Downgrading F1 to F4----------")
|
||||
get_target_object.firmware_library_object.upgrade_firmware(
|
||||
serial=get_target_object.device_under_tests_info[ap]['identifier'],
|
||||
url=str(latest_3_release_images[2]['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="After Firmware Downgrade Request to F4 from F1: ",
|
||||
body="Current revision: " + current_version + "\nF4 revision: " + f4_version)
|
||||
logging.info("current revision: " + str(current_version) +
|
||||
"\nF4 revision: " + str(f4_version))
|
||||
|
||||
if current_version == f4_version:
|
||||
logging.info("firmware Downgrade successfully to F4: " + f4_version)
|
||||
else:
|
||||
logging.info("firmware Downgrade failed to F4: " + f4_version)
|
||||
pytest.fail("firmware Downgrade failed to F4: " + f4_version)
|
||||
|
||||
# Upgrade F4 to F1
|
||||
logging.info("---------- Upgrading F4 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="After Firmware Upgrade Request to F1 from F4: ",
|
||||
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)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user