mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-10-31 19:08:01 +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" |         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: | class ProvUtils: | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,6 +6,9 @@ | |||||||
|  |  | ||||||
| import allure | import allure | ||||||
| import pytest | import pytest | ||||||
|  | import importlib | ||||||
|  | import time | ||||||
|  | logging = importlib.import_module("logging") | ||||||
|  |  | ||||||
|  |  | ||||||
| @pytest.mark.uc_sanity | @pytest.mark.uc_sanity | ||||||
| @@ -138,3 +141,217 @@ class TestUcentralFMSService(object): | |||||||
|         entries = "info" |         entries = "info" | ||||||
|         system_info = get_target_object.controller_library_object.get_system_configuration_items(entries) |         system_info = get_target_object.controller_library_object.get_system_configuration_items(entries) | ||||||
|         assert system_info.status_code == 200 |         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