示例#1
0
        public async Task ReadMessageAsync()
        {
            var queueName = "local-reader-read-message-test-" + DateTime.Now.Ticks;

            using (var client = new AmazonSQSClient(TestUtils.GetAWSCredentials(), TestUtils.TestRegion))
            {
                var createResponse = await client.CreateQueueAsync(new CreateQueueRequest { QueueName = queueName });

                await TestUtils.WaitTillQueueIsCreatedAsync(client, createResponse.QueueUrl);

                try
                {
                    var manager = new ExternalCommandManager();
                    var message = manager.ReadMessage(TestUtils.TestProfile, TestUtils.TestRegion.SystemName, createResponse.QueueUrl);

                    Assert.Null(message);

                    await client.SendMessageAsync(new SendMessageRequest
                    {
                        MessageBody = "data",
                        QueueUrl    = createResponse.QueueUrl
                    });

                    message = manager.ReadMessage(TestUtils.TestProfile, TestUtils.TestRegion.SystemName, createResponse.QueueUrl);
                    Assert.NotNull(message);

                    manager.DeleteMessage(TestUtils.TestProfile, TestUtils.TestRegion.SystemName, createResponse.QueueUrl, message.ReceiptHandle);
                }
                finally
                {
                    await client.DeleteQueueAsync(createResponse.QueueUrl);
                }
            }
        }
        public IndexModel(LocalLambdaOptions lambdaOptions)
        {
            this.LambdaOptions = lambdaOptions;

            var externalManager = new ExternalCommandManager();

            this.AWSProfiles = externalManager.ListProfiles();
        }
示例#3
0
        public void ListProfiles()
        {
            var manager = new ExternalCommandManager();

            var profiles = manager.ListProfiles();

            Assert.NotEmpty(profiles);

            foreach (var profile in profiles)
            {
                Assert.False(string.IsNullOrWhiteSpace(profile));
            }

            Assert.True(profiles.Contains(TestUtils.TestProfile));
        }
        public IList <QueueItem> ListAvailableQueuesAsync(string awsProfile, string awsRegion)
        {
            var manager   = new ExternalCommandManager();
            var queueUrls = manager.ListQueues(awsProfile, awsRegion);

            var items = new List <QueueItem>();

            foreach (var queueUrl in queueUrls)
            {
                items.Add(new QueueItem {
                    QueueUrl = queueUrl
                });
            }

            return(items);
        }
示例#5
0
        public async Task ListQueuesAsync()
        {
            var queueName = "local-reader-list-queue-test-" + DateTime.Now.Ticks;

            using (var client = new AmazonSQSClient(TestUtils.GetAWSCredentials(), TestUtils.TestRegion))
            {
                var createResponse = await client.CreateQueueAsync(new CreateQueueRequest { QueueName = queueName });

                await TestUtils.WaitTillQueueIsCreatedAsync(client, createResponse.QueueUrl);

                try
                {
                    var manager = new ExternalCommandManager();
                    var queues  = manager.ListQueues(TestUtils.TestProfile, TestUtils.TestRegion.SystemName);

                    Assert.True(queues.Contains(createResponse.QueueUrl));
                }
                finally
                {
                    await client.DeleteQueueAsync(createResponse.QueueUrl);
                }
            }
        }
        public void PurgeDlq([FromBody] PurgeDlqModel model)
        {
            var manager = new ExternalCommandManager();

            manager.PurgeQueue(model.Profile, model.Region, model.QueueUrl);
        }
示例#7
0
        private void Loop(CancellationToken token)
        {
            var manager = new ExternalCommandManager();

            while (!token.IsCancellationRequested)
            {
                SQSMessage message   = null;
                LogRecord  logRecord = null;
                try
                {
                    // Read a message from the queue using the ExternalCommands console application.
                    message = manager.ReadMessage(this._profile, this._region, this._queueUrl);
                    if (token.IsCancellationRequested)
                    {
                        return;
                    }
                    if (message == null)
                    {
                        // Since there are no messages, sleep a bit to wait for messages to come.
                        Thread.Sleep(1000);
                        continue;
                    }

                    // If a message was received execute the Lambda function within the test tool.
                    var request = new ExecutionRequest
                    {
                        AWSProfile = this._profile,
                        AWSRegion  = this._region,
                        Function   = this._function,
                        Payload    = message.Body
                    };

                    var response = this._runtime.ExecuteLambdaFunction(request);

                    // Capture the results to send back to the client application.
                    logRecord = new LogRecord
                    {
                        ProcessTime   = DateTime.Now,
                        ReceiptHandle = message.ReceiptHandle,
                        Logs          = response.Logs,
                        Error         = response.Error
                    };
                }
                catch (Exception e)
                {
                    logRecord = new LogRecord
                    {
                        ProcessTime = DateTime.Now,
                        Error       = e.Message
                    };

                    Thread.Sleep(1000);
                }

                if (logRecord != null && message != null)
                {
                    logRecord.Event = message.Body;
                }

                lock (LOG_LOCK)
                {
                    this._records.Add(logRecord);
                }
            }
        }