public TransportInfrastructure(SettingsHolder settings)
        {
            configuration = new ConnectionConfiguration(settings);

            sqsClient = AwsClientFactory.CreateSqsClient(configuration);
            s3Client  = AwsClientFactory.CreateS3Client(configuration);

            queueUrlCache = new QueueUrlCache(sqsClient);
        }
Example #2
0
        public SqsTransportInfrastructure(SettingsHolder settings)
        {
            _connectionConfiguration = new SqsConnectionConfiguration(settings);

            _sqsClient = AwsClientFactory.CreateSqsClient(_connectionConfiguration);
            _s3Client  = AwsClientFactory.CreateS3Client(_connectionConfiguration);

            _sqsQueueUrlCache = new SqsQueueUrlCache
            {
                SqsClient = _sqsClient
            };
        }
        public SqsTestContext(object fixture)
        {
            Address = new Address(fixture.GetType().Name, Environment.MachineName);
            ConnectionConfiguration =
                SqsConnectionStringParser.Parse(ConfigurationManager.AppSettings["TestConnectionString"]);

            S3Client  = AwsClientFactory.CreateS3Client(ConnectionConfiguration);
            SqsClient = AwsClientFactory.CreateSqsClient(ConnectionConfiguration);

            Creator = new SqsQueueCreator
            {
                ConnectionConfiguration = ConnectionConfiguration,
                SqsClient = SqsClient,
                S3Client  = S3Client
            };

            _receivedMessages           = new Subject <TransportMessage>();
            _exceptionsThrownByReceiver = new Subject <Exception>();

            QueueUrlCache = new SqsQueueUrlCache
            {
                SqsClient = SqsClient,
                ConnectionConfiguration = ConnectionConfiguration
            };


            Sender = new SqsQueueSender
            {
                ConnectionConfiguration = ConnectionConfiguration,
                SqsClient     = SqsClient,
                S3Client      = S3Client,
                QueueUrlCache = QueueUrlCache,
                QueueCreator  = Creator
            };

            DequeueStrategy = new SqsDequeueStrategy(null)
            {
                ConnectionConfiguration = ConnectionConfiguration,
                SqsClient = SqsClient,
                S3Client  = S3Client
            };
        }
        async Task SendPoisonMessage(string inputQueueName)
        {
            var transportConfiguration = new TransportExtensions <SqsTransport>(new SettingsHolder());

            transportConfiguration = transportConfiguration.ConfigureSqsTransport(SetupFixture.SqsQueueNamePrefix);
            var connectionConfiguration = new ConnectionConfiguration(transportConfiguration.GetSettings());

            using (var sqsClient = AwsClientFactory.CreateSqsClient(connectionConfiguration))
            {
                var getQueueUrlResponse = await sqsClient.GetQueueUrlAsync(new GetQueueUrlRequest
                {
                    QueueName = QueueNameHelper.GetSqsQueueName(inputQueueName, connectionConfiguration)
                }).ConfigureAwait(false);

                await sqsClient.SendMessageAsync(new SendMessageRequest
                {
                    QueueUrl    = getQueueUrlResponse.QueueUrl,
                    MessageBody = PoisonMessageBody
                }).ConfigureAwait(false);
            }
        }
Example #5
0
        protected override void Configure(FeatureConfigurationContext context, string connectionString)
        {
            var connectionConfiguration = SqsConnectionStringParser.Parse(connectionString);

            context.Container.ConfigureComponent(_ => connectionConfiguration, DependencyLifecycle.SingleInstance);

            context.Container.ConfigureComponent(_ => AwsClientFactory.CreateSqsClient(connectionConfiguration), DependencyLifecycle.SingleInstance);

            context.Container.ConfigureComponent(_ => AwsClientFactory.CreateS3Client(connectionConfiguration), DependencyLifecycle.SingleInstance);

            context.Container.ConfigureComponent <SqsQueueUrlCache>(DependencyLifecycle.SingleInstance);

            context.Container.ConfigureComponent <SqsDequeueStrategy>(DependencyLifecycle.InstancePerCall);

            context.Container.ConfigureComponent <SqsQueueSender>(DependencyLifecycle.InstancePerCall);

            context.Container.ConfigureComponent <SqsQueueCreator>(DependencyLifecycle.InstancePerCall);

            if (context.Settings.UseSqsDeferral())
            {
                context.Container.ConfigureComponent <SqsDeferrer>(DependencyLifecycle.InstancePerCall);
            }
        }
Example #6
0
        public async Task OneTimeTearDown()
        {
            // Once all tests have completed, delete all queues that were created.
            // Use the QueueNamePrefix to determine which queues to delete.
            var transportConfiguration = new TransportExtensions <SqsTransport>(new SettingsHolder());

            transportConfiguration = transportConfiguration.ConfigureSqsTransport(SqsQueueNamePrefix);
            var connectionConfiguration = new ConnectionConfiguration(transportConfiguration.GetSettings());
            var sqsClient        = AwsClientFactory.CreateSqsClient(connectionConfiguration);
            var listQueuesResult = await sqsClient.ListQueuesAsync(connectionConfiguration.QueueNamePrefix).ConfigureAwait(false);

            foreach (var queueUrl in listQueuesResult.QueueUrls)
            {
                try
                {
                    await sqsClient.DeleteQueueAsync(queueUrl).ConfigureAwait(false);
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Exception when deleting queue: {ex}");
                }
            }
        }
        async Task CheckErrorQueue(string errorQueueName, CancellationToken cancellationToken)
        {
            var transportConfiguration = new TransportExtensions <SqsTransport>(new SettingsHolder());

            transportConfiguration = transportConfiguration.ConfigureSqsTransport(SetupFixture.SqsQueueNamePrefix);
            var connectionConfiguration = new ConnectionConfiguration(transportConfiguration.GetSettings());

            using (var sqsClient = AwsClientFactory.CreateSqsClient(connectionConfiguration))
            {
                var getQueueUrlResponse = await sqsClient.GetQueueUrlAsync(new GetQueueUrlRequest
                {
                    QueueName = QueueNameHelper.GetSqsQueueName(errorQueueName, connectionConfiguration)
                }, cancellationToken).ConfigureAwait(false);

                var messageReceived = false;
                ReceiveMessageResponse receiveMessageResponse = null;

                while (messageReceived == false && !cancellationToken.IsCancellationRequested)
                {
                    receiveMessageResponse = await sqsClient.ReceiveMessageAsync(new ReceiveMessageRequest
                    {
                        QueueUrl        = getQueueUrlResponse.QueueUrl,
                        WaitTimeSeconds = 20
                    }, cancellationToken).ConfigureAwait(false);

                    if (receiveMessageResponse.Messages.Any())
                    {
                        messageReceived = true;
                    }
                }

                Assert.NotNull(receiveMessageResponse);
                Assert.AreEqual(1, receiveMessageResponse.Messages.Count);
                Assert.AreEqual(PoisonMessageBody, receiveMessageResponse.Messages.Single().Body);
            }
        }