public void EventsGetForwarded() {
     var manager = new Mock<ISyncEventManager>();
     var queue = new SingleStepEventQueue(manager.Object);
     var syncEvent = new Mock<ISyncEvent>();
     queue.AddEvent(syncEvent.Object);
     queue.Step();
     manager.Verify(m => m.Handle(syncEvent.Object), Times.Once());
 }
 public void StartAndStopWorks() {
     var manager = new Mock<ISyncEventManager>();
     var queue = new SingleStepEventQueue(manager.Object);
     var syncEvent = new Mock<ISyncEvent>();
     queue.AddEvent(syncEvent.Object);
     Assert.That(queue.IsStopped, Is.False, "Queue should not start immediatly");
     queue.Step();
     Assert.That(queue.IsStopped, Is.True, "Queue should be Stopped if empty again");
 }
Ejemplo n.º 3
0
        public void QueueSwallowsExceptionsIfConfigured()
        {
            var manager = new Mock <ISyncEventManager>();

            manager.Setup(m => m.Handle(It.IsAny <ISyncEvent>())).Throws(new Exception());
            var queue = new SingleStepEventQueue(manager.Object);

            queue.SwallowExceptions = true;
            queue.RunStartSyncEvent();
        }
Ejemplo n.º 4
0
        public void EventsGetForwarded()
        {
            var manager   = new Mock <ISyncEventManager>();
            var queue     = new SingleStepEventQueue(manager.Object);
            var syncEvent = new Mock <ISyncEvent>();

            queue.AddEvent(syncEvent.Object);
            queue.Step();
            manager.Verify(m => m.Handle(syncEvent.Object), Times.Once());
        }
Ejemplo n.º 5
0
        public void Init()
        {
            this.subfolder = SubfolderBase + Guid.NewGuid().ToString();
            Console.WriteLine("Working on " + this.subfolder);

            // RepoInfo
            this.repoInfo = new RepoInfo {
                AuthenticationType = AuthenticationType.BASIC,
                LocalPath          = Path.Combine(config[1].ToString(), this.subfolder),
                RemotePath         = config[2].ToString() + "/" + this.subfolder,
                Address            = new XmlUri(new Uri(config[3].ToString())),
                User         = config[4].ToString(),
                RepositoryId = config[6].ToString()
            };
            this.repoInfo.RemotePath = this.repoInfo.RemotePath.Replace("//", "/");
            this.repoInfo.SetPassword(config[5].ToString());

            // FileSystemDir
            this.localRootDir = new DirectoryInfo(this.repoInfo.LocalPath);
            this.localRootDir.Create();

            // Repo
            var activityListener    = new Mock <IActivityListener>();
            var transmissionManager = new ActiveActivitiesManager();
            var activityAggregator  = new ActivityListenerAggregator(activityListener.Object, transmissionManager);
            var queue = new SingleStepEventQueue(new SyncEventManager());

            this.repo = new CmisRepoMock(this.repoInfo, activityAggregator, queue);

            // Session
            var cmisParameters = new Dictionary <string, string>();

            cmisParameters[SessionParameter.BindingType]  = BindingType.AtomPub;
            cmisParameters[SessionParameter.AtomPubUrl]   = this.repoInfo.Address.ToString();
            cmisParameters[SessionParameter.User]         = this.repoInfo.User;
            cmisParameters[SessionParameter.Password]     = this.repoInfo.GetPassword().ToString();
            cmisParameters[SessionParameter.RepositoryId] = this.repoInfo.RepositoryId;

            SessionFactory factory = SessionFactory.NewInstance();

            this.session = factory.CreateSession(cmisParameters);

            IFolder root = (IFolder)this.session.GetObjectByPath(config[2].ToString());

            foreach (var child in root.GetChildren())
            {
                if (child is IFolder && child.Name == this.subfolder)
                {
                    (child as IFolder).DeleteTree(true, null, true);
                }
            }

            root.Refresh();
            this.remoteRootDir = root.CreateFolder(this.subfolder);
        }
        public void StartAndStopWorks()
        {
            var manager   = new Mock <ISyncEventManager>();
            var queue     = new SingleStepEventQueue(manager.Object);
            var syncEvent = new Mock <ISyncEvent>();

            queue.AddEvent(syncEvent.Object);
            Assert.That(queue.IsStopped, Is.False, "Queue should not start immediatly");
            queue.Step();
            Assert.That(queue.IsStopped, Is.True, "Queue should be Stopped if empty again");
        }
 public void QueueIsFifo() {
     var manager = new Mock<ISyncEventManager>();
     var queue = new SingleStepEventQueue(manager.Object);
     var syncEvent1 = new Mock<ISyncEvent>();
     var syncEvent2 = new Mock<ISyncEvent>();
     queue.AddEvent(syncEvent1.Object);
     queue.AddEvent(syncEvent2.Object);
     queue.Step();
     manager.Verify(m => m.Handle(syncEvent1.Object), Times.Once());
     manager.Verify(m => m.Handle(syncEvent2.Object), Times.Never());
     queue.Step();
     manager.Verify(m => m.Handle(syncEvent1.Object), Times.Once());
     manager.Verify(m => m.Handle(syncEvent2.Object), Times.Once());
 }
        public void QueueIsFifo()
        {
            var manager    = new Mock <ISyncEventManager>();
            var queue      = new SingleStepEventQueue(manager.Object);
            var syncEvent1 = new Mock <ISyncEvent>();
            var syncEvent2 = new Mock <ISyncEvent>();

            queue.AddEvent(syncEvent1.Object);
            queue.AddEvent(syncEvent2.Object);
            queue.Step();
            manager.Verify(m => m.Handle(syncEvent1.Object), Times.Once());
            manager.Verify(m => m.Handle(syncEvent2.Object), Times.Never());
            queue.Step();
            manager.Verify(m => m.Handle(syncEvent1.Object), Times.Once());
            manager.Verify(m => m.Handle(syncEvent2.Object), Times.Once());
        }
