private static void OnListenerBuildStatusChangeEventReceived(object sender, BuildStatusChangeEventArgs e) { var deployer = new Deployer(); ExecuteDeploymentProcessDelegate edpd = deployer.ExecuteDeploymentProcess; edpd.BeginInvoke(e.EventRaised, null, null); }
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); } }
void listener_BuildStatusChangeEventReceived(object sender, BuildStatusChangeEventArgs e) { ExecuteDeploymentProcessDelegate edpd = new ExecuteDeploymentProcessDelegate(deployer.ExecuteDeploymentProcess); edpd.BeginInvoke(e.EventRaised, null, null); }
void listener_BuildStatusChangeEventReceived(object sender, BuildStatusChangeEventArgs e) { ExecuteDeploymentProcessDelegate edpd = new ExecuteDeploymentProcessDelegate(deployer.ExecuteDeploymentProcess); edpd.BeginInvoke(e.EventRaised, null, null); }