From 3ddc66b9369c20948b230559d24e94e5db52babe Mon Sep 17 00:00:00 2001 From: wenjie1123 Date: Thu, 26 Sep 2024 18:43:32 +0800 Subject: [PATCH] =?UTF-8?q?cherry=20pick=20ba965e9=20from=20https://gitee.?= =?UTF-8?q?com/wenjie1123/developtools=5Fintegration=5Fverification/pulls/?= =?UTF-8?q?511=20RK3568=E6=96=B0=E5=A2=9E=E6=96=87=E4=BB=B6=E9=94=81?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E6=AF=8F=E4=B8=AA=E6=9C=BA=E5=99=A8=E5=90=8C?= =?UTF-8?q?=E4=B8=80=E6=97=B6=E9=97=B4=E5=8F=AA=E8=83=BD=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../liteOsUpgrade/liteOsUpgrade_RK3568_app.py | 63 ++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_RK3568_app.py b/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_RK3568_app.py index 003b98c..b2dff16 100644 --- a/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_RK3568_app.py +++ b/DeployDevice/src/func/liteOsUpgrade/liteOsUpgrade_RK3568_app.py @@ -97,6 +97,13 @@ class liteOsUpgrade_RK3568(BaseApp): ipaddress = socket.gethostbyname(hostname) logger.printLog("******系统ip为:%s ******" % ipaddress) logger.printLog("******系统为:%s ******" % system_type) + if system_type == "Windows": + lock_file = r'C:/deviceupgrade/task.lock' + else: + lock_file = '/home/openharmony/deviceupgrade/task.lock' + # 如果上一个任务没执行完成,不往下继续执行 + if not is_can_exec(lock_file): + return False version_savepath = self.params_dict.get("img_path") upgrade_test_type = self.params_dict.get("UpgradeTestType") sn = self.params_dict.get("sn") @@ -126,6 +133,7 @@ class liteOsUpgrade_RK3568(BaseApp): check_devices_cmd = "hdc list targets" f = send_times(check_devices_cmd) logger.info(f) + delete_file_lock(lock_file) if not f or "Empty" in f: logger.error("No devices found,please check the device.") return False @@ -139,6 +147,7 @@ class liteOsUpgrade_RK3568(BaseApp): logger.info(h) if "Upgrade loader ok" not in h: logger.error("Download MiniLoaderAll.bin Fail!") + delete_file_lock(lock_file) return False else: logger.printLog("Download MiniLoaderAll.bin Success!") @@ -148,6 +157,7 @@ class liteOsUpgrade_RK3568(BaseApp): logger.info(j) if "Write gpt ok" not in j: logger.error("Failed to execute the parameter.txt") + delete_file_lock(lock_file) return False else: logger.printLog("Successfully executed parameter.txt.") @@ -158,6 +168,7 @@ class liteOsUpgrade_RK3568(BaseApp): logger.info(k) if "Download image ok" not in k: logger.error("Failed to download the uboot.image!") + delete_file_lock(lock_file) if self.check_devices_mode(): return 98 return False @@ -165,6 +176,7 @@ class liteOsUpgrade_RK3568(BaseApp): logger.printLog("The uboot.image downloaded successfully!") # time.sleep(5) if not self.flash_version(): + delete_file_lock(lock_file) return False reboot_devices_cmd = "%s -s %s RD" % (loader_tool_path, LocationID) reboot_result = sendCmd(reboot_devices_cmd) @@ -184,11 +196,12 @@ class liteOsUpgrade_RK3568(BaseApp): # time.sleep(10) if "Reset Device OK" not in reboot_result: logger.error("Failed to reboot the board!") + delete_file_lock(lock_file) return False else: logger.info("Reboot successfully!") # os.system("hdc -t %s shell set persist.usb.setting.gadget_conn_prompt false" % sn) - + delete_file_lock(lock_file) logger.printLog("******下载完成,升级成功,开始进行冒烟测试******") hdc_kill() # os.system("hdc_std -t %s shell hilog -w start" % sn) @@ -584,3 +597,51 @@ def exec_cmd(mini_path, sn, save_path, archive_path): return True logger.error("mini_system_test failed!") return 98 + +@timeout(1000) +def is_can_exec(lock_file): + """ + 判断升级是否可以执行 + @param lock_file: 文件路径 + """ + lock_duration = 10 * 60 # 10分钟(以秒为单位) + if os.getenv('wait_time') is not None: + lock_duration = int(os.getenv('wait_time')) + # 检查锁文件 + if os.path.exists(lock_file): + # 获取锁文件的创建时间 + lock_time = os.path.getmtime(lock_file) + current_time = time.time() + # 判断锁是否超时 + if (current_time - lock_time) < lock_duration: + logger.error("ask is already running. Exiting.") + return False + else: + logger.warning("ask running time is more than %s second, can exec" % lock_duration) + delete_file_lock(lock_file) + create_file_lock(lock_file) + return True + else: + logger.info("no tasks are being executed") + create_file_lock(lock_file) + return True + +def create_file_lock(lock_file): + """ + 创建文件锁 + @param lock_file: 文件路径 + """ + directory = os.path.dirname(lock_file) + if not os.path.exists(directory): + os.makedirs(directory) + logger.info("create_file_lock") + with open(lock_file, 'w') as f: + f.write('locked, please can not delete') +def delete_file_lock(lock_file): + """ + 删除文件 + @param lock_file: 文件路径 + """ + logger.info("delete_file_lock") + if os.path.exists(lock_file): + os.remove(lock_file) \ No newline at end of file -- Gitee