提交修改

This commit is contained in:
halliday 2023-12-18 17:34:25 +08:00
parent af3c753764
commit 4ac298ee04
5 changed files with 245 additions and 4 deletions

View File

@ -12,7 +12,7 @@ importlib.reload(sys)
#黑方配置项,需满足下列配置参数,或将下列参数改为实际黑方中的参数
CDM_BC_IP = '10.10.14.90' #黑方IP
CDM_BC_IP2 = '10.18.32.221' #第二台黑方IP
CDM_BC_NEWIP = '10.18.32.221' #新黑方IP
CDM_BC_NEWIP = '10.10.13.197' #新黑方IP
CDM_BC_Url = 'https://'+CDM_BC_IP #黑方服务器访问URL
CDM_BC_Url2 = 'https://'+CDM_BC_IP2 #第二台黑方服务器访问URL
CDM_BC_NEWUrl = 'https://'+CDM_BC_NEWIP #新黑方服务器访问URL
@ -143,6 +143,14 @@ SQLserver_CheckType = 'SQLserver' #SQLserver身份验证类型
SQLserverCDM_HostUser='administrator'
SQLserverCDM_HostPWD='unary@2008'
# SQLSERVER备份与恢复_MH任务4
CDM_MSSql_HostName_Mh = 'SqlserverCDM'
CDM_MSSql_IP_Local_Mh = '10.10.13.249' #SQLSERVER的地址
CDM_MSSql_TableName_Mh = 'TABLE_TEST' #表名称
CDM_MSSql_DB_Mh = 'UNARY' #库名
SQLserver_CheckType_Mh = 'windows' #windows身份验证类型
recTargetPath='C:\\data'
#SQLSERVER——CDM兼容性环境win2003-SQLServer2000SP4-32bit
CDM_MSSql_HostName_Win2003 = 'sqltest2'
CDM_MSSql_DB_User_Win2003 = 'sa'

View File

@ -2,15 +2,15 @@
Library SSHLibrary
Library Selenium2Library
Resource ElementPath.robot
Library ../../Script/SC0_Common/00_Initial/Vsphere.py
#Library ../../Script/SC0_Common/00_Initial/Vsphere.py
Library DatabaseLibrary
Library AutoItLibrary
#Library AutoItLibrary
Library Process
*** Keywords ***
登录黑方
[Arguments] ${IPaddress} ${login_name} ${login_pwd} # 黑方服务器IP地址 \| 登录名称 \| 登录密码
Open Browser ${IPaddress} ff \ \ \ \ \ \ C:/Python38/geckodriver.exe
Open Browser ${IPaddress} ff
Sleep 2s
Set Window Size 1920 1080
Log 切换浏览器窗口 1920*1080

View File

@ -405,5 +405,19 @@ ${FileCDM_MountSetp1} xpath=//*[@id="dpm_file_addRecoveryPolicy_nextStep0_qu
${FileCDM_MountFin} xpath=//*[@id="dpm_file_addRecoveryPolicy_step2Implement_quickMode_btn"] #副本FileCDM--快速挂载--高级选项--确定
#${FileCDM_Confirm} #xpath=//*[@id="layui-layer21"]//a[text()="确认"] #副本FileCDM--快速挂载--高级选项--确定--确认挂载
${FileCDM_UmountOK} xpath=//*[@id="cdm_application_system_uninstall_btn_confirm"] #副本FileCDM--副本应用--卸载--确定
# mh作业4新增的
${Select_bk_SQLDB_UNARY} xpath=//span[contains(text(),"UNARY(")]/../../td[2] # 副本数据备份—目标数据库—test数据库勾选框
${Recover_Target_UNARY} xpath=//span[text()="UNARY"]/../../td[2] # 副本数据恢复—目标数据库—test数据库勾选框
${Button_baseFilter_CDM} id=dialogues_baseFilter_filterBtn_btn # 副本数据备份-新建备份策略-目标数据库-过滤设置按钮
${Button_baseFilter_baseFilterKe_CDM} id=dialogues_baseFilter_baseFilterKey_btn # 副本数据备份-新建备份策略-过滤设置-关键字过滤
${Input_baseFilter_keyFilterCon_CDM} id=keyFilterCon # 副本数据备份-新建备份策略-过滤设置-关键字输入框
${Button_baseFilter_keyFilterCon_add} xpath=//button[@id='dialogues_baseFilter_filterModalSure_btn'][text()="添加"] # 副本数据备份-新建备份策略-过滤设置-关键字过滤-添加
${Button_baseFilter_keyFilterCon_ok} xpath=//button[@id='dialogues_baseFilter_filterModalSure_btn'][text()="确定"] # 副本数据备份-新建备份策略-过滤设置-关键字过滤-确定
${input_policy_backTabPolicy} id=backTabPolicy # 副本数据恢复-备份集-查询策略名输入框
${Count_bk_num} $(".layui-table-body.layui-table-main").find("tr").length # 副本数据恢复-备份集-备份集数据量
${input_cdm_tab_work_PolicyName} id=workPolicyName # 黑方操作页面-作业-策略名输入框
${Button_cdm_tab_work_search} id=cdm_tab_work_workPolicyName_search_span # 黑方操作页面-副本数据管理-作业页面查询
${Jquery_select_count} $("#pcWorktable_cdm_outerDiv").find("tr").length # 黑方操作页面-作业详情页面-作业个数
${Jquery_task_status} $("#pcWorktable_cdm_outerDiv").find("td").eq(-2)[0].textContent # 黑方操作页面-作业详情页面-作业状态

