public void SetUp()
        {
            integrationTriggerMock        = new LatchMock(typeof(ITrigger));
            integrationTriggerMock.Strict = true;
            projectMock        = new LatchMock(typeof(IProject));
            projectMock.Strict = true;
            projectMock.SetupResult("Name", "project");
            projectMock.SetupResult("QueueName", TestQueueName);
            projectMock.SetupResult("QueuePriority", 0);
            projectMock.SetupResult("Triggers", integrationTriggerMock.MockInstance);
            projectMock.SetupResult("WorkingDirectory", tempWorkingDir1);
            projectMock.SetupResult("ArtifactDirectory", tempArtifactDir1);

            integrationQueues = new IntegrationQueueSet();
            integrationQueues.Add(TestQueueName, new DefaultQueueConfiguration(TestQueueName));
            integrationQueue = integrationQueues[TestQueueName];
            integrator       = new ProjectIntegrator((IProject)projectMock.MockInstance, integrationQueue);
        }
        public void CancellingAPendingRequestWhileNotBuildingGoesToSleeping()
        {
            LatchMock otherProjectMock = new LatchMock(typeof(IProject));

            otherProjectMock.Strict = true;
            otherProjectMock.SetupResult("Name", "otherProject");
            otherProjectMock.SetupResult("QueueName", TestQueueName);
            otherProjectMock.SetupResult("QueuePriority", 0);
            otherProjectMock.SetupResult("Triggers", integrationTriggerMock.MockInstance);
            otherProjectMock.SetupResult("WorkingDirectory", tempDir + "tempWorkingDir2");
            otherProjectMock.SetupResult("ArtifactDirectory", tempDir + "tempArtifactDir2");

            IProject otherProject = (IProject)otherProjectMock.MockInstance;
            IProject project      = (IProject)projectMock.MockInstance;

            ProjectIntegrator otherIntegrator = new ProjectIntegrator(otherProject, integrationQueue);
            // Queue up the "otherProject" in the first queue position to build
            IntegrationRequest otherProjectRequest = new IntegrationRequest(BuildCondition.IfModificationExists, "intervalTrigger", null);

            otherProjectMock.Expect("NotifyPendingState");

            // Queue up our test project on the same queue as so it goes to pending
            IntegrationRequest request2 = new IntegrationRequest(BuildCondition.IfModificationExists, "intervalTrigger", null);

            projectMock.Expect("NotifyPendingState");
            // Cancelling the pending request should revert status to sleeping
            projectMock.Expect("NotifySleepingState");
            integrationTriggerMock.Expect("IntegrationCompleted");

            integrationQueue.Enqueue(new IntegrationQueueItem(otherProject, otherProjectRequest, otherIntegrator));
            integrationQueue.Enqueue(new IntegrationQueueItem(project, request2, integrator));
            // Cancel second build project on queue
            integrator.CancelPendingRequest();

            otherProjectMock.Verify();
            VerifyAll();
        }
Ejemplo n.º 3
0
        public void SetUp()
        {
            integrationQueues = new IntegrationQueueSet();
            integrationQueues.Add(TestQueueName, new DefaultQueueConfiguration(TestQueueName));
            integrationQueueUseFirst = integrationQueues[TestQueueName];

            // Generate a queue to test re-adding
            string secondQueueName         = "Test Queue #2";
            IQueueConfiguration readConfig = new DefaultQueueConfiguration(secondQueueName);

            readConfig.HandlingMode = QueueDuplicateHandlingMode.ApplyForceBuildsReAdd;
            integrationQueues.Add(secondQueueName, readConfig);
            integrationQueueReAdd = integrationQueues[secondQueueName];

            // Generate a queue to test re-adding to top
            var fourthQueueName = "Test Queue #4";
            var raddTopConfig   = new DefaultQueueConfiguration(fourthQueueName);

            raddTopConfig.HandlingMode = QueueDuplicateHandlingMode.ApplyForceBuildsReAddTop;
            integrationQueues.Add(fourthQueueName, raddTopConfig);
            integrationQueueReAddTop = integrationQueues[fourthQueueName];

            // Generate a queue to test replacing
            string thirdQueueName             = "Test Queue #3";
            IQueueConfiguration replaceConfig = new DefaultQueueConfiguration(thirdQueueName);

            replaceConfig.HandlingMode = QueueDuplicateHandlingMode.ApplyForceBuildsReplace;
            integrationQueues.Add(thirdQueueName, replaceConfig);
            integrationQueueReplace = integrationQueues[thirdQueueName];

            integrationRequestForceBuild           = new IntegrationRequest(BuildCondition.ForceBuild, "Test", null);
            integrationRequestIfModificationExists = new IntegrationRequest(BuildCondition.IfModificationExists, "Test", null);

            project1Mock        = new LatchMock(typeof(IProject));
            project1Mock.Strict = true;
            project1Mock.SetupResult("Name", "ProjectOne");
            project1Mock.SetupResult("QueueName", TestQueueName);
            project1Mock.SetupResult("QueuePriority", 0);

            project2Mock        = new LatchMock(typeof(IProject));
            project2Mock.Strict = true;
            project2Mock.SetupResult("Name", "ProjectTwo");
            project2Mock.SetupResult("QueueName", TestQueueName);
            project2Mock.SetupResult("QueuePriority", 0);

            project3Mock        = new LatchMock(typeof(IProject));
            project3Mock.Strict = true;
            project3Mock.SetupResult("Name", "ProjectThree");
            project3Mock.SetupResult("QueueName", TestQueueName);
            project3Mock.SetupResult("QueuePriority", 1);

            queueNotifier1Mock        = new LatchMock(typeof(IIntegrationQueueNotifier));
            queueNotifier1Mock.Strict = true;

            queueNotifier2Mock        = new LatchMock(typeof(IIntegrationQueueNotifier));
            queueNotifier2Mock.Strict = true;

            queueNotifier3Mock        = new LatchMock(typeof(IIntegrationQueueNotifier));
            queueNotifier3Mock.Strict = true;

            integrationQueueItem1 = new IntegrationQueueItem((IProject)project1Mock.MockInstance,
                                                             integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier1Mock.MockInstance);

            integrationQueueItem2 = new IntegrationQueueItem((IProject)project2Mock.MockInstance,
                                                             integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier2Mock.MockInstance);

            integrationQueueItem3 = new IntegrationQueueItem((IProject)project3Mock.MockInstance,
                                                             integrationRequestForceBuild, (IIntegrationQueueNotifier)queueNotifier3Mock.MockInstance);

            integrationQueueItem4 = new IntegrationQueueItem((IProject)project2Mock.MockInstance,
                                                             integrationRequestIfModificationExists, (IIntegrationQueueNotifier)queueNotifier2Mock.MockInstance);
        }