Beispiel #1
0
        public void RemoveProjectClearsOnlyItemsThatAreForThisProject()
        {
            queueNotifier1Mock.Expect("NotifyEnteringIntegrationQueue");
            queueNotifier1Mock.Expect("NotifyExitingIntegrationQueue", false);
            integrationQueueUseFirst.Enqueue(integrationQueueItem1);

            // Second item is different project but same queue
            project2Mock.SetupResult("QueueName", TestQueueName);
            queueNotifier2Mock.Expect("NotifyEnteringIntegrationQueue");
            queueNotifier2Mock.ExpectNoCall("NotifyExitingIntegrationQueue", typeof(bool));
            integrationQueueUseFirst.Enqueue(integrationQueueItem2);

            // Third item is same project as the first.
            IIntegrationQueueItem thirdQueueItem = new IntegrationQueueItem((IProject)project1Mock.MockInstance,
                                                                            integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier3Mock.MockInstance);

            queueNotifier3Mock.Expect("NotifyEnteringIntegrationQueue");
            queueNotifier3Mock.Expect("NotifyExitingIntegrationQueue", true);
            integrationQueueUseFirst.Enqueue(thirdQueueItem);

            integrationQueueUseFirst.RemoveProject((IProject)project1Mock.MockInstance);

            IIntegrationQueueItem[] itemsOnQueue = integrationQueueUseFirst.GetQueuedIntegrations();
            Assert.AreEqual(1, itemsOnQueue.Length);
            Assert.AreSame(integrationQueueItem2, itemsOnQueue[0]);

            VerifyAll();
        }
Beispiel #2
0
        public void RemovePendingRequestOnly()
        {
            queueNotifier1Mock.Expect("NotifyEnteringIntegrationQueue");
            queueNotifier1Mock.ExpectNoCall("NotifyExitingIntegrationQueue", typeof(bool));
            integrationQueueUseFirst.Enqueue(integrationQueueItem1);

            // Second item is same project
            IIntegrationQueueItem secondQueueItem = new IntegrationQueueItem((IProject)project1Mock.MockInstance,
                                                                             integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier2Mock.MockInstance);

            queueNotifier2Mock.Expect("NotifyEnteringIntegrationQueue");
            queueNotifier2Mock.Expect("NotifyExitingIntegrationQueue", true);
            integrationQueueUseFirst.Enqueue(secondQueueItem);

            IIntegrationQueueItem[] itemsOnQueue = integrationQueueUseFirst.GetQueuedIntegrations();
            Assert.AreEqual(2, itemsOnQueue.Length);

            integrationQueueUseFirst.RemovePendingRequest((IProject)project1Mock.MockInstance);

            itemsOnQueue = integrationQueueUseFirst.GetQueuedIntegrations();
            Assert.AreEqual(1, itemsOnQueue.Length);
            Assert.AreSame(integrationQueueItem1, itemsOnQueue[0]);

            VerifyAll();
        }