Ejemplo n.º 9
0
        private void WaitUntilQueueIsNotEmpty(SingleStepEventQueue queue, int timeout = 10000)
        {
            int waited = 0;

            while (queue.Queue.IsEmpty)
            {
                int interval = 20;

                // Wait for event to kick in
                Thread.Sleep(interval);
                waited += interval;
                if (waited > timeout)
                {
                    Assert.Fail("Timeout exceeded");
                }
            }
        }
        public void DropAllFSEventsIfConfigured([Values(true, false)] bool dropAll)
        {
            var manager = new SyncEventManager();
            var handler = new Mock <SyncEventHandler>()
            {
                CallBase = true
            };

            handler.Setup(h => h.Priority).Returns(EventHandlerPriorities.CRITICAL);
            var underTest = new SingleStepEventQueue(manager);

            manager.AddEventHandler(handler.Object);

            underTest.DropAllLocalFileSystemEvents = dropAll;
            underTest.AddEvent(Mock.Of <IFSEvent>());
            underTest.AddEvent(Mock.Of <ISyncEvent>());
            underTest.Run();

            handler.Verify(h => h.Handle(It.IsAny <IFSEvent>()), dropAll ? Times.Never() : Times.Once());
            handler.Verify(h => h.Handle(It.IsAny <ISyncEvent>()), dropAll ? Times.Once() : Times.Exactly(2));
        }
Ejemplo n.º 11
0
        protected void WaitUntilQueueIsNotEmpty(SingleStepEventQueue queue = null, int timeout = 10000)
        {
            if (queue == null)
            {
                queue = this.repo.SingleStepQueue;
            }

            int waited = 0;

            while (queue.Queue.IsEmpty)
            {
                int interval = 20;

                // Wait for event to kick in
                Thread.Sleep(interval);
                waited += interval;
                if (waited > timeout)
                {
                    Assert.Fail("Timeout exceeded");
                }
            }
        }
Ejemplo n.º 12
0
        private void SetupMocks()
        {
            this.listener = new ActivityListenerAggregator(Mock.Of <IActivityListener>(), new TransmissionManager());
            var subfolder = Guid.NewGuid().ToString();

            this.queue = new SingleStepEventQueue(new SyncEventManager());
            this.queue.SwallowExceptions = true;
            this.repoInfo = new RepoInfo {
                AuthenticationType = AuthenticationType.BASIC,
                LocalPath          = Path.Combine(config[1].ToString(), subfolder),
                RemotePath         = config[2].ToString() + "/" + subfolder,
                Address            = new XmlUri(new Uri(config[3].ToString())),
                User         = config[4].ToString(),
                RepositoryId = config[6].ToString()
            };

            // FileSystemDir
            this.localPath = new DirectoryInfo(this.repoInfo.LocalPath);
            this.localPath.Create();
            if (!new DirectoryInfoWrapper(this.localPath).IsExtendedAttributeAvailable())
            {
                Assert.Fail(string.Format("The local path {0} does not support extended attributes", this.localPath.FullName));
            }
        }
