コード例 #1
0
        public void IgnoreExceptionOnDispatcherWhenRemoving()
        {
            factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
            factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
            watcherMock.Expect("StartWatching");
            watcherMock.Expect("StopWatching");
            watcherMock.Expect("Dispose");
            watcherMock.Expect("StartWatching");
            watcherMock.Expect("StopWatching");
            watcherMock.Expect("Dispose");
            ISync canContinue = new Semaphore(0);
            ISync started     = new Semaphore(0);

            AddApplication();
            AddApplication(sampleDir2);
            IDeployEventDispatcher dispatcher = new ExceptionDispatcher(started, canContinue);

            location = new FileSystemDeployLocation(dispatcher, factory, deployPath, true);
            Assert.AreEqual(2, location.Applications.Count);
            Directory.Delete(sampleDir, true);
            started.Acquire();
            canContinue.Release();
            Assert.AreEqual(1, location.Applications.Count);
            Directory.Delete(sampleDir2, true);
            started.Acquire();
            canContinue.Release();
            Assert.AreEqual(0, location.Applications.Count);
        }
コード例 #2
0
 public void ANewWatcherGetsCreatedAndAssociatedToAnyExistingApplication()
 {
     factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
     watcherMock.Expect("StartWatching");
     AddApplication();
     location = new FileSystemDeployLocation(new ForwardingDeployEventDispatcher(), factory, deployPath, true);
 }
コード例 #3
0
 public void ListExistingDirectoriesAsApplications()
 {
     log.Debug("start ListExistingDirectoriesAsApplications");
     AddApplication();
     location = new FileSystemDeployLocation(deployPath);
     Assert.AreEqual(1, location.Applications.Count);
     log.Debug("end ListExistingDirectoriesAsApplications");
 }
コード例 #4
0
        public void CanBeDisposedMoreThanOnce()
        {
            IDeployLocation location = new FileSystemDeployLocation(dispatcher,
                                                                    DefaultApplicationWatcherFactory.Instance, deployPath, true);

            location.Dispose();
            location.Dispose();
        }
コード例 #5
0
        public void CanBeStartedExplicitlyStartedButIsImplicitlyStoppedWhenDisposed()
        {
            FileSystemDeployLocation location = new FileSystemDeployLocation(deployPath);

            location.StartWatching();
            location.Dispose();
            location.StartWatching();
        }
コード例 #6
0
        public void LockFileIsDeletedOnDisposeOrStop()
        {
            FileSystemDeployLocation location =
                new FileSystemDeployLocation(dispatcher, deployPath);

            location.StartWatching();
            location.Dispose();
            Assert.IsFalse(File.Exists(location.LockFileName));
        }
コード例 #7
0
        public void SetUp()
        {
            springAssembliesDeployer = new SpringAssembliesDeployer(".");
            location = new FileSystemDeployLocation(deployPath);
            location.StartWatching();
            sync            = new Latch();
            defaultDeployer = new SyncedDeployer(sync);
            deployManager   = new DeployManager(springAssembliesDeployer, location, defaultDeployer);

            deployManager.Start();
        }
コード例 #8
0
        public void DisposeDispatcherOnDispose()
        {
            DynamicMock            mock       = new DynamicMock(typeof(IDeployEventDispatcher));
            IDeployEventDispatcher dispatcher = (IDeployEventDispatcher)mock.Object;

            mock.Expect("Dispose");
            IDeployLocation location = new FileSystemDeployLocation(dispatcher, deployPath);

            location.Dispose();
            mock.Verify();
        }
コード例 #9
0
 public void OnlyApplicationsWithAManagerSuccesfullyStartedAreListed()
 {
     factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
     watcherMock.ExpectAndThrow("StartWatching", new Exception());
     AddApplication();
     dispatcher.DeployEvent += new DeployEventHandler(dispatcher_DeployEvent);
     location = new FileSystemDeployLocation(dispatcher, factory, deployPath, true);
     triggeredLatch.Acquire();
     Assert.AreEqual(0, location.Applications.Count);
     Assert.IsFalse(deployEventDispatched, "add dispatched in case of error on application watcher");
 }
コード例 #10
0
 public void TheAssociatedWatcherIsStoppedAndDisposedOnDispose()
 {
     factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
     watcherMock.Expect("StartWatching");
     watcherMock.Expect("StopWatching");
     watcherMock.Expect("Dispose");
     AddApplication();
     location = new FileSystemDeployLocation(new ForwardingDeployEventDispatcher(), factory, deployPath, true);
     triggeredLatch.Acquire();
     location.Dispose();
 }