View File

@ -7,6 +7,7 @@ Library DateTime
Library string
Resource ../RE3_DPM/ElementPath.robot
Resource ../RE12_Archive/ElementPath.robot
Variables ../../Config/CDM/CDM_config.py
*** Keywords ***
Sqlserver备份
@ -305,6 +306,121 @@ SQLServer_CDM停止挂载
元素点击 xpath=//a[@id="unnamed_module_layerCancel"] 点击确定按钮成功 点击确定按钮失败
Log 停止挂载成功
MSSQL_CDM备份
[Arguments] ${agent_name} ${SQLserver_CheckType} ${Pipeline_encryption} ${Pipeline_compression} ${Pipeline_dedup}
元素点击 ${CDM_dataProtect} 点击副本数据保护成功 定位副本数据保护定位失败
元素输入 ${Input_Oracle_SearchName} ${agent_name} 定位搜索输入框失败
sleep 10s
元素点击 xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
SQLserver_cdm策略清理
元素点击 ${Add_Sqlserver_Policy} 点击添加策略按钮 定位策略添加按钮失败
元素点击 ${Module_Sqlserver} 选择sqlserver数据模块 定位sqlserver模块失败
log 定义策略名规则
${policy_head} Set Variable 完全备份
${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} 定位策略名输入框失败
Run Keyword If "${SQLserver_CheckType}"=="windows" windows身份验证
... ELSE IF "${SQLserver_CheckType}"=="SQLserver" SQLserver身份验证
元素点击 ${Instance_Nextstep} 点击进入下一步目标数据库选择页面 定位下一步按钮失败
元素点击 ${Select_bk_SQLDB_test} 勾选指定数据库 定位指定数据库勾选框失败
元素点击 ${Select_bk_SQLDB_UNARY} 勾选指定数据库 定位指定数据库勾选框失败
元素点击 ${Button_baseFilter_CDM} 点击过滤设置 定位过滤设置失败
元素点击 ${Button_baseFilter_baseFilterKe_CDM} 点击文字过滤 定位文字过滤设置失败
元素输入 ${Input_baseFilter_keyFilterCon_CDM} test 定位关键字输入框失败
元素点击 ${Button_baseFilter_keyFilterCon_add} 点击添加关键字 定位添加按钮失败
元素点击 ${Button_baseFilter_keyFilterCon_ok} 点击确定确定添加关键字 定位添加按钮失败
元素点击 ${Select_DB_Nextstep} 点击下一步进入任务周期选择界面 定位下一步按钮失败
元素点击 ${AddTaskCycle} 点击添加任务周期 添加任务周期定位失败
元素点击 ${Cycle_Onetime} 选择仅备份一次 定位一次循环模式定位失败
元素点击 ${Cycle_Confirm} 点击确认完成任务周期设置 任务周期确定定位失败
元素点击 ${Cycle_Nextstep} 点击下一步进入备份集存储页面 任务周期下一步定位失败
Comment Run Keyword If ${Pipeline_dedup}==1 管道重删
... ELSE log 不重删
元素点击 ${Storage_Nextstep} 点击下一步进入到备份高级选项页面 定位下一步按钮失败
Run Keyword If ${Pipeline_encryption}==1 管道加密
... ELSE log 不加密
Run Keyword If ${Pipeline_compression}==1 管道压缩
... ELSE log 不压缩
Run Keyword If ${Pipeline_dedup}==1 管道重删
... ELSE log 不重删
Comment Run Keyword If ${check_attr}==1 校验
Comment Run Keyword If ${cache}==1 备份缓存 /opt
Comment 元素点击 ${Senior_Nextstep} 点击下一步进入到信息确认 定位下一步按钮失败
元素点击 ${SQLServer_PolicyComplete} 点击完成策略创建 定位策略完成失败
Sleep 2s
元素点击 ${Success_Confirm} 策略确定创建完毕 定位策略创建成功弹窗失败
MSSQL作业校验 ${random_strategyName}
Log 备份作业执行成功
MSSQL作业校验
[Arguments] ${workname}
# 切换到作业
元素点击 ${Normal_Tab_Work} 点击切换到作业栏 定位作业栏失败
# 输入策略查询
元素输入 ${input_cdm_tab_work_PolicyName} ${workname} 定位关键字输入框失败
元素点击 ${Button_cdm_tab_work_search} 点击查询按钮 定位查询按钮失败
# 确认创建成功了
FOR ${counter} IN RANGE 20
Log ${counter}
${select_text}= Execute Javascript return ${Jquery_select_count}
Log 查询到的作业个数:${select_text}
Run Keyword If '${select_text}' >= '2' Exit For Loop
... ELSE Log 作业尚未创建
Sleep 2s
元素点击 ${Button_cdm_tab_work_search} 点击查询按钮 定位查询按钮失败
END
Log 作业创建成功,正在运行中
# 等待运行完成
FOR ${index} IN RANGE 300
Log 第${index}次查询作业状态
${task_run}= Execute Javascript return ${Jquery_task_status}
Log 作业状态:${task_run}
Run Keyword If '${task_run}' == '成功' or '${task_run}' == '失败' Exit For Loop
... ELSE Log 任务尚未执行完成
Sleep 2s
元素点击 ${Button_cdm_tab_work_search} 点击查询按钮 定位查询按钮失败
END
# 最后再判断一下确保是成功的
Should Be Equal As Strings ${task_run} 成功 任务运行失败
Log 作业策略执行成功
MSSQL_CDM恢复
元素点击 ${Backup_html} 点击进入备份集恢复界面 定位副本数据按钮失败
sleep 5s
# 校验上一步备份产生的结果
元素输入 ${input_policy_backTabPolicy} ${random_strategyName} 定位查询备份策略输入框失败
元素点击 ${Cycle_Search_PolicyName} 点击查询按钮 定位查询按钮失败
# 获取查询到的数量
${select_count}= Execute Javascript return ${Count_bk_num}
Run Keyword If '${select_count}' != '1' Fail 产生的备份集数量不对
... ELSE Log 备份结果正确
#进行恢复
元素点击 xpath=//tr[@data-index=0]//button[@id="backupAction_${random_strategyName}"] 点击展开操作 定位备份集操作按钮下拉框失败
sleep 5s
元素点击 ${CDM_BK_Recover} 点击恢复操作 定位恢复按钮失败
sleep 5s
元素点击 ${Recover_Nextstep_SQLServer} 点击下一步进入实例选择界面 定位下一步按钮失败
元素点击 ${Recover_Instance_Select_Nextstep} 点击下一步进入目标数据库选择界面 定位下一步按钮失败
元素点击 ${Recover_Target_UNARY} 点击勾选恢复的数据库 定位需要恢复的数据库失败
元素点击 ${Select_DB_Nextstep1} 点击下一步进入高级选项 定位下一步按钮失败
元素点击 ${Origin_Name_Recover} 点击勾选原名恢复 定位异名恢复按钮失败
元素输入 ${Recover_xpath} ${recTargetPath} 定位恢复指定路径输入框失败
Comment 元素点击 xpath=//button[@id="cdm_sqlServer_addRecoveryPolicy_backStep45_btn"] 点击下一步进入确认恢复页面 点击下一步按钮失败
元素点击 ${SQLServer_BackupComplete} 点击完成按钮完成恢复策略创建 定位完成按钮失败
元素点击 ${Btn_Second_Define} 点击确认执行执行恢复 定位确认失败
元素点击 ${Success_Confirm} 确认恢复策略创建完成 定位恢复确认弹窗失败
# 恢复作业的作业名是根据时间来的,这里生成一下
${Date}= Get Current Date result_format=%Y-%m-%d %H:%M
${recoveryname}= Catenate SEPARATOR= 恢复策略 ${Date[:-1]}
Log 恢复作业的名称是:${recoveryname}
MSSQL作业校验 ${recoveryname}
Log 恢复作业执行成功
执行SQL建表
[Arguments] ${tablename} ${hostip} ${CDMSQL_PWD} ${CDMSQL_DB_User} ${CDMMSSql_DB}
执行SQL删表 ${tablename} ${hostip} ${CDMSQL_PWD}
@ -330,6 +446,64 @@ SQLServer_CDM停止挂载
Disconnect From Database
Log 断开数据库连接
MSSQL建库
[Arguments] ${databasename} ${hostip} ${SQLServer_passwd}
MSSQL删库 ${databasename} ${hostip} ${SQLServer_passwd}
log 连接数据库
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',autocommit=${True}
log 创建UNARYK库
Execute Sql String create database ${databasename}
Disconnect From Database
Log 断开数据库连接
MSSQL删库
[Arguments] ${databasename} ${hostip} ${SQLServer_passwd}
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',database='master',autocommit=${True}
${row_count} Row Count SELECT \ * FROM master.dbo.sysdatabases where name='${databasename}'
Run Keyword IF ${row_count}>0 Execute Sql String DROP DATABASE ${databasename}
Disconnect From Database
Log 断开数据库连接
MSSQL建表并插入当前时间点
[Arguments] ${tablename} ${hostip} ${CDMSQL_PWD} ${CDMSQL_DB_User} ${CDMMSSql_DB}
log 连接数据库
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDMSQL_DB_User}',password='${CDMSQL_PWD}',database='${CDMMSSql_DB}'
log 创建数据表
Execute Sql String create table ${tablename}(test char(50))
log 插入数据
${Date}= Get Current Date result_format=%Y%m%d%H%M%S
Log 插入:${Date}
Execute Sql String insert into ${tablename}(test) values('${Date}')
${out}= Row Count select * from ${tablename}
Set Suite Variable ${out}
log ${out}
Disconnect From Database
Log 断开数据库连接
MSSQL删除表
[Arguments] ${tablename} ${hostip} ${SQLServer_passwd} ${CDMMSSql_DB}
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',database='${CDMMSSql_DB}'
${row_count} Row Count SELECT \ * FROM ${CDMMSSql_DB}.dbo.sysObjects WHERE name='${tablename} '
Run Keyword IF ${row_count}>0 Execute Sql String drop table ${tablename}
Disconnect From Database
Log 断开数据库连接
MSSQL校验
[Arguments] ${tablename} ${hostip} ${SQLServer_passwd} ${CDM_MSSql_DB}
log 连接数据库
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',database='${CDM_MSSql_DB}'
log 获取函数
${row_count} Row Count SELECT \ * FROM ${CDMMSSql_DB}.dbo.sysObjects WHERE name='${tablename} '
Run Keyword IF ${row_count} == None Return From Keyword ${False}
Run Keyword IF ${row_count}>0 log 存在表${tablename}
... ELSE Fail 表不存在,恢复失败
${result} Row Count select * from ${tablename}
Run Keyword IF "${out}"=="${result}" log 数据校验一致,恢复成功
... ELSE Fail 数据校验不一致,恢复失败
Disconnect From Database
Log 断开数据库连接
执行SQL查询
[Arguments] ${tablename} ${hostip} ${SQLServer_passwd}
log 连接数据库