Ejemplo n.º 13
0
 public CmisRepoMock(RepoInfo repoInfo, ActivityListenerAggregator activityListener, SingleStepEventQueue queue) : base(repoInfo, activityListener, true, queue)
 {
     this.SingleStepQueue = queue;
 }
Ejemplo n.º 14
0
        public void Init()
        {
            string testName = this.GetType().Name;

            object[] attributes = this.GetType().GetCustomAttributes(true);
            foreach (var attr in attributes)
            {
                if (attr is TestNameAttribute)
                {
                    testName = (attr as TestNameAttribute).Name;
                }
            }

            this.subfolder = testName + "_" + Guid.NewGuid().ToString();
            Console.WriteLine("Working on " + this.subfolder);

            // RepoInfo
            this.repoInfo = new RepoInfo {
                AuthenticationType = AuthenticationType.BASIC,
                LocalPath          = Path.Combine(config[1].ToString(), this.subfolder),
                RemotePath         = config[2].ToString() + "/" + this.subfolder,
                Address            = new XmlUri(new Uri(config[3].ToString())),
                User         = config[4].ToString(),
                RepositoryId = config[6].ToString(),
                Binding      = config[7] != null ? config[7].ToString() : BindingType.AtomPub
            };
            this.repoInfo.RemotePath = this.repoInfo.RemotePath.Replace("//", "/");
            this.repoInfo.SetPassword(config[5].ToString());

            // FileSystemDir
            this.localRootDir = new DirectoryInfo(this.repoInfo.LocalPath);
            this.localRootDir.Create();
            if (!new DirectoryInfoWrapper(this.localRootDir).IsExtendedAttributeAvailable())
            {
                Assert.Fail(string.Format("The local path {0} does not support extended attributes", this.localRootDir.FullName));
            }

            // Repo
            var activityListener = new Mock <IActivityListener>();

            this.transmissionManager = new TransmissionManager();
            var activityAggregator = new ActivityListenerAggregator(activityListener.Object, this.transmissionManager);
            var queue = new SingleStepEventQueue(new SyncEventManager());

            this.repo = new FullRepoTests.CmisRepoMock(this.repoInfo, activityAggregator, queue);

            // Session
            var cmisParameters = new Dictionary <string, string>();

            cmisParameters[SessionParameter.BindingType] = repoInfo.Binding;
            switch (repoInfo.Binding)
            {
            case BindingType.AtomPub:
                cmisParameters[SessionParameter.AtomPubUrl] = this.repoInfo.Address.ToString();
                break;

            case BindingType.Browser:
                cmisParameters[SessionParameter.BrowserUrl] = this.repoInfo.Address.ToString();
                break;

            default:
                Assert.Fail(string.Format("Unknown binding type {0}", repoInfo.Binding));
                break;
            }

            cmisParameters[SessionParameter.User]         = this.repoInfo.User;
            cmisParameters[SessionParameter.Password]     = this.repoInfo.GetPassword().ToString();
            cmisParameters[SessionParameter.RepositoryId] = this.repoInfo.RepositoryId;
            cmisParameters[SessionParameter.UserAgent]    = Utils.CreateUserAgent();

            SessionFactory factory = SessionFactory.NewInstance();

            this.session = factory.CreateSession(cmisParameters);
            this.ContentChangesActive = this.session.AreChangeEventsSupported();
            IFolder root = (IFolder)this.session.GetObjectByPath(config[2].ToString());

            this.remoteRootDir = root.CreateFolder(this.subfolder);
        }