コード例 #11
0
        [Test] // Bug fix
        public void NotInfiniteLoopRemovingAnApplicationWithAManagerThatThrowsExceptionWhenStopped()
        {
            factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
            watcherMock.Expect("StartWatching");
            watcherMock.ExpectAndThrow("StopWatching", new Exception());
            AddApplication();
            ForwardingDeployEventDispatcher dispatcher = new ForwardingDeployEventDispatcher();

            dispatcher.DeployEvent += new DeployEventHandler(dispatcher_DeployEvent);
            location = new FileSystemDeployLocation(dispatcher, factory, deployPath, true);
            Directory.Delete(sampleDir, true);
            forwardDispatcherSync.Acquire();
            Assert.IsTrue(deployEventDispatched, "removal not dispatched in case of error on application watcher");
        }
コード例 #12
0
        public void AnInvalidApplicationIsNotUpdatedNorRemovedButItWillNotBeListed()
        {
            Semaphore sync = new Semaphore(0);

            AddApplication();
            InitHandlerAndStartLocation(sync);
            File.Delete(serviceXml);
            Assert.IsFalse(sync.Attempt(1000), "some events propagated, expecting no one");
            Assert.IsFalse(handler.applicationUpdated, "application wrongly updated");
            Assert.IsFalse(handler.applicationRemoved, "application wrongly removed");
            Assert.AreEqual(0, location.Applications.Count, "application listed");

            location.Dispose();
            location = new FileSystemDeployLocation(deployPath);
            Assert.AreEqual(0, location.Applications.Count, "invalid application listed");
        }
コード例 #13
0
 public void IgnoresExceptionAddingExistingApplication ()
 {
     factoryMock.ExpectAndThrow("CreateApplicationWatcherMonitor", new Exception("exception generated to test behaviour adding application"));
     AddApplication();
     location = new FileSystemDeployLocation (new ForwardingDeployEventDispatcher(), factory, deployPath, true);            
 }
コード例 #14
0
 public void IgnoresExceptionAddingExistingApplication()
 {
     factoryMock.ExpectAndThrow("CreateApplicationWatcherMonitor", new Exception("exception generated to test behaviour adding application"));
     AddApplication();
     location = new FileSystemDeployLocation(new ForwardingDeployEventDispatcher(), factory, deployPath, true);
 }
コード例 #15
0
 public void OnlyApplicationsWithAManagerSuccesfullyStartedAreListed ()
 {
     factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
     watcherMock.ExpectAndThrow("StartWatching", new Exception());
     AddApplication();
     dispatcher.DeployEvent += new DeployEventHandler(dispatcher_DeployEvent);
     location = new FileSystemDeployLocation (dispatcher, factory, deployPath, true);
     triggeredLatch.Acquire();
     Assert.AreEqual(0, location.Applications.Count);
     Assert.IsFalse(deployEventDispatched, "add dispatched in case of error on application watcher");
 }
コード例 #16
0
 public void DisposeDispatcherOnDispose ()
 {
     DynamicMock mock = new DynamicMock (typeof (IDeployEventDispatcher));
     IDeployEventDispatcher dispatcher = (IDeployEventDispatcher) mock.Object;
     mock.Expect ("Dispose");
     IDeployLocation location = new FileSystemDeployLocation (dispatcher, deployPath);
     location.Dispose ();
     mock.Verify ();
 }
コード例 #17
0
        public void SetUp ()
        {
            springAssembliesDeployer = new SpringAssembliesDeployer(".");
            location = new FileSystemDeployLocation(deployPath);
            location.StartWatching();
            sync = new Latch();
            defaultDeployer = new SyncedDeployer(sync);
            deployManager = new DeployManager(springAssembliesDeployer, location, defaultDeployer);

            deployManager.Start();
        }
コード例 #18
0
 public void CanBeStartedExplicitlyStartedButIsImplicitlyStoppedWhenDisposed ()
 {
     FileSystemDeployLocation location = new FileSystemDeployLocation(deployPath);
     location.StartWatching();
     location.Dispose();
     location.StartWatching();
 }
コード例 #19
0
 public void CanBeDisposedMoreThanOnce ()
 {
     IDeployLocation location = new FileSystemDeployLocation(dispatcher, 
         DefaultApplicationWatcherFactory.Instance, deployPath, true);
     location.Dispose();
     location.Dispose();
 }