View File

@ -0,0 +1,45 @@
*** Settings ***
Resource ../../../../Resource/RE0_Common/KeyWord.robot
Variables ../../../../Config/CDM/CDM_config.py
Resource ../../../../Resource/RE2_CDM/KeyWord_Sqlserver.robot
*** Test Cases ***
00_TEST
01_SQLServer完全备份与恢复
[Documentation] 1.MSSQL建库
... 登录代理端后台
... 删除老的库,新建库
...
... 2. MSSQL建表并插入当前时间
... 在创建的库中新建表,并往表中插入当前的时间
...
... 3.MSSQL_CDM备份
... 进入副本模块
... 选择代理、添加策略
... 以备份类型+时间命名策略
... 选择备份目标
... 过滤指定的目标
... 选择完全备份类型和任务周期
... 确认备份策略建立
... 确认任务运行完成
...
... 4.MSSQL删除表
... 删除数据成功
...
... 5.MSSQL_CDM恢复
... 通过策略名找到备份集
... 点击恢复 \
... 确认恢复策略建立
... 等待恢复成功
...
... 6.MSSQL校验
... 查询数据成功
[Setup] 登录黑方 ${CDM_BC_NEWUrl} ${Sys_Admin} ${WebPWD}
MSSQL建库 ${CDM_MSSql_DB_Mh} ${CDM_MSSql_IP_Local_Mh} ${CDM_MSSql_DB_PWD1}
MSSQL建表并插入当前时间点 ${CDM_MSSql_TableName_Mh} ${CDM_MSSql_IP_Local_Mh} ${CDM_MSSql_DB_PWD1} ${CDM_MSSql_DB_User} ${CDM_MSSql_DB_Mh}
MSSQL_CDM备份 ${CDM_MSSql_HostName_Mh} ${SQLserver_CheckType_Mh} ${N} ${N} ${N}
MSSQL删除表 ${CDM_MSSql_TableName_Mh} ${CDM_MSSql_IP_Local_Mh} ${CDM_MSSql_DB_PWD1} ${CDM_MSSql_DB_Mh}
MSSQL_CDM恢复
MSSQL校验 ${CDM_MSSql_TableName_Mh} ${CDM_MSSql_IP_Local_Mh} ${CDM_MSSql_DB_PWD1} ${CDM_MSSql_DB_Mh}
[Teardown] 关闭浏览器