Пример #1
0
        public void Watcher_ExpectPath()
        {
            var fakeIFileSystemWatcher = new FakeIFileSystemWatcherWrapper();

            new DiskWatcher(fakeIFileSystemWatcher, _scopeFactory).Watcher("/test");
            Assert.AreEqual("/test", fakeIFileSystemWatcher.Path);
        }
Пример #2
0
        public void Watcher_Error()
        {
            var fakeIFileSystemWatcher = new FakeIFileSystemWatcherWrapper();

            new DiskWatcher(fakeIFileSystemWatcher, _scopeFactory).Watcher("/test");
            var autoResetEvent = new AutoResetEvent(false);

            using var scope = _scopeFactory.CreateScope();
            // ISynchronize is a scoped service
            var synchronize = scope.ServiceProvider.GetRequiredService <ISynchronize>() as FakeISynchronize;

            if (synchronize == null)
            {
                throw new NullReferenceException("FakeISynchronize should not be null ");
            }

            var message = string.Empty;

            fakeIFileSystemWatcher.Error += (s, e) =>
            {
                autoResetEvent.Set();
                message = e.GetException().Message;
            };

            fakeIFileSystemWatcher.TriggerOnError(new ErrorEventArgs(new InternalBufferOverflowException("test")));
            fakeIFileSystemWatcher.TriggerOnError(new ErrorEventArgs(new InternalBufferOverflowException("test")));

            var wasSignaled = autoResetEvent.WaitOne(TimeSpan.FromSeconds(200));

            Assert.IsTrue(wasSignaled);
            Assert.IsTrue(message.Contains("test"));
        }
Пример #3
0
        public void Watcher_Retry_Ok()
        {
            var fakeIFileSystemWatcher = new FakeIFileSystemWatcherWrapper();

            var result = new DiskWatcher(fakeIFileSystemWatcher, _scopeFactory).Retry(fakeIFileSystemWatcher);

            Assert.IsTrue(result);
        }
Пример #4
0
        public void OnRenamed_ShouldHitQueueProcessor()
        {
            var fakeIFileSystemWatcher = new FakeIFileSystemWatcherWrapper()
            {
                CrashOnEnableRaisingEvents = true
            };

            var event1 = new RenamedEventArgs(WatcherChangeTypes.Renamed,
                                              "t", "test.jpg", "test2.jpg");

            new DiskWatcher(fakeIFileSystemWatcher, new FakeIWebLogger(), null).OnRenamed(null, event1);
        }
Пример #5
0
        public void Watcher_CrashAnd_Retry()
        {
            var fakeIFileSystemWatcher = new FakeIFileSystemWatcherWrapper()
            {
                CrashOnEnableRaisingEvents = true
            };

            fakeIFileSystemWatcher.EnableRaisingEvents = false;

            var result = new DiskWatcher(fakeIFileSystemWatcher, _scopeFactory).Retry(fakeIFileSystemWatcher, 1, 0);

            Assert.IsFalse(result);
        }
Пример #6
0
        public void OnChanged_Should_Not_HitQueueProcessor_esp()
        {
            var fakeIFileSystemWatcher = new FakeIFileSystemWatcherWrapper()
            {
                CrashOnEnableRaisingEvents = true
            };

            var event1 = new FileSystemEventArgs(WatcherChangeTypes.Changed,
                                                 "t", "test.esp");

            QueueProcessor processor = null;

            // ReSharper disable once ExpressionIsAlwaysNull
            new DiskWatcher(fakeIFileSystemWatcher, new FakeIWebLogger(), processor).OnChanged(null, event1);

            Assert.IsNull(processor);
        }
Пример #7
0
        public void OnRenamed_Should_Not_HitQueueProcessor_FromTmp()
        {
            var fakeIFileSystemWatcher = new FakeIFileSystemWatcherWrapper()
            {
                CrashOnEnableRaisingEvents = true
            };

            // /folder/.syncthing.20211222_112808_DSC00998.jpg.tmp OnRenamed to: /folder/20211222_112808_DSC00998.jpg
            var event1 = new RenamedEventArgs(WatcherChangeTypes.Renamed,
                                              "t", "test2.jpg", ".syncthing.test.jpg.tmp");

            var processor = new FakeIQueueProcessor();

            // ReSharper disable once ExpressionIsAlwaysNull
            new DiskWatcher(fakeIFileSystemWatcher, new FakeIWebLogger(), processor).OnRenamed(null, event1);

            Assert.AreEqual(1, processor.Data.Count);
            Assert.AreEqual($"t{Path.DirectorySeparatorChar}test2.jpg", processor.Data[0].Item1);
            Assert.AreEqual(null, processor.Data[0].Item2);
        }
Пример #8
0
        public void Watcher_Changed()
        {
            var fakeIFileSystemWatcher = new FakeIFileSystemWatcherWrapper();

            new DiskWatcher(fakeIFileSystemWatcher, _scopeFactory).Watcher("/test");

            using var scope = _scopeFactory.CreateScope();
            // ISynchronize is a scoped service
            var synchronize = scope.ServiceProvider.GetRequiredService <ISynchronize>() as FakeISynchronize;

            if (synchronize == null)
            {
                throw new NullReferenceException("FakeISynchronize should not be null ");
            }

            var logger = scope.ServiceProvider.GetRequiredService <IWebLogger>() as FakeIWebLogger;

            fakeIFileSystemWatcher.TriggerOnChanged(new FileSystemEventArgs(WatcherChangeTypes.Changed, "/", "test.jpg"));

            Console.WriteLine(logger.TrackedDebug.LastOrDefault().Item2);
            Assert.IsTrue(logger.TrackedDebug.LastOrDefault().Item2.Contains("/test"));
            Assert.IsTrue(logger.TrackedDebug.LastOrDefault().Item2.Contains("Changed"));
        }