def test_openapi_describe_and_delete_sharding_backup(self, openAPIBackup, openAPI_createShardingMongodb): status, resp = openAPIBackup.openAPI_describeBackups_cap(openAPI_createShardingMongodb["instanceId"]) if "error" in resp.keys(): assert False, "[WAN] Interface return exception" assert resp["requestId"] if resp["result"]["totalCount"] == 0: info_logger.info("test_openapi_describe_backup_lists query is empty") else: assert resp["result"]["pageNumber"] assert len(resp["result"]["backups"][0]) == 9, "[ERROR] Field return element wrong" assert resp["result"]["backups"][0]["backupId"] assert resp["result"]["backups"][0]["backupName"] assert resp["result"]["backups"][0]["backupStatus"] info_logger.info("test_openapi_query_backup_lists success") status, resp = openAPIBackup.openAPI_describeBackups_cap(openAPI_createShardingMongodb["configserver"][0]["configserverNodeId"]) if "error" in resp.keys(): assert False, "[WAN] Interface return exception" assert resp["requestId"] if resp["result"]["totalCount"] == 0: info_logger.info("test_openapi_describe_backup_lists query is empty") else: assert resp["result"]["pageNumber"] assert len(resp["result"]["backups"][0]) == 9, "[ERROR] Field return element wrong" assert resp["result"]["backups"][0]["backupId"] assert resp["result"]["backups"][0]["backupName"] assert resp["result"]["backups"][0]["instanceId"] == openAPI_createShardingMongodb["configserver"][0]["configserverNodeId"] assert resp["result"]["backups"][0]["backupStatus"] info_logger.info("test_openapi_query_backup_lists success") flag = MongOpenAPISteps().openapi_delete_backup_until_finshed(openAPIBackup, resp["result"]["backups"][0]["backupId"]) assert flag status, resp = openAPIBackup.openAPI_describeBackups_cap( openAPI_createShardingMongodb["shard"][0]["shardNodeId"]) if "error" in resp.keys(): assert False, "[WAN] Interface return exception" assert resp["requestId"] if resp["result"]["totalCount"] == 0: info_logger.info("test_openapi_describe_backup_lists query is empty") else: assert resp["result"]["pageNumber"] assert len(resp["result"]["backups"][0]) == 9, "[ERROR] Field return element wrong" assert resp["result"]["backups"][0]["backupId"] assert resp["result"]["backups"][0]["backupName"] assert resp["result"]["backups"][0]["instanceId"] == openAPI_createShardingMongodb["shard"][0]["shardNodeId"] assert resp["result"]["backups"][0]["backupStatus"] info_logger.info("test_openapi_query_backup_lists success") flag = MongOpenAPISteps().openapi_delete_backup_until_finshed(openAPIBackup, resp["result"]["backups"][0]["backupId"]) assert flag
def test_openapi_by_instance_query_backup_lists(self, openAPIBackup, openAPI_createMongoDb): #根据instanceId查询实例 time.sleep(3) status, resp = openAPIBackup.openAPI_describeBackups_cap(instanceId=openAPI_createMongoDb) assert status == 200 assert "error" not in resp.keys() assert resp["requestId"] assert resp["result"] if resp["result"] is None or resp["result"]["totalCount"] ==0: info_logger.info("test_openapi_by_instance_query_backup_lists success, interface return null") assert resp["result"]["totalCount"] assert resp["result"]["pageNumber"] assert len(resp["result"]["backups"][0]) == 9 info_logger.info("test_openapi_by_instance_query_backup_lists success")
def test_openapi_create_instance_by_backup_until_finished(self, dbVersion,instanceStorageType,mongOpenAPI,createByTimeId,openAPIBackup): #根据备份创建实例,事前创建好实例,写入数据,要求固定的db及collection,admin.test_coll,并且开公网, time.sleep(10) # backupId,dataCount = openAPI_backupId # assert backupId is not None # 获取备份文件 status, resp = openAPIBackup.openAPI_describeBackups_cap(instanceId=createByTimeId) assert resp["result"]["totalCount"]>0,"get backup list failed" backupId="" for i in range(len(resp["result"]["backups"])): if resp["result"]["backups"][i]["backupStatus"]=="Finished": backupId=resp["result"]["backups"][i]["backupId"] break assert "mongo" in backupId,"{}".format(resp) # 获取源实例公网 publicIp = mongOpenAPI.openapi_describe_instance_attribute_cap(createByTimeId)["instancePublicDomain"].split(",")[0].split(":")[0] assert "jmongo" in publicIp dataCount = mongo_write_data.count_data(publicIp) # 根据备份创建实例 status, resp = MongOpenAPISteps().openapi_create_instance_until_finshed(dbVersion,instanceStorageType,mongOpenAPI,backupId=backupId) if status != 200 or resp["result"]["totalCount"] is None: assert False assert resp["result"]["dbInstances"][0]["instanceStatus"] == 'RUNNING' instance = resp["result"]["dbInstances"][0]["instanceId"] time.sleep(20) # 给instance开公网,查询实例data count flag, resp = MongOpenAPISteps().openapi_enable_internet_access_until_finshed(mongOpenAPI, instance) assert flag publicIp = resp["instancePublicDomain"].split(",")[0].split(":")[0] assert "jmongo" in publicIp # 先查询有无全0白名单,没有则添加全0白名单 ret_status, res = mongOpenAPI.openapi_query_securityIps_cap(instance) assert ret_status == 200,"{}".format(res) if "0.0.0.0/0" not in res["result"]["securityIps"]: status0, resp0 = mongOpenAPI.openapi_securityIps_cap(instance, "Add", ip="0.0.0.0/0") if status0 != 200 or "error" in resp0.keys(): assert False, "[ERROR] modify_securityIps return {}".format(resp0) time.sleep(60) newDataCount = mongo_write_data.count_data(publicIp) assert dataCount==newDataCount,"create mongo by backup ,restore data error" flag = MongOpenAPISteps().openapi_delete_instance_until_finshed(mongOpenAPI, instance) assert flag info_logger.info("[test_openapi_create_instance_by_backup_until_finished success,data count is {}]".format(newDataCount))
def test_openapi_create_backup_normal_parameter(self, openAPIBackup, mongOpenAPI, openAPI_createMongoDb): # backupId = MongOpenAPISteps().openapi_create_backup_until_finshed(openAPIBackup, openAPI_createMongoDb, # backupMethod='Logical') # if backupId is None: # assert False # status, resp = openAPIBackup.openAPI_describeBackups_cap(backupId=backupId) # assert status == 200 # assert resp["result"]["backups"][0]["backupMethod"] == 'Logical' # info_logger.info("test_openapi_create_backup_normal_parameter Logical {} success".format(backupId)) time.sleep(420)#刚创建的实例,会触发自动备份,备份用时候5分钟,所在再次备份需要sleep5分钟,这个没有sleep是因为执行前面case的时候超过了5分钟所以没sleep,如果前面case失败,5分钟内就执行到此case,此case会失败,因为备份失败。 backupMethod = 'Logical' backupId = MongOpenAPISteps().openapi_create_backup_until_finshed(openAPIBackup, openAPI_createMongoDb, backupMethod=backupMethod) if backupId is None: assert False status, resp = openAPIBackup.openAPI_describeBackups_cap(backupId=backupId) assert status == 200 instance = mongOpenAPI.openapi_describe_instance_attribute_cap(openAPI_createMongoDb) if instance["instanceStorageType"] == "EBS_SSD": assert resp["result"]["backups"][0]["backupMethod"] == 'Logical' else: assert resp["result"]["backups"][0]["backupMethod"] == backupMethod info_logger.info("test_openapi_create_backup_normal_parameter Physical {} success".format(backupId))