Example #1
0
        internal static TimeSpan GetTimeSinceOldestBackupInternal(
            List <string> databaseNames,
            Func <string, DateTime?> getLastBackup,
            SystemTime systemTime = null)
        {
            var      now          = systemTime?.GetUtcNow() ?? SystemTime.UtcNow;
            DateTime oldestBackup = now;

            foreach (var databaseName in databaseNames)
            {
                var lastBackup = getLastBackup(databaseName);
                if (lastBackup == null)
                {
                    continue;
                }

                if (lastBackup < oldestBackup)
                {
                    oldestBackup = lastBackup.Value;
                }
            }

            if (now <= oldestBackup)
            {
                return(TimeSpan.Zero);
            }

            return(now - oldestBackup);
        }
        public void GivenNeverBackedUpDb_ReturnsTimespanMax()
        {
            var backupTimes = new DateTime?[]
            {
                _time.GetUtcNow().Date,
                _time.GetUtcNow().Subtract(TimeSpan.FromDays(1)),
                _time.GetUtcNow(),
                DateTime.MinValue,
            };

            SetupDatabasesBackupTimes(backupTimes);

            var result =
                DatabaseOldestBackup.GetTimeSinceOldestBackupInternal(_backupDates.Keys.ToList(), GetLastBackupDate, _time);

            Assert.True(result > SnmpValuesHelper.TimeSpanSnmpMax);
            Assert.Equal(SnmpValuesHelper.TimeTicksMax, SnmpValuesHelper.TimeSpanToTimeTicks(result));
        }