public void VerifyOptionsCreatedSuccessfullyIsResponse() { GeneralRequestDetails optionValues = CreateOptionsTestData(); IRestoreDatabaseTaskDataObject restoreDatabaseTaskDataObject = CreateRestoreDatabaseTaskDataObject(optionValues); Dictionary <string, RestorePlanDetailInfo> result = RestoreOptionsHelper.CreateRestorePlanOptions(restoreDatabaseTaskDataObject); Assert.NotNull(result); VerifyOptions(result, optionValues); }
/// <summary> /// Updates restore plan /// </summary> public void UpdateRestorePlan() { RestoreOptionsHelper.UpdateOptionsInPlan(this); if (RelocateAllFiles) { UpdateDbFiles(); } this.SetRestorePlanProperties(this.restorePlan); UpdateSelectedBackupSets(); }
public void KeepReplicationShouldBeReadOnlyGivenRecoveryStateWithNoRecovery() { GeneralRequestDetails optionValues = CreateOptionsTestData(); optionValues.Options[RestoreOptionsHelper.RecoveryState] = DatabaseRecoveryState.WithNoRecovery; IRestoreDatabaseTaskDataObject restoreDatabaseTaskDataObject = CreateRestoreDatabaseTaskDataObject(optionValues); Dictionary <string, RestorePlanDetailInfo> result = RestoreOptionsHelper.CreateRestorePlanOptions(restoreDatabaseTaskDataObject); Assert.NotNull(result); Assert.True(result[RestoreOptionsHelper.KeepReplication].IsReadOnly); }
public void CloseExistingConnectionsShouldBeReadOnlyGivenCanDropExistingConnectionsSetToFalse() { GeneralRequestDetails optionValues = CreateOptionsTestData(); optionValues.Options["CanDropExistingConnections"] = false; IRestoreDatabaseTaskDataObject restoreDatabaseTaskDataObject = CreateRestoreDatabaseTaskDataObject(optionValues); Dictionary <string, RestorePlanDetailInfo> result = RestoreOptionsHelper.CreateRestorePlanOptions(restoreDatabaseTaskDataObject); Assert.NotNull(result); Assert.True(result[RestoreOptionsHelper.CloseExistingConnections].IsReadOnly); }
public void StandbyFileShouldNotBeReadOnlyGivenRecoveryStateWithStandBy() { GeneralRequestDetails optionValues = CreateOptionsTestData(); optionValues.Options[RestoreOptionsHelper.RecoveryState] = DatabaseRecoveryState.WithStandBy; IRestoreDatabaseTaskDataObject restoreDatabaseTaskDataObject = CreateRestoreDatabaseTaskDataObject(optionValues); Dictionary <string, RestorePlanDetailInfo> result = RestoreOptionsHelper.CreateRestorePlanOptions(restoreDatabaseTaskDataObject); Assert.NotNull(result); Assert.False(result[RestoreOptionsHelper.StandbyFile].IsReadOnly); }
public void TailLogWithNoRecoveryShouldBeReadOnlyTailLogBackupWithNoRecoveryNotPossible() { GeneralRequestDetails optionValues = CreateOptionsTestData(); optionValues.Options["IsTailLogBackupWithNoRecoveryPossible"] = false; IRestoreDatabaseTaskDataObject restoreDatabaseTaskDataObject = CreateRestoreDatabaseTaskDataObject(optionValues); Dictionary <string, RestorePlanDetailInfo> result = RestoreOptionsHelper.CreateRestorePlanOptions(restoreDatabaseTaskDataObject); Assert.NotNull(result); Assert.True(result[RestoreOptionsHelper.TailLogWithNoRecovery].IsReadOnly); }
public void RelocateAllFilesShouldBeReadOnlyGivenNoDbFiles() { GeneralRequestDetails optionValues = CreateOptionsTestData(); optionValues.Options["DbFiles"] = new List <DbFile>(); optionValues.Options[RestoreOptionsHelper.RelocateDbFiles] = true; IRestoreDatabaseTaskDataObject restoreDatabaseTaskDataObject = CreateRestoreDatabaseTaskDataObject(optionValues); Dictionary <string, RestorePlanDetailInfo> result = RestoreOptionsHelper.CreateRestorePlanOptions(restoreDatabaseTaskDataObject); Assert.NotNull(result); Assert.True(result[RestoreOptionsHelper.RelocateDbFiles].IsReadOnly); }
public static FeatureMetadataProvider[] CreateFratureMetadataProviders() { List <FeatureMetadataProvider> featues = new List <FeatureMetadataProvider>(); featues.Add(new FeatureMetadataProvider { FeatureName = "Restore", Enabled = true, OptionsMetadata = RestoreOptionsHelper.CreateRestoreOptions() }); return(featues.ToArray()); }
public void KeepReplicationShouldSetToValueInRequestGivenRecoveryStateWithRecovery() { RestoreParams restoreParams = CreateOptionsTestData(); restoreParams.Options[RestoreOptionsHelper.RecoveryState] = DatabaseRecoveryState.WithRecovery; IRestoreDatabaseTaskDataObject restoreDatabaseTaskDataObject = CreateRestoreDatabaseTaskDataObject(restoreParams); Dictionary <string, RestorePlanDetailInfo> options = RestoreOptionsHelper.CreateRestorePlanOptions(restoreDatabaseTaskDataObject); restoreParams.Options[RestoreOptionsHelper.KeepReplication] = true; RestoreOptionsHelper.UpdateOptionsInPlan(restoreDatabaseTaskDataObject); bool actual = restoreDatabaseTaskDataObject.RestoreOptions.KeepReplication; bool expected = true; Assert.Equal(actual, expected); }
public void DataFileFolderShouldBeReadOnlyGivenRelocateAllFilesSetToFalse() { GeneralRequestDetails optionValues = CreateOptionsTestData(); optionValues.Options["DbFiles"] = new List <DbFile>() { new DbFile("", '1', "") }; optionValues.Options[RestoreOptionsHelper.RelocateDbFiles] = false; IRestoreDatabaseTaskDataObject restoreDatabaseTaskDataObject = CreateRestoreDatabaseTaskDataObject(optionValues); Dictionary <string, RestorePlanDetailInfo> result = RestoreOptionsHelper.CreateRestorePlanOptions(restoreDatabaseTaskDataObject); Assert.NotNull(result); Assert.True(result[RestoreOptionsHelper.DataFileFolder].IsReadOnly); Assert.True(result[RestoreOptionsHelper.LogFileFolder].IsReadOnly); }
public void DataFileFolderShouldBeCurrentValueGivenRelocateAllFilesSetToTrue() { string dataFile = "data files"; string logFile = "log files"; GeneralRequestDetails optionValues = CreateOptionsTestData(); optionValues.Options["DbFiles"] = new List <DbFile>() { new DbFile("", '1', "") }; optionValues.Options[RestoreOptionsHelper.RelocateDbFiles] = true; optionValues.Options[RestoreOptionsHelper.DataFileFolder] = dataFile; optionValues.Options[RestoreOptionsHelper.LogFileFolder] = logFile; IRestoreDatabaseTaskDataObject restoreDatabaseTaskDataObject = CreateRestoreDatabaseTaskDataObject(optionValues); Dictionary <string, RestorePlanDetailInfo> result = RestoreOptionsHelper.CreateRestorePlanOptions(restoreDatabaseTaskDataObject); Assert.NotNull(result); Assert.False(result[RestoreOptionsHelper.DataFileFolder].IsReadOnly); Assert.False(result[RestoreOptionsHelper.LogFileFolder].IsReadOnly); Assert.Equal(result[RestoreOptionsHelper.DataFileFolder].CurrentValue, dataFile); Assert.Equal(result[RestoreOptionsHelper.LogFileFolder].CurrentValue, logFile); }
/// <summary> /// Creates a restore plan, The result includes the information about the backup set, /// the files and the database to restore to /// </summary> /// <param name="requestParam">Restore request</param>s /// <returns>Restore plan</returns> public RestorePlanResponse CreateRestorePlanResponse(RestoreDatabaseTaskDataObject restoreDataObject) { RestorePlanResponse response = new RestorePlanResponse() { DatabaseName = restoreDataObject.RestoreParams.TargetDatabaseName, PlanDetails = new System.Collections.Generic.Dictionary <string, RestorePlanDetailInfo>() }; try { if (restoreDataObject != null && restoreDataObject.IsValid) { restoreDataObject.UpdateRestoreTaskObject(); if (restoreDataObject != null && restoreDataObject.IsValid) { response.SessionId = restoreDataObject.SessionId; response.DatabaseName = restoreDataObject.TargetDatabaseName; response.PlanDetails.Add(RestoreOptionsHelper.TargetDatabaseName, RestoreOptionFactory.Instance.CreateAndValidate(RestoreOptionsHelper.TargetDatabaseName, restoreDataObject)); response.PlanDetails.Add(RestoreOptionsHelper.SourceDatabaseName, RestoreOptionFactory.Instance.CreateAndValidate(RestoreOptionsHelper.SourceDatabaseName, restoreDataObject)); response.PlanDetails.Add(RestoreOptionsHelper.ReadHeaderFromMedia, RestorePlanDetailInfo.Create( name: RestoreOptionsHelper.ReadHeaderFromMedia, currentValue: restoreDataObject.RestorePlanner.ReadHeaderFromMedia)); response.DbFiles = restoreDataObject.DbFiles.Select(x => new RestoreDatabaseFileInfo { FileType = x.DbFileType, LogicalFileName = x.LogicalName, OriginalFileName = x.PhysicalName, RestoreAsFileName = x.PhysicalNameRelocate }); response.CanRestore = CanRestore(restoreDataObject); response.PlanDetails.Add(LastBackupTaken, RestorePlanDetailInfo.Create(name: LastBackupTaken, currentValue: restoreDataObject.GetLastBackupTaken(), isReadOnly: true)); response.BackupSetsToRestore = restoreDataObject.GetSelectedBakupSets(); var dbNames = restoreDataObject.SourceDbNames; response.DatabaseNamesFromBackupSets = dbNames == null ? new string[] { } : dbNames.ToArray(); RestoreOptionsHelper.AddOptions(response, restoreDataObject); } else { if (restoreDataObject.ActiveException != null) { response.ErrorMessage = restoreDataObject.ActiveException.Message; } else { response.ErrorMessage = SR.RestorePlanFailed; } response.CanRestore = false; } } else { response.ErrorMessage = SR.RestorePlanFailed; } } catch (Exception ex) { response.ErrorMessage = ex.Message; if (ex.InnerException != null) { response.ErrorMessage += Environment.NewLine; response.ErrorMessage += ex.InnerException.Message; } Logger.Write(LogLevel.Normal, $"Failed to create restore plan. error: { response.ErrorMessage}"); } return(response); }