Example #1
0
        public async Task SendAsync_NullCorrelationId_ThrowsException()
        {
            // Arrange
            var serviceBusSenderMock          = new Mock <ServiceBusSender>();
            var serviceBusSessionReceiverMock = new Mock <ServiceBusSessionReceiver>();

            await using var mockedServiceBusClient = new MockedServiceBusClient(
                            string.Empty,
                            string.Empty,
                            serviceBusSenderMock.Object,
                            serviceBusSessionReceiverMock.Object);

            var serviceBusClientFactory = new Mock <IServiceBusClientFactory>();

            serviceBusClientFactory.Setup(x => x.Create()).Returns(mockedServiceBusClient);
            await using var messageBusFactory = new AzureServiceBusFactory(serviceBusClientFactory.Object);

            var config = new MessageHubConfig("fake_value", "fake_value");
            var target = new DataAvailableNotificationSender(messageBusFactory, config);

            var dataAvailable = new DataAvailableNotificationDto(
                Guid.Parse("F9A5115D-44EB-4AD4-BC7E-E8E8A0BC425E"),
                new ActorIdDto(Guid.NewGuid()),
                new MessageTypeDto("fake_value"),
                "RSM??",
                DomainOrigin.TimeSeries,
                true,
                1);

            // Act + Assert
            await Assert
            .ThrowsAsync <ArgumentNullException>(() => target.SendAsync(null !, dataAvailable))
            .ConfigureAwait(false);
        }
Example #2
0
        public async Task SendAsync_NullNotification_ThrowsException()
        {
            // Arrange
            var serviceBusSenderMock          = new Mock <ServiceBusSender>();
            var serviceBusSessionReceiverMock = new Mock <ServiceBusSessionReceiver>();

            await using var mockedServiceBusClient = new MockedServiceBusClient(
                            string.Empty,
                            string.Empty,
                            serviceBusSenderMock.Object,
                            serviceBusSessionReceiverMock.Object);

            var serviceBusClientFactory = new Mock <IServiceBusClientFactory>();

            serviceBusClientFactory.Setup(x => x.Create()).Returns(mockedServiceBusClient);
            await using var messageBusFactory = new AzureServiceBusFactory(serviceBusClientFactory.Object);

            var config = new MessageHubConfig("fake_value", "fake_value");
            var target = new DataAvailableNotificationSender(messageBusFactory, config);

            // Act + Assert
            await Assert
            .ThrowsAsync <ArgumentNullException>(() => target.SendAsync("F9A5115D-44EB-4AD4-BC7E-E8E8A0BC425E", null !))
            .ConfigureAwait(false);
        }
        public static async Task Main(string[] args)
        {
            var configuration = BuildConfiguration(args);

            var configurationSection   = configuration.GetSection("Values");
            var connectionString       = configurationSection["ServiceBusConnectionString"];
            var dataAvailableQueueName = configurationSection["DATAAVAILABLE_QUEUE_NAME"];
            var domainReplyQueueName   = configurationSection["DOMAIN_REPLY_QUEUE_NAME"];

            var recipient    = configurationSection["recipient"];
            var origin       = configurationSection["origin"];
            var messageType  = configurationSection["type"];
            var interval     = int.TryParse(configurationSection["interval"], out var intervalParsed) ? intervalParsed : 1;
            var workers      = int.TryParse(configurationSection["workers"], out var workersParsed) ? workersParsed : 1;
            var domainOrigin = origin != null?Enum.Parse <DomainOrigin>(origin, true) : DomainOrigin.TimeSeries;

            var serviceBusClientFactory = new ServiceBusClientFactory(connectionString);

            await using var azureServiceFactory = new AzureServiceBusFactory(serviceBusClientFactory);
            var messageHubConfig = new MessageHubConfig(dataAvailableQueueName, domainReplyQueueName);

            var dataAvailableNotificationSender = new DataAvailableNotificationSender(azureServiceFactory, messageHubConfig);

            await Task.WhenAll(
                Enumerable.Range(0, workers).Select(_ =>
                                                    Task.WhenAll(Enumerable.Range(0, interval / workers).Select(_ =>
            {
                var msgDto        = CreateDto(domainOrigin, messageType, recipient);
                var correlationId = Guid.NewGuid().ToString();

                return(dataAvailableNotificationSender.SendAsync(correlationId, msgDto));
            })))).ConfigureAwait(false);

            Console.WriteLine("Message sender completed.");
        }
Example #4
0
        public async Task SendAsync_ValidInput_AddsCorrectIntegrationEvents()
        {
            // Arrange
            var          serviceBusSenderMock          = new Mock <ServiceBusSender>();
            var          serviceBusSessionReceiverMock = new Mock <ServiceBusSessionReceiver>();
            const string dataAvailableQueue            = "sbq-dataavailable";

            await using var mockedServiceBusClient = new MockedServiceBusClient(
                            dataAvailableQueue,
                            string.Empty,
                            serviceBusSenderMock.Object,
                            serviceBusSessionReceiverMock.Object);

            var serviceBusClientFactory = new Mock <IServiceBusClientFactory>();

            serviceBusClientFactory.Setup(x => x.Create()).Returns(mockedServiceBusClient);
            await using var messageBusFactory = new AzureServiceBusFactory(serviceBusClientFactory.Object);
            var config = new MessageHubConfig(dataAvailableQueue, "fake_value");

            var target = new DataAvailableNotificationSender(messageBusFactory, config);

            var dataAvailable = new DataAvailableNotificationDto(
                Guid.Parse("F9A5115D-44EB-4AD4-BC7E-E8E8A0BC425E"),
                new ActorIdDto(Guid.NewGuid()),
                new MessageTypeDto("fake_value"),
                "RSM??",
                DomainOrigin.TimeSeries,
                true,
                1);

            // Act
            await target.SendAsync("F9A5115D-44EB-4AD4-BC7E-E8E8A0BC425E", dataAvailable).ConfigureAwait(false);

            // Assert
            serviceBusSenderMock.Verify(
                x => x.SendMessageAsync(
                    It.Is <ServiceBusMessage>(
                        message =>
                        message.ApplicationProperties.ContainsKey("OperationTimestamp") &&
                        message.ApplicationProperties.ContainsKey("OperationCorrelationId") &&
                        message.ApplicationProperties.ContainsKey("MessageVersion") &&
                        message.ApplicationProperties.ContainsKey("MessageType") &&
                        message.ApplicationProperties.ContainsKey("EventIdentification")),
                    default),
                Times.Once);
        }