*** Settings *** Resource ../RE0_Common/KeyWord.robot Resource ElementPath.robot Library DatabaseLibrary Library Selenium2Library Library DateTime Library String Library SSHLibrary *** Keywords *** 生成备份文件 [Arguments] ${ip} ${user} ${pwd} # Linux_ip地址|用户名|密码 Open Connection ${ip} SSHLibrary.Login ${user} ${pwd} log 新建备份所需文件 Execute Command service iptables stop Execute Command rm -rf /A.txt Execute Command touch /A.txt Execute Command chmod 755 /A.txt Execute Command date >> /A.txt Execute Command dd if=/dev/zero of=/B.dbf bs=1M count=500 Sleep 5s Execute Command mv /B.dbf /B.txt sleep 2s ${origin_file_md5} Execute Command md5sum /A.txt|cut -d" " -f1 Set Suite Variable ${origin_file_md5} Log 源文件MD5值:${origin_file_md5} Close Connection Log 源文件MD5值计算完毕 修改备份文件 [Arguments] ${ip} ${user} ${pwd} # Linux_ip地址|用户名|密码 Open Connection ${ip} SSHLibrary.Login ${user} ${pwd} log 修改备份所需文件 Execute Command service iptables stop Comment Execute Command rm -rf /A.txt Comment Execute Command touch /A.txt Comment Execute Command chmod 755 /A.txt Execute Command date >> /A.txt sleep 2s write [ -f /A.txt ] && echo yes || echo no ${add} read Should Contain ${add} yes ${origin_file_md5} Execute Command md5sum /A.txt|cut -d" " -f1 Set Suite Variable ${origin_file_md5} Log 源文件MD5值:${origin_file_md5} Close Connection Log 源文件MD5值计算完毕 FileCDM备份 [Arguments] ${HostName} ${bk_target} ${mds_name} # 代理名称、备份目标、介质名称 元素点击 ${CDM_dataProtect} 点击副本数据保护成功 定位副本数据保护定位失败 元素输入 ${Input_Oracle_SearchName} ${HostName} 定位搜索输入框失败 sleep 10s 元素点击 xpath=//span[text()="${HostName}"] 选择备份代理 定位备份代理失败 sleep 5s 元素点击 ${Add_Sqlserver_Policy} 点击添加策略按钮 定位策略添加按钮失败 元素点击 ${Module_FileCDM} 选择文件模块 定位文件模块失败 log 定义策略名规则 ${policy_head} Set Variable filecdm ${date} Get Current Date result_format=%Y%m%d%H%M%S ${random_strategyName}= Catenate SEPARATOR=_ ${policy_head} ${date} Set Global Variable ${random_strategyName} log 输入策略名 元素输入 ${Policy_Name} ${random_strategyName} 定位策略名输入框失败 元素点击 xpath=//span[contains(text(),"${bk_target}")]/../../td[2] 勾选需要备份的文件 定位需要备份的文件失败 元素点击 ${FileCDM_nextStep1} 点击下一步,进入文件选项 定位目标选项下一步失败 sleep 5s 元素点击 ${FileCDM_nextStep2} 点击下一步,进入备份集存储 定位目标数据库下一步失败 元素点击 ${Input_Choose_MDS} 选择手动指定MDS介质 定位手动选择MDS介质选项失败 Comment 元素点击 ${FileCDM_Select_MDS} 点击展开介质选项下拉框 定位介质下拉框失败 Comment 元素点击 xpath=//*[@id="dialogues_editCycleStorage_fileVal_CDM_checkObjDedup_select"]/option[text()="${mds_name}"] 点击选择指定介质 定位指定介质失败 元素点击 ${FileCDM_nextStep3} 点击下一步进入到备份高级选项页面 定位下一步按钮失败 sleep 5s 元素点击 ${FileCDM_nextStep4} 点击下一步进入任务周期 定位下一步失败 元素点击 ${AddTaskCycle} 添加任务周期成功 添加任务周期定位失败 元素点击 ${Cycle_Onetime} 添加仅一次立即备份 一次循环模式定位失败 元素点击 ${Cycle_Confirm} 添加任务周期 任务周期确定定位失败 sleep 3s 元素点击 ${FileCDM_LastDefine} 点击完成策略创建 定位策略完成失败 sleep 3s 元素点击 ${Delete_succeeded_OK} 策略添加完成 备份策略完成定位失败 log 开始备份 Sleep 30s 元素点击 ${MysqlCDM_tabbackup} 进入备份集栏 定位备份集选项失败 Log 输入策略名进行搜索 元素输入 ${MysqlCDM_BKtab} ${random_strategyName} 定位策略名称输入框失败 FOR ${n} IN RANGE 10 Click Element ${MysqlCDM_BKsearch} Sleep 30s ${bk_status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//div[text()="${random_strategyName}"]/../../td[12]/div[text()="已完成"] Run Keyword If "${bk_status}"=="True" Exit For Loop ... ELSE Log 备份未完成 Sleep 60s END Run Keyword If ${bk_status}==False Fail ... ELSE Log 备份成功 Sleep 5s FileCDM恢复 元素点击 ${MysqlCDM_tabbackup} 点击进入副本数据页面 定位副本数据页面失败 Sleep 5s 元素点击 xpath=//tr[@data-index="0"]//*[@id="backupAction_${random_strategyName}"] 点击展开操作 定位备份集操作按钮下拉框失败 元素点击 ${CDM_BK_Recover} 点击恢复操作 定位恢复按钮失败 Sleep 5s 元素点击 ${FileCDM_Recnextstep1} 点击下一步进入恢复目标 定位下一步按钮失败 Sleep 5s 元素点击 ${FileCDM_RecAdress} 选择恢复到原路径 定位恢复到原路径失败 元素点击 ${FileCDM_Recnextstep2} 点击下一步进入恢复文件选项 定位下一步按钮失败 元素点击 ${FileCDM_Recnextstep3} 点击下一步进入恢复高级选项 定位下一步按钮失败 元素点击 ${FileCDM_Recfinish} 点击执行恢复 定位执行按钮失败 元素点击 ${confirm_restore} 点击二次确定进行恢复 定位二次确定按钮失败 Sleep 5s 元素点击 ${Delete_succeeded_OK} 点击确定 定位确定按钮失败 元素点击 ${Normal_Tab_Work} 切换到作业一栏 定位作业一栏失败 Sleep 30s FOR ${n} IN RANGE 10 Click Element ${Mysql_refresh} ${work_status} Run Keyword And Return Status Wait Until Element Is Visible ${Recover_Status} Run Keyword If ${work_status}==False Log 恢复未完成 ... ELSE Exit For Loop Sleep 60s END Run Keyword If ${work_status}==False Fail ... ELSE Log 恢复成功 sleep 2s FileCDM挂载 元素点击 ${MysqlCDM_tabbackup} 点击进入副本数据页面 定位副本数据页面失败 Sleep 5s 元素点击 xpath=//tr[@data-index="0"]//*[@id="backupAction_${random_strategyName}"] 点击展开操作 定位备份集操作按钮下拉框失败 元素点击 ${Oracle_Backups_Mount} 点击快速挂载 定位快速挂载按钮失败 sleep 5s 元素点击 ${FileCDM_MountSetp1} 点击下一步,进入高级选项界面 定位下一步按钮失败 元素点击 ${FileCDM_MountFin} 点击确定挂载 定位确定按钮失败 sleep 3s 元素点击 ${Button_Confirm_Del} 点击二次确认挂载 定位确认按钮失败 元素点击 ${Delete_succeeded_OK} 点击确定,策略下发成功 定位确定按钮失败 Sleep 5s 元素点击 ${Normal_Tab_Work} 切换到作业一栏 定位作业一栏失败 Sleep 30s FOR ${n} IN RANGE 10 Click Element ${Mysql_refresh} ${work_status} Run Keyword And Return Status Wait Until Element Is Visible ${Recover_Status} Run Keyword If ${work_status}==False Log 挂载未完成 ... ELSE Exit For Loop Sleep 60s END Run Keyword If ${work_status}==False Fail ... ELSE Log 挂载成功 sleep 30s Comment 挂载校验 ${user} ${pwd} sleep 5s Log 挂载数据校验完成,开始卸载 元素点击 ${Mysql_application} 点击进入副本应用界面 定位副本应用界面失败 元素点击 ${Mysql_unmount} 点击卸载 定位卸载按钮失败 sleep 3s 元素点击 ${FileCDM_UmountOK} 卸载确定 定位卸载确定按钮失败 sleep 3s 元素点击 ${Delete_succeeded_OK} 卸载策略下发成功 定位卸载下发成功确定按钮失败 元素点击 ${Normal_Tab_Work} 切换到作业一栏 定位作业一栏失败 FOR ${n} IN RANGE 10 Click Element ${Mysql_refresh} ${work_status} Run Keyword And Return Status Wait Until Element Is Visible ${Recover_Status} Run Keyword If ${work_status}==False Log 卸载未完成 ... ELSE Exit For Loop Sleep 30s END Run Keyword If ${work_status}==False Fail ... ELSE Log 卸载成功 sleep 5s 立即执行 元素点击 ${MysqlCDM_tappolicy} 切换到保护策略页面 定位保护策略失败 元素点击 ${Run_Now} 点击立即执行 定位立即执行失败 元素点击 ${FileCDM_selectedtype} 选择备份类型 定位备份类型失败 元素点击 ${FileCDM_bktype} 选择永久增量备份 定位永久增量备份失败 元素点击 ${Confirm_Exec} 点击确定 定位确定按钮失败 元素点击 ${Delete_succeeded_OK} 点击策略下发完成确认 定位策略下发完成确认按钮失败 元素点击 ${Select_JobHtml} 点击作业按钮 定位作业界面失败 log 开始永久增量备份 FOR ${n} IN RANGE 6 ${bkstatus} Run Keyword AND Return Status Wait Until Element Is Visible ${Recover_Status} Run Keyword If "${bkstatus}"=="True" Exit For Loop ... ELSE Log 备份未完成 Sleep 60s END Run Keyword If ${bkstatus}==False Fail ... ELSE Log 备份成功 校验文件 [Arguments] ${ip} ${user} ${pwd} # Linux_ip地址|用户名|密码 Open Connection ${ip} SSHLibrary.Login ${user} ${pwd} Log 连接成功 ${recovered_file_md5} Execute Command md5sum /A.txt|cut -d" " -f1 Close Connection Log origin_file_md5=${origin_file_md5} Run Keyword If "${recovered_file_md5}"=="${origin_file_md5}" Log 文件恢复成功,MD5值一致 ... ELSE Fail 文件恢复失败,MD5值不一致