import time import random import string from framework.core.logger import get_logger from framework.business.quantization_page import QuantizationPage logger = get_logger("QuantizationScenario") def _create_and_submit_task(quant_page: QuantizationPage, task_name: str): """内部辅助函数:执行单次完整的任务创建流""" # 1. 进入任务创建流程 quant_page.navigate_to() quant_page.click_create_task() # 2. 输入名称 quant_page.input_task_name(task_name) # 3. 选择编译模式 quant_page.select_mode_fast_eval() # 4. 选择镜像 quant_page.select_image("dcloud_ai_toolchain_ubuntu_22_s100_cpu-2") # 5. 选取模型文件 quant_page.upload_model_file("model", "result.onnx") # 6. 输入 march 值 quant_page.input_march_param("nash-e") # 7. 提交表单 quant_page.click_final_submit() def run_quantization_lifecycle(quant_page: QuantizationPage): """量化任务全生命周期流程""" logger.info("开始执行量化工具自动化流程...") # ================= 阶段 1:手动终止链路 ================= random_str1 = ''.join(random.choices(string.ascii_uppercase + string.digits, k=8)) task_1 = f"AutoQuant_{random_str1}" logger.info(f"--- 阶段一: 测试任务手动终止与删除 [{task_1}] ---") _create_and_submit_task(quant_page, task_1) # 1. 查日志 quant_page.open_and_close_logs(task_1) # 2. 停止 quant_page.stop_task(task_1) # 3. 删除 quant_page.delete_task(task_1) # ================= 阶段 2:完整成功链路 ================= random_str2 = ''.join(random.choices(string.ascii_uppercase + string.digits, k=8)) task_2 = f"AutoQuant_{random_str2}" logger.info(f"--- 阶段二: 测试任务完整成功链路 [{task_2}] ---") _create_and_submit_task(quant_page, task_2) # 1. 查日志 quant_page.open_and_close_logs(task_2) # 监控状态流转为终态 (完成或失败) quant_page.wait_for_task_finished(task_2) # + 成功后的新增操作: 报告查看与全量下载拦截 quant_page.open_and_close_report(task_2) quant_page.download_all_results(task_2) logger.info("✅ 量化工具全生命周期(异常截断+成功收尾) 双链路完整验证通过!")