Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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 ...");
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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;
 }