public void ValidReleaseMessageIsExtracted() { // given var validMessage = ServiceBusMessageQueueHandlerTests.CreateValidTestVstsMessageForRelease(); var brokeredMessage = ServiceBusMessageQueueHandlerTests.CreateMockMessage(validMessage); // when TestVstsMessage testMessage; string errors; var isValid = ServiceBusQueueMessageHandler <TestVstsMessage> .ExtractMessage(brokeredMessage, out testMessage, out errors); // then Assert.IsTrue(isValid); Assert.IsNull(errors); }
public void InvalidMessageFails() { // given var brokeredMessage = ServiceBusMessageQueueHandlerTests.CreateMockMessage(new TestVstsMessage()); // when TestVstsMessage testMessage; string errors; var isValid = ServiceBusQueueMessageHandler <TestVstsMessage> .ExtractMessage(brokeredMessage, out testMessage, out errors); // then Assert.IsFalse(isValid); Assert.IsNotNull(errors); Trace.WriteLine(errors); }
public static void Main(string[] args) { var configBuilder = new ConfigurationBuilder(); var config = configBuilder.AddJsonFile("appsettings.json").Build(); var serviceBusSettings = new ServiceBusSettings { ConnectionString = config.GetSection("ServiceBus:ConnectionString").Value, QueueName = config.GetSection("ServiceBus:QueueName").Value, PrefetchCount = int.Parse(config.GetSection("Vsts:QueuePrefetchCount").Value), MaxConcurrentCalls = int.Parse(config.GetSection("Vsts:QueueMaxConcurrentCalls").Value) }; var serviceBusQueueMessageHandlerSettings = new ServiceBusQueueMessageHandlerSettings { MaxRetryAttempts = int.Parse(config.GetSection("Vsts:MaxRetryAttempts").Value), AbandonDelayMsecs = int.Parse(config.GetSection("Vsts:AbandonDelayMsecs").Value), MaxAbandonDelayMsecs = int.Parse(config.GetSection("Vsts:MaxAbandonDelayMsecs").Value), LockRefreshDelayMsecs = int.Parse(config.GetSection("Vsts:LockRefreshDelayMsecs").Value), TimeLineNamePrefix = "Test", WorkerName = "MicroService" }; var cancellationTokenSource = new CancellationTokenSource(); var sampleLogger = new SampleLogger(); var clientScheduleHandler = new ClientScheduleHandler(sampleLogger); var serviceBusQueueMessageListener = new ServiceBusQueueMessageListener(serviceBusSettings); var serviceBusQueueMessageHandler = new ServiceBusQueueMessageHandler <VstsMessage>(serviceBusQueueMessageListener, clientScheduleHandler, serviceBusQueueMessageHandlerSettings, sampleLogger); var clientListener = new VstsRequestListener <VstsMessage>(serviceBusQueueMessageHandler, serviceBusQueueMessageListener, sampleLogger); Console.WriteLine( "Starting the VSTS request listener on queue '{0}' with prefetch count '{1}', max concurrent calls '{2}' and message handler settings [{3}]", serviceBusSettings.QueueName, serviceBusSettings.PrefetchCount, serviceBusSettings.MaxConcurrentCalls, serviceBusQueueMessageHandlerSettings); Console.WriteLine("Press any key to exit after receiving all the messages ..."); clientListener.Start(cancellationTokenSource.Token); Console.ReadKey(); Console.WriteLine("Shutting down VSTS request listener ..."); }
public void RequesterEmailFallbackToScheduleRequester() { // given var message = ServiceBusMessageQueueHandlerTests.CreateValidTestVstsMessage(); message.RequesterEmail = null; message.ScheduleRequesterAlias = "someOneElse"; var brokeredMessage = ServiceBusMessageQueueHandlerTests.CreateMockMessage(message); // when TestVstsMessage testMessage; string errors; var isValid = ServiceBusQueueMessageHandler <TestVstsMessage> .ExtractMessage(brokeredMessage, out testMessage, out errors); // then Assert.IsTrue(isValid); Assert.AreEqual("someOneElse", testMessage.RequesterEmail); }
private static async Task ProcessTestMessage(MockServiceBusMessage mockServiceBusMessage = null, MockServiceBusQueueMessageListener mockMessageListener = null, MockTaskClient mockTaskClient = null, MockVstsHandler handler = null, MockVstsReportingHelper mockReportingHelper = null, IBrokerInstrumentation instrumentation = null, int maxRetryAttempts = 1, IBuildClient mockBuildClient = null, IGitClient mockGitClient = null) { mockServiceBusMessage = mockServiceBusMessage ?? CreateMockMessage(CreateValidTestVstsMessage()); mockTaskClient = mockTaskClient ?? new MockTaskClient(); mockBuildClient = mockBuildClient ?? new MockBuildClient() { MockBuild = new Build() { Status = BuildStatus.InProgress } }; mockReportingHelper = mockReportingHelper ?? new MockVstsReportingHelper(new TestVstsMessage()); var mockReleaseClient = new MockReleaseClient() { MockRelease = new Release() { Status = ReleaseStatus.Active } }; handler = handler ?? new MockVstsHandler { MockExecuteFunc = (vstsMessage) => Task.FromResult(new VstsScheduleResult() { Message = "(test) mock execute requested", ScheduledId = "someId", ScheduleFailed = false }) }; instrumentation = instrumentation ?? new TraceBrokerInstrumentation(); var settings = new ServiceBusQueueMessageHandlerSettings { MaxRetryAttempts = maxRetryAttempts, TimeLineNamePrefix = "someTimeline", WorkerName = "someWorker" }; mockMessageListener = mockMessageListener ?? new MockServiceBusQueueMessageListener(); var schedulingBroker = new ServiceBusQueueMessageHandler <TestVstsMessage>(queueClient: mockMessageListener, baseInstrumentation: instrumentation, scheduleHandler: handler, settings: settings); schedulingBroker.CreateTaskClient = (uri, creds, instrumentationHandler, skipRaisePlanEvents) => mockTaskClient; schedulingBroker.CreateBuildClient = (uri, creds) => mockBuildClient; schedulingBroker.CreateReleaseClient = (uri, creds) => mockReleaseClient; schedulingBroker.CreateVstsReportingHelper = (vstsMessage, inst, props) => mockReportingHelper; var cancelSource = new CancellationTokenSource(); await schedulingBroker.ReceiveAsync(mockServiceBusMessage, cancelSource.Token); }
public VstsRequestListener(ServiceBusQueueMessageHandler <T> serviceBusQueueMessageHandler, IServiceBusQueueMessageListener serviceBusQueueMessageListener, ILogger logger) { this.logger = logger; this.serviceBusQueueMessageListener = serviceBusQueueMessageListener; this.serviceBusQueueMessageHandler = serviceBusQueueMessageHandler; }