Beispiel #1
0
        public void CommitTest()
        {
            var localConfig = Mock.Of <ILocalConfiguration>();

            Mock.Get(localConfig).Setup(c => c.DatabaseConnectionString).Returns("Server=.;Database=Reporting;User ID=sa;Password=sasa;Trusted_Connection=False;");
            Mock.Get(localConfig).Setup(c => c.CustomerName).Returns("Cegeka");

            var handler = Mock.Of <ITaskHandler>();

            Mock.Get(handler).Setup(c => c.GetMachineName()).Returns("cegeka-api");

            var reporter = new SqlStatusReporter(localConfig, handler);

            reporter.ReportStatus(new UpdateInstallationLogEntry("123", InstallationStatus.Failure, "It just failed.", DateTime.UtcNow));
            reporter.ReportStatus(new UpdateInstallationLogEntry("321", InstallationStatus.Success, "", DateTime.UtcNow));

            //reporter.Commit();
            var scheduler = new RetryScheduler();

            reporter.CommitWithRetry(scheduler);
        }
Beispiel #2
0
        protected virtual void OnNext(EventPattern <FileSystemEventArgs> newFileEvent)
        {
            var fullPath = newFileEvent.EventArgs.FullPath;

            RetryScheduler.Schedule(0, TimeSpan.Zero, (state, recurse) =>
            {
                Stream stream;
                try
                {
                    stream = File.OpenRead(fullPath);
                }
                catch (Exception ex)
                {
                    Interlocked.Increment(ref state);
                    if (state < RetryCount)
                    {
                        recurse(state, Interval);
                        return;
                    }
                    fileHandler.ReportError(fullPath, ex);
                    return;
                }
                try
                {
                    fileHandler.ProcessFile(fullPath, stream);
                }
                catch (Exception ex)
                {
                    fileHandler.ReportError(fullPath, ex);
                }
                finally
                {
                    stream.Dispose();
                }
            });
        }