Ejemplo n.º 15
0
        private SingleStepEventQueue CreateQueue(Mock <ISession> session, IMetaDataStorage storage, ObservableHandler observer, IFileSystemInfoFactory fsFactory = null)
        {
            var manager = new SyncEventManager();
            SingleStepEventQueue queue = new SingleStepEventQueue(manager);

            manager.AddEventHandler(observer);

            var connectionScheduler = new ConnectionScheduler(new RepoInfo(), queue, Mock.Of <ISessionFactory>(), Mock.Of <IAuthenticationProvider>());

            manager.AddEventHandler(connectionScheduler);

            var changes = new ContentChanges(session.Object, storage, queue, this.maxNumberOfContentChanges, this.isPropertyChangesSupported);

            manager.AddEventHandler(changes);

            var transformer = new ContentChangeEventTransformer(queue, storage, fsFactory);

            manager.AddEventHandler(transformer);

            var ccaccumulator = new ContentChangeEventAccumulator(session.Object, queue);

            manager.AddEventHandler(ccaccumulator);

            var remoteFetcher = new RemoteObjectFetcher(session.Object, storage);

            manager.AddEventHandler(remoteFetcher);

            var localFetcher = new LocalObjectFetcher(storage.Matcher, fsFactory);

            manager.AddEventHandler(localFetcher);

            var watcher = new Strategy.WatcherConsumer(queue);

            manager.AddEventHandler(watcher);

            var localDetection      = new LocalSituationDetection();
            var remoteDetection     = new RemoteSituationDetection();
            var transmissionManager = new ActiveActivitiesManager();
            var activityAggregator  = new ActivityListenerAggregator(Mock.Of <IActivityListener>(), transmissionManager);

            var ignoreFolderFilter      = new IgnoredFoldersFilter();
            var ignoreFolderNameFilter  = new IgnoredFolderNameFilter();
            var ignoreFileNamesFilter   = new IgnoredFileNamesFilter();
            var invalidFolderNameFilter = new InvalidFolderNameFilter();
            var filterAggregator        = new FilterAggregator(ignoreFileNamesFilter, ignoreFolderNameFilter, invalidFolderNameFilter, ignoreFolderFilter);

            var syncMechanism = new SyncMechanism(localDetection, remoteDetection, queue, session.Object, storage, activityAggregator, filterAggregator, isServerAbleToUpdateModificationDate: true);

            manager.AddEventHandler(syncMechanism);

            var remoteFolder = MockSessionUtil.CreateCmisFolder();

            var localFolder = new Mock <IDirectoryInfo>();
            var generator   = new CrawlEventGenerator(storage, fsFactory);
            var treeBuilder = new DescendantsTreeBuilder(storage, remoteFolder.Object, localFolder.Object, filterAggregator);
            var notifier    = new CrawlEventNotifier(queue);
            var crawler     = new DescendantsCrawler(queue, treeBuilder, generator, notifier, Mock.Of <IActivityListener>());

            manager.AddEventHandler(crawler);

            var permissionDenied = new GenericHandleDublicatedEventsFilter <PermissionDeniedEvent, ConfigChangedEvent>();

            manager.AddEventHandler(permissionDenied);

            var alreadyAddedFilter = new IgnoreAlreadyHandledFsEventsFilter(storage, fsFactory);

            manager.AddEventHandler(alreadyAddedFilter);

            var ignoreContentChangesFilter = new IgnoreAlreadyHandledContentChangeEventsFilter(storage, session.Object);

            manager.AddEventHandler(ignoreContentChangesFilter);

            var delayRetryAndNextSyncEventHandler = new DelayRetryAndNextSyncEventHandler(queue);

            manager.AddEventHandler(delayRetryAndNextSyncEventHandler);

            /* This is not implemented yet
             * var failedOperationsFilder = new FailedOperationsFilter(queue);
             * manager.AddEventHandler(failedOperationsFilder);
             */

            var reportingFilter = new ReportingFilter(queue, ignoreFolderFilter, ignoreFileNamesFilter, ignoreFolderNameFilter, invalidFolderNameFilter);

            manager.AddEventHandler(reportingFilter);

            var debugHandler = new DebugLoggingHandler();

            manager.AddEventHandler(debugHandler);

            var movedOrRenamed = new RemoteObjectMovedOrRenamedAccumulator(queue, storage, fsFactory);

            manager.AddEventHandler(movedOrRenamed);

            return(queue);
        }
