Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        //[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);
        }
Пример #6
0
        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);
        }