コード例 #20
0
 public void LockFileIsDeletedOnDisposeOrStop ()
 {
     FileSystemDeployLocation location = 
         new FileSystemDeployLocation (dispatcher, deployPath);
     location.StartWatching ();
     location.Dispose();
     Assert.IsFalse (File.Exists (location.LockFileName));
 }
コード例 #21
0
 public void ListExistingDirectoriesAsApplications ()
 {
     log.Debug ("start ListExistingDirectoriesAsApplications");
     AddApplication ();
     location = new FileSystemDeployLocation (deployPath);
     Assert.AreEqual (1, location.Applications.Count);
     log.Debug ("end ListExistingDirectoriesAsApplications");
 }
コード例 #22
0
 public void TheAssociatedWatcherIsStoppedAndDisposedOnDispose ()
 {
     factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
     watcherMock.Expect("StartWatching");
     watcherMock.Expect("StopWatching");
     watcherMock.Expect("Dispose");
     AddApplication();
     location = new FileSystemDeployLocation (new ForwardingDeployEventDispatcher(), factory, deployPath, true);
     triggeredLatch.Acquire();
     location.Dispose();
 }        
コード例 #23
0
 public void ANewWatcherGetsCreatedAndAssociatedToAnyExistingApplication ()
 {
     factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
     watcherMock.Expect("StartWatching");
     AddApplication ();
     location = new FileSystemDeployLocation (new ForwardingDeployEventDispatcher(), factory, deployPath, true);
 }
コード例 #24
0
 [Test] // Bug fix
 public void NotInfiniteLoopRemovingAnApplicationWithAManagerThatThrowsExceptionWhenDisposed ()
 {
     factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
     watcherMock.Expect("StartWatching");
     watcherMock.Expect("StopWatching");
     watcherMock.ExpectAndThrow("Dispose", new Exception());
     AddApplication();
     ForwardingDeployEventDispatcher dispatcher = new ForwardingDeployEventDispatcher();
     dispatcher.DeployEvent += new DeployEventHandler(dispatcher_DeployEvent);
     location = new FileSystemDeployLocation (dispatcher, factory, deployPath, true);
     Directory.Delete(sampleDir, true);
     forwardDispatcherSync.Acquire();
     Assert.IsTrue(deployEventDispatched, "removal not dispatched in case of error on application watcher");
 }
コード例 #25
0
        public void AnInvalidApplicationIsNotUpdatedNorRemovedButItWillNotBeListed ()
        {
            Semaphore sync = new Semaphore (0);
            AddApplication();
            InitHandlerAndStartLocation (sync);
            File.Delete(serviceXml);
            Assert.IsFalse(sync.Attempt(1000), "some events propagated, expecting no one");
            Assert.IsFalse (handler.applicationUpdated, "application wrongly updated");
            Assert.IsFalse(handler.applicationRemoved, "application wrongly removed");
            Assert.AreEqual (0, location.Applications.Count, "application listed");

            location.Dispose();            
            location = new FileSystemDeployLocation (deployPath);
            Assert.AreEqual (0, location.Applications.Count, "invalid application listed");
        }
コード例 #26
0
 public void IgnoreExceptionOnDispatcherWhenRemoving ()
 {
     factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
     factoryMock.ExpectAndReturn("CreateApplicationWatcherMonitor", watcher);
     watcherMock.Expect("StartWatching");
     watcherMock.Expect("StopWatching");
     watcherMock.Expect("Dispose");
     watcherMock.Expect("StartWatching");
     watcherMock.Expect("StopWatching");
     watcherMock.Expect("Dispose");
     ISync canContinue = new Semaphore(0);
     ISync started = new Semaphore(0);
     AddApplication();
     AddApplication(sampleDir2);
     IDeployEventDispatcher dispatcher = new ExceptionDispatcher(started, canContinue);
     location = new FileSystemDeployLocation (dispatcher, factory, deployPath, true);
     Assert.AreEqual(2, location.Applications.Count);
     Directory.Delete(sampleDir, true);
     started.Acquire();
     canContinue.Release();
     Assert.AreEqual(1, location.Applications.Count);
     Directory.Delete(sampleDir2, true);
     started.Acquire();
     canContinue.Release();
     Assert.AreEqual(0, location.Applications.Count);
 }
コード例 #27
0
 protected void InitHandler(ISync sync)
 {
     location = new FileSystemDeployLocation(dispatcher, deployPath);
     handler  = NewHandler(sync);
 }
コード例 #28
0
 protected void InitHandler (ISync sync)
 {
     location = new FileSystemDeployLocation (dispatcher, deployPath);
     handler = NewHandler (sync);
 }