public void TestOpenBeforeCreate()
        {
            ILogSource logSource = null;

            try
            {
                string fileName = PathEx.GetTempFileName();
                if (File.Exists(fileName))
                {
                    File.Delete(fileName);
                }

                new Action(() => logSource = Create(fileName)).Should().NotThrow();

                logSource.Property(x => x.GetProperty(Properties.PercentageProcessed)).ShouldAfter(TimeSpan.FromSeconds(5)).Be(Percentage.HundredPercent);
                logSource.Property(x => x.GetProperty(Properties.EmptyReason)).ShouldAfter(TimeSpan.FromSeconds(5)).NotBeNull("Because the specified file doesn't exist");

                File.WriteAllText(fileName, "Hello World!");

                logSource.Property(x => x.GetProperty(Properties.EmptyReason)).ShouldAfter(TimeSpan.FromSeconds(5)).Be(null,
                                                                                                                       "Because the file has been created now");
                logSource.Property(x => x.GetProperty(Properties.LogEntryCount)).ShouldAfter(TimeSpan.FromSeconds(5)).Be(1, "Because one line was written to the file");

                var entry = logSource.GetEntry(0);
                entry.Index.Should().Be(0);
                entry.RawContent.Should().Be("Hello World!");
            }
            finally
            {
                logSource?.Dispose();
            }
        }
 /// <inheritdoc />
 public void Dispose()
 {
     try
     {
         _logSource.Dispose();
     }
     catch (Exception e)
     {
         BlameExceptionOnPlugin(e);
     }
 }
Beispiel #3
0
        /// <inheritdoc />
        public void Dispose()
        {
            ILogSource logSource = _source;

            logSource?.Dispose();
            _taskScheduler.StopPeriodic(_task);

            // https://github.com/Kittyfisto/Tailviewer/issues/282
            _listeners.Clear();

            _properties.Clear();

            _source     = null;
            _isDisposed = true;
        }
Beispiel #4
0
        public static ILogSource FindLiveLogSourceOrCreateNew(
            this ILogSourcesManager logSources,
            ILogProviderFactory factory,
            IConnectionParams cp)
        {
            ILogSource src = logSources.Find(cp);

            if (src != null && src.Provider.Stats.State == LogProviderState.LoadError)
            {
                src.Dispose();
                src = null;
            }
            if (src == null)
            {
                src = logSources.Create(factory, cp);
            }
            return(src);
        }
Beispiel #5
0
        ILogSource ILogSourcesManager.Create(ILogProviderFactory providerFactory, IConnectionParams cp)
        {
            ILogSource src = ((ILogSourcesManager)this).Find(cp);

            if (src != null && src.Provider.Stats.State == LogProviderState.LoadError)
            {
                src.Dispose();
                src = null;
            }
            if (src == null)
            {
                src = logSourceFactory.CreateLogSource(
                    this,
                    ++lastLogSourceId,
                    providerFactory,
                    cp
                    );
            }
            recentlyUsedEntities.RegisterRecentLogEntry(src.Provider, src.Annotation);
            return(src);
        }
        public void TestExists()
        {
            ILogSource logSource = null;

            try
            {
                new Action(() => logSource = Create(File2Lines)).Should().NotThrow();

                logSource.Property(x => x.GetProperty(Properties.PercentageProcessed)).ShouldAfter(TimeSpan.FromSeconds(5)).Be(Percentage.HundredPercent);
                logSource.Property(x => x.GetProperty(Properties.EmptyReason)).ShouldAfter(TimeSpan.FromSeconds(5)).Be(null);

                logSource.GetProperty(Properties.EmptyReason).Should().Be(null, "Because the specified file does exist");
            }
            finally
            {
                if (logSource != null)
                {
                    logSource.Dispose();
                }
            }
        }
        public void TestDoesNotExist()
        {
            ILogSource logSource = null;

            try
            {
                new Action(() => logSource = Create("dadwdawdw")).Should().NotThrow();

                logSource.Property(x => x.GetProperty(Properties.PercentageProcessed)).ShouldAfter(TimeSpan.FromSeconds(5)).Be(Percentage.HundredPercent);
                logSource.Property(x => x.GetProperty(Properties.EmptyReason)).ShouldAfter(TimeSpan.FromSeconds(5)).NotBeNull();

                logSource.GetProperty(Properties.EmptyReason).Should().BeOfType <SourceDoesNotExist>("Because the specified file doesn't exist");
            }
            finally
            {
                if (logSource != null)
                {
                    logSource.Dispose();
                }
            }
        }
        private void CreateFilteredLogFile()
        {
            _filteredLogSource?.Dispose();

            LevelFlags      levelFilter    = LevelFilter;
            ILogLineFilter  logLineFilter  = CreateLogLineFilter();
            ILogEntryFilter logEntryFilter = Filter.Create(levelFilter, _quickFilterChain);

            if (Filter.IsFilter(logEntryFilter) || Filter.IsFilter(logLineFilter))
            {
                _logEntryFilter           = logEntryFilter;
                _filteredLogSource        = UnfilteredLogSource.AsFiltered(_taskScheduler, logLineFilter, logEntryFilter, _maximumWaitTime);
                _logSource.InnerLogSource = _filteredLogSource;
            }
            else
            {
                _logEntryFilter           = null;
                _filteredLogSource        = null;
                _logSource.InnerLogSource = UnfilteredLogSource;
            }
        }
Beispiel #9
0
 void IViewEvents.OnLoadedMessagesWarningIconClicked()
 {
     if (loadedMessageWarningStatus == LoadedMessageWarningStatus.Unfixable)
     {
         alerts.ShowPopup("Problem with the log", loadedMessagesWarningMessage,
                          AlertFlags.Ok | AlertFlags.WarningIcon);
     }
     else if (loadedMessageWarningStatus == LoadedMessageWarningStatus.FixableByReordering)
     {
         if (alerts.ShowPopup("Problem with the log", loadedMessagesWarningMessage,
                              AlertFlags.YesNoCancel | AlertFlags.QuestionIcon) == AlertFlags.Yes)
         {
             var cp = preprocessings.AppendReorderingStep(source.Provider.ConnectionParams, source.Provider.Factory);
             if (cp != null)
             {
                 currentWindow.Close();
                 source.Dispose();
                 preprocessings.Preprocess(
                     new MRU.RecentLogEntry(source.Provider.Factory, cp, "", null));
             }
         }
     }
 }
Beispiel #10
0
 /// <inheritdoc />
 public void Dispose()
 {
     _source?.Dispose();
     _source = null;
 }
Beispiel #11
0
 protected override void DisposeAdditional()
 {
     _originalLogSource?.Dispose();
     _unfilteredLogSource?.Dispose();
     _multiLineLogSource?.Dispose();
 }