Ejemplo n.º 16
0
        private ObservableHandler RunQueue(Mock<ISession> session, Mock<IMetaDataStorage> storage) {
            var manager = new SyncEventManager();

            var observer = new ObservableHandler();
            manager.AddEventHandler(observer);

            SingleStepEventQueue queue = new SingleStepEventQueue(manager);

            var changes = new ContentChanges(session.Object, storage.Object, queue, this.maxNumberOfContentChanges, this.isPropertyChangesSupported);
            manager.AddEventHandler(changes);

            var transformer = new ContentChangeEventTransformer(queue, storage.Object);
            manager.AddEventHandler(transformer);

            var accumulator = new ContentChangeEventAccumulator(session.Object, queue);
            manager.AddEventHandler(accumulator);

            queue.RunStartSyncEvent();

            return observer;
        }
Ejemplo n.º 17
0
 public TestRepository(
     RepoInfo repoInfo,
     ActivityListenerAggregator activityListener,
     SingleStepEventQueue queue) : base(repoInfo, activityListener, true, queue)
 {
 }
 public void QueueSwallowsExceptionsIfConfigured() {
     var manager = new Mock<ISyncEventManager>();
     manager.Setup(m => m.Handle(It.IsAny<ISyncEvent>())).Throws(new Exception());
     var queue = new SingleStepEventQueue(manager.Object);
     queue.SwallowExceptions = true;
     queue.RunStartSyncEvent();
 }
Ejemplo n.º 19
0
        public void Init() {
            string testName = this.GetType().Name;
            object[] attributes = this.GetType().GetCustomAttributes(true);
            foreach (var attr in attributes) {
                if (attr is TestNameAttribute) {
                    testName = (attr as TestNameAttribute).Name;
                }
            }

            this.subfolder = testName + "_" + Guid.NewGuid().ToString();
            Console.WriteLine("Working on " + this.subfolder);

            // RepoInfo
            this.repoInfo = new RepoInfo {
                AuthenticationType = AuthenticationType.BASIC,
                LocalPath = Path.Combine(config[1].ToString(), this.subfolder),
                RemotePath = config[2].ToString() + "/" + this.subfolder,
                Address = new XmlUri(new Uri(config[3].ToString())),
                User = config[4].ToString(),
                RepositoryId = config[6].ToString(),
                Binding = config[7] != null ? config[7].ToString() : BindingType.AtomPub
            };
            this.repoInfo.RemotePath = this.repoInfo.RemotePath.Replace("//", "/");
            this.repoInfo.SetPassword(config[5].ToString());

            // FileSystemDir
            this.localRootDir = new DirectoryInfo(this.repoInfo.LocalPath);
            this.localRootDir.Create();
            if (!new DirectoryInfoWrapper(this.localRootDir).IsExtendedAttributeAvailable()) {
                Assert.Fail(string.Format("The local path {0} does not support extended attributes", this.localRootDir.FullName));
            }

            // Repo
            var activityListener = new Mock<IActivityListener>();
            this.transmissionManager = new TransmissionManager();
            var activityAggregator = new ActivityListenerAggregator(activityListener.Object, this.transmissionManager);
            var queue = new SingleStepEventQueue(new SyncEventManager());

            this.repo = new FullRepoTests.CmisRepoMock(this.repoInfo, activityAggregator, queue);

            // Session
            var cmisParameters = new Dictionary<string, string>();
            cmisParameters[SessionParameter.BindingType] = repoInfo.Binding;
            switch (repoInfo.Binding) {
            case BindingType.AtomPub:
                cmisParameters[SessionParameter.AtomPubUrl] = this.repoInfo.Address.ToString();
                break;
            case BindingType.Browser:
                cmisParameters[SessionParameter.BrowserUrl] = this.repoInfo.Address.ToString();
                break;
            default:
                Assert.Fail(string.Format("Unknown binding type {0}", repoInfo.Binding));
                break;
            }

            cmisParameters[SessionParameter.User] = this.repoInfo.User;
            cmisParameters[SessionParameter.Password] = this.repoInfo.GetPassword().ToString();
            cmisParameters[SessionParameter.RepositoryId] = this.repoInfo.RepositoryId;
            cmisParameters[SessionParameter.UserAgent] = Utils.CreateUserAgent();

            SessionFactory factory = SessionFactory.NewInstance();
            this.session = factory.CreateSession(cmisParameters);
            this.ContentChangesActive = this.session.AreChangeEventsSupported();
            IFolder root = (IFolder)this.session.GetObjectByPath(config[2].ToString());
            this.remoteRootDir = root.CreateFolder(this.subfolder);
        }
