public void TestNoDiff() { var catalog = BackupFileCatalog.CreateDefaultMonthDayDayCatalog(TestSession.TestDbBackupDir.FullName); var databaseName = "test"; var sqlServerProxy = new TestSqlServerProxy(catalog.NamingConvention.BackupFileNamingConvention, databaseName); var planner = new RestorePlanner(catalog, sqlServerProxy, databaseName); var logBackupsToSpan = 3; var minutesAfterFirstBackup = TestSqlServerProxy.BackupIntervalMinutes * logBackupsToSpan; var targetTime = TestSession.StartDate.Add(TestSqlServerProxy.FirstBackupTime).AddMinutes(minutesAfterFirstBackup); var itemsToRestore = planner.CreatePlan(targetTime); Assert.IsNotNull(itemsToRestore); // 1 full followed by planned number of log backups plus 1, because must take first log following target time Assert.AreEqual(logBackupsToSpan + 2, itemsToRestore.Count); Assert.AreEqual(BackupType.Full, itemsToRestore[0].BackupType); Assert.AreEqual(BackupType.Log, itemsToRestore[1].BackupType); var expectedLastLogBackupStartTime = TestSession.StartDate.Add(TestSqlServerProxy.FirstBackupTime) .AddMinutes((logBackupsToSpan + 1) * TestSqlServerProxy.BackupIntervalMinutes); Assert.AreEqual(expectedLastLogBackupStartTime, itemsToRestore.Last().BackupStartTime); }
public void TestTargetNonWorkHours() { var catalog = BackupFileCatalog.CreateDefaultMonthDayDayCatalog(TestSession.TestDbBackupDir.FullName); var databaseName = "test"; var sqlServerProxy = new TestSqlServerProxy(catalog.NamingConvention.BackupFileNamingConvention, databaseName); var planner = new RestorePlanner(catalog, sqlServerProxy, databaseName); var targetTime = TestSession.StartDate.AddMonths(1).AddDays(2).Add(TestSqlServerProxy.FirstBackupTime).AddHours(-1); var itemsToRestore = planner.CreatePlan(targetTime); Assert.IsNotNull(itemsToRestore); // 1 full, then diff followed by all log backups in the day plus 1, because must take first log following target time Assert.AreEqual(TestSqlServerProxy.LogBackupsPerDay + 2 + 1, itemsToRestore.Count); Assert.AreEqual(BackupType.Full, itemsToRestore[0].BackupType); Assert.AreEqual(BackupType.DifferentialDatabase, itemsToRestore[1].BackupType); Assert.AreEqual(BackupType.Log, itemsToRestore[2].BackupType); var expectedLastLogBackupStartTime = TestSession.StartDate.AddMonths(1).AddDays(2).Add(TestSqlServerProxy.FirstBackupTime) .AddMinutes(TestSqlServerProxy.BackupIntervalMinutes); Assert.AreEqual(expectedLastLogBackupStartTime, itemsToRestore.Last().BackupStartTime); }
//[Test] public void RealPlannerScratchPad() { var catalog = BackupFileCatalog.CreateDefaultMonthDayDayCatalog(@"F:\temp\backup\DOCUMENTS"); var databaseName = "DOCUMENTS"; var sqlServerProxy = new SqlServer2014Proxy(TestSession.Server); var planner = new RestorePlanner(catalog, sqlServerProxy, databaseName); var backupItems = planner.CreatePlan(null); Assert.That(backupItems, Is.Not.Empty); }
public void TestTargetStartOfMonth() { var catalog = BackupFileCatalog.CreateDefaultMonthDayDayCatalog(TestSession.TestDbBackupDir.FullName); IBackupFileCatalog icatalog = catalog; // 1 second before the start of the 2nd day of the second month var targetTime = TestSession.StartDate.AddMonths(2); // log backup of the day prior to the target time will be necessary var logBackupCountApplicable = (int)(TestSession.StartDate.AddMonths(TestSession.TestBckupPeriodMonths) - TestSession.StartDate.AddMonths(2).AddDays(-1)).TotalDays; var fullBackups = icatalog.GetReverseBackupSequence(targetTime, SupportedBackupType.Full); var diffBackups = icatalog.GetReverseBackupSequence(targetTime, SupportedBackupType.Diff); Assert.IsNotNull(fullBackups); Assert.IsNotNull(diffBackups); var lastFull = fullBackups.FirstOrDefault(); var lastDiff = diffBackups.FirstOrDefault(); Assert.IsNotNull(lastFull); Assert.IsNotNull(lastDiff); Assert.AreEqual(SupportedBackupType.Full, lastFull.BackupType); Assert.AreEqual(SupportedBackupType.Diff, lastDiff.BackupType); var lastBackupMonthStart = TestSession.StartDate.AddMonths(1); var lastBackupDayStart = lastBackupMonthStart.AddMonths(1).AddDays(-1); Assert.AreEqual(lastBackupMonthStart, lastFull.StartTime); Assert.AreEqual(lastBackupDayStart, lastDiff.StartTime); var logBackups = icatalog.GetLogBackupsSequence(lastBackupDayStart); Assert.IsNotNull(logBackups); var logBackupsList = logBackups.ToList(); Assert.AreEqual(logBackupCountApplicable, logBackupsList.Count); var firstLog = logBackups.First(); Assert.IsNotNull(firstLog); Assert.AreEqual(lastBackupDayStart, firstLog.StartTime); Assert.AreEqual(lastBackupDayStart.AddDays(1), firstLog.EndTime); var secondLog = logBackups.Skip(1).First(); Assert.IsNotNull(secondLog); Assert.AreEqual(lastBackupDayStart.AddDays(1), secondLog.StartTime); Assert.AreEqual(lastBackupDayStart.AddDays(2), secondLog.EndTime); }
public void TestLatest() { var catalog = BackupFileCatalog.CreateDefaultMonthDayDayCatalog(TestSession.TestDbBackupDir.FullName); IBackupFileCatalog icatalog = catalog; var fullBackups = icatalog.GetReverseBackupSequence(null, SupportedBackupType.Full); var diffBackups = icatalog.GetReverseBackupSequence(null, SupportedBackupType.Diff); Assert.IsNotNull(fullBackups); Assert.IsNotNull(diffBackups); var lastFull = fullBackups.FirstOrDefault(); var lastDiff = diffBackups.FirstOrDefault(); Assert.IsNotNull(lastFull); Assert.IsNotNull(lastDiff); Assert.AreEqual(SupportedBackupType.Full, lastFull.BackupType); Assert.AreEqual(SupportedBackupType.Diff, lastDiff.BackupType); var lastBackupMonthStart = TestSession.StartDate.AddMonths(TestSession.TestBckupPeriodMonths - 1); var lastBackupDayStart = lastBackupMonthStart.AddMonths(1).AddDays(-1); Assert.AreEqual(lastBackupMonthStart, lastFull.StartTime); Assert.AreEqual(lastBackupDayStart, lastDiff.StartTime); var logBackups = icatalog.GetLogBackupsSequence(lastBackupDayStart); Assert.IsNotNull(logBackups); var logBackupsList = logBackups.ToList(); Assert.AreEqual(1, logBackupsList.Count); var lastLog = logBackups.First(); Assert.IsNotNull(lastLog); Assert.AreEqual(lastBackupDayStart, lastLog.StartTime); Assert.AreEqual(lastBackupDayStart.AddDays(1), lastLog.EndTime); }
public void TestLatest() { var catalog = BackupFileCatalog.CreateDefaultMonthDayDayCatalog(TestSession.TestDbBackupDir.FullName); var databaseName = "test"; var sqlServerProxy = new TestSqlServerProxy(catalog.NamingConvention.BackupFileNamingConvention, databaseName); var planner = new RestorePlanner(catalog, sqlServerProxy, databaseName); var itemsToRestore = planner.CreatePlan(null); Assert.IsNotNull(itemsToRestore); // full month of backups, every day starting with full or diff backup, then full day of log backups Assert.AreEqual(TestSqlServerProxy.LogBackupsPerDay + 2, itemsToRestore.Count); Assert.AreEqual(BackupType.Full, itemsToRestore[0].BackupType); Assert.AreEqual(BackupType.DifferentialDatabase, itemsToRestore[1].BackupType); Assert.AreEqual(BackupType.Log, itemsToRestore[2].BackupType); var expectedLastLogBackupStartTime = TestSession.StartDate.AddMonths(TestSession.TestBckupPeriodMonths).AddDays(-1).Add(TestSqlServerProxy.LastBackupTime); Assert.AreEqual(expectedLastLogBackupStartTime, itemsToRestore.Last().BackupStartTime); }