public async Task CreatesEventsFile()
        {
            var repository   = new SqliteRepository();
            var fileProvider = new WindowsFileProvider();
            var eventStore   = new EventSource(repository, fileProvider);

            using var fileWatcher = new WindowsFileSystemWatcher(fileProvider);
            using var file        = new TemporaryFile();

            file.Append("InitialText");
            using var target = new SourceControl(fileProvider, eventStore, fileWatcher);
            await target.Add(file.Fullname);

            Assert.IsTrue(fileProvider.Exists($"{file.Fullname}.events"));
            Assert.IsFalse(fileProvider.IsEmpty($"{file.Fullname}.events"));
        }
Example #2
0
        public async Task PreventsDuplicateEvents()
        {
            var eventCount = 0;

            using (var file = new TemporaryFile())
            {
                var fileProvider = new WindowsFileProvider();
                var target       = new WindowsFileSystemWatcher(fileProvider);
                target.Monitor(file.Fullname);
                target.Changed += (e) => { eventCount++; };

                file.Append("test");
                file.Append("test");
            }
            await Task.Delay(1000); // Gives the OS enough time to dispatch the event

            Assert.AreEqual(1, eventCount);
        }
Example #3
0
 /// <summary>
 /// Start MirrorFreezeCopyService.
 /// </summary>
 public virtual void Start()
 {
     if (this.PostCheck())
     {
         foreach (Watcher runningWatcher in this.listWatcher)
         {
             if (this.CheckWatcherSourceFolderExist(runningWatcher))
             {
                 this.runningWatcherExecute           = new WatcherExecute();
                 this.runningWindowsFileSystemWatcher = new WindowsFileSystemWatcher(this.runningWatcherExecute, this.retryOption);
                 this.runningWindowsFileSystemWatcher.Start(runningWatcher);
                 this.listWatcherExecute.Add(this.runningWatcherExecute);
                 this.listWindowsFileSystemWatcher.Add(this.runningWindowsFileSystemWatcher);
             }
         }
     }
     else
     {
         NLogger.Info("There's no config to be run.");
     }
 }
        public async Task AppendsEvents()
        {
            var repository   = new SqliteRepository();
            var fileProvider = new WindowsFileProvider();
            var eventStore   = new EventSource(repository, fileProvider);

            using var fileWatcher = new WindowsFileSystemWatcher(fileProvider);
            using var file        = new TemporaryFile();

            file.Append("InitialText");
            using var target = new SourceControl(fileProvider, eventStore, fileWatcher);
            await target.Add(file.Fullname);

            file.Append("AdditionalText");

            await Task.Delay(10000);

            var lines = await repository.ReadRecordsAsync($"{file.Fullname}.events").CountAsync();

            Assert.AreEqual(2, lines);
        }