Beispiel #3
0
        public void NoMoreThanOnePendingIntegrationForAProject()
        {
            // Setup the first request
            queueNotifier1Mock.Expect("NotifyEnteringIntegrationQueue");
            queueNotifier1Mock.ExpectNoCall("NotifyExitingIntegrationQueue", typeof(bool));
            integrationQueueUseFirst.Enqueue(integrationQueueItem1);
            // Add a second request for same project
            IIntegrationQueueItem secondQueueItem = new IntegrationQueueItem((IProject)project1Mock.MockInstance,
                                                                             integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier1Mock.MockInstance);

            queueNotifier1Mock.Expect("NotifyEnteringIntegrationQueue");
            queueNotifier1Mock.ExpectNoCall("NotifyExitingIntegrationQueue", typeof(bool));
            integrationQueueUseFirst.Enqueue(secondQueueItem);
            // Try to add a third request for same project
            IIntegrationQueueItem thirdQueueItem = new IntegrationQueueItem((IProject)project1Mock.MockInstance,
                                                                            integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier1Mock.MockInstance);

            queueNotifier1Mock.ExpectNoCall("NotifyEnteringIntegrationQueue");
            queueNotifier1Mock.ExpectNoCall("NotifyExitingIntegrationQueue", typeof(bool));
            integrationQueueUseFirst.Enqueue(thirdQueueItem);

            IIntegrationQueueItem[] itemsOnQueue = integrationQueueUseFirst.GetQueuedIntegrations();
            Assert.AreEqual(2, itemsOnQueue.Length);
            Assert.AreSame(integrationQueueItem1, itemsOnQueue[0]);
            Assert.AreSame(secondQueueItem, itemsOnQueue[1]);

            VerifyAll();
        }
        public void RemovePendingRequestOnly()
        {
            queueNotifier1Mock.Setup(notifier => notifier.NotifyEnteringIntegrationQueue()).Verifiable();
            integrationQueueUseFirst.Enqueue(integrationQueueItem1);

            // Second item is same project
            IIntegrationQueueItem secondQueueItem = new IntegrationQueueItem((IProject)project1Mock.Object,
                                                                             integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier2Mock.Object);

            queueNotifier2Mock.Setup(notifier => notifier.NotifyEnteringIntegrationQueue()).Verifiable();
            queueNotifier2Mock.Setup(notifier => notifier.NotifyExitingIntegrationQueue(true)).Verifiable();
            integrationQueueUseFirst.Enqueue(secondQueueItem);

            IIntegrationQueueItem[] itemsOnQueue = integrationQueueUseFirst.GetQueuedIntegrations();
            Assert.AreEqual(2, itemsOnQueue.Length);

            integrationQueueUseFirst.RemovePendingRequest((IProject)project1Mock.Object);

            itemsOnQueue = integrationQueueUseFirst.GetQueuedIntegrations();
            Assert.AreEqual(1, itemsOnQueue.Length);
            Assert.AreSame(integrationQueueItem1, itemsOnQueue[0]);

            VerifyAll();
            queueNotifier1Mock.VerifyNoOtherCalls();
        }
        public void RemoveProjectClearsOnlyItemsThatAreForThisProject()
        {
            queueNotifier1Mock.Setup(notifier => notifier.NotifyEnteringIntegrationQueue()).Verifiable();
            queueNotifier1Mock.Setup(notifier => notifier.NotifyExitingIntegrationQueue(false)).Verifiable();
            integrationQueueUseFirst.Enqueue(integrationQueueItem1);

            // Second item is different project but same queue
            project2Mock.SetupGet(project => project.QueueName).Returns(TestQueueName);
            queueNotifier2Mock.Setup(notifier => notifier.NotifyEnteringIntegrationQueue()).Verifiable();
            integrationQueueUseFirst.Enqueue(integrationQueueItem2);

            // Third item is same project as the first.
            IIntegrationQueueItem thirdQueueItem = new IntegrationQueueItem((IProject)project1Mock.Object,
                                                                            integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier3Mock.Object);

            queueNotifier3Mock.Setup(notifier => notifier.NotifyEnteringIntegrationQueue()).Verifiable();
            queueNotifier3Mock.Setup(notifier => notifier.NotifyExitingIntegrationQueue(true)).Verifiable();
            integrationQueueUseFirst.Enqueue(thirdQueueItem);

            integrationQueueUseFirst.RemoveProject((IProject)project1Mock.Object);

            IIntegrationQueueItem[] itemsOnQueue = integrationQueueUseFirst.GetQueuedIntegrations();
            Assert.AreEqual(1, itemsOnQueue.Length);
            Assert.AreSame(integrationQueueItem2, itemsOnQueue[0]);

            VerifyAll();
            queueNotifier2Mock.VerifyNoOtherCalls();
        }
        public void NoMoreThanOnePendingIntegrationForAProject()
        {
            // Setup the first request
            queueNotifier1Mock.Setup(notifier => notifier.NotifyEnteringIntegrationQueue()).Verifiable();
            integrationQueueUseFirst.Enqueue(integrationQueueItem1);
            // Add a second request for same project
            IIntegrationQueueItem secondQueueItem = new IntegrationQueueItem((IProject)project1Mock.Object,
                                                                             integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier1Mock.Object);

            queueNotifier1Mock.Setup(notifier => notifier.NotifyEnteringIntegrationQueue()).Verifiable();
            integrationQueueUseFirst.Enqueue(secondQueueItem);
            // Try to add a third request for same project
            IIntegrationQueueItem thirdQueueItem = new IntegrationQueueItem((IProject)project1Mock.Object,
                                                                            integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier1Mock.Object);

            integrationQueueUseFirst.Enqueue(thirdQueueItem);

            IIntegrationQueueItem[] itemsOnQueue = integrationQueueUseFirst.GetQueuedIntegrations();
            Assert.AreEqual(2, itemsOnQueue.Length);
            Assert.AreSame(integrationQueueItem1, itemsOnQueue[0]);
            Assert.AreSame(secondQueueItem, itemsOnQueue[1]);

            queueNotifier1Mock.Verify(notifier => notifier.NotifyEnteringIntegrationQueue(), Times.Exactly(2));
            queueNotifier1Mock.Verify(notifier => notifier.NotifyExitingIntegrationQueue(It.IsAny <bool>()), Times.Exactly(0));
            VerifyAll();
        }
Beispiel #7
0
        public void HasAttributesAssignedCorrectly()
        {
            IProject                  project                  = new Project();
            IntegrationRequest        integrationRequest       = new IntegrationRequest(BuildCondition.NoBuild, "Test", null);
            IIntegrationQueueNotifier integrationQueueNotifier = new TestIntegrationQueueCallback();

            IIntegrationQueueItem integrationQueueItem = new IntegrationQueueItem(project, integrationRequest, integrationQueueNotifier);

            Assert.AreEqual(project, integrationQueueItem.Project);
            Assert.AreEqual(integrationRequest, integrationQueueItem.IntegrationRequest);
            Assert.AreEqual(integrationQueueNotifier, integrationQueueItem.IntegrationQueueNotifier);
        }
        public void SecondIntegrationRequestForQueuedProjectShouldNotStartImmediately()
        {
            // Setup the first request
            queueNotifier1Mock.Setup(notifier => notifier.NotifyEnteringIntegrationQueue()).Verifiable();
            integrationQueueUseFirst.Enqueue(integrationQueueItem1);
            // Add a second request for same project
            IIntegrationQueueItem secondQueueItem = new IntegrationQueueItem((IProject)project1Mock.Object,
                                                                             integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier1Mock.Object);

            queueNotifier1Mock.Setup(notifier => notifier.NotifyEnteringIntegrationQueue()).Verifiable();
            integrationQueueUseFirst.Enqueue(secondQueueItem);

            IIntegrationQueueItem[] itemsOnQueue = integrationQueueUseFirst.GetQueuedIntegrations();
            Assert.AreEqual(2, itemsOnQueue.Length);
            Assert.AreSame(integrationQueueItem1, itemsOnQueue[0]);
            Assert.AreSame(secondQueueItem, itemsOnQueue[1]);

            VerifyAll();
            queueNotifier1Mock.VerifyNoOtherCalls();
        }