*** Settings *** Library Selenium2Library Resource ElementPath.robot Resource ../RE0_Common/KeyWord.robot *** Keywords *** 创建实时同步任务 [Arguments] ${agent_name} ${Tun_enc} ${Tun_com} ${Tun_dup} # cdp代理名称|管道加密框|管道压缩框|管道重删框 Unselect Frame 元素点击 ${Sync} 点击进入异地灾备页面 定位异地灾备按钮失败 Sleep 5s 元素点击 ${Sync_Tunnel} 选择同步管道 定位同步管道失败 Mouse Out ${Sync_Tunnel} Sleep 2s 循环点击 ${Add_Sync_Task} ${Task_CDP} Sleep 2s 元素点击 ${Task_CDP} 选择创建实时数据同步任务 定位实时数据保护按钮失败 元素点击 xpath=//span[text()="${agent_name}"]/../..//td[2] 选择需要同步的cdp代理 定位cdp代理失败 元素点击 ${Add_Sync_Source} 点击添加数据源 定位添加数据源失败 ${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time ${Sync_Name}= Catenate SEPARATOR=_ CDP同步 ${date} Set Suite Variable ${Sync_Name} Log 设置同步任务名称为全局变量 元素输入 ${Sync_Policy_Name} ${Sync_Name} 定位远程同步任务名称输入框失败 元素点击 ${SyncPolicy_NextStep} 点击下一步进入同步选项 定位下一步按钮失败 元素点击 ${Manual_MDS} 选择手动指定介质 定位手动指定介质失败 Run Keyword If ${Tun_enc}==1 Click Element ${Sync_Tun_Encryption} ... ELSE Log 不勾选管道加密 Sleep 1s Run Keyword If ${Tun_com}==1 Click Element ${Sync_Tun_Compress} ... ELSE Log 不勾选管道压缩 Sleep 1s Run Keyword If ${Tun_dup}==1 Click Element ${Sync_Tun_Dedup} ... ELSE Log 不勾选管道重删 Sleep 1s 循环点击 ${Complete_Create_SyncTask} ${Success_Confirm} 元素点击 ${Success_Confirm} 同步任务创建成功 同步任务创建失败 元素点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="启动"] 开启同步任务 定位启动任务按钮失败 Sleep 120s 元素点击 ${Success_Confirm} 确认任务创建成功 定位任务创建成功失败 Sleep 5s FOR ${n} IN RANGE 100 元素点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="详情"] 打开同步任务详情 定位详情失败 ${sync_snapshot_1}= Get Text ${Snap_Num1} ${sync_snapshot_2}= Get Text ${Snap_Num2} ${Sync_Status}= Set Variable If ${sync_snapshot_1}==${sync_snapshot_2} True False 元素点击 ${Sync_Task_More} 关闭详情弹窗 定位详情弹窗关闭按钮失败 Run Keyword If "${Sync_Status}"=="True" Exit For Loop ... ELSE Log 同步任务未完成 Sleep 50s END 循环点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="详情"] xpath=//td[contains(text(),"B/")] ${Sync_Status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//div[contains(text(),"B/0B")] Run Keyword If "${Sync_Status}"=="False" Fail 同步失败 ... ELSE Log 同步成功 元素点击 ${Sync_Task_More} 关闭详情弹窗 定位详情弹窗关闭按钮失败 创建定时同步任务 [Arguments] ${agent_name} ${Tun_enc} ${Tun_com} ${encrption} ${compress} ${dedup} # 代理名称|管道加密|管道压缩|加密|压缩|重删 元素点击 ${Remote_Sync} 点击进入异地灾备页面 定位异地灾备按钮失败 元素点击 ${Sync_Tunnel} 选择同步管道 定位同步管道失败 Mouse Out ${Sync_Tunnel} ${Sync_Info} Run Keyword And Return Status Wait Until Element Is Visible ${DPM_Sync_Status} Run Keyword If ${Sync_Info}==True 删除定时同步任务 ... ELSE Log 不存在副本同步任务 元素点击 ${Add_Sync_Task} 点击添加同步任务 定位添加任务失败 元素点击 ${Task_DPM} 点击创建定时同步任务 定位远程同步定时数据保护任务 元素点击 xpath=//span[text()="${agent_name}"]/../../td[1] 点击展开代理任务 定位代理任务展开失败 元素点击 xpath=//span[text()="${random_strategyName}"]/../../td[2] 点击选择备份任务 定位任务失败 元素点击 ${Add_Sync_Source} 点击添加数据源 定位添加数据源失败 ${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time ${Sync_Name}= Catenate SEPARATOR=_ DPM同步 ${date} Set Suite Variable ${Sync_Name} 元素输入 ${Sync_Policy_Name} ${Sync_Name} 定位远程同步任务名称输入框失败 元素点击 ${SyncPolicy_NextStep} 点击下一步进入同步选项 定位下一步按钮失败 元素点击 ${Manual_MDS} 选择手动指定介质 定位手动指定介质失败 Run Keyword If ${encrption}==1 同步新设置 ${Y} ${N} Sleep 1s Run Keyword If ${compress}==1 同步新设置 ${N} ${Y} Sleep 1s Run Keyword If ${dedup}==1 Click Element ${Sync_Dep} ... ELSE Log 不勾选管道重删 Sleep 1s 循环点击 ${Complete_Create_SyncTask} ${Success_Confirm} 元素点击 ${Success_Confirm} 同步任务创建成功 同步任务创建失败 循环点击 xpath=//td[text()="${Sync_Name}"]/../..//span[text()="启动"] ${Success_Confirm} Sleep 30s 元素点击 ${Success_Confirm} 点击确定完成任务创建 任务启动失败 Sleep 150s 创建副本同步任务 [Arguments] ${agent_name} ${Tun_enc} ${Tun_com} ${Tun_dup} # 代理名称|管道加密|管道压缩|管道重删 [Documentation] 功能:创建副本同步任务 ... ... 使用方法:创建副本同步任务 \ 代理名 \ 管道加密 \ 管道压缩 \ 管道重删 ... ... 变量:${agnet_name} \ \ ${Tun_enc} \ \ ${Tun_com} \ \ $${Tun_dup} ... ${Y}表示勾选 ... ${N}表示不勾选 元素点击 ${Remote_Sync} 点击进入异地灾备页面 定位异地灾备按钮失败 Mouse Out ${Remote_Sync} Sleep 5s 元素点击 ${Sync_Tunnel} 选择同步管道 定位同步管道失败 Mouse Out ${Sync_Tunnel} Sleep 2s ${Sync_Info} Run Keyword And Return Status Wait Until Element Is Visible ${CDM_Sync_Status} Run Keyword If ${Sync_Info}==True 删除副本同步任务 ... ELSE Log 不存在副本同步任务 循环点击 ${Add_Sync_Task} ${Task_CDM} Sleep 2s 元素点击 ${Task_CDM} 点击创建定时同步任务 定位远程同步定时数据保护任务 ${Tunnel_name_status} Run Keyword And Return Status Wait Until Element Is Visible ${Inverse_Sync_Task_List} Log 判断反向同步管道名称是否存在,以此判断是否为反向同步任务 Run Keyword If ${Tunnel_name_status} Click Element ${Inverse_Sync_Task_List} ... ELSE Log 此任务为正向同步任务 元素点击 xpath=//span[text()="${agent_name}"]/../../td[1] 点击展开代理任务 定位代理任务展开失败 元素点击 xpath=//span[text()="${random_strategyName}"]/../../td[2] 点击选择备份任务 定位任务失败 元素点击 ${Add_Sync_Source} 点击添加数据源 定位添加数据源失败 Sleep 2s ${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time ${Sync_Name}= Catenate SEPARATOR=_ CDM同步 ${date} Set Suite Variable ${Sync_Name} 元素输入 ${Sync_Policy_Name} ${Sync_Name} 定位远程同步任务名称输入框失败 元素点击 ${SyncPolicy_NextStep} 点击下一步进入同步选项 定位下一步按钮失败 元素点击 ${Manual_MDS} 选择手动指定介质 定位手动指定介质失败 Run Keyword If ${Tun_enc}==1 Click Element ${Sync_Tun_Encryption} ... ELSE Log 不勾选管道加密 Sleep 1s Run Keyword If ${Tun_com}==1 Click Element ${Sync_Tun_Compress} ... ELSE Log 不勾选管道压缩 Sleep 1s Run Keyword If ${Tun_dup}==1 Click Element ${Sync_Tun_Dedup} ... ELSE Log 不勾选管道重删 Sleep 1s 循环点击 ${Complete_Create_SyncTask} ${Success_Confirm} 元素点击 ${Success_Confirm} 同步任务创建成功 同步任务创建失败 Sleep 2s 元素点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="启动"] 开启CDM同步任务 定位启动任务按钮失败 Sleep 45s 元素点击 ${Success_Confirm} 点击确定完成任务创建 任务启动失败 Sleep 120s Log 等待同步任务执行完毕 删除定时同步任务 元素点击 ${Remote_Sync} 点击进入异地灾备页面 定位异地灾备按钮失败 元素点击 ${Sync_Tunnel} 选择同步管道 定位同步管道失败 元素点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="停止"] 点击停止同步任务 定位同步任务停止失败 Sleep 5s 元素点击 ${Success_Confirm} 点击确认任务停止成功 定位确认弹窗失败 元素点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="删除"] 点击删除同步任务 定位同步任务删除失败 元素点击 ${DelTask_Confirm} 点击确定删除同步任务按钮 定位确定按钮失败 Sleep 5s 元素点击 ${Success_Confirm} 确认任务删除成功 定位任务删除确认按钮失败 删除副本同步任务 元素点击 ${Remote_Sync} 点击进入异地灾备页面 定位异地灾备按钮失败 元素点击 ${Sync_Tunnel} 选择同步管道 定位同步管道失败 元素点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="停止"] 点击停止同步任务 定位同步任务停止失败 Sleep 20s 元素点击 ${Success_Confirm} 点击确认任务停止成功 定位确认弹窗失败 元素点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="删除"] 点击删除同步任务 定位同步任务删除失败 元素点击 ${DelTask_Confirm} 点击确定删除同步任务按钮 定位确定按钮失败 Sleep 5s 元素点击 ${Success_Confirm} 确认任务删除成功 定位任务删除确认按钮失败 创建同步管道 [Arguments] ${sou_ip} ${des_ip} ${name} ${pwd} # 源端IP|目标端IP|目标端用户名|目标端密码 Sleep 2s 元素点击 ${Sync} 点击进入异地灾备页面 定位异地灾备按钮失败 元素点击 ${Tunnel_Manage} 点击管道管理 定位管道管理失败 元素点击 ${Create_Tunnel} 点击新建同步管道 定位新建同步管道失败 元素输入 ${Sou_Name} sou 定位管道名称(源端)失败 元素输入 ${Des_Name} des 定位管道名称(目标端)失败 元素输入 ${Sou_BC} ${sou_ip} 定位源端ip输入框失败 元素输入 ${Des_BC} ${des_ip} 定位目标端ip输入框失败 元素输入 ${Login_Name} ${name} 定位目标端用户名输入框失败 元素输入 ${Login_Pwd} ${pwd} 定位目标端密码输入框失败 元素点击 ${Confirm_Create_Tunnel} 确认创建管道 定位确认按钮失败 Sleep 10s 元素点击 ${Success_Confirm} 同步管道创建成功 定位同步管道创建成功确定按钮失败 Sleep 2s 清除MDS日志 [Arguments] ${bc_ip} # 黑方ip地址 Open Connection ${bc_ip} SSHLibrary.Login root 2008Bc1223!@# Log 黑方连接成功 Write rm -rf /var/log/mds/*.log Execute Command /unary/unabackup/bin/stop_mds.sh Execute Command /unary/unabackup/bin/start_mds.sh Log MDS重启完毕 Close Connection MDS日志校验 [Arguments] ${bc_ip} ${Tun_enc} ${Tun_com} ${Tun_dup} # 源端黑方IP|管道加密|管道压缩|管道重删 Open Connection ${bc_ip} SSHLibrary.Login root 2008Bc1223!@# Log 黑方连接成功 ${log_name}= Execute Command ls /var/log/mds/mdsclient_tranfer* ${check_enc}= Execute Command grep -c "encrypt_sign: 3" ${log_name} ${check_com}= Execute Command grep -c "compress_sign: 1" ${log_name} ${check_dup}= Execute Command grep -c "m_dedup_sign: 1" ${log_name} Run Keyword If ${Tun_enc}==1 and ${check_enc}!=0 Log 管道加密验证成功 ... ELSE IF ${Tun_enc}==1 and ${check_enc}==0 Fail 管道加密验证失败 ... ELSE IF ${Tun_enc}==0 Log 不校验管道加密 Run Keyword If ${Tun_com}==1 and ${check_com}!=0 Log 管道压缩验证成功 ... ELSE IF ${Tun_com}==1 and ${check_com}==0 Fail 管道压缩验证失败 ... ELSE IF ${Tun_com}==0 Log 不校验管道压缩 Run Keyword If ${Tun_dup}==1 and ${check_dup}!=0 Log 管道重删验证成功 ... ELSE IF ${Tun_dup}==1 and ${check_dup}==0 Fail 管道重删验证失败 ... ELSE IF ${Tun_dup}==0 Log 不校验管道重删 Close Connection 删除实时同步任务 元素点击 ${Sync} 点击进入异地灾备页面 定位异地灾备按钮失败 元素点击 ${Sync_Tunnel} 选择同步管道 定位同步管道失败 Mouse Out ${Sync_Tunnel} 元素点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="停止"] 点击停止同步任务 定位同步任务停止失败 sleep 20s 元素点击 ${Success_Confirm} 点击确认任务停止成功 定位确认弹窗失败 元素点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="删除"] 点击删除同步任务 定位同步任务删除失败 元素点击 ${DelTask_Confirm} 点击确定删除同步任务按钮 定位确定按钮失败 sleep 10s 元素点击 ${Success_Confirm} 确认任务删除成功 定位任务删除确认按钮失败 删除目标端磁盘 元素点击 xpath=//span[@id="unaryhost.unarydomain"] 点击集成代理 定位集成代理失败 元素点击 ${Umount_Disk} 点击卸载磁盘 定位卸载磁盘按钮失败 元素点击 ${Button_umount_confirm} 点击确定卸载按钮 定位确定卸载弹窗失败 Sleep 10s 元素点击 ${Umount_Success} 卸载快照成功 定位卸载成功弹窗失败 循环点击 xpath=//span[contains(text(),"来自")]/../../..//span[@id="linux-sync"] ${Snapshot_Manage} 元素点击 ${Snapshot_Manage} 点击进入快照管理页面 定位快照管理页面失败 Sleep 2s 元素点击 ${First_Snapshot} 点击选择指定快照 定位快照失败 元素点击 ${Del_SnapShot} 点击删除快照按钮 定位删除快照按钮失败 循环点击 ${Del_SnapShot_Confirm} ${Del_Success} 元素点击 ${Del_Snapshot_Success} 快照删除成功 定位快照删除成功确定按钮失败 Log 快照删除成功 删除同步代理 [Arguments] ${agent_name} # 同步代理名称 Right Click Element ${agent_name} Wait Until Element Is Visible ${Del_Sync_Agent} 元素点击 ${Del_Sync_Agent} 点击删除离线同步代理 定位离线代理删除按钮失败 Sleep 5s 元素点击 ${Del_Agent_Confirm} 点击确定删除代理 定位确定删除按钮失败 同步新设置 [Arguments] ${encryption} ${compress} # 加密|压缩 元素点击 ${Sync_New_Set} 点击勾选同步新设置 定位新设置选项失败 Run Keyword If ${encryption}==1 Click Element ${Sync_enc} ... ELSE Log 不勾选加密 Sleep 1s Run Keyword If ${compress}==1 Click Element ${Sync_com} ... ELSE Log 不勾选压缩 Sleep 1s 卸载目标端磁盘 元素点击 ${Page_Monut} 进入挂载点页面 进入挂载点页面失败 元素点击 ${Mount_Del} 点击卸载按钮 定位卸载按钮失败 元素点击 ${Mount_Del_Ensure} 点击确认卸载按钮 定位确认卸载按钮失败 sleep 10s 元素点击 ${Mount_Del_Confirm} 点击卸载成功确定按钮 定位卸载成功确定按钮失败 创建定时同步任务_限速 [Arguments] ${agent_name} ${sync_speed} # 代理名称|同步速度 元素点击 ${Remote_Sync} 点击进入异地复制页面 定位异地复制按钮失败 元素点击 ${Sync_Tunnel} 选择同步管道 定位同步管道失败 Mouse Out ${Sync_Tunnel} ${Sync_Info} Run Keyword And Return Status Wait Until Element Is Visible ${DPM_Sync_Status} Run Keyword If ${Sync_Info}==True 删除定时同步任务 ... ELSE Log 不存在副本同步任务 元素点击 ${Add_Sync_Task} 点击添加同步任务 定位添加任务失败 元素点击 ${Task_DPM} 点击创建定时同步任务 定位远程同步定时数据保护任务 元素点击 xpath=//span[text()="${agent_name}"]/../../td[1] 点击展开代理任务 定位代理任务展开失败 元素点击 xpath=//span[text()="${random_strategyName}"]/../../td[2] 点击选择备份任务 定位任务失败 元素点击 ${Add_Sync_Source} 点击添加数据源 定位添加数据源失败 ${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time ${Sync_Name}= Catenate SEPARATOR=_ DPM同步 ${date} Set Suite Variable ${Sync_Name} 元素输入 ${Sync_Policy_Name} ${Sync_Name} 定位远程同步任务名称输入框失败 元素点击 ${SyncPolicy_NextStep} 点击下一步进入同步选项 定位下一步按钮失败 元素点击 ${Choose_SyncSpeed} 勾选限速 定位限速选项失败 元素输入 ${Input_SyncSpeed} ${sync_speed} 定位限速输入框失败 元素点击 ${Manual_MDS} 选择手动指定介质 定位手动指定介质失败 循环点击 ${Complete_Create_SyncTask} ${Success_Confirm} 元素点击 ${Success_Confirm} 同步任务创建成功 同步任务创建失败 元素点击 xpath=//td[text()="${Sync_Name}"]/../..//span[text()="启动"] 开启DPM同步任务 定位启动任务按钮失败 Sleep 30s 元素点击 ${Success_Confirm} 点击确定完成任务创建 任务启动失败 创建副本同步任务_限速 [Arguments] ${agent_name} ${sync_speed} # 代理名称|同步传输速度 [Documentation] 功能:创建副本同步任务 ... ... 使用方法:创建副本同步任务 \ 代理名 \ 管道加密 \ 管道压缩 \ 管道重删 ... ... 变量:${agnet_name} \ \ ${Tun_enc} \ \ ${Tun_com} \ \ $${Tun_dup} ... ${Y}表示勾选 ... ${N}表示不勾选 元素点击 ${Remote_Sync} 点击进入异地灾备页面 定位异地灾备按钮失败 Mouse Out ${Remote_Sync} Sleep 5s 元素点击 ${Sync_Tunnel} 选择同步管道 定位同步管道失败 Mouse Out ${Sync_Tunnel} Sleep 2s ${Sync_Info} Run Keyword And Return Status Wait Until Element Is Visible ${CDM_Sync_Status} Run Keyword If ${Sync_Info}==True 删除副本同步任务 ... ELSE Log 不存在副本同步任务 循环点击 ${Add_Sync_Task} ${Task_CDM} Sleep 2s 元素点击 ${Task_CDM} 点击创建副本同步任务 定位远程同步副本数据保护任务 ${Tunnel_name_status} Run Keyword And Return Status Wait Until Element Is Visible ${Inverse_Sync_Task_List} Log 判断反向同步管道名称是否存在,以此判断是否为反向同步任务 Run Keyword If ${Tunnel_name_status} Click Element ${Inverse_Sync_Task_List} ... ELSE Log 此任务为正向同步任务 元素点击 xpath=//span[text()="${agent_name}"]/../../td[1] 点击展开代理任务 定位代理任务展开失败 元素点击 xpath=//span[text()="${random_strategyName}"]/../../td[2] 点击选择备份任务 定位任务失败 元素点击 ${Add_Sync_Source} 点击添加数据源 定位添加数据源失败 Sleep 2s ${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time ${Sync_Name}= Catenate SEPARATOR=_ CDM同步 ${date} Set Suite Variable ${Sync_Name} 元素输入 ${Sync_Policy_Name} ${Sync_Name} 定位远程同步任务名称输入框失败 元素点击 ${SyncPolicy_NextStep} 点击下一步进入同步选项 定位下一步按钮失败 元素点击 ${Choose_SyncSpeed} 勾选限速 定位限速选项失败 元素输入 ${Input_SyncSpeed} ${sync_speed} 定位限速输入框失败 元素点击 ${Manual_MDS} 选择手动指定介质 定位手动指定介质失败 循环点击 ${Complete_Create_SyncTask} ${Success_Confirm} 元素点击 ${Success_Confirm} 同步任务创建成功 同步任务创建失败 Sleep 2s 元素点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="启动"] 开启CDM同步任务 定位启动任务按钮失败 Sleep 30s 元素点击 ${Success_Confirm} 点击确定完成任务创建 任务启动失败 创建实时同步任务_限速 [Arguments] ${agent_name} ${sync_speed} # cdp代理名称|同步限速 Unselect Frame 元素点击 ${Sync} 点击进入异地灾备页面 定位异地灾备按钮失败 Sleep 5s 元素点击 ${Sync_Tunnel} 选择同步管道 定位同步管道失败 Mouse Out ${Sync_Tunnel} Sleep 2s 循环点击 ${Add_Sync_Task} ${Task_CDP} Sleep 2s 元素点击 ${Task_CDP} 选择创建实时数据同步任务 定位实时数据保护按钮失败 元素点击 xpath=//span[text()="${agent_name}"]/../..//td[2] 选择需要同步的cdp代理 定位cdp代理失败 元素点击 ${Add_Sync_Source} 点击添加数据源 定位添加数据源失败 ${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time ${Sync_Name}= Catenate SEPARATOR=_ CDP同步 ${date} Set Suite Variable ${Sync_Name} Log 设置同步任务名称为全局变量 元素输入 ${Sync_Policy_Name} ${Sync_Name} 定位远程同步任务名称输入框失败 元素点击 ${SyncPolicy_NextStep} 点击下一步进入同步选项 定位下一步按钮失败 元素点击 ${Choose_SyncSpeed} 勾选限速 定位限速选项失败 元素输入 ${Input_SyncSpeed} ${sync_speed} 定位限速输入框失败 元素点击 ${Manual_MDS} 选择手动指定介质 定位手动指定介质失败 循环点击 ${Complete_Create_SyncTask} ${Success_Confirm} sleep 10s 元素点击 ${Success_Confirm} 同步任务创建成功 同步任务创建失败 元素点击 xpath=//td[text()="${Sync_Name}"]/..//span[text()="启动"] 开启同步任务 定位启动任务按钮失败 Sleep 40s 元素点击 ${Success_Confirm} 确认任务创建成功 定位任务创建成功失败 Sleep 20s