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();
        }
예제 #2
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();
        }
예제 #3
0
 private void Stopped()
 {
     // the state was set to 'Stopping', so set it to 'Stopped'
     state  = ProjectIntegratorState.Stopped;
     thread = null;
     // Ensure that any queued integrations are cleared for this project.
     integrationQueue.RemoveProject(project);
     Log.Info("Integrator for project: " + project.Name + " is now stopped.");
 }