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
	 jitendracandela
					jitendracandela