Ejemplo n.º 20
0
        protected void WaitUntilQueueIsNotEmpty(SingleStepEventQueue queue = null, int timeout = 10000) {
            if (queue == null) {
                queue = this.repo.SingleStepQueue;
            }

            int waited = 0;
            while (queue.Queue.IsEmpty)
            {
                int interval = 20;

                // Wait for event to kick in
                Thread.Sleep(interval);
                waited += interval;
                if (waited > timeout) {
                    Assert.Fail("Timeout exceeded");
                }
            }
        }
Ejemplo n.º 21
0
        private SingleStepEventQueue CreateQueue(Mock<ISession> session, IMetaDataStorage storage, ObservableHandler observer, IFileSystemInfoFactory fsFactory = null) {
            var manager = new SyncEventManager();
            SingleStepEventQueue queue = new SingleStepEventQueue(manager);

            manager.AddEventHandler(observer);

            var connectionScheduler = new ConnectionScheduler(new RepoInfo(), queue, Mock.Of<ISessionFactory>(), Mock.Of<IAuthenticationProvider>());
            manager.AddEventHandler(connectionScheduler);

            var changes = new ContentChanges(session.Object, storage, queue, this.maxNumberOfContentChanges, this.isPropertyChangesSupported);
            manager.AddEventHandler(changes);

            var transformer = new ContentChangeEventTransformer(queue, storage, fsFactory);
            manager.AddEventHandler(transformer);

            var ccaccumulator = new ContentChangeEventAccumulator(session.Object, queue);
            manager.AddEventHandler(ccaccumulator);

            var remoteFetcher = new RemoteObjectFetcher(session.Object, storage);
            manager.AddEventHandler(remoteFetcher);

            var localFetcher = new LocalObjectFetcher(storage.Matcher, fsFactory);
            manager.AddEventHandler(localFetcher);

            var watcher = new Strategy.WatcherConsumer(queue);
            manager.AddEventHandler(watcher);

            var localDetection = new LocalSituationDetection();
            var remoteDetection = new RemoteSituationDetection();
            var transmissionManager = new TransmissionManager();
            var activityAggregator = new ActivityListenerAggregator(Mock.Of<IActivityListener>(), transmissionManager);

            var ignoreFolderFilter = new IgnoredFoldersFilter();
            var ignoreFolderNameFilter = new IgnoredFolderNameFilter();
            var ignoreFileNamesFilter = new IgnoredFileNamesFilter();
            var invalidFolderNameFilter = new InvalidFolderNameFilter();
            var filterAggregator = new FilterAggregator(ignoreFileNamesFilter, ignoreFolderNameFilter, invalidFolderNameFilter, ignoreFolderFilter);

            var syncMechanism = new SyncMechanism(localDetection, remoteDetection, queue, session.Object, storage, Mock.Of<IFileTransmissionStorage>(), activityAggregator, filterAggregator);
            manager.AddEventHandler(syncMechanism);

            var remoteFolder = MockSessionUtil.CreateCmisFolder();
            remoteFolder.Setup(r => r.Path).Returns(this.remoteRoot);
            var localFolder = new Mock<IDirectoryInfo>();
            localFolder.Setup(f => f.FullName).Returns(this.localRoot);
            var generator = new CrawlEventGenerator(storage, fsFactory);
            var ignoreStorage = new IgnoredEntitiesStorage(new IgnoredEntitiesCollection(), storage);
            var treeBuilder = new DescendantsTreeBuilder(storage, remoteFolder.Object, localFolder.Object, filterAggregator, ignoreStorage);
            var notifier = new CrawlEventNotifier(queue);
            var crawler = new DescendantsCrawler(queue, treeBuilder, generator, notifier, Mock.Of<IActivityListener>());
            manager.AddEventHandler(crawler);

            var permissionDenied = new GenericHandleDublicatedEventsFilter<PermissionDeniedEvent, ConfigChangedEvent>();
            manager.AddEventHandler(permissionDenied);

            var alreadyAddedFilter = new IgnoreAlreadyHandledFsEventsFilter(storage, fsFactory);
            manager.AddEventHandler(alreadyAddedFilter);

            var ignoreContentChangesFilter = new IgnoreAlreadyHandledContentChangeEventsFilter(storage, session.Object);
            manager.AddEventHandler(ignoreContentChangesFilter);

            var delayRetryAndNextSyncEventHandler = new DelayRetryAndNextSyncEventHandler(queue);
            manager.AddEventHandler(delayRetryAndNextSyncEventHandler);

            /* This is not implemented yet
            var failedOperationsFilder = new FailedOperationsFilter(queue);
            manager.AddEventHandler(failedOperationsFilder);
            */

            var reportingFilter = new ReportingFilter(queue, ignoreFolderFilter, ignoreFileNamesFilter, ignoreFolderNameFilter, invalidFolderNameFilter, new SymlinkFilter());
            manager.AddEventHandler(reportingFilter);

            var debugHandler = new DebugLoggingHandler();
            manager.AddEventHandler(debugHandler);

            var movedOrRenamed = new RemoteObjectMovedOrRenamedAccumulator(queue, storage, fsFactory);
            manager.AddEventHandler(movedOrRenamed);

            return queue;
        }
