Пример #1
0
        private static void OnListenerBuildStatusChangeEventReceived(object sender, BuildStatusChangeEventArgs e)
        {
            var deployer = new Deployer();
            ExecuteDeploymentProcessDelegate edpd = deployer.ExecuteDeploymentProcess;

            edpd.BeginInvoke(e.EventRaised, null, null);
        }
Пример #2
0
        private void OnListenerBuildStatusChangeEventReceived(object sender, BuildStatusChangeEventArgs e)
        {
            BuildStatusChangeEvent changeEvent = e.EventRaised;

            if (_duplicateEventDetector.IsUnique(changeEvent))
            {
                var deployer = _deployerFactory.Create();
                ExecuteDeploymentProcessDelegate edpd = deployer.ExecuteDeploymentProcess;
                edpd.BeginInvoke(changeEvent, null, null);
            }
            else
            {
                TraceHelper.TraceWarning(TraceSwitches.TfsDeployer, "Received duplicate event '{0}' from TFS.", changeEvent.Title);
            }
        }
        public void TfsBuildStatusTrigger_should_record_all_required_triggered_event_details()
        {
            // Arrange
            var listener = MockRepository.GenerateStub <ITfsListener>();
            var buildStatusEventRaiser = listener.GetEventRaiser(o => o.BuildStatusChangeEventReceived += null);
            var buildStatusEventArgs   = new BuildStatusChangeEventArgs(
                new BuildStatusChangeEvent
            {
                ChangedBy    = @"Domain\MrMcGoo",
                ChangedTime  = new DateTime(2011, 1, 1, 1, 1, 1).ToString(),
                Id           = "Foobar_123.4",
                StatusChange = new Change {
                    FieldName = "Quality", NewValue = "Production", OldValue = "Staging"
                },
                TeamFoundationServerUrl = "https://foo/tfs/foo",
                TeamProject             = "Foo"
            },
                new TfsIdentity()
                );

            var deployer = MockRepository.GenerateStub <IDeployer>();
            Func <IDeployer> deployerFactory = () => deployer;

            var duplicateEventDetector = MockRepository.GenerateStub <IDuplicateEventDetector>();

            duplicateEventDetector.Stub(o => o.IsUnique(null))
            .IgnoreArguments()
            .Return(true);

            var deploymentEventRecorder = MockRepository.GenerateStub <IDeploymentEventRecorder>();

            var trigger = new TfsBuildStatusTrigger(listener, deployerFactory, duplicateEventDetector, deploymentEventRecorder);

            trigger.Start();

            // Act
            buildStatusEventRaiser.Raise(listener, buildStatusEventArgs);

            // Assert
            deploymentEventRecorder.AssertWasCalled(o => o.RecordTriggered(
                                                        Arg <string> .Is.Equal("Foobar_123.4"),
                                                        Arg <string> .Is.Equal("Foo"),
                                                        Arg <string> .Is.Equal("https://foo/tfs/foo"),
                                                        Arg <string> .Is.Equal(@"Domain\MrMcGoo"),
                                                        Arg <string> .Is.Equal("Staging"),
                                                        Arg <string> .Is.Equal("Production")
                                                        ));
        }
        public void TfsBuildStatusTrigger_should_pass_recorded_event_id_to_deployer()
        {
            // Arrange
            const int eventId = 9;

            var listener = MockRepository.GenerateStub <ITfsListener>();
            var buildStatusEventRaiser = listener.GetEventRaiser(o => o.BuildStatusChangeEventReceived += null);
            var buildStatusEventArgs   = new BuildStatusChangeEventArgs(
                new BuildStatusChangeEvent
            {
                Id           = "Foobar_123.5",
                StatusChange = new Change()
            },
                new TfsIdentity()
                );

            var deployer = MockRepository.GenerateStub <IDeployer>();
            Func <IDeployer> deployerFactory = () => deployer;

            var duplicateEventDetector = MockRepository.GenerateStub <IDuplicateEventDetector>();

            duplicateEventDetector.Stub(o => o.IsUnique(null))
            .IgnoreArguments()
            .Return(true);

            var deploymentEventRecorder = MockRepository.GenerateStub <IDeploymentEventRecorder>();

            deploymentEventRecorder.Stub(o => o.RecordTriggered(null, null, null, null, null, null))
            .IgnoreArguments()
            .Return(eventId);

            var trigger = new TfsBuildStatusTrigger(listener, deployerFactory, duplicateEventDetector, deploymentEventRecorder);

            trigger.Start();

            // Act
            buildStatusEventRaiser.Raise(listener, buildStatusEventArgs);

            // Assert
            deployer.AssertWasCalled(o => o.ExecuteDeploymentProcess(
                                         Arg <BuildStatusChangeEvent> .Is.Anything,
                                         Arg <int> .Is.Equal(eventId)
                                         ));
        }
        public void TfsBuildStatusTrigger_should_not_record_duplicate_triggered_event()
        {
            // Arrange
            var listener = MockRepository.GenerateStub <ITfsListener>();
            var buildStatusEventRaiser = listener.GetEventRaiser(o => o.BuildStatusChangeEventReceived += null);
            var buildStatusEventArgs   = new BuildStatusChangeEventArgs(
                new BuildStatusChangeEvent {
                Id = "Foobar_123.4", StatusChange = new Change()
            },
                new TfsIdentity()
                );

            var deployer = MockRepository.GenerateStub <IDeployer>();
            Func <IDeployer> deployerFactory = () => deployer;

            var duplicateEventDetector = MockRepository.GenerateStub <IDuplicateEventDetector>();

            duplicateEventDetector.Stub(o => o.IsUnique(null))
            .IgnoreArguments()
            .Return(false);

            var deploymentEventRecorder = MockRepository.GenerateStub <IDeploymentEventRecorder>();

            var trigger = new TfsBuildStatusTrigger(listener, deployerFactory, duplicateEventDetector, deploymentEventRecorder);

            trigger.Start();

            // Act
            buildStatusEventRaiser.Raise(listener, buildStatusEventArgs);

            // Assert
            deploymentEventRecorder.AssertWasNotCalled(o => o.RecordTriggered(
                                                           Arg <string> .Is.Equal("Foobar_123.4"),
                                                           Arg <string> .Is.Anything,
                                                           Arg <string> .Is.Anything,
                                                           Arg <string> .Is.Anything,
                                                           Arg <string> .Is.Anything,
                                                           Arg <string> .Is.Anything
                                                           ));
        }
        private void OnListenerBuildStatusChangeEventReceived(object sender, BuildStatusChangeEventArgs e)
        {
            BuildStatusChangeEvent changeEvent = e.EventRaised;

            if (_duplicateEventDetector.IsUnique(changeEvent))
            {
                var eventId = _deploymentEventRecorder.RecordTriggered(
                    changeEvent.Id,
                    changeEvent.TeamProject,
                    changeEvent.TeamFoundationServerUrl,
                    changeEvent.ChangedBy,
                    changeEvent.StatusChange.OldValue,
                    changeEvent.StatusChange.NewValue
                    );

                var deployer = _deployerFactory();
                ExecuteDeploymentProcessDelegate executeDelegate = deployer.ExecuteDeploymentProcess;
                executeDelegate.BeginInvoke(changeEvent, eventId, ExecuteDeploymentProcessCallback, executeDelegate);
            }
            else
            {
                TraceHelper.TraceWarning(TraceSwitches.TfsDeployer, "Received duplicate event '{0}' from TFS.", changeEvent.Title);
            }
        }
Пример #7
0
        void listener_BuildStatusChangeEventReceived(object sender, BuildStatusChangeEventArgs e)
        {
            ExecuteDeploymentProcessDelegate edpd = new ExecuteDeploymentProcessDelegate(deployer.ExecuteDeploymentProcess);

            edpd.BeginInvoke(e.EventRaised, null, null);
        }
Пример #8
0
 void listener_BuildStatusChangeEventReceived(object sender, BuildStatusChangeEventArgs e)
 {
     ExecuteDeploymentProcessDelegate edpd = new ExecuteDeploymentProcessDelegate(deployer.ExecuteDeploymentProcess);
     edpd.BeginInvoke(e.EventRaised, null, null);
 }