public void UnitTestDoWork_With_Now_Not_In_The_Scheduled_Time()
        {
            MockRepository mockRepository     = new MockRepository();
            const string   StorageAccountName = "storageAccountName";
            const string   BlobContainerName  = "blobContainerName";

            // Set start time to 1 hour before now.
            TimeSpan dailyStartTime = (DateTime.Now - DateTime.Today).Add(this.oneHour);

            // Set end time to 1 hour after now.
            TimeSpan  dailyEndTime             = (DateTime.Now - DateTime.Today).Add(this.oneHour);
            const int PollingIntervalInMinutes = 60;

            // Arrange
            IBlobService mockBlobService = mockRepository.StrictMock <IBlobService>();

            // Act
            mockRepository.ReplayAll();
            BlobContainerDeleteForecastWorker blobContainerDeleteForecastWorker = new BlobContainerDeleteForecastWorker(
                mockBlobService,
                StorageAccountName,
                new[] { BlobContainerName },
                new[] { new ScheduleDay {
                            DayOfWeek = DateTime.Now.DayOfWeek, EndTime = dailyEndTime, StartTime = dailyStartTime
                        } },
                PollingIntervalInMinutes);

            blobContainerDeleteForecastWorker.DoWork();

            // Assert
            mockRepository.VerifyAll();
        }
        public void UnitTestDoWork_With_Now_In_The_Scheduled_Time()
        {
            MockRepository mockRepository     = new MockRepository();
            const string   StorageAccountName = "storageAccountName";
            const string   BlobContainerName1 = "blobContainerName1";
            const string   BlobContainerName2 = "blobContainerName2";

            // Set start time to 1 hour before now.
            TimeSpan dailyStartTime = (DateTime.Now - DateTime.Today).Subtract(this.oneHour);

            // Set end time to 1 hour after now.
            TimeSpan  dailyEndTime             = (DateTime.Now - DateTime.Today).Add(this.oneHour);
            const int PollingIntervalInMinutes = 60;

            // Arrange
            IBlobService mockBlobService = mockRepository.StrictMock <IBlobService>();

            mockBlobService
            .Expect(ts => ts.DeleteContainer(string.Empty))
            .IgnoreArguments()
            .Repeat.Twice()
            .Return(true);

            // Act
            mockRepository.ReplayAll();
            BlobContainerDeleteForecastWorker blobContainerDeleteForecastWorker = new BlobContainerDeleteForecastWorker(
                mockBlobService,
                StorageAccountName,
                new[] { BlobContainerName1, BlobContainerName2 },
                new[] { new ScheduleDay {
                            DayOfWeek = DateTime.Now.DayOfWeek, EndTime = dailyEndTime, StartTime = dailyStartTime
                        } },
                PollingIntervalInMinutes);

            blobContainerDeleteForecastWorker.DoWork();
            blobContainerDeleteForecastWorker.DoWork(); // Call DoWork twice to check the polling window works.

            // Assert
            mockRepository.VerifyAll();
        }
Esempio n. 3
0
        internal static BlobContainerDeleteForecastWorker[] GetBlobContainerDeleteForecastWorkers()
        {
            IConfigurationSource configurationSource = GetConfigurationSource();
            ArrayList            list = new ArrayList();

            foreach (BlobContainerDeleteConfiguration blobContainerDeleteConfiguration in configurationSource.GetWindowsAzureBlobContainerDeleteConfigurations())
            {
                BlobService blobService = new BlobService(blobContainerDeleteConfiguration.StorageAccountName, blobContainerDeleteConfiguration.StorageAccountKey);
                foreach (ScheduleDefinitionConfiguration scheduleDefinitionConfiguration in blobContainerDeleteConfiguration.Schedules)
                {
                    ScheduleDay[] scheduleDays = GetScheduleDaysFromScheduleConfiguration(scheduleDefinitionConfiguration);
                    BlobContainerDeleteForecastWorker blobContainerDeleteForecastWorker = new BlobContainerDeleteForecastWorker(
                        blobService,
                        blobContainerDeleteConfiguration.StorageAccountName,
                        blobContainerDeleteConfiguration.BlobContainerNames.ToArray(),
                        scheduleDays,
                        blobContainerDeleteConfiguration.PollingIntervalInMinutes);
                    list.Add(blobContainerDeleteForecastWorker);
                }
            }

            return((BlobContainerDeleteForecastWorker[])list.ToArray(typeof(BlobContainerDeleteForecastWorker)));
        }