Ejemplo n.º 22
0
 public CmisRepoMock(RepoInfo repoInfo, ActivityListenerAggregator activityListener, SingleStepEventQueue queue) : base(repoInfo, activityListener, true, queue) {
     this.SingleStepQueue = queue;
 }
 public void InitialState() {
     var manager = new Mock<ISyncEventManager>();
     var queue = new SingleStepEventQueue(manager.Object);
     Assert.That(queue.IsStopped, Is.True, "Queue starts stopped");
 }
        public void DropAllFSEventsIfConfigured([Values(true, false)]bool dropAll) {
            var manager = new SyncEventManager();
            var handler = new Mock<SyncEventHandler>() { CallBase = true };
            handler.Setup(h => h.Priority).Returns(EventHandlerPriorities.CRITICAL);
            var underTest = new SingleStepEventQueue(manager);
            manager.AddEventHandler(handler.Object);

            underTest.DropAllLocalFileSystemEvents = dropAll;
            underTest.AddEvent(Mock.Of<IFSEvent>());
            underTest.AddEvent(Mock.Of<ISyncEvent>());
            underTest.Run();

            handler.Verify(h => h.Handle(It.IsAny<IFSEvent>()), dropAll ? Times.Never() : Times.Once());
            handler.Verify(h => h.Handle(It.IsAny<ISyncEvent>()), dropAll ? Times.Once() : Times.Exactly(2));
        }
Ejemplo n.º 25
0
        private void SetupMocks() {
            this.listener = new ActivityListenerAggregator(Mock.Of<IActivityListener>(), new TransmissionManager());
            var subfolder = Guid.NewGuid().ToString();
            this.queue = new SingleStepEventQueue(new SyncEventManager());
            this.queue.SwallowExceptions = true;
            this.repoInfo = new RepoInfo {
                AuthenticationType = AuthenticationType.BASIC,
                LocalPath = Path.Combine(config[1].ToString(), subfolder),
                RemotePath = config[2].ToString() + "/" + subfolder,
                Address = new XmlUri(new Uri(config[3].ToString())),
                User = config[4].ToString(),
                RepositoryId = config[6].ToString()
            };

            // FileSystemDir
            this.localPath = new DirectoryInfo(this.repoInfo.LocalPath);
            this.localPath.Create();
            if (!new DirectoryInfoWrapper(this.localPath).IsExtendedAttributeAvailable()) {
                Assert.Fail(string.Format("The local path {0} does not support extended attributes", this.localPath.FullName));
            }
        }
Ejemplo n.º 26
0
 public TestRepository(
     RepoInfo repoInfo,
     ActivityListenerAggregator activityListener,
     SingleStepEventQueue queue) : base(repoInfo, activityListener, true, queue) {
 }
 public void QueueRethrowsExceptionsByDefault() {
     var manager = new Mock<ISyncEventManager>();
     manager.Setup(m => m.Handle(It.IsAny<ISyncEvent>())).Throws<Exception>();
     var queue = new SingleStepEventQueue(manager.Object);
     Assert.Throws<Exception>(() => queue.RunStartSyncEvent());
 }