Пример #1
0
        public async Task ArchiveGroup_skips_over_empty_batches_but_still_completes()
        {
            // Arrange
            using (var documentStore = InMemoryStoreBuilder.GetInMemoryStore())
            {
                var groupId = "TestGroup";
                var previousArchiveBatchId = ArchiveBatch.MakeId(groupId, ArchiveType.FailureGroup, 1);

                using (var session = documentStore.OpenAsyncSession())
                {
                    var previousAchiveBatch = new ArchiveBatch {
                        Id = previousArchiveBatchId
                    };
                    await session.StoreAsync(previousAchiveBatch)
                    .ConfigureAwait(false);

                    var previousArchiveOperation = new ArchiveOperation
                    {
                        Id                       = ArchiveOperation.MakeId(groupId, ArchiveType.FailureGroup),
                        RequestId                = groupId,
                        ArchiveType              = ArchiveType.FailureGroup,
                        TotalNumberOfMessages    = 2,
                        NumberOfMessagesArchived = 0,
                        Started                  = DateTime.Now,
                        GroupName                = "Test Group",
                        NumberOfBatches          = 3,
                        CurrentBatch             = 0
                    };
                    await session.StoreAsync(previousArchiveOperation)
                    .ConfigureAwait(false);

                    await session.SaveChangesAsync()
                    .ConfigureAwait(false);
                }

                var documentManager  = new ArchiveDocumentManager();
                var domainEvents     = new FakeDomainEvents();
                var archivingManager = new ArchivingManager(domainEvents);
                var retryingManager  = new RetryingManager(domainEvents);
                var handler          = new ArchiveAllInGroupHandler(documentStore, domainEvents, documentManager, archivingManager, retryingManager);

                var context = new TestableMessageHandlerContext();
                var message = new ArchiveAllInGroup {
                    GroupId = groupId
                };

                // Act
                await handler.Handle(message, context)
                .ConfigureAwait(false);

                // Assert
                using (var session = documentStore.OpenSession())
                {
                    var loadedBatch = session.Load <ArchiveBatch>(previousArchiveBatchId);
                    Assert.IsNull(loadedBatch);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Executable Program that backs up logs and archives logs whenever it is called.
        /// </summary>
        static void Main(string[] args)
        {
            //TimeSpan of 2 hours for the archive retry
            TimeSpan ts = new TimeSpan(2, 0, 0);
            //New instance of ArchiveManager
            ArchivingManager archivingManager = new ArchivingManager();

            //Backup the logs
            archivingManager.BackupLogs();

            //Archive logs older than 2 years
            bool archived = false;

            archived = archivingManager.ArchiveLogs();
            //Extract the log specified
            //  //bool unarchived = archivingManager.ReverseArchive("05-01-2019");

            //If logs fail to archive 1-3 times wait 2 hours then try again
            if (!archived && tries < 3)
            {
                try
                {
                    System.Threading.Tasks.Task task = System.Threading.Tasks.Task.Delay(ts).ContinueWith(t => archivingManager.ArchiveLogs());
                    task.Wait();
                }
                catch (Exception e)
                {
                    Console.Write("2 Hour wait for re-archive has failed.");
                }
            }
            //Otherwise, stop archiving and email a system administrator
            else if (!archived && tries >= 3)
            {
                /*using (TaskService task = new TaskService())
                 * {
                 *
                 *  Microsoft.Win32.TaskScheduler.Task td = task.FindTask("LogArchiver");
                 *  td.Definition.Settings.Enabled = false;
                 *  Console.WriteLine("Email a System Administrator");
                 *  tries = 0;
                 * }*/
                new ServiceLayer.EmailService().SendMail("*****@*****.**", "Notification from CheckIt", "Archiving is screwed up.");
                tries = 0;
            }
        }
 internal FailureGroupsArchiveController(Lazy <IEndpointInstance> bus, ArchivingManager archivingManager)
 {
     this.bus = bus;
     this.archivingManager = archivingManager;
 }
Пример #4
0
 internal UnacknowledgedGroupsController(ArchivingManager archivingManager, IDocumentStore store)
 {
     this.archivingManager = archivingManager;
     this.store            